当启用防火墙后,iptables -vnL显示出所有规则,但我们不使用默认规则,清空规则,自己定义
1、iptable -t filter -A INPUT -s 192.168.239.70 -j DROP(末尾添加),设置源地址是192.168.239.70发出的请求,全丢弃,即不回应
之前是通的,但设置完防火墙规则后的DROP(丢弃)就卡在这里,光标不停闪烁
2、iptables -I INPUT -s 192.168.239.70 -j REJECT,插入规则,源地址为192.168.239.70的主机发出的请求全部拒绝,这里直接返回目标端口不可到达
iptables -I INPUT 2 -s 192.168.239.70 -j REJECT,插入第二条
3、iptables -D INPUT 2,删除INPUT中的第二条规则
4、iptables -R INPUT 2 -s 192.168.1.1 -j REJECT,替换规则中第2条源地址ip由192.168.239.70更改为192.168.1.1
5、iptables -A INPUT -s 192.168.239.70,192.168.239.71 -j REJECT,一次加入两条ip
6、iptables -A INPUT -s ! 192.168.239.70 -j REJECT,除了192.168.239.70的ip,全部拒绝
生产中为了避免自己设置规则时候不小心把自己踢出,应做防火墙备份,再用at执行计划,设置5分钟后执行,等规则设置完成后再取消计划,避免产生不必要的麻烦
7、iptables -P INPUT DROP,更改策略中只要不匹配就DROP,默认为ACCEPT(只支持ACCEPT和DROP,不支持REJECT),最好不要进行更改
8、iptables -A OUTPUT -d 192.168.239.70 -j DROP,拒绝本机流出报文访问目标地址192.168.239.70
此时192.168.239.70也不会ping通本机,因为报文的传导是有去有回的
iptables -A INPUT ! -s 192.168.239.1 -j REJECT
iptables -A INPUT -s 192.168.239.0/24 -j ACCEPT
这里记录了防火墙的规则,如果另一台设备也需要同样的防火墙规则,可以将其生存文件,并
while read line; do done iptables $line < iptables.log
iptables -A INPUT -s 192.168.239.70 -p icmp -j REJECT
由于禁止的是icmp协议,ssh基于的是tcp协议,但ssh还是可以
iptables -A INPUT -i eth0 -j ACCEPT,从eth0网卡流入的数据报文全部允许,适用于多种网卡情况
打开我的云服务器,lastb发现有几个ip尝试登陆我的云服务器,将这些ip全部加入黑名单
iptables -A INPUT -s 103.207.37.253,118.123.244.228,119.6.103.44,5.188.10.156,103.207.37.253,103.207.38.226,14.226.255.211,78.198.69.64 -j REJECT
--tcp-flags SYN表示第一次握手,等于--syn
输入指令iptables -A INPUT -p tcp --syn -j REJECT,查看
之前已经连接到192.168.239.60的主机可以继续使用,而其他主机连接被拒绝
iptables -A INPUT -p icmp --icmp-type 8 -j REJECT,拒绝进来请求报文,测试结果为
以SAMBA服务举例,连接SAMBA服务需要开放139、445端口,未开放前
输入指令iptables -A INPUT -p tcp --dport 139 -j ACCEPT和iptables -A INPUT -p tcp --dport 445 -j ACCEPT之后,已经可以连接
iptables -N WEBSRV FILESRV,自定义链改名由WEBSRV变为FILESRV
iptables -A FILESRV -p tcp --dport 139 -j ACCEPT,向FILESRV添加允许139端口通过的规则
iptables -A INPUT -s 192.168.239.71 -j FILESRV
自定义链类似于shell中的函数调用理念,提前预设好,等使用时候直接用即可
iptables -I INPUT -p tcp -m multiport --dports 80,443,3306 -j ACCEPT
如果命令是iptables -I INPUT -p tcp -m multiport --dports 80:88,443,3306 -j ACCEPT,添加的端口是80,81,82,83,84,85,86,87,88,443,3306
iptables -A INPUT -m iprange --src-range 192.168.239.60-192.168.239.69 -j ACCEPT
本机192.168.239.60无法ping通192.168.239.70,此时添加规则
iptables -A INPUT -s 192.168.1.1 [!] -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
iptable -A OUTPUT -m string --string "baidu" --algo bm -j REJECT
查看iptables规则,此时可以ping通www.baidu.com
设置string扩展规则,之后再次ping www.baidu.com失败
iptables -A OUTPUT -m time --timestart 1:00 --timestop 9:00 --weekdays 2,4,6 -j REJECT
设置UTC时间1:00-9:00(北京时间9:00-18:00),周二四六不能流出报文
控制单个ip最多可以发起多少个连接数,防止******(cc***,挑战黑洞)
iptables -A INPUT -m connlimit --connlimit-above 100 -j REJECT
iptables -I INPUT 2 -m limit --limit 6/minute --limit-burst 10 -j ACCEPT
一分钟前十次ping 本机不理会,超过十个后拒绝,后面ping中均匀分布每分钟ping通6次
NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求,即新连接,但不影响正在连接的
ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态,即正在连接的
RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系
iptables -A INPUT -s 192.168.239.60 -j LOG --log-prefix "iptables:" ,--log-prefix,前缀的意思
和state相结合,可以iptables -I INPUT 3 -s 192.168.239.0/16 -m state --state NEW -j LOG --lgo-prefix "自定义字符",只要192.168.239.0网段的新主机访问本主机,日志都会记录下来
CentOS6的保存service ipatables save,系统会自动保存到 /etc/sysconfig/iptables
CentOS7的保存,iptables-save > /DIR/FILE,读取时候iptables-restore < /DIR/FILE,
因此需要在/etc/rc.d/rc.local中写入iptables-restore < /DIR/FILE(记得对rc.local加执行权限)
iptables -t nat -A POSTROUTING -s 192.168.31.0/24 -j SNAT --to-source 172.18.0.123