بستن IPهای یک کشور توسط ipset و firewall در CentOS7

ابتدا با استفاده از دستور زیر IP های مشکوک را شناسایی می کنیم:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

در لیست تعداد کانکشن ها، معمولا IPهایی با تعداد کانکشن بالای 50 که از غیر ایران هستند، منبع حمله به سرور شما می باشند.

برای IP های مشکوک با استفاده از سایت https://www.iplocation.net کشور مورد نظر را پیدا کنید. در صورتی که IP های مشکوک از یک کشور زیاد است، بهتر است کل محدوده IP های آن کشور را مسدود کنید.

گام اول: نصب ipset

yum install ipset

در زمان نگارش این مطلب هنوز فایل های راه انداز سرویس ipset برای CentOS7 همراه با نصب ipset ایجاد نمیوشند. برای این کار فایل های زیر را دانلود کنید.

سپس این فایل ها را در مسیر مناسب قرار دهید، کد زیر فایل ها را در مسیر مناسب قرارداده و مجوز اجرای آنها را ست می کند:

cp -p ipset.start-stop /usr/libexec/ipset/ipset.start-stop
cp -p ipset.service /usr/lib/systemd/system/ipset.service
chmod 755 /usr/lib/systemd/system/ipset.service /usr/libexec/ipset/ipset.start-stop

برای اجرای سرویس ipset دستورات زیر را وارد کنید:

/bin/systemctl enable ipset.service
/bin/systemctl start ipset.service

سپس فایل zone شامل لیست محدوده IP های کشور مورد نظر را از سایت IPdeny دانلود کرده و ست های IP را به صورت زیر تعریف میکنیم.

ipset -N china hash:net
rm cn.zone
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone
for i in $(cat ./cn.zone ); do ipset -A china $i; done

در مثال فوق یک بلاک IP با نام china تعریف شده است. به هر تعداد که لازم است برای کشورهای مورد نظر بلاک IP بسازید.

برخی کشورهای دیگر

ipset -N indonesia hash:net
for i in $(cat ./cn.zone ); do ipset -A indonesia $i; done
ipset -N bangladesh hash:net
for i in $(cat ./bd.zone ); do ipset -A bangladesh $i; done
ipset -N brazil hash:net
for i in $(cat ./br.zone ); do ipset -A brazil $i; done
ipset -N france hash:net
for i in $(cat ./fr.zone ); do ipset -A france $i; done
ipset -N iceland hash:net
for i in $(cat ./is.zone ); do ipset -A iceland $i; done
ipset -N russia hash:net
for i in $(cat ./ru.zone ); do ipset -A russia $i; done
ipset -N netherlands hash:net
for i in $(cat ./nl.zone ); do ipset -A netherlands $i; done

گام دوم: تعریف Rule جدید برای بلاک کردن ترافیک ورودی از یک بلاک IP

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT_direct 1  -m set --match-set china src -j DROP
firewall-cmd --reload

مشاهده لاگ

- edit /etc/sysconfig/firewalld
- add --debug=2 to FIREWALLD_ARGS variable so it looks like
   FIREWALLD_ARGS=--debug=2
- service firewalld restart
برچسب ها: 
درخت مرجع: 

افزودن نظر جدید