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

1_EolSg5avhSddmUPFhv0zlQ.jpeg

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

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

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

iptables.png

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

最后修改:2019 年 04 月 22 日
如果觉得我的文章对你有用,请随意赞赏