1. 程式人生 > >iptables防護CC和DDos和PPTP穿透腳本

iptables防護CC和DDos和PPTP穿透腳本

sysconf mod protoc eas syn flood sysconfig -a 根據 config

一.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穿透腳本