介绍:
防火墙默认有四表五链
四表:(表的优先级:raw > mangle > nat > filter )
1.Raw表——两个链:PREROUTING、OUTPUT
作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw
2.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle
3.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat
4.filter表——三个链:INPUT、OUTPUT、FORWARD
作用:过滤数据包,定义拒绝或者允许 内核模块:iptables_filter
五链:(默认的,不能删除,但能清除里面的规则)
1.INPUT——进来的数据包应用此规则链中的策略
2.OUTPUT——外出的数据包应用此规则链中的策略
3.FORWARD——转发数据包时应用此规则链中的策略
4.PREROUTING——对数据包作路由选择前应用此链中的规则
5.POSTROUTING——对数据包作路由选择后应用此链中的规则
一、开始对防火墙配置时:
iptables -X(清除所有自定义规则链)
iptables -F(清除所有规则)
iptables -L(列出所有[加n 以数字形式显示IP])
二、编写规则:
iptables -I (插入规则) 规则链名 优先级
iptables -A (增加规则,默认是) 规则链名
iptables -D (删除规则) 规则链名 序号
iptables -N (自定义规则链名)
iptables -P (默认) 规则链名 DROP(拒绝)或者ACCEPT(允许) PS:建议除紧急情况外,最后配置
-p (协议)
--sport(源端口)
--dport(目的端口)
-s (源地址)
-d(目的地址)
-i(入网卡)
-o(出网卡)
-m(扩展)
1、state --state RELATED,ESTABLISHED //用状态检测,因回来的数据没能转发。 2、limit --limit 5/m --limit-burst 10//10个通行证,每分钟增加5个 3、connlimit --connlimit-above 1 //每个IP地址只允许1个连接
-j (行为)
ACCEPT(接受)
DROP(停止)
DNAT(目的地址转发)一般在PREROUTING链中
SNAT(源地址转发) 一般在POSTROUTING链中
规则链名(加入这条规则链)
MASQUSERADE(地址伪装)
--to-destination(目标地址)
-t nat (选择nat表,一般地址映射用到)
--line-number (显示序号)
例子:
1)linux系统作为服务器和防火墙时:
1.允许外界能访问我的80端口httpd服务:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT tcp协议目的端口80在入站规则通过
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT tcp协议源端口80在出站规则通过
也可以自定义规则链:
iptables -N httpd-in //自定义规则名为httpd-in
iptalbes -A INPUT -j httpd-in //把httpd-in规则链加入到INPUT链
iptables -A httpd-in -p tcp --dport 80 -j ACCEPT tcp协议目的端口80在httpd-in链通过
iptables -N httpd-out //自定义规则名为httpd-out
iptalbes -A OUTPUT -j httpd-out //把httpd-out规则链加入到OUTPUT链
iptables -A httpd-out -p tcp --sport 80 -j ACCEPT tcp协议源端口80在httpd-out链通过 自定义规则链一定要加入到默认规则链中,可以使得iptables默认规则链不至于混乱无序
2.允许ping:(只要前面两条就可ping通)
iptables -A INPUT -i eth0 -p icmp -j ACCEPT eth0网卡入站时的icmp包允许通过
iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT eth0网卡出站时的icmp包允许通过
iptables -A OUTPUT -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT 从eth0网卡出站时的状态检测允许
2)linux系统只作为防火墙时:
echo 1 > /proc/sys/net/ipv4/ip_forward /启动路由功能,允许转发
1.允许80端口httpd服务转发:
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT //允许tcp目的端口80转发
2.允许ping转发:
iptables -A FORWARD -p icmp -j ACCEPT //允许icmp包转发
3.目的地址映射:
iptables –t nat –A PREROUTING –d 192.168.99.101 –j DNAT --to 192.168.100.102 //路由前,目的IP:192.168.99.101 转换成IP:192.168.100.102)
4.内网源地址隐藏:
iptables -t nat -A POSTROUTING -j MASQUERADE //路由后,内网地址隐藏,源地址变成防火墙外网IP地址
5.访问限时:(date显示时间,072016182005[月日时分年]7月20号16点18分2005年,直接date 数字改系统时间进行测试)
iptables –I FORWARD –s 192.168.100.0/24 –m time --timestart 16:10 --timestop 18:10 -j ACCEPT //对源网段192.168.100.0/24,开始时间16:10-18:10 允许通过
iptables –I FORWARD –d 192.168.100.0/24 –m time --timestart 16:10 --timestop 18:10 -j ACCEPT //对目的网段192.168.100.0/24,开始时间16:10-18:10 允许通过
6.访问限速:
iptables -I FORWARD -p tcp --dport 21 -m connlimit --connlimit-above 1 -j DROP //对21端口转发,每个IP地址超过1个连接就拒绝
3)使用日志监控程序记录:
/usr/local/ulogd/sbin/ulogd & //启动这个程序
iptables -A FORWARD -p icmp -j ACCEPT //允许icmp转发链
iptables -A FORWARD -p icmp -j ULOG //对icmp转发链进行监控
以上是我个人学习积累到的知识,如有需要更正或者增加的地方,欢迎来与我交流学习一番,共同进步,谢谢观看。
|