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"
iptables防護CC和DDos和PPTP穿透腳本