iptables规则初始化和防御syn
确定firewalld防火墙是否开启和关闭在开启iptables
1.关闭firewalld命令
查看防火墙是否启动: firewall-cmd --state
关闭防火墙: systemctl stop firewalld.service
设置防火墙开机启动: systemctl enable firewalld
禁止防火墙开机启动 :systemctl disable firewalld
锁定:systemctl mask firewalld
解锁:systemctl unmask firewalld
2.查看iptables
查看iptables是否安装:rpm -qa | grep iptables
查看iptables是否运行:systemctl status iptables
查看iptables防火墙状态 :chkconfig --list iptables
安装iptables: yum install -y iptables
安装iptables-services: yum install iptables-services
systemctl restart iptables
启用:service iptables start
iptables服务启动:service iptables save
#提示Redirecting to /biji/systemctl start iptables.service 翻译:重定向到 /biji/systemctl start iptables.service
服务开机启动:systemctl enable iptables.service
服务重启:systemctl restart iptables.service
查看开启:chkconfig --list iptables
iptables服务启动:service iptables save
查看相关规则:iptables -L
查看已经启动的服务列表:systemctl list-unit-files|grep enabled
#编辑防火墙文件 (建议都在配置文件配置,不要命令配置)
vi /etc/sysconfig/iptables
#重启防火墙使配置文件生效
systemctl restart iptables.service
#设置iptables防火墙为开机启动项
systemctl enable iptables.service
iptables目录
/etc/sysconfig
iptables初始化规则
在windows利用Notepad++ 工具粘贴下列文本
注意:编码转换 使用ANSI 另存为iptables.sh
保存类型为Unix script file
文件传送至centos目录/etc/sysconfig 里面
在执行命令:
#进入目录:cd /etc/sysconfig
#给上传的文件换行由windows设置为centos的换行符:
sed -i 's/\r$//' syn.sh
#赋予权限命令:
chmod a+x syn.sh
#运行脚本(两个都可以):
./syn.sh
source syn.sh
#保存防火墙命令:service iptables save
#重启防火墙命令:service iptables restart
#查看防火墙规则:iptables -nL
#停止防火墙命令:service iptables stop
配置好的设置直接在文本里面存好在上传,执行上面的转换和赋予权限
#!/bin/bash
iptables -F -t nat
iptables -F -t mangle
iptables -F -t security
iptables -F -t raw
iptables -F -t filter
iptables -F
iptables -X
iptables -X
iptables -Z
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#开启全部端口白名单
iptables -A INPUT -s 119.29.32.126 -p all -j ACCEPT
#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
#开启3306白名单
#iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
#开启cf的http白名单
iptables -I INPUT -s 103.21.244.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 103.22.200.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 103.31.4.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 104.16.0.0/13 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 104.24.0.0/14 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 108.162.192.0/18 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 131.0.72.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 141.101.64.0/18 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 162.158.0.0/15 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 172.64.0.0/13 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 173.245.48.0/20 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 188.114.96.0/20 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 190.93.240.0/20 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 197.234.240.0/22 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 198.41.128.0/17 -p tcp --dport 80 -j ACCEPT
#保证传入的tcp链接是SYN数据包,如果不是就丢弃
iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP
#关闭ICMP (你通常不需要这个协议)
iptables -t mangle -A PREROUTING -p icmp -j DROP
#阻止无效数据包
iptables -t mangle -A PREROUTING -m conntrack --ctstate INVALID -j DROP
#阻止不是 SYN 的新数据包但我们发现它捕获了一些其他规则没有捕获的数据包
#iptables -t mangle -A PREROUTING -p tcp --syn -m conntrack --ctstate NEW -j DROP
#阻止不常见的 MSS 值根据前两个规则,只有 SYN 数据包可以是新数据包)。这有助于阻止愚蠢的 SYN 洪水
#iptables 3-t mangle -A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss --mss 536:65535 -j DROP
#防止nmap探测
iptables -t filter -I INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT
# 防止端口扫描
iptables -N port-scanning
iptables -A port-scanning -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --limit-burst 2 -j RETURN
iptables -A port-scanning -j DROP
#阻止带有虚假 TCP 标志的数据包,阻止使用虚假 TCP 标志的数据包,即。合法数据包不会使用的 TCP 标志
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
#阻止来自私有子网的数据包(欺骗)
iptables -t mangle -A PREROUTING -s 224.0.0.0/3 -j DROP
iptables -t mangle -A PREROUTING -s 169.254.0.0/16 -j DROP
iptables -t mangle -A PREROUTING -s 172.16.0.0/12 -j DROP
iptables -t mangle -A PREROUTING -s 192.0.2.0/24 -j DROP
iptables -t mangle -A PREROUTING -s 192.168.0.0/16 -j DROP
iptables -t mangle -A PREROUTING -s 10.0.0.0/8 -j DROP
iptables -t mangle -A PREROUTING -s 0.0.0.0/8 -j DROP
iptables -t mangle -A PREROUTING -s 240.0.0.0/5 -j DROP
iptables -t mangle -A PREROUTING -s 127.0.0.0/8 -i lo -j DROP
#限制 RST 数据包
iptables -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 2/s --limit-burst 2 -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP
service iptables save
service iptables restart
iptables -nL
echo ok
初始化的设置
#!/bin/bash
#清除命令并初始化
iptables -F -t nat
iptables -F -t mangle
iptables -F -t security
iptables -F -t raw
iptables -F -t filter
iptables -F
iptables -X
iptables -X
iptables -Z
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
#保证传入的tcp链接是SYN数据包,如果不是就丢弃
iptables -A INPUT -p tcp --syn -m state --state NEW -j DROP
#关闭ICMP (你通常不需要这个协议)
iptables -t mangle -A PREROUTING -p icmp -j DROP
#阻止无效数据包
iptables -t mangle -A PREROUTING -m conntrack --ctstate INVALID -j DROP
#阻止不是 SYN 的新数据包但我们发现它捕获了一些其他规则没有捕获的数据包
#iptables -t mangle -A PREROUTING -p tcp --syn -m conntrack --ctstate NEW -j DROP
#阻止不常见的 MSS 值根据前两个规则,只有 SYN 数据包可以是新数据包)。这有助于阻止愚蠢的 SYN 洪水
#iptables 3-t mangle -A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss --mss 536:65535 -j DROP
#防止nmap探测
iptables -t filter -I INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT
iptables -t filter -I INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT
# 防止端口扫描
iptables -N port-scanning
iptables -A port-scanning -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --limit-burst 2 -j RETURN
iptables -A port-scanning -j DROP
#阻止带有虚假 TCP 标志的数据包,阻止使用虚假 TCP 标志的数据包,即。合法数据包不会使用的 TCP 标志
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
#阻止来自私有子网的数据包(欺骗)
iptables -t mangle -A PREROUTING -s 224.0.0.0/3 -j DROP
iptables -t mangle -A PREROUTING -s 169.254.0.0/16 -j DROP
iptables -t mangle -A PREROUTING -s 172.16.0.0/12 -j DROP
iptables -t mangle -A PREROUTING -s 192.0.2.0/24 -j DROP
iptables -t mangle -A PREROUTING -s 192.168.0.0/16 -j DROP
iptables -t mangle -A PREROUTING -s 10.0.0.0/8 -j DROP
iptables -t mangle -A PREROUTING -s 0.0.0.0/8 -j DROP
iptables -t mangle -A PREROUTING -s 240.0.0.0/5 -j DROP
iptables -t mangle -A PREROUTING -s 127.0.0.0/8 -i lo -j DROP
#限制 RST 数据包
iptables -A INPUT -p tcp --tcp-flags RST RST -m limit --limit 2/s --limit-burst 2 -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP
service iptables save
service iptables restart
iptables -nL
echo ok
共有 0 条评论