Gần đây nổi lên 1 số script chế lại từ các đoạn code share trên mạng dùng để tấn công từ chối dịch vụ, những đoạn script chế lại này thường được attacker chỉnh sửa để sử dụng 1 danh sách proxies để flood vì vậy rất khó để limit request/connection, khi log ra thì thấy có 1 số lượng lớn truy cập từ rất rất nhiều các IP khác nhau.
Tuy nhiên vì ở đây attacker sử dụng proxies miễn phí nên đều có 1 điểm chung là “X_Forwarded_For”. Dạng tấn công này nếu đánh vào 1 máy chủ cấu hình cao thì thường làm overload dịch vụ bên trong như Database (Mysql) hay CGI (PHP, Perl, Websocket, …) gây ra lỗi “Time out” do phải sử lý quá nhiều request 1 lúc.
Đoạn cấu hình dưới đây sẽ giúp bạn trong những trường hợp như vậy, nó chặn toàn bộ các request có chứa X-Forwarded_For để không làm ảnh hưởng đến các dịch vụ phía sau. Tuy nhiên nó cũng còn tùy thuộc vào Webserver bạn sử dụng và cấu hình server, nếu webserver như apache xử lý chậm gây tắc nghẽn và treo thì các bạn nên dựng nginx đứng trước để chặn.
Dành cho Server sử dụng Apache:
Thêm đoạn code dưới đây vào file .htaccess
/share/anti_dos_through_multi_proxies
# .htaccess for apache <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP:VIA} !^$ [OR] RewriteCond %{HTTP:FORWARDED} !^$ [OR] RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR] RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR] RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR] RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR] RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR] RewriteCond %{HTTP:XROXY_CONNECTION} !^$ [OR] RewriteCond %{HTTP:X-FORWARDED-FOR} !^$ [OR] RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$ [OR] RewriteCond %{HTTP:FORWARDED-FOR} !^$ [OR] RewriteCond %{HTTP:X-FORWARDED} !^$ RewriteRule ^(.*)$ - [F] </IfModule>
Dành cho Server sử dụng Nginx:
# nginx config if ($http_x_forwarded_for) {return 444;}