■ 西安 田立軍 解寶琦
編者按: CC攻擊(Challenge Collapsar)是很多企業(yè)IT系統(tǒng)面臨的一種重要安全威脅,筆者在單位的一次攻防演練中遇到此類攻擊并進行了總結。
CC攻擊是一種專門針對于Web的應用層FLOOD攻擊,攻擊者操縱網絡上的肉雞,對目標Web服務器進行海量HTTP Request攻擊,是DDoS的一種,也是一種常見的網絡攻擊方式。在一次攻防演練中,筆者單位的門戶網站(服務器環(huán)境為RedHat 6系列)就因為大量的Web注入訪問請求而導致網頁服務短時間終止而無法正常訪問。盡管我們已經在該主機上通過防火墻限制了可以訪問主機的端口,但測試人員還是通過向“80”端口發(fā)送了大量的TCP請求包而導致Web網頁服務請求因為TCP連接數過大而用戶無法訪問的問題。
事后通過查找資料才知道Linux新的防火墻可以通過使用xt_recent模塊來實現對TCP連接數的控制。通過使用xt_recent模塊,該方法不但可以很好地抵抗CC以及DDoS攻擊,也可以很好地抵抗端口掃描一類的惡意行為,使本機系統(tǒng)具有良好的IPS特性。
筆者總結了Debian、RedHat6、RedHat7這些不同主要Linux發(fā)行版的相關參數配置方法,以便用戶進行類似配置和部署。
因為以上操作系統(tǒng)已經默認開啟了iptablesde xt_recent模塊支持,當主機需要配置抗CC攻擊時,只需要在相應的配置文件中引入如下語句:
-A INPUT -p tcp -m multiport --destinationport 80,443,3371, -m state --state NEW -m recent --update --seconds 60 --hitcount 20 --name test --rsource -j DROP
-A INPUT -p tcp -m multiport --destination-port 80,443,3371, -m state --state NEW -m recent --set --name test--rsource
-A INPUT -p tcp -m multiport --destinationport 80,443,3371, -m connlimit --connlimitabove 20 -j REJEC
以上例子描述了單個客戶端IP地址60分鐘內如果針對“80、443、3371”端口新建TCP連接數超過20個系統(tǒng)將主動丟棄后續(xù)的數據包。
需要特別說明的是,以上語法在RedHat6系列Linux上“--hitcount” 值 默 認為 20,Debian、RedHat7 系列沒有此限制。該值與xt_recent模塊下的ip_pkt_list_tot相關,在RedHat6、Debian、RedHat7上使用命令“cat /sys/module/xt_recent/parameters/ip_pkt_list_tot”查看該值分別是“20”“0”“0”,根據相關資料說明,該值只能通過添加配置文件修改,否則會引發(fā)內核恐慌狀態(tài)(kernel panic),具體修改如下:
1.debian、RedHat6
使 用 命 令“vi /etc/modprobe.d/xt_recent.conf”,加 入“options xt_recent ip_pkt_list_tot=200”。
2.RedHat7
使 用 命 令“vi /etc/modprobe.d/mlx4.conf”,加 入“options xt_recent ip_list_tot=1024 ip_pkt_list_tot=200”。
重啟操作系統(tǒng),通過命令“cat /sys/module/xt_recent/parameters/ip_pkt_list_tot”查看該值,應該已經修改為“200”,此時“--hitcount”值可以最高定義為200。
RedHat7系列操作系統(tǒng)因為啟用了新的Firewalld防火墻配置管理命令,因此除了以上直接配置iptables規(guī)則方法外,還可以通過使用Firewalld管理工具進行抗CC攻擊的配置。執(zhí)行一下firewall指令:
#firwall-cmd–-permanent –-direct–add-rule ipv4 filter INPUT_direct 0–ptcp -m multiport --destinationport 80,443,3371 –m state –-state NEW –m recent –-set
#firwall-cmd–-permanent –-direct–add-rule ipv4 filter INPUT_direct 0 –ptcp -m multiport --destinationport 80,443,3371 –m state –-state NEW–m recent –-update–-seconds 60 --hitcount 37 –j REJECT –-rejectwith tcp-reset
#firewall-cmd –reload
完成后,可使用命令“firewall-cmd –-permanent–-direct –-get-allrules”查看firewalld規(guī)則是否加入成功。
通過Linux本機的防火墻及內核TCP參數的修改和優(yōu)化。Linux主機可以具有很好的抗惡意網絡行為能力和IPS功能。如果配置得當,并將網卡設置為橋模式串接在網絡邊界設備,可發(fā)揮很好的防火墻作用,不但節(jié)約了成本,也可以很好地阻斷4層及7層惡意流量。