برخی از ادمین ها، اغلب پیغام های ICMP (پروتکل پینگ) به سرورهایشان را Block میکنند تا ماشین های لینوکسی را از دنیای بیرون روی بستر شبکه مخفی کنند یا از یکسری از حملات ip flooding و denial of service جلوگیری کنند. ساده ترین روش برای بستن ping روی سیستم های لینوکسی اضافه کردن یک رول iptable همانطور که در مثال زیر نمایش داده شده است میبینید. iptable بخشی از netfilter کرنل لینوکس میباشد و معمولا به صورت پیش فرض روی بیشتر سیستم های لینوکسی نصب است.
روش کلی دیگر برای مسدود کردن پیغام های ICMP روی سیستم لینوکسی شما اضافه کردن متغییر کرنلی زیر میباشد که همه پکت های ping را drop خواهد کرد.
به منظور اینکه rule بالا را دائمی کنیم خط زیر را به فایل /etc/sysctl.conf اضافه میکنیم و تغییرات را با دستور sysctl اعمال میکنیم.
در توزیع های لینوکسی مبتنی بر Debian که اپلیکیشن فایروالی UFW استفاده میکنند شما میتوانید پیغام های ICMP را با اضافه کردن خط زیر به فایل /etc/ufw/before.rules همانطور که در زیر مشاهده میکنید، بلاک کنید.
برای اعمال تغییر بالا با اجرا کردن دستور زیر میتوانید فایرول UFW را ریستارت کنید.
در توزیع های جدید لینوکسی CentOS یا Red Hat Enterprise که از Firewalld برای مدیریت قوانین iptables استفاده میکنند برای مسدود کردن درخواست های ping خط زیر را اجرا کنید.
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
دستورات مفید Firewalld برای تنظیم و مدیریت فایروال در لینوکس
تنظیمات FirewallD در لینوکس RHEL/CentOS 7 و Fedora 21
نحوه اضافه کردن یک Service یا Port به FirewallD
ترفندها و دستورات iptables
آموزش تنظیمات فایروال لینوکس (iptable)
نحوه ی نصب و راه اندازی فایروال CSF در RHEL/CentOs و Fedora
آموزش نصب و کانفیگ pfsense 2.3.2 firewall/router
به منظور تست کردن اینکه آیا rule های فایروال با موفقیت در همه موارد عنوان شده در بالا اعمال شده، کافیست از یک سیستم ریموت ip address ماشین لینوکس تان را ping کنید. در صورتی که پیغام های ICMP به ماشین لینوکس تان block شده باشند شما باید یک پیغام Request timed out یا Destination Host را روی سیستم ریموت تان دریافت کنید.
کد PHP:
# iptables -A INPUT --proto icmp -j DROP
# iptables -L -n -v[List Iptables Rules]
روش کلی دیگر برای مسدود کردن پیغام های ICMP روی سیستم لینوکسی شما اضافه کردن متغییر کرنلی زیر میباشد که همه پکت های ping را drop خواهد کرد.
کد PHP:
# echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all
به منظور اینکه rule بالا را دائمی کنیم خط زیر را به فایل /etc/sysctl.conf اضافه میکنیم و تغییرات را با دستور sysctl اعمال میکنیم.
کد PHP:
# echo “net.ipv4.icmp_echo_ignore_all = 1” >> /etc/sysctl.conf
# sysctl -p
در توزیع های لینوکسی مبتنی بر Debian که اپلیکیشن فایروالی UFW استفاده میکنند شما میتوانید پیغام های ICMP را با اضافه کردن خط زیر به فایل /etc/ufw/before.rules همانطور که در زیر مشاهده میکنید، بلاک کنید.
کد PHP:
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
برای اعمال تغییر بالا با اجرا کردن دستور زیر میتوانید فایرول UFW را ریستارت کنید.
کد PHP:
# ufw disable && ufw enable
در توزیع های جدید لینوکسی CentOS یا Red Hat Enterprise که از Firewalld برای مدیریت قوانین iptables استفاده میکنند برای مسدود کردن درخواست های ping خط زیر را اجرا کنید.
کد PHP:
# firewall-cmd --zone=public --remove-icmp-block={echo-request,echo-reply,timestamp-reply,timestamp-request} --permanent
# firewall-cmd --reload
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
دستورات مفید Firewalld برای تنظیم و مدیریت فایروال در لینوکس
تنظیمات FirewallD در لینوکس RHEL/CentOS 7 و Fedora 21
نحوه اضافه کردن یک Service یا Port به FirewallD
ترفندها و دستورات iptables
آموزش تنظیمات فایروال لینوکس (iptable)
نحوه ی نصب و راه اندازی فایروال CSF در RHEL/CentOs و Fedora
آموزش نصب و کانفیگ pfsense 2.3.2 firewall/router
به منظور تست کردن اینکه آیا rule های فایروال با موفقیت در همه موارد عنوان شده در بالا اعمال شده، کافیست از یک سیستم ریموت ip address ماشین لینوکس تان را ping کنید. در صورتی که پیغام های ICMP به ماشین لینوکس تان block شده باشند شما باید یک پیغام Request timed out یا Destination Host را روی سیستم ریموت تان دریافت کنید.