IPtables
都是Linux的防火墙:
netfilter:
来至于linux内核中的包过滤功能体系,称为linux防火墙的“内核态”
iptables:
位于/sbin/iptables,用于管理防火墙规则的工具,称为linux防火墙的“用户态”
工作层次:
主要网络层,针对IP数据包(对包内的IP地址、端口等信息的处理)
功能:
表-四张表-四个功能
raw:流量跟踪
mangle:流量标记、流量整形
nat:网络地址装换
filter:包过滤功能
链-chain-五个链-记录防护规则
INPUT:入站
OUTPUT:出站(一般不配规则)
FORWARD:转发
PEREROUTIONG:路有前
POSTROUTING:路由后
结构:每一张表下有相应的链
规则:
按照下面顺序,匹配即执行;匹配不到则默认
表:raw-mangle-nat-filter
入站:PREROUTING-INPUT
出站:OUTPUT-POSTROUTING
转发:PREROUTING-FORWARD-POSTROUTING
命令:
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
不指定表:默认filter
不指定链:默认所有链
除非设置链的默认策略,否则必须制定匹配条件
选项、链名、控制类型用大写,奇遇用小写
控制类型:
ACCEPT: 允许
DROP: 丢弃
REJECT: 拒绝
LOG: 记录日志,然后匹配下一条规则
选项字:
-A: 在链尾追加规则
-I: 在链首插入规则
-L: 列出所有的规则条目
-n: 数字形式显示ip地址、端口等信息
-v: 详细显示规则信息
--line-numbers: 显示规则序列号
-D: 删除链内指定序号的规则
-F: 清空所有规则
-P: 为指定的链设置默认规则
条件匹配分类:
通用匹配:直接使用,不依赖其他条件或者扩展(协议、IP地址、网络接口等)
隐含匹配:依赖于特定的协议(端口、TCP标记、ICMP类型等)
显示匹配:添加"-m 扩展模块"的形式明确指出(多端口、MAC地址、IP范围、数据包状态等)
通用匹配条件:
-p 协议名 --协议配置
-s 原地址 --地址匹配
-d 目的地址
-i 入站网卡 --接口匹配
-o 出站网卡
隐含匹配条件:
--sport 源端口 --端口匹配
--dport 目的端口
--tcp-flags 检查范围 被设置的标记 --TCP标记匹配
--icmp-type CIMP类型(0:回显应答,8:请求) --ICMP类型匹配
显示匹配条件:
-m multiport --sport 源端口列表 --多端口匹配
-m multiport --dport 目的端口列表
-m iprange --src-range IP范围 --IP地址范围匹配
-m mac --mac-source MAC范围 --MAC范围匹配
-m state --state 连接状态 --状态匹配
查看运行状态
watch -n1[这是数字一] iptables -nvL --line-numbers --1s拜年话一次的方式查看
添加ftp跟踪模块:
/etc/sysconfig/iptables-config
第一个空项'nf_conntrack_ftp'
规则备份及还原
备份:
iptables-save > /备份路径/备份文件名
还原:
iptables-restore < /路径/文件名
启动脚本:
/etc/init.d/iptables
规则文件位置:
/etc/sysconfig/iptables
SNAT策略
应用:局域网主机共享一个公网ip地址接入Internet
原理:源地址装换-修改数据包的源地址
Linux条件:
局域网各个主机正确设置IP地址、子网掩码、默认网关
Linux网关支持IP路由转发
命令:
iptables -t nat -A POSTROUTING -s 局域网段/24 -o 外网卡 -j SNAT --to-source 公网ip
MASQUERADE-地址伪装:
用于:外网IP地址非固定,对于ADSL拨号接口(ppp0/ppp1)
命令:
iptables -t nat -A POSTROUTING -s 局域网段/24 -o 外网卡 -j MASQUERADE --to-source 公网ip
DNAT策略
应用:在Internet发布位于企业局域网中的服务器
原理:目标地址转换-修改数据包中的目标地址
Linux条件:
局域网的web服务器能够访问Internet
网关的外网IP地址有正确的DNS解析记录
Linux网关支持IP路由转发
命令:
iptables -t nat -A PREROUTING -i eth0 -d 外网接口IP -p tcp --dport 80 -j DANT --to-destination 内网主机IP
在发布时修改目标端口:
iptables -t nat -A PREROUTING -i eth0 -d 公网IP -p tcp --dport 发布端口 -j DNAT --to-destination 内网主机IP:实际端口