Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.46 MB, 100 trang )
Hình 14: Mô hình mạng triển khai thực tế
Trong đó , Máy chủ web có :
- Sử dụng hệ điều hành Centos 5.2 .
- Cài đặt apache, php, mysql là máy chủ web.
Đây là một môi trường mạng rất phổ biến tại Viêt Nam vì những lý do
sau:
- Dễ dàng triển khai (vì mô hình mạng đơn giản)
- Giá thành rẻ (Centos, apache, php, mysql đều không mất phí).
- Dễ dàng vận hành, quản lý (do mô hình mạng đơn giản).
68
Mô hình mạng triển khai hệ thống phòng chống :
Hình 15: Mô hình mạng sau khi triển khai hệ thống phòng chống
Việc đặt chung hệ thống phòng chống DDoS cùng với máy chủ web có nhược
điểm là máy chủ web sẽ phải tiêu tốn tài nguyên hơn để phục vụ cho hệ thống phòng
chống tuy nhiên do chỉ sử dụng một máy chủ nên giải pháp này sẽ tiết kiệm hơn và phù
hợp hơn với các doanh nghiệp ở Việt Nam.
2. Giải pháp
Qua chương 1 và chương 2, ta có thể rút ra kết luận rằng để có thể phòng và chống
được DDoS cho Máy chủ web thì một mình cá nhân là không đủ, tuy nhiên em có
thể đề xuất một giải pháp tình thế để phòng và chống được những vụ DDoS Web
Server với quy mô nhỏ hoặc kéo dài thời gian “sống sót” của Máy chủ web để ta có
thời gian phối hợp được với các bên liên quan.
Trước khi đi vào phần giải pháp, ta hãy cùng xem biểu đồ luồng dữ liệu đi vào
Web Server
69
Hình 16: Luồng dữ liệu đi đến Web Server
Có thể hình dung luồng dữ liệu đi như sau:
-
Bước đầu tiên máy tính của người dùng sẽ tạo kết nối TCP với Máy
chủ web
-
Thông qua kết nối đó, request đến apache được gửi đến Máy chủ web
-
Request được netfilter so sánh với các rule do Iptables nhập vào.
-
Nếu request hợp lệ thì sẽ được chuyển sang user space (apache), apache
nhận request, xử lý rồi trả lời cho web brower.
Thông qua biểu đồ luồng dữ liệu đến Web Server ta thấy có 2 điểm mà
attacker sẽ lợi dụng để tấn công DDoS vào, đó là phần kết nối TCP và request
đến apache. Nếu attacker gửi rất nhiều TCP connection đến Web Server thì đến
một lúc nào đó, Máy chủ web sẽ không thể nhận thêm connection nữa (queue
đầy, …) và những connection của người dùng hợp pháp sẽ không được xử lý.
Mặc khác, do phụ thuộc vào lượng tài nguyên (RAM) trên máy chủ nên apache
chỉ có thể nhận và xử lý được một số có hạn request. Nên nếu attacker gửi càng
70
nhiều reuquest mà những request này đến được apache thì càng ít người dùng
hợp pháp được phục vụ.
Qua đó, em có một số ý tưởng cho giải pháp phòng chống DDoS cho Máy
chủ web đó là:
-
Cấu hình Server để có thể nhận và xử lý được nhiều nhất số kết nối
TCP/IP.
-
Kết thúc nhanh nhất các kết nối mà không làm ảnh huởng đến người
dùng hợp pháp để có thể nhận và xử lý các kết nối mới.
-
Giới hạn số connection đến Web Server, số connection đến apache
Hình 17: Luồng dữ liệu khi triển khai hệ thống phòng chống DDoS
Thông qua các ý tưởng, giải pháp được đưa ra bao gồm:
- Tối ưu hóa Máy chủ web ở tầng TCP/IP để server có thể nhận và xử lý
nhiều kết nối nhất đồng thời có thể giải phóng các kết nối một cách
nhanh nhất mà không làm ảnh hưởng đến người dùng hợp pháp.
- Cài đặt module connlimit cho Iptables để giới hạn số truy cập từ một IP.
- Triển khai hệ thống IPS gồm Snort inline và Iptables để chống lại các
request DDoS đến máy chủ web.
Em xin nhấn mạnh là hiện nay chưa có giải pháp nào tối ưu để chống lại DDoS,
giải pháp em đề xuất là một trong những giải pháp đã được triển khai và đã có
những thành công trong việc chống lại DDoS làm cho máy chủ web nói chung và
apache nói riêng không bị quá tải, không phục vụ được cho những người dùng hợp
lệ.
71
3. Mô hình thử nghiệm
Do điều kiện khách quan nên em chỉ có thể triển khai và kiểm nghiệm trên mô hình
trong mạng LAN. Mô hình thử nghiệm như sau:
Hình 18: Mô hình mạng thử nghiệm
Trong mô hình này:
- Gồm có 5 máy tính có cấu hình là 1Gb ram, CPU 2.2Ghz trong đó có 1 máy
sử dụng làm IPS/Máy chủ web (snort inline, Iptables , module ipt_connlimit, cài đặt
apache, php, mysql) trên đó có cài đặt một trang web sử dụng code joomla, 4 máy
còn lại đóng vai trò là attack host
- Tất cả các kết nối đều là full-duplex 100Mbit/s Ethernet (100BaseT)
4. Triển khai hệ thống
4.1 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.
72
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 lưu trữ. tcp_syncookies phải được bật giá trị này mới có
hiệu lực.
sysctl -w net.ipv4.tcp_max_syn_backlog="2048"
Đặ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.
73