iptables防护CC和DDos和PPTP穿透脚本
一.iptables优化脚本案例
#!/bin/bash
#脚本下载地址:#wget www.mrliangqi.com/pack/shell/iptables.sh
#脚本使用:#bash iptables.sh
# 适用于Web等服务的Linux iptables防火墙脚本。
# 注意1:该脚本需要根据实际情况修改后才能使用。
# 注意2:如果需要开发ftp服务,仅仅开发TCP20,21端口是不够的,必须要加载ip_conntrack_ftp以及ip_nat_ftp。
# 修改/etc/sysconfig/iptables-config, 增加/修改为以下一行内容:
# IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"
##############
# 可信任的主机或者网段
##############
TRUSTHOSTS=( "0.0.0.0/0" )
##############
# 只开放给可信任主机的管理用端口
##############
ADMIN_TCP_PORTS="22,3306"
##############
# 对公网开放的服务端口
##############
SERVICE_TCP_PORTS="22,25,80,3306,1980,65531"
SERVICE_UDP_PORTS="53"
##############
# 清空原来的iptables设置
##############
iptables -F
iptables -X
##############
# 设置默认规则
# 通常INPUT及FORWARD设为DROP,OUTPUT设置为ACCEPT就足够了
# 极端情况下,可以将OUTPUT也设置成默认DROP。然后针对OUTPUT逐条增加过滤规则
##############
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
##############
# 允许lo, PING, 以及所有内部发起的访问
##############
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
##############
# 允许可信任主机访问管理端口
##############
for TRUSTHOST in ${TRUSTHOSTS[@]}
do
iptables -A INPUT -p tcp -j ACCEPT -m multiport --dport $ADMIN_TCP_PORTS -s $TRUSTHOST
done
##############
# 放开TCP及UDP服务端口
##############
iptables -A INPUT -p tcp -j ACCEPT -m multiport --dport $SERVICE_TCP_PORTS
iptables -A INPUT -p udp -j ACCEPT -m multiport --dport $SERVICE_UDP_PORTS
#######################
# 防止DDOS攻击:Ping of Death
#######################
iptables -N PING_OF_DEATH
iptables -A PING_OF_DEATH -p icmp --icmp-type echo-request \
-m hashlimit \
--hashlimit 10/s \
--hashlimit-burst 10 \
--hashlimit-htable-expire 300000 \
--hashlimit-mode srcip \
--hashlimit-name t_PING_OF_DEATH \
-j RETURN
iptables -A PING_OF_DEATH -j LOG --log-prefix "ping_of_death_attack: "
iptables -A PING_OF_DEATH -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j PING_OF_DEATH
#######################
# 防止DDOS攻击:SYN FLOOD
#######################
iptables -N SYN_FLOOD
iptables -A SYN_FLOOD -p tcp --syn \
-m hashlimit \
--hashlimit 200/s \
--hashlimit-burst 10 \
--hashlimit-htable-expire 300000 \
--hashlimit-mode srcip \
--hashlimit-name t_SYN_FLOOD \
-j RETURN
iptables -A SYN_FLOOD -j LOG --log-prefix "syn_flood_attack: "
iptables -A SYN_FLOOD -j DROP
iptables -A INPUT -p tcp --syn -j SYN_FLOOD
#######################
# 防止DDOS攻击:stealth scan
#######################
iptables -N STEALTH_SCAN
iptables -A STEALTH_SCAN -j LOG --log-prefix "stealth_scan_attack: "
iptables -A STEALTH_SCAN -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j STEALTH_SCAN
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j STEALTH_SCAN
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j STEALTH_SCAN
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j STEALTH_SCAN
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j STEALTH_SCAN
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j STEALTH_SCAN
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j STEALTH_SCAN
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j STEALTH_SCAN
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j STEALTH_SCAN
service iptables save
二.通过加载ip_nat_pptp模块使iptables支持PPTP穿透
的通过上面的脚本添加完整的iptables之后,发现无论如何都连接不到之前搭建的vpn,开始以为过滤策略有问题,后来发现清楚之后还一样,最后查看log,发现一下错误
localhost kernel: conntrack: generic helper won't handle protocol 47. Please consider loading the specific helper module.
需要加载某些模块,最后网上找到一条加载命令:
# modprobe ip_nat_pptp
加载即可~正常连接vpn.
长期有效的的办法当然不是手动加载,而是让每次启动之后都自动加载该模块。这时候就需要在/etc/sysconfig/iptables 中加入:
IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_pptp"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端