CentOS防SYN攻擊

來源:互聯網
上載者:User

標籤:

netstat -anp |awk ‘{print $6}‘|sort|uniq -c |sort -rn

172 ESTABLISHED

  59 CONNECTED

  589 SYN_RECV

  15 STREAM

SYN居然這麼高,繼續追查是那些ip發出的SYN:

[[email protected] ~]# netstat -an | grep SYN | awk ‘{print $5}‘ | awk -F: ‘{print $1}‘ | sort | uniq -c | sort -nr | more

首先說一下SYN的攻擊原理:

  在TCP/IP協議中,TCP協議提供可靠的串連服務,採用三向交握建立一個串連。

  第一次握手:建立串連時,用戶端發送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;

  第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;

  第三向交握:用戶端收到伺服器的SYN+ACK包,向伺服器發送確認包ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入ESTABLISHED狀態,完成三向交握。 完成三向交握,用戶端與伺服器開始傳送資料.

如果使用者與伺服器發起串連請求只進行到第二次握手而不再響應伺服器,伺服器就會不停地等待使用者的確認,如果過多這樣的串連就會把伺服器端的串連隊列佔滿就會導致正常的使用者無法建立串連。所以我們直接從SYN的串連上進行如下改動:

  查看linux預設的syn配置:

 [[email protected] ~]# sysctl -a | grep _syn

net.ipv4.tcp_max_syn_backlog = 1024

  net.ipv4.tcp_syncookies = 1

  net.ipv4.tcp_synack_retries = 5

  net.ipv4.tcp_syn_retries = 5

  tcp_max_syn_backlog 是SYN隊列的長度,加大SYN隊列長度可以容納更多等待串連的網路連接數。tcp_syncookies是一個開關,是否開啟SYN Cookie 功能,該功能可以防止部分SYN攻擊。tcp_synack_retries和tcp_syn_retries定義SYN 的重試串連次數,將預設的參數減小來控制SYN串連次數的盡量少。

  以下是我修改後的參數,可以根據自己伺服器的實際情況進行修改:

[[email protected] ~]# more /etc/rc.d/rc.local  #!/bin/sh  # This script will be executed *after* all the other init scripts.  # You can put your own initialization stuff in here if you don‘t  # want to do the full Sys V style init stuff.  touch /var/lock/subsys/local  ulimit -HSn 65535  /usr/local/apache2/bin/apachectl start  #####  sysctl -w net.ipv4.tcp_max_syn_backlog=2048  sysctl -w net.ipv4.tcp_syncookies=1  sysctl -w net.ipv4.tcp_synack_retries=3  sysctl -w net.ipv4.tcp_syn_retries=3

為了不重啟伺服器而使配置立即生效,可以執行

#sysctl -w net.ipv4.tcp_max_syn_backlog=2048  #sysctl -w net.ipv4.tcp_syncookies=1  #sysctl -w net.ipv4.tcp_synack_retries=3  #sysctl -w net.ipv4.tcp_syn_retries=3

也有的人喜歡用存取控制清單來防止SYN的攻擊,在一定程度上減緩了syn的攻擊:

  Syn 洪水攻擊

#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT  --limit 1/s 限制syn並發數每秒1次

防連接埠掃描

 # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

死亡之ping

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT#>iptables-save >/etc/sysconfig/iptables

進行查看,#iptables -L

ACCEPT tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN limit: avg 1/sec burst 5

ACCEPT tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5

ACCEPT icmp -- anywhere anywhere icmp echo-request limit: avg 1/sec burst 5

再次進行查看syn串連:

[[email protected] ~]# netstat -an | grep SYN | awk ‘{print $5}‘ | awk -F: ‘{print $1}‘ | sort | uniq -c | sort -nr | more  20 10.92.10.220  1 125.43.36.199

明顯SYN串連數已經下來了

CentOS防SYN攻擊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.