Iptables的表,链,及规则:
Iptables3条规则表
- filter:设置包过滤
- nat:设置地址转换
- mangle:网络流量整形应用
Iptables5条规则
- PREROUTING:nat,修改目的的地址
- FORWARD:filter,匹配穿越本机的数据包
- POSTROUTING:nat,修改源地址
- INPUT:filter,匹配目的ip是否是本机的数据包,外部数据包要进入我们主机的第一的关卡
- OUTPUT:filter,是你的主机的数据送出时要做的过滤
Iptables过滤封包的流程
iptables的默认设置是3个表是ACCEPT的,用iptables -L(不指定表名是,查看filter表,查看指定规则表,如iptables -t nat -L)来查看
iptables的策略有2种设置:
- 默认允许,拒绝特别的
- 默认拒绝,允许特别的
从安全角度的角度看,第2种比较好一些,可以通过改变设置
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
.基本语法: iptables[-tfilter][-AIINPUT,OUTPUT,FORWARD][-iointerface] [-ptcp,udp.icmp,all][-sip/nerwork][–sportports][-dip/netword][–dportports][-jACCEPTDROP]
- 新增规则,会成为规则链中最后一条规则:
iptables -A .. .. (Append)
- 取代现行规则,但顺序不会变
iptables -R… ..(Replace)
- 插入一条规则,通常是插在最前面,原本该位置上的规则将会往后移动一个顺位
iptables -I .. ..(insert)
- 删除某规则链中的所有规则
iptables -F .. ..(Flush)
- 清除表filter中使用者自定链中的规则
chain iptables -X
- 清除表nat,mangle中的规则链
iptables -F -t nat/mangle
实例:
1.首先,把3个表清空,包括自建的规则的清空
//清空filter表
iptables -F
iptables -X
//清空mangle表
iptables -F -t mangle
iptables -t mangle -X
//清空nat表
iptables -F -t nat
iptables -t nat -X
2.设定iptables的策略,如下:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables? -P FORWARD ACCEPT
3.具体的操作的步骤:
一,先打开”回环地址“即loopback,以免出现不必要的问题
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
//可以用ping 127.0.0.1,来测试这个操作是否生效
二,打开ping功能
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
三,打开22号端口
iptables -A INPUT -p tcp –dport=22 -j ACCEPT
iptables -A OUTPUT -p tcp –sport=22 -j ACCEPT
四,如果要在本机上访问互联网,浏览网页,就要允许本机能够访问远程的dns服务器的53,和web服务器的80端口:
//允许本机向远程的dns服务器发出请求
iptables -A OUTPUT -p udp –dport 53 -j ACCEPT
//允许本机接收远程dns服务器的响应
iptables -A INPUT -p udp –sport 53 -j ACCEPT
//允许本机本机对远程的web服务器发出访问请求
iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
//允许本机接收远程的web服务器的对请求的响应
iptables -A INPUT -p tcp –sport 80 -j ACCEPT
五.如果本机是web服务器的话,就要开启默认的80端口
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT
六.其他的:
保存iptable的配置 service iptables save
查看是否打开了80端口 netstat -anp|grep 80
可以对多个端口进行设置,加参数 -m multiport 端口号之间用,区分开
查看iptables的设置
iptables -L(不指定表名时,查看的是filter,查看nat,则是iptables -t nat -L)
以序号标记显示
iptables -L -n –line-number
若要删除INPUT表里序号为8的规则
iptables -D INPUT 8
生产环境下采用的iptables的配置:
iptables -F iptables -X iptables -Z iptables -F -t nat iptables -X -t nat iptables -Z -t nat iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 55555 -j ACCEPT iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
service iptables save
systemctl enable iptables