说明:本总结在讲义基础上完善,不全盘抄袭
参考网址:
(1)https://www.jianshu.com/p/ddba21e35ac1
(2)老男孩教育59期脱产班-Iptables防火墙实战.pdf(百度云盘:深圳1期iptbales大礼包.rar/文档/)
1 使用频率最高的表和链
1.1 filter表
1.1.1 INPUT(filter表使用第一多)
语法规则参考:16、尚硅谷-Linux云计算-安全- 防火墙(基础类)(百度网盘)
企业案例:公网ftp服务器维护前2分钟,有一个用户还在下载,进度已经达到99%,为了防止除该用户以外的其他用户继续连接,可以在iptables下面设置如下规则
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
个人经验:
第一条:每一条规则都要设置表(filter表可以省略)和链,表都小写,链都大写
第二条:(要/不)设置端口,(必须/不必须)设置协议,举例:-p tcp --dport=22
第三条:防火墙条目顺序很重要(频率最高的条目要放在前面),否则将导致性能下降。将条目提前,可以使用-I参数,后面指定放置的条目数,不写默认是1。多端口建议使用-m multiport模块
iptables -I INPUT 2 -m state --state ESTABLISHED,RELATED -j ACCEPT
第四条:使用iptables -nL可以看端口,使用使用iptables -L可以看服务和协议等
1.1.2 FORWARD
在filter表中,打酱油,优化时候直接将默认规则设置为DROP
[root@master ~]# iptables -t filter -P FORWARD DROP
1.1.3 OUTPUT(filter表使用第二多)
1.2 nat表
PS:
第一条:nat转换时候,需要开启内核转发参数
第二条:nat的两个网段不能一样(坑)
1.2.1 PREROUTING
作用:端口映射
数据流向:外→内
1.2.2 POSTROUTING
作用:共享上网
数据流向:内→外
2 优化参数
2.1 iptables优化参数
iptables -A INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT #改成自己的信任网段
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
PS:一定要当心,不要让ssh断连,无论如何要连上ssh
2.2 内核优化参数(出问题用)
dmesg里面显示ip.conntrack:table full,dropping packet.的错误提示,如何解决。以下参数是对iptables防火墙的优化(向/etc/sysctl.conf追加内容),防火墙不开会提示,可以忽略不理。
C64:
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120