Tối u hóa server ở tầng TCP/IP
Bật chức năng tcp_syncookies : Bật chức năng này là cách đơn giản nhất để chống lại SYN flood.
sysctl -w net.ipv4.tcp_syncookies=1
Đặt giá trị cho backlog queue : Giá trị tcp_max_syn_backlog sẽ quyết định có bao nhiêu gói SYN đợc lu trữ. tcp_syncookies phải đợc bật giá trị này mới có hiệu lực.
Đặt lại số lần truyền lại gói SYN,ACK để reply lại gói SYN request. Mặc định là 5 lần tơng đơng với thời gian timeout của kết nối TCP là 180 giây. Đặt giá trị là 1 tơng đơng với thời gian timeout là 9 giây.
sysctl -w net.ipv4.tcp_synack_retries="1" Bật chức năng IP spoofing protaction
sysctl -w net.ipv4.conf.all.rp_filter ="1"
Không chấp nhận forward broadcast
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts="1"
Không chấp nhận source routed packet
sysctl -w net.ipv4.conf.all.accept_source_route=0 Tắt ICMP redirect
sysctl -w net.ipv4.conf.all.accept_redirects=1 Bật bad error message protection
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1j
Một số cấu hình TCP khác :
tcp_abort_on_overflow : Có 2 giá trị 0(mặc định) và 1. Nếu có giá trị là 1 kernel sẽ reset những kết nối mới khi queue đầy.
tcp_fin_timeout : Mặc định là 60 giây.Giá trị của biến này quyết định kernel sẽ giữ những socket ở trạng thái FIN_WAIT-2 trong bao lâu nếu không nhận đợc gói ACK/FIN từ phía client
tcp_orphan_retries: Mặc định là 7.Giá trị này sẽ quyết định TCP/IP stack thử ngắt kết nối ở phía client trớc khi đóng kết nối từ server.
somaxconn: Mặc định là 128.Giá trị này giới hạn kích thớc của listen queue cho các gói new SYN.
ip_conntrack_max: số kết nối tcp lớn nhất mà hệ thống có thể quản lý.
Cài đặt module connlimit cho Iptables
Cài rpm-build
yum install rpm-build
Đặt password cho user dungna
passwd dungna
Login vào user ruby
Xác định version của kernel đang dùng
uname –a
Xác định version của Iptables đang dung
iptables –v
Download các packet và đặt ở th mục home của user
wget http://mirror.centos.org/centos/5/updates/SRPMS/kernel- 2.6.18-92.1.22.el5.src.rpm (cùng version với kernel đang dùng)
wget
http://www.netfilter.org/projects/iptables/files/iptables- 1.3.5.tar.bz2 (cùng version với Iptables đang dùng)
wget http://ftp.netfilter.org/pub/patch-o-matic- ng/snapshot/patch-o-matic-ng-20090326.tar.bz2 Xây dựng môi trờng build cho user
cd ~
mkdir -p \ rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} echo ‘%_topdir %(echo $HOME)/rpmbuild’ > .rpmmacros\ Cài kernel source
rpm -i kernel-2.6.18-92.1.22.e15.src.rpm cd ~/rpmbuild/SPECS
rpmbuild -bp –target=`uname -m` kernel-2.6.spec
Sau bớc trên kernel source sẽ đợc tạo ra tại :
~/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.i686 Giải nén iptables và path-o-matic-ng
cd ~
tar -xvjf iptables-1.3.5.tar.bz2
tar -xvjf path-o-matic-ng-20090326.tar.bz2
Tạo và gán giá trị cho 2 biến môi trờng
export KERNEL_DIR=~/rpmbuild/BUILD/kernel-2.6.18/linux- 2.6.18.i686
export IPTABLES_DIR=~/iptables-1.3.5/ Patch modules connlimit
cd path-o-matic-ng-20090326 ./runme download
./runme connlimit
Cập nhật module vào kernel
cd ~/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.i686 make oldconfig make prepare make modules_prepare cd net/ipv4/netfilter make -C ~/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.i686 M=$PWD modules
sudo cp ipt_connlimit.ko /lib/modules/2.6.18- 92.1.22.e15/updates
sudo cd /lib/modules
sudo depmod 2.6.18-92.1.22.e15 Load module ipt_connlimit
sudo modprobe ipt_connlimit
-Sử dụng : Giới hạn chỉ có 5 connection từ một IP đến apache iptables -A INPUT -p tcp --syn --dport 80 -m connlimit -- connlimit-above 5 -j REJECT
Cài đặt Snort inline