Apache的防攻擊

看看這個對你有沒有幫助

A. IBM AIX 4.3.X
B. Sun Solaris 7
C. Compaq Tru64 UNIX 5.X
D. HP HP-UX 11.0 (research ongoing)
E. Linux kernel 2.2 (tested both SuSE Linux 7.0 和 RedHat 7.0)
F. FreeBSD
G. IRIX 6.5.10

下面敘述的一些調整參數和句法在重新啓動後將不會自動激活,所以如果你需要在每次啓動的時候長期保持這些參數,你就需要增加這些實時命令到如下的啓動文件中:

AIX - /etc/rc.net
Solaris - /etc/init.d/inetinit
Tru64 UNIX - 使用sysconfigdb 或者 dxkerneltuner 命令
HP-UX - /etc/rc.config.d/nddconf
Linux kernel 2.2 - /etc/sysctl.conf
FreeBSD - /etc/rc.conf
IRIX - 使用systune命令

=============================================================
以下是一些IP堆棧調整建議:

1,調節TCP發送和接受空間(TCP send and receive spaces)

TCP發送和接受的空間直接影響TCP 窗口大小參數(TCP window size parameter), 一定程度上的窗口大小增加有助於更有效的傳輸,尤其是一些需要大數量傳輸的服務如FTP和HTTP,默認的一些設置不是每個系統都是最優化的,一般我們需要增加這個窗口大小爲32768字節。除非你設置的時候很清楚的理解RFC1323(http://www.ietf.org/rfc/rfc1323.txt?number=1323)和RFC2018(http://www.ietf.org/rfc/rfc2018.txt?number=2018),否則你不要把這個值增加到高於64K字節。

A. AIX
/usr/sbin/no -o tcp_sendspace=32768
/usr/sbin/no -o tcp_recvspace=32768

B. Solaris
/usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 32768
/usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 32768

C. Tru64 UNIX
沒有推薦的調整.

D. HP-UX
默認情況下TCP發送和接受空間已經設置爲32768.

E. Linux kernel 2.2
Linux自動分配TCP發送和接受空間並默認共同支持RFC1323 (large window support, net.ipv4.tcp_window_scaling) 和 RFC2018 (SACK support, net.ipv4.tcp_sack).

F. FreeBSD
sysctl -w net.inet.tcp.sendspace=32768
sysctl -w net.inet.tcp.recvspace=32768

G. IRIX
默認情況下TCP發送和接受空間設置爲64K字節.

2,調整套接口序列防止SYN攻擊 

各種網絡應用軟件一般必須開放一個或者幾個端口供外界使用,所以其必定可以會被惡意攻擊者向這幾個口發起拒絕服務攻擊,其中一個很流行的攻擊就是SYNFLOOD,在攻擊發生時,客戶端的來源IP地址是經過僞造的(spoofed),現行的IP路由機制僅檢查目的IP地址並進行轉發,該IP包到達目的主機後返回路徑無法通過路由達到的,於是目的主機無法通過TCP三次握手建立連接。在此期間因爲TCP套接口緩存隊列被迅速填滿,而拒絕新的連接請求。爲了防止這些攻擊,部分UNIX變種採用分離入站的套接口連接請求隊列,一隊列針對半打開套接口(SYN 接收, SYN|ACK 發送), 另一隊列針對全打開套藉口等待一個accept()調用,增加這兩隊列可以很好的緩和這些SYN FLOOD攻擊並使對服務器的影響減到最小程度:

A. AIX
/usr/sbin/no -o clean_partial_conns=1
這個設置會指示內核隨機的從q0隊列中去掉半打開套接口來爲新的套接口增加所需空間。

B. Solaris
/usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q 1024
使q 隊列擁有接口等待來自應用程序的accept()調用.
/usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q0 2048
使q0 隊列能維護半打開套接口.

C. Tru64 UNIX
/sbin/sysconfig -r socket sominconn=65535
這個sominconn的值決定了系統能同時處理多少個相同的進入的SYN信息包.
/sbin/sysconfig -r socket somaxconn=65535
這個somaxconn值設置了系統能保留多少個待處理TCP連接.

D. HP-UX
/usr/sbin/ndd -set tcp_syn_rcvd_max 1024
/usr/sbin/ndd -set tcp_conn_request_max 200

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=1280
有效的增加q0的套接口隊列大小.
/sbin/sysctl -w net.ipv4.tcp_syn_cookies=1
啓用TCP SYN cookies支持,能有效的減輕SYN FLOOD的攻擊,但是這個參數會對一些大的窗口引起一些性能問題(參看RFC1323 and RFC2018.

F. FreeBSD
sysctl -w kern.ipc.somaxconn=1024

G. IRIX
listen()隊列被硬性設置爲32.但是系統實際採用待處理連接數爲((3 * backlog) / 2) + 1,其中的backlog數值最大值爲49.

3,調整Redirects參數

惡意用戶可以使用IP重定向來修改遠程主機中的路由表,在設計良好的網絡中,末端的重定向設置是不需要的,發送和接受重定向信息包都要關閉。

A. AIX
/usr/sbin/no -o ipignoreredirects=1
/usr/sbin/no -o ipsendredirects=0

B. Solaris
/usr/sbin/ndd -set /dev/ip ip_ignore_redirect 1
/usr/sbin/ndd -set /dev/ip ip_send_redirects 0

C. Tru64 UNIX
沒有推薦的調整設置.

D. HP-UX
/usr/sbin/ndd -set /dev/ip ip_send_redirects 0

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.conf.all.send_redirects=0
/sbin/sysctl -w net.ipv4.conf.all.accept_redirects=0

F. FreeBSD
sysctl -w net.inet.icmp.drop_redirect=1
sysctl -w net.inet.icmp.log_redirect=1
sysctl -w net.inet.ip.redirect=0
sysctl -w net.inet6.ip6.redirect=0

G. IRIX
/usr/sbin/systune icmp_dropredirects to 1

4,調整ARP清理設置

通過向IP路由緩衝填充僞造的ARP條目可以讓惡意用戶產生資源耗竭和性能減低攻擊。在Solaris中,有2個參數可以管理間隔的清理IP路由緩衝,針對未請求的ARP響應可以通過arp_cleanup_interval調整,AIX可以通過artp_killc來設置。

A. AIX
/usr/sbin/no -o arpt_killc=20
B. Solaris
/usr/sbin/ndd -set /dev/arp arp_cleanup_interval 60000
C. Tru64 UNIX
沒有參考的調整設置.
D. HP-UX
默認設置爲5分鐘.
E. Linux kernel 2.2
沒有參考的調整設置.
F. FreeBSD
sysctl -w net.link.ether.inet.max_age=1200
G. IRIX
沒有參考的調整設置.

5,調整源路由的設置

通過源路由,攻擊者可以嘗試到達內部IP地址 --包括RFC1918中的地址,所以不接受源路由信息包可以防止你的內部網絡被探測。

A. AIX
/usr/sbin/no -o ipsrcroutesend=0
關閉源路由信息包發送.

/usr/sbin/no -o ipsrcrouteforward=0
如果你這個系統要做路由工作如防火牆,這個參數就很重要,關閉這個特徵就可以很好的防止轉發源路由信息包.

B. Solaris
/usr/sbin/ndd -set /dev/ip ip_src_route_forward 0
如果你這個系統要做路由工作如防火牆,這個參數就很重要,關閉這個特徵就可以很好的防止轉發源路由信息包.

C. Tru64 UNIX
沒有推薦的調整.

D. HP-UX
ndd -set /dev/ip ip_forward_src_routed 0
關閉這個特徵就可以很好的防止轉發源路由信息包.

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.conf.all.accept_source_route=0
丟棄所有源地址信息包.
/sbin/sysctl -w net.ipv4.conf.all.forwarding=0
/sbin/sysctl -w net.ipv4.conf.all.mc_forwarding=0
不轉發源路由幀.

F. FreeBSD
sysctl -w net.inet.ip.sourceroute=0
sysctl -w net.inet.ip.accept_sourceroute=0

G. IRIX
/usr/sbin/systune ipforward to 2

6. 調整TIME_WAIT setting 設置

在一些比較繁忙的WEB服務器上,許多套接口可能就處於TIME_WAIT狀態,這是由於一些不正規編碼的客戶端應用程序沒有很正確的處理套接口所引起的,這就可能引起如DDOS的攻擊。

A. AIX
沒有推薦設置.

B. Solaris
/usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 60000

這個參數影響了TCP套接口保持TIME_WAIT狀態的時間數,默認情況下對於一個繁忙的WEB服務器太高了,所以需要設置到低於每60秒,這個參數名字適用與Solaris7或者更高的版本,在Solaris 7之前的版本,其名字不正確的表識爲tcp_close_wait_interval.

C. Tru64 UNIX
沒有推薦的調整設置.

D. HP-UX
ndd -set /dev/tcp tcp_time_wait_interval 60000
套接口將保持TIME_WAIT狀態不超過60秒.

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.vs.timeout_timewait=60
套接口將保持TIME_WAIT狀態不超過60秒.

F. FreeBSD
沒有推薦的調整設置.

G. IRIX
/usr/sbin/systune tcp_2msl to 60

7,調整廣播ECHO響應

Smurf攻擊就是一個僞造的地址通過發送ICMP 8 0 (ECHO REQUEST) 信息到一個廣播地址,一些IP堆棧默認情況下會響應這些信息,所以必須關閉這個特徵。如果這個主機作爲防火牆使用(router),關閉這個特徵就不能處理處理廣播。

A. AIX
/usr/sbin/no -o directed_broadcast=0
不響應直接廣播.

B. Solaris
/usr/sbin/ndd -set /dev/ip ip_respond_to_echo_broadcast 0
不響應直接廣播.
/usr/sbin/ndd -set /dev/ip ip_forward_directed_broadcasts 0
不轉發直接廣播.

C. Tru64 UNIX
沒有推薦調整設置.

D. HP-UX
ndd -set /dev/ip ip_respond_to_echo_broadcast 0
不響應直接廣播.
ndd -set /dev/ip ip_forward_directed_broadcasts 0
不轉發直接廣播. 

E. Linux kernel 2.2
/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
不響應直接廣播.

F. FreeBSD
sysctl -w net.inet.icmp.bmcastecho=0

G. IRIX
/usr/sbin/systune allow_brdaddr_srcaddr to 0

8,針對其他廣播探測的調整

其他還有2個廣播探測可以讓惡意用戶利用,一個就是地址掩碼查詢可以用來探測網絡段大小和範圍。時間戳廣播可以映射和鑑定主機類型。

A. AIX
/usr/sbin/no -o icmpaddressmask=0
防止地址掩瑪查詢.

B. Solaris
/usr/sbin/ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0
防止地址掩瑪查詢.

/usr/sbin/ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
關閉對時間戳廣播詢問的響應.

C. Tru64 UNIX
沒有推薦的調整.

D. HP-UX
ndd -set /dev/ip ip_respond_to_address_mask_broadcast 0
防止泄露主機配置的網絡掩碼.

ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
關閉對時間戳廣播詢問的響應.

E. Linux kernel 2.2
沒有推薦的調整.

F. FreeBSD
sysctl -w net.inet.icmp.maskrepl=0

G. IRIX
使用ipfilterd 來阻塞不需要的ICMP類型.

9,調整參數以支持RFC1948

下面幾個調整會利用RFC1948(http://www.ietf.org/rfc/rfc1948.txt?number=1948)
TCP/IP序列號產生技術來保證給一個TCP 套接口的序列號碼非常難猜測:

B. Solaris
Set TCP_STRONG_ISS=2 in /etc/default/inetinit.
這需要重新啓動才能使能.

G. IRIX
/usr/sbin/systune tcpiss_md5 to 1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章