Cách chặn từng quốc gia quá phiền phức, phải chọn từng quốc gia một. Nên áp dụng cách chỉ cho IP VN kết nối vào, còn lại chặn hết, như thế triệt để hơn. Để làm việc này thì cần làm 2 bước chính:
- Chỉnh IP VN vào Source IP của zone trusted (default source IP của zone public là any)
- Chuyển zone default đang ở public sang zone drop
Khi 1 kết nối từ ngoài Internet đến server, FirewallD sẽ kiểm tra:
- Source IP là bao nhiêu, nếu là IP VN => vào zone trusted, truy cập HTTP, DNS, SSH v.v...
- Source IP khác IP VN => đang nằm ở zone drop => loại bỏ kết nối.
Loại bỏ cấu hình cũ, đưa FirewallD về default:
sudo su
rm -f /etc/firewalld/zones/*
firewall-cmd --complete-reload
Thêm các rule cho các dịch vụ hoạt động:
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --zone=public --add-port=53/udp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=853/tcp --permanent
Download list IP VN:
wget
https://www.ipdeny.com/ipblocks/data/countries/vn.zone
Thêm IP VN vào Whitelist:
firewall-cmd --new-ipset=
whitelist --type=hash:net --option=family=inet --option=hashsize=4096 --option=maxelem=200000 --permanent
firewall-cmd --ipset=
whitelist --add-entries-from-file=
./vn.zone --permanent
Chỉnh Whitelist vào Source của zone Trusted:
firewall-cmd --zone=
trusted --add-source=ipset:
whitelist --permanent
Thay đổi zone mặc định thành zone drop:
firewall-cmd --set-default-zone=drop
Kiểm tra các zone :
firewall-cmd --list-all
Hiện lên như sau là OK:
drop (active)
target: DROP
icmp-block-inversion: no
interfaces: ens3
Khởi động lại FirewallD để áp dụng các cấu hình vừa chỉnh:
firewall-cmd --reload
Tổng hợp cấu hình FirewallD:
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --zone=public --add-port=53/udp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=853/tcp --permanent
firewall-cmd --ipset=
whitelist --add-entries-from-file=
./vn.zone --permanent
firewall-cmd --zone=
trusted--add-source=ipset:
whitelist --permanent
firewall-cmd --set-default-zone=drop