Đặc điểm cơ bản của chống tấn công DoS trên firewall là giới hạn số kết nối tăng quá mức bình thường, kiểm tra tính hợp lệ trong state của gói tin.. SYN FLOOD là một kiểu tấn công mà att
Trang 1BÁO CÁO TÌM HIỂU CSF
I Nội dung báo cáo
1, Tìm hiểu tường lửa CSF
2, Những tính năng chính của CSF
3, Áp dụng CSF vào một số tình huống cụ thể
4, Demo chống DDOS HTTP Get
II Nội dung chính
1, Tìm hiểu tường lửa CSF
1.1 Khái niệm về SPI (Stateful Packet Inspection) firewall
SPI firewall là tường lửa có thể theo dõi trạng thái của kết nối( TCP streams, UDP communication) Nhờ đó nó có thể phân biệt được gói tin hợp pháp, chỉ những gói tin phù hợp với kết nối mới được cho phép Nó khác với stateless firewall, một loại
firewall có hiệu suất xử lý tốt hơn, hoạt động ở layer 3 và chỉ xem header gói tin Nhược điểm stateless firewall là không kiểm tra được state của gói tin vì vậy nó dễ bị giả mạo gói tin
1.2 Login/Instrusion Detection and Security application
Tính năng phát hiện đăng nhập, xâm nhập vào hệ thống của firewall qua việc kiểm tra log của các chương trình trong hệ thống Ngoài ra còn theo dõi sự thay đổi của các thư mục, file, tài khoản người dùng Kiểm tra, giới hạn số lượng process, memory Chống lại việc tấn công từ bên trong hệ thống bằng việc thực thi shell độc hại
1.3 CSF
CSF là một SPI firewall, Login/Intrusion Detection and Security application cho Linux servers
Làm việc trên nền tảng iptables, CSF được thiết kế chuyên dụng để bảo vệ cho những server dịch vụ Những tính năng của CSF đều được các chuyên gia hàng đầu về bảo mật lựa chọn kỹ lưỡng Với đặc điểm là mã nguồn mở, CSF luôn được cập nhật liên tục để hoàn thiện thêm các tính năng mới Ngoài ra CSF cực kỳ hữu hiệu để chống lại DoS và DDoS Đặc điểm cơ bản của chống tấn công DoS trên firewall là giới hạn số kết nối tăng quá mức bình thường, kiểm tra tính hợp lệ trong state của gói tin CSF làm rất tốt việc này,
nó có những tính năng cụ thể để lọc ra những người dùng thực sự hay là những zombie đang tấn công server Để ngăn chặn hầu hết các hình thức DoS ta sẽ phải thắt chặt ở
firewall và tinh chỉnh tốt các dịch vụ
2, Những tính năng chính của CSF.
Bảovệ server trướchầuhếthìnhthứctấncông DDOS :
SynFlood, UDPFlood, PortFlood, PingofDeath…
• Bảovệ server trướchìnhthứctấncôngtàikhoản : Brute-force attack, Distributedattacks
• Bảovệ server trướckiểuthămdòtìmhiểu server :
PortScan, PortKnocking
• Chốngthựcthishelltrên server, kiểmtrahệthống file server, process
• Cấmtruycậptheoquốcgia, IP thuộcBlacklist, IP bịchặn ở server khác( cũngsửdụng CSF)
• Chặn IP tạmthời, vĩnhviễn
Trang 2• TruyvấnkiểmtraDNS(Global Lists/DYNDNS/Blacklists) xácđịnhnguồngốc IP
kếtluân spam hoặc IP cấmtruycập
• Hỗtrợ Mail server trongquảnlý IP, accountđăngnhập POP3, IMAP
• Hệthống log tuỳ chỉnh cao, gửibáocáotới mail củaquảntrị, gửithôngbáotớingườidùng khi bịchặn IP
3, Áp dụng CSF vào một số tình huống cụ thể.
3.1: Tình huống hệ thống bị DDoS dồn dập với dạng tấn công SYN FLOOD
SYN FLOOD là một kiểu tấn công mà attacked sử dụng nhiều IP ( có thể giả mạo) gửi liên tiếp những gói tin SYN-ACK(chấp nhận kết nối) và chờ gói ACK từ client để hoàn thành bắt tay 3 bước Nhưng attacked hoặc không trả lời ACK hoặc ip giả mạo nên cũng không có ACK phản hồi nên server sẽ chờ gói ACK cho đến hết timeout Khi số lượng gói SYN được gửi đến server dồn dập như vậy ta phải có các biện pháp khắc phục hiệu quả để giảm số lượng những gói SYN đến từ những địa chỉ giả mạo hoặc ip zombie
Khi server bị tấn công SYNFLOOD với cường độ thấp (ví dụ 1000/s) thì SYN
COOKIES sẽ hoạt động hiệu quả SYN COOKIES là một tính năng sẵn có để chống lại SYN FLOOD Nó kiểm tra tính hợp lệ của gói tin Nhanh chóng huỷ những kết nối không đúng Khi server phải tiếp nhận SYNFLOOD với cường độ lớn, ta phải giới hạn
SYNFLOOD_RATE, SYNFLOOD_BURST hợp lý
Với trường hợp server chạy dịch vụ web server sử dụng để chạy website tin tức Một người dùng bình thường sẽ tạo nhiều nhất 10 kết nối mới trong 1 phút Ta có thể giới hạn như sau để không ảnh hưởng đến người dùng mà lại vô hiệu hoá mức độ tham lam của attacker khi muốn DoS server
SYNFLOOD_RATE=4/s
SYNFLOOD_BRUST=2
Tức là cho phép trong 2s có 4 kết nối SYN đến Cái thứ 6 trong vòng 2s sẽ drop Đây là một
ví dụ Mỗi server cấu hình khác nhau, dịch vụ khác nhau, số lượng user khác nhau sẽ có cách cấu hình khác nhau
3.2: Tình huống tấn công DDoS vào lớp ứng dụng
Các tấn công vào lớp ứng dụng vừa đánh vào yếu kém trong việc cấu hình dịch vụ, vừa tăng số lượng kết nối lên cao, dồn dập yêu cầu server trả lời kết nối làm cho server quá tải hoặc đường truyền bão hoà Một số tấn công vào lớp ứng dụng như HTTP get; HTTP post; Xflash; Slowloris đều thực sự hiệu quả khi có rất nhiều kết nối đến server Vậy để giới hạn không cho server đạt đến ngưỡng giới hạn khả năng chịu tải thì trước khi tinh chỉnh dịch vụ, thông số kernel, dựa vào các IDS, module lọc gói tin ở lớp ứng dụng thì ta phải làm việc đầu tiênlà giới hạn current connection(số connection ở trạng thái ESTABLISHED), theo dõi IP nào có hiện tượng truy vấn dồn dập thì ngưng tạm thời truy cập từ IP đó
CONNLIMIT = 80;5
PORTFLOOD = 80;tcp;20;10
Tức là tại mỗi thời điểm chỉ cho phép 5 kết nối truyển dữ liệu tại port 80 Port 80 giao thức tcp trong10s mà có hơn 20 yêu cầu kết nối đến server thì khoá IP đó đến 10s sau yêu cầu kết nối cuối cùng đến server
Hoặc ta dựa vào tổng số kết nối đến server trong 1 khoảng thời gian để khoá tạm thời hoặc vĩnh viễn luôn IP đó:
CT_LIMIT=200
Trang 3CT_PERMANENT=0
Trong vòng 60 giây có 200 kết nối đến server thì khoá tạm thời trong CT_BLOCK_TIME
3.3: Chống lại Scan các port đặc biệt
Khi server của ta public ra internet việc quản trị từ xa là yêu cầu tất yếu Làm thế nào để bảo
vệ những dịch vụ này trước con mắt dòm ngó của những kẻ nhiều chuyện?
Có hai tính năng giúp ta việc này:
+ Port Scan: PS_INTERVAL=300
PS_LIMIT=10 PS_PERMANENT=0 PS_BLOCK_TIME=3600 Một IP nào đó gửi yêu cầu truy cập đến 10 port không được mở trên server trong 300s thì khoá trong thời gian 1h
+ PortKnocking: PORTKNOCKING=22;TCP;20;10000;20000;30000
Port 22 là port mặc định chạy dịch vụ SSH trên *nix Bình thường ta sẽ đổi port dịch vụ để tránh việc scan của attacker Như vậy chưa đủ an toàn vì attacker vẫn có thể tìm ra Tính năng trên cho phép ta đóng port 22, nhưng khi ta gửi gói SYN đến port
10000;20000;30000 trong vòng 20s thì port 22 sẽ được mở ra cho IP vừa gửi 3 gói SYN trên Một tính năng vô cùng hữu hiệu
3.4: Chống brute force attack
Tính năng chống lại việc đăng nhập sai nhiều lần từ một IP hay một tài khoản(thay đổi IP) trong một khoảng thời gian Trong SECTION:Login Failure Blocking and Alerts cho phép
ta giới hạn số lần đăng nhập sai ở một số dịch vụ Nếu vượt quá số lần IP sẽ bị khoá tạm thời
3.5: Alert and Report
Ngoài việc chống một số loại tấn công thì CSF còn hỗ trợ cảnh báo hoặc báo cáo các hiện tượng trên cho người dùng hoặc admin Khi có sự thay đổi về thư mục, script exploits, account hệthống CSF sẽ report cho admin qua mail
LF_ALERT_TO= admin@domain.com
4, Demo chống DDOS HTTP Get.
HTTP Get là một dạng truyền dữ liệu vào webserver yêu cầu server trả lời câu truy vấn Get
từ client DDOS HTTP GET sẽ có 2 mục đích chính: Tăng số lượng kết nối thật nhiều đến server làm quá giới hạn phục vụ, bắt server thực hiện các cú Get dẫn đến quá tải server do
xử lý PHP, truy vẫn database
Hiện nay các hệ thống botnet lớn rất thông minh Nó có thể thực hiện three-way handshake, HTTPGET với URI ngẫu nhiên, User Agent như người dùng bình thường Nên việc chống DDOS phải có sự kết hợp ở nhiều lớp Trên firewall ta phải thực hiện giới hạn số
connection, khoá những IP có lượng truy vấn đột biến, cho phép gói tin hợp lệ ra vào
Khi một webserver không có firewall hoặc có firewall nhưng không cấu hình giới hạn connection, connection tracking Thực hiện request HTTP GET với rate=100/s Server nhanh chóng quá tải và DoS
Trang 4Hình1: Server bị quá tải do trả lời quá nhiều request
Hình2: Hình ảnh request liên tục của 1 IP.
Trang 5Hình3: TCP stream với URI hoàn toàn hợp lệ
Để hạn chế loại tấn công với bên vỏ ngoài hoàn toàn hợp lệ này ta phải giới hạn connection, phân biệt rõ đặc tính của 1 zombie và 1 người dùng hợp lệ để chặn đùng đối tượng
Như cấu hình ở phần 3.2:
CONNLIMIT = 80;5
PORTFLOOD = 80;tcp;20;10
Ta giới hạn tại một thời điểm 1 IP có 5 connection tồn tại
Trong 10s IP đó không yêu cầu quá 20 connection
Đây là 1 ví dụ điển hình cho 1 forum hay 1 trang tin tức với dung lượng 1 trang không quá lớn 5conn/s có thể sử dụng cho 3 người dùng cùng 1 IP 1 thời điểm Tình trạng
PORTFLOOD như trên chỉ nên áp dụng khi server đang bị DDOS còn không thì ta nên để giới hạn cao hơn một chút
Ngay khi ra thực hiện điều chỉnh trên thì số connection giữa client và server được giới hạn ở mức 5 current Connection Trung bình mỗi người tải trang web chỉ cần tối đa 3 connection trong vòng 2s là đủ Trong 10s để tải 5 trang web trên cùng 1 host cần 15 connection Vậy chỉ có những zombie tham lam mới cần trên 20 conection trong vòng 10s Ta có thể hạn chế những zombie bằng cách sẽ deny ip đó cho đến khi nó thôi không tấn công vào server nữa Như ví dụ trên là IP nào mở hơn 20 connection tới port 80 trong vòng 10s sẽ bị chặn và sau 10s tính từ yêu cầu kết nối cuối cùng sẽ được thả ra
Tình trạng kết nối tới server của máy tấn công khi không bị ngăn cản:
Trang 6Và sau khi giới hạn 5 kết nối:
Trang 7Tuy có rất nhiều yêu cầu kết nối tới server nhưng server chỉ chấp nhận tối đa 5 kết nối Việc giới hạn số connection này có thể áp dụng cho tất cả các loại tấn công DDoS
Kết luận: Xây dựng trên nền tảng iptables nên tính linh hoạt của CSF khá cao Ngoài những tính năng cung cấp sẵn ta cũng có thể can thiệp trực tiếp vào iptables CSF được xây dựng dựa trên các yêu cầu của 1 server dịch vụ nên những tính năng của nó được tinh chỉnh sao cho vừa gọn nhẹ lại phục vụ được các nhu cầu cần thiết của server Đây là một sự lựa chọn cực kỳ hữu hiệu cho bất cứ server public nào