iptables常用规则
1.增加一条规则到INPUT chain
iptables -A INPUT -s 10.1.130.15 -j DROP
该规则阻止所有来自IP地址为10.1.130.15的包
-A
指定添加该规则到INPUT chain的末尾(一定要注意这里末尾
的含义,如果INPUT的上一个规则是DROP ALL PACKETS
,那么这条规则就显得多余了。并且如果该条规则是ACCEPT,那么明显不会生效,因为在上一条规则中,数据包已经被丢弃了。所以在实际操作中,一般用一个脚本文件来编写规则,并且把DROP ALL PACKETS
放在最后,如果要添加新的规则,只需要在DROP ALL PACKETS
上边添加就可以了)
-s/-d
指定源主机和目的主机,还可以用-p protocol --sport/--dport port-number
指定特定协议的源端口和目的端口
-j
指定对符合该规则的数据包要采取的TARGET,即怎样处理该数据包,如果忽略该项,那么防火墙只对数据包进行检查,即使符合规则也不采取任何动作
阻止一个地址的规则已经知道了,但如果只想允许这个地址的数据包通过该怎么写呢?可以在地址前边加!
实现
iptables -A INPUT ! -s 10.1.130.15 -j DROP
需要注意的是感叹号加在参数选项之前,并且与参数选项之间由空格隔开
同样,我们也可以在协议,端口等其他限制条件前边加感叹号来反向选择,例如iptables -A OUTPUT ! -p tcp -j DROP
该规则指定了除过tcp数据包外,所有的出数据包都被丢弃
2.修改INPUT chain中的一条规则
iptables -R INPUT 1 -j ACCEPT
该命令把阻止(DROP)所有来自IP地址为10.1.130.15的数据包
的规则更改为接受(ACCEPT)所有来自IP地址为10.1.130.15的数据包
-R
参数意思就是修改
1
指定要修改的规则的编号,这个编号可以通过iptables -nL --line-number
查出来,因为有些规则特别长,使用编号就简化了修改的过程
3.删除INPUT chain中的一条规则
iptables -D INPUT -s 10.1.130.15 -j ACCEPT
该规则删除了阻止所有来自10.1.130.15的数据包
的规则
该删除命令同样可以用规则的编号代替
iptables -D INPUT 1
4.设置默认规则
默认规则为当数据包不符合任意一个规则时的处理办法,用-P
选项定义指定chain的默认规则,INPUT,OUTPUT,FORWARD的默认规则都是ACCEPT,为了安全我们要修改他们的默认规则为DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
所有与指定chain中任何规则都不符合的数据包,都将被强制使用默认的DROP规则
5.清除指定chain的所有规则
iptables -F INPUT
该命令清除INPUT chain的所有规则
Fedora中默认安装了firewalld和iptables两个防火墙。
firewalld是动态防火墙,可以实现规则的动态添加和删除,而iptables是静态防火墙,在添加或删除规则后只能通过重启防火墙使规则生效
iptables默认没有任何规则,而firewalld默认有一些规则,在用命令iptables -nL --line-number
显示防火墙规则时,iptables把firewalld中的规则也一块显示了出来,因此在用iptables时要用systemctl stop firewalld
停止firewalld