Saturday, April 2, 2016

Chặn IP Trung Quốc bằng Iptables + Ipset

WHY ? 


Không phải phân biệt chủng tộc hay kích động thù hằn dân tộc nhưng có một sự thật là TQ là nước chiếm tỉ lệ lớn nguồn gốc các cuộc tấn công mạng vào các Website của thế giới nói chung và VN nói riêng. Nhiều website nước ngoài cũng tiến hành chặn IP Trung Quốc để ngủ ngon hơn, mình cũng nên học hỏi.
Lưu ý : Việc chặn IP chỉ là biện pháp đối phó tương đối (chỉ hiệu quả trước một số loại tấn công như DoS, Spam..) . Đối với những kẻ tấn công có chủ đích nhắm vào ứng dụng của bạn thì chúng có thừa thủ đoạn để qua mặt các bộ lọc IP. Về lâu dài, bạn cần định kỳ kiểm trả bảo mật và đảm bảo các quy tắc lập trình an toàn trong quá trình phát triển.

HOW ?


Công cụ :

  • iptables - firewall mặc định trên hầu hết Linux Distro (Lưu ý : CentOS 7 và FC20 trở đi sử dụng firewallD thay thế iptables, cần cài lại iptables thay thế firewallD hoặc viết rule cho firewallD)
  • ipset - công cụ hỗ trợ iptables, có chức năng tạo cái list IP để add rule cho iptables (Cài đặt : yum install ipset hoặc apt-get install ipset)
Tạo file bash script có nội dung :
/etc/china-block.sh
# Tạo list ipset tên china
ipset -N china hash:net # Xóa nội dung file cn.zone cũ (file danh sách IP china) để cập nhật list mới.
rm ~/cn.zone
# Tải list IP Trung Quốc mới nhất về từ site ipdeny, lưu ở home
wget -P ~ http://www.ipdeny.com/ipblocks/data/countries/cn.zone
# Đọc từng dòng trong file cn.zone rồi lưu vào list ipset china
for i in $(cat ~/cn.zone ); do ipset -A china $i; done
# Restore các rule iptables khi khởi động lại
/sbin/iptables-restore < /etc/iptables.firewall.rules
Thêm rule vào file iptables.firewall.rules
-A INPUT -p tcp -m set --match-set china src -j DROP
Chạy thử file china-block.sh
$ sh china-block.sh
Kiểm tra kết quả
$ iptables -L Chain INPUT (policy ACCEPT)
target     prot opt source               destination
...
DROP       tcp  --  anywhere             anywhere             match-set china src
..
Cuối cùng là tạo crontab định kỳ thực hiện sáng sớm mỗi ngày
$ crontab -e * 1 * * * /etc/china-block.sh

0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Powerade Coupons