فایروال تحت شبکه لینوکسی IPtables
آشنایی و کار با فایروال تحت شبکه لینوکسی IPtables
IPtables فایروالی در لینوکس می باشد که به مدیران شبکه و کاربران اجازه کنترل ترافیک شبکه در لایه چهارم شبکه (transport) و همچنین لایه های بالاتر و پایین تر را می دهد که امروز ما قصد داریم شما را با طرز کار این فایروال آشنا کنیم.
معمولا iptables در زمینه های مختلفی مثل کنترل پکت های ورودی و خروجی سیستم، کنترل و ایجاد دسترسی ها و محدودیت و… استفاده می شود. لازم به ذکر می باشد که فایروال IPtables محدود به پروتکل IPv4 بوده و نوع های دیگر این فایروال برای استفاده غیر از IPv4 به اسم های زیر می باشند:
- IP6tables: استفاده برای پروتکل IPv6
- arptables: استفاده برای پروتکل ARP
برای نصب این فایروال می توانید از دستور زیر استفاده کنید اول repository سیستم را اپدیت می کنیم و سپس اقدام به نصب آن می کنیم.
sudo apt update sudo apt install iptables
توضیح چند سوییچ این ابزار:
- -s : برای مشخص کردن IP آدرس
- -i : برای مشخص کردن اینترفیس یا پورت شبکه مورد نظر
- -p : برای مشخص کردن پروتکلی که عمل فیلترینگ روی آن انجام بشود برای مثال TCP ,UDP ,ICMP
- -j : برای مشخص کردن عملیاتی که بر روی این رول انجام بشود، برای مثال اجازه ورود یا خروج ترافیک شبکه
syntax دستوری این فایروال به این صورت می باشد:
iptables -A chain -i interface -p protocol {udp/tcp} -s source --dports port -j target
چک کردن رول های مختلف بر روی سیستم و یا سرور:
sudo iptables -L -n -v
فعال کردن ترافیک ورودی پورت ها:
SSH{22} ,https {443} ,http{80} ,telnet {23}
به این صورت رول ها را تعریف می کنیم:
IPtables -A INPUT -p tcp --dports 22 -j ACCEPT IPtables -A INPUT -p tcp --dports 23 -j ACCEPT IPtables -A INPUT -p tcp --dports 443 -j ACCEPT IPtables -A INPUT -p tcp --dports 80 -j ACCEPT
نحوه بلاک کردن ترافیک ورودی یک ایپی به سیستم ما ( هشدار: از این دستور برای تست ایپی آدرس خود و یا تجهیزات شبکه که به آنها دسترسی دارید استفاده نکنید)
sudo iptables -A INPUT -s 192.168.10.2 -j DROP
کامندی به منظورت بلاک کردن یک IP address و دسترسی نداشتن به سیستم ما (درصورت استفاده به منظور بلاک کردن ترافیکی خاص برای مثال TCP به این شکل عمل می کنیم و از سوییچ -p که برای مشخص کردن پروتکل است استفاده می کنیم)
sudo iptables -A INPUT -p tcp -s 192.168.10.2 -j DROP
نکته: باید به جای آدرس 192.168.10.2 آدرس ایپی مورد نظر را قرار دهید.
نحوه بستن پورت در IPtables (در این دستور ترافیک خروجی سیستم ما به پورت مورد نظر بسته می شود)
iptables -A OUTPUT -p tcp --drop port -j DROP
و اگر بخوایم پورت رو درون سیستم خود ببندیم که کسی از بیرون به آن وصل نشود به این صورت عمل می کنیم:
iptables -A INPUT -p tcp --drop port -j DROP
نحوه بلاک کردن ترافیک خروجی به سمت یک سرور و یا سایت خاص (برای مثال اگر ما می خواهیم کاربران شبکه به سایت facebook.com دسترسی نداشته باشند به شکل زیر عمل می کنیم)
Host Facebook.com Whois <Facebook IP address> | grep CIDR IPtables -A OUTPUT -p tcp -d <Facebook range IP address> -j DROP
نحوه بستن پروتکل ICMP به منظور اینکه دیگران نتوانند از سیستم ما ping بگیرند:
iptables -A INPUT -p icmp -i eth0 -j DROP
نحوه ذخیره کارهایی که روی iptables انجام داده ایم درون یک فایل:
iptables-save > /home/$USER/Desktop/file.rulse
در دستور بالا به جای $USER باید یوزر خود را وارد کنید و مسیر دلخواه خود که برای مثال ما در داخل desktop با فایلی یه اسم file.rules ذخیره کردیم.
غیرفعال کردن ارسال ایمیل از سیستم شما (می توانید پورت های پروتکل SMTP را با دستور زیر غیرفعال کنید)
iptables -A OUTPUT -p tcp --dports 25,456,587 -j REJECT
بلاک کردن یک رنج IP (در دستور زیر ما رنج 10.100 را تا 10.200 بلاک کردیم)
iptables -A INPUT -m iprange --src-range 192.168.10.100-192.168.10.200 -j DROP
بلاک کردن تمامی ترافیک های ورودی به سیستم:
IPtables -A INPUT -j DROP
بلاک کردن تمامی ترافیک های خروجی سیستم:
IPtables -A OUTPUT -j DROP
نکته: بعد از زدن این دستور شما هیچ ارتباطی به سمت بیرون نخواهید داشت.
برای حذف رول ها و قوانین مشخص شده در IPtables از سوییچ زیر استفاده می کنیم:
- -F ( Flush )
- IPtables -F
امیدوارم که از این آموزش لذت کافی را برده باشید.
نویسنده: مهدیس تنگسیری نژاد