明月登楼 发表于 2019-5-25 22:35:03

iptables的基本安全防护

iptables是运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的处理和转发。在大部分Linux发行版中,可以通过手册页或 man iptables 获取用户手册。通常iptables需要内核模块支持才能运行,此处相应的内核模块通常是Xtables。



今天明月分享给大家的是一批iptables基础安全防护的配置,在部署VPS服务器的时候大家可以借用一下。明月的VPS上目前都已经用上了。

下面的防火墙脚本阻止任何除了允许:

来自HTTP(TCP端口80)的请求
来自ICMP ping的请求
ntp(端口123)的请求输出
smtp(TCP端口25)的请求输出


1.记录到日志,rsyslog.conf配置增加一行
vim /etc/rsyslog.conf

# iptables log
kern.info                                             /var/log/iptables.log
重启日志服务
/etc/init.d/rsyslog restart

2.iptables配置
Drop limit
-A FORWARD -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT

Drop sync limit 100 & DDOS
-A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 100 -j DROP
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

Drop tcp 0 adn 1
-A INPUT -p tcp --tcp-flags ALL ALL -j DROP

Drop sync
-A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP

Drop Fragments
-A INPUT -i eth0 -f -j DROP
-A INPUT -i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
-A INPUT -i eth0 -p tcp --tcp-flags ALL ALL -j DROP

Drop NULL packets
-A INPUT -i eth0 -p tcp --tcp-flags ALL NONE -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix " NULL Packets " --log-ip-options
-A INPUT -i eth0 -p tcp --tcp-flags ALL NONE -j DROP
-A INPUT -i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

Drop XMAS
-A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix " XMAS Packets " --log-ip-options
-A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

Drop FIN packet scans
-A INPUT -i eth0 -p tcp --tcp-flags FIN,ACK FIN -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix " Fin Packets Scan " --log-ip-options
-A INPUT -i eth0 -p tcp --tcp-flags FIN,ACK FIN -j DROP
-A INPUT -i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

Log and get rid of broadcast / multicast and invalid
-A INPUT -i eth1 -m pkttype --pkt-type broadcast -j LOG --log-prefix " Broadcast " --log-ip-options
-A INPUT -i eth1 -m pkttype --pkt-type broadcast -j DROP
-A INPUT -i eth1 -m pkttype --pkt-type multicast -j LOG --log-prefix " Multicast " --log-ip-options
-A INPUT -i eth1 -m pkttype --pkt-type multicast -j DROP
-A INPUT -i eth1 -m state --state INVALID -j LOG --log-prefix " Invalid " --log-ip-options
-A INPUT -i eth1 -m state --state INVALID -j DROP

页: [1]
查看完整版本: iptables的基本安全防护