Linux系統下的DDOS 防範

2021-09-24 10:21:41 字數 4347 閱讀 3369

squid主要是利用其埠對映的功能,可以將80埠轉換一下,其實一般的ddos***可以修改/proc/sys/net/ipv4 /tcp_max_syn_backlog裡的引數就行了,預設引數一般都很小,設為8000以上,一般的ddos***就可以解決了。如果上公升到 timeout階段,可以將/proc/sys/net/ipv4/tcp_fin_timeout設小點。

大家都在討論ddos,個人認為目前沒有真正解決的方法,只是在緩衝和防禦能力上的擴充,跟***玩乙個心理戰術,看誰堅持到最後,網上也有很多做法,例如syncookies等,就是複雜點。

sysctl -w net.ipv4.icmp_echo_ignore_all=1 

echo 1 > /proc/sys/net/ipv4/tcp_syncookies 

sysctl -w net.ipv4.tcp_max_syn_backlog="2048" 

sysctl -w net.ipv4.tcp_synack_retries="3" 

iptables -a input -i eth0 -p tcp --syn -j syn-flood 

# limit 12 connections per second (burst to 24) 

iptables -a syn-flood -m limit --limit 12/s --limit-burst 24 -j return

可以試著該該:

iptbales -a forward -p tcp --syn -m limit --limit 1/s -j accept

虛擬主機服務商在運營過程中可能會受到******,常見的***方式有syn,ddos等。

通過更換ip,查詢被***的站點可能避開***,但是中斷服務的時間比較長。比較徹底的解決方法是添置硬體防火牆。不過,硬體防火牆**比較昂貴。可以考慮利用linux系統本身提供的防火牆功能來防禦。

1. 抵禦syn

syn***是利用tcp/ip協議3次握手的原理,傳送大量的建立連線的網路包,但不實際建立連線,最終導致被***伺服器的網路佇列被佔滿,無法被正常使用者訪問。

sysctl -a | grep syn

看到:net.ipv4.tcp_max_syn_backlog = 1024 

net.ipv4.tcp_syncookies = 0 

net.ipv4.tcp_synack_retries = 5 

net.ipv4.tcp_syn_retries = 5 

tcp_max_syn_backlog是syn佇列的長度,tcp_syncookies是乙個開關,是否開啟syn cookie

功能,該功能可以防止部分syn***。tcp_synack_retries和tcp_syn_retries定義syn的重試次數。

加大syn佇列長度可以容納更多等待連線的網路連線數,開啟syn cookie功能可以阻止部分syn***,降低重試次數也有一定效果。

調整上述設定的方法是:

增加syn佇列長度到2048:

sysctl -w net.ipv4.tcp_max_syn_backlog=2048

開啟syn cookie功能:

sysctl -w net.ipv4.tcp_syncookies=1

降低重試次數:

sysctl -w net.ipv4.tcp_synack_retries=3

sysctl -w net.ipv4.tcp_syn_retries=3

為了系統重啟動時保持上述配置,可將上述命令加入到/etc/rc.d/rc.local檔案中

netstat 工具來檢測syn***

# netstat -n -p -t

tcp0 0 10.11.11.11:23124.173.152.8:25882 syn_recv-

tcp0 0 10.11.11.11:23236.15.133.204:2577 syn_recv-

tcp0 0 10.11.11.11:23127.160.6.129:51748 syn_recv-

linux系統中看到的,很多連線處於syn_recv狀態(在windows系統中是syn_received狀態),

源ip位址都是隨機的,表明這是一種帶有ip欺騙的syn***。

# netstat -n -p -t | grep syn_recv | grep :80 | wc -l

檢視在linux環境下某個端囗的未連線佇列的條目數,顯示tcp端囗22的未連線數有324個,

雖然還遠達不到系統極限,但應該引起管理員的注意。

[root@pub wxjsr]# netstat -na | grep syn_recv

tcp 0 0 58.193.192.20:80 221.0.108.162:32383 syn_recv 

tcp 0 0 58.193.192.20:80 125.85.118.231:2601 syn_recv 

tcp 0 0 58.193.192.20:80 222.242.171.215:2696 syn_recv 

tcp 0 0 58.193.192.20:80 116.52.10.51:2629 syn_recv 

tcp 0 0 58.193.192.20:80 218.171.175.157:1117 

[root@pub wxjsr]# netstat -na | grep syn_recv |wc

11 66 979

檢視系統syn相關的配置

[root@metc apache2]# /sbin/sysctl -a | grep syn

net.ipv6.conf.default.max_desync_factor = 600

net.ipv6.conf.all.max_desync_factor = 600

net.ipv6.conf.eth0.max_desync_factor = 600

net.ipv6.conf.lo.max_desync_factor = 600

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120

net.ipv4.tcp_max_syn_backlog = 1280

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 5

fs.quota.syncs = 18

防範syn***設定

iptables -a forward -p tcp --syn -m limit --limit 1/s -j accept

iptables -a input -i eth0 -m limit --limit 1/sec --limit-burst 5 -j accept

#每秒 最多3個 syn 封包 進入 表達為 :

iptables -n syn-flood

iptables -a input -p tcp --syn -j syn-flood

iptables -a syn-flood -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j return

iptables -a syn-flood -j reject

#設定syncookies:

sysctl -w net.ipv4.tcp_syncookies=1

/sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=3000

/sbin/sysctl -w net.ipv4.tcp_synack_retries=1

/sbin/sysctl -w net.ipv4.tcp_syn_retries=1

sysctl -w net.ipv4.conf.all.send_redirects=0

sysctl -w net.ipv4.conf.all.accept_redirects=0

sysctl -w net.ipv4.conf.all.forwarding=0

/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

/sbin/sysctl -w net.ipv4.conf.default.accept_source_route=0 # 禁用icmp源路由選項

/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 # 忽略icmp ping廣播包,應開啟

/sbin/sysctl -w net.ipv4.icmp_echo_ignore_all=1 # 忽略所有icmp ping資料,覆蓋上一項

Linux系統下的DDOS攻擊防範

squid主要是利用其埠對映的功能,可以將80埠轉換一下,其實一般的ddos攻擊可以修改 proc sys net ipv4 tcp max syn backlog裡的引數就行了,預設引數一般都很小,設為8000以上,一般的ddos攻擊就可以解決了。如果上公升到 timeout階段,可以將 proc...

防範DDoS攻擊的幾種方式

一 拒絕服務攻擊的發展 從拒絕服務攻擊誕生到現在已經有了很多的發展,從最初的簡單dos到現在的ddos。那麼什麼是dos和ddos呢?dos是一種利用單台計算機的攻擊 方式。而ddos distributed denial of service,分布式拒絕服務 是一種基於dos的特殊形式的拒絕服務攻...

linux下使用ddos指令碼防止ddos攻擊

ddos概述 分布式拒絕服務 ddos distributeddenial of service 攻擊,指借助於客戶 伺服器技術,將多個計算機聯合起來作為攻擊平台,對乙個或多個目標發動ddos攻擊,從而成倍地提高拒絕服務攻擊的威力。1.安裝web伺服器 安裝yum install httpd 拷貝檔...