iptables یک ابزار فایروال قدرتمند برای توزیعهای لینوکس است. این مستندات مرجعی سریع برای دستورات رایج iptables ارائه میدهد. این دستورات شامل مثالهایی برای مجاز و مسدود کردن ترافیک سرویسهای مختلف از طریق پورت، اینترفیس شبکه، و آدرس IP مبدأ است.
تنظیمات اولیه
بیشتر قوانین ارائهشده در اینجا فرض میکنند که سیاست پیشفرض iptables شما برای ترافیک ورودی بر روی drop تنظیم شده است و شما میخواهید بهصورت انتخابی ترافیک را مجاز کنید.
- کپی و جایگذاری دستورات: دستورات مورد نیاز خود را کپی کرده و مقادیر مشخص شده را با مقادیر خود جایگزین کنید.
- ترتیب قوانین مهم است: همه دستورات iptables از گزینه
-A
برای افزودن قانون جدید به انتهای زنجیره استفاده میکنند. برای قرار دادن قانون در جای دیگری از زنجیره، از گزینه-I
استفاده کنید.
دستورات پایه
پذیرش اتصالات Loopback
برای پذیرش تمام ترافیک در رابط Loopback، دستورات زیر را اجرا کنید:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
مجاز کردن اتصالات ورودی و خروجی
برای مجاز کردن ترافیک ورودی و خروجی ایجاد شده و مرتبط، از دستورات زیر استفاده کنید:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
مسدود کردن ترافیک
مسدود کردن یک آدرس IP خاص
برای مسدود کردن ترافیک از یک آدرس IP خاص:
sudo iptables -A INPUT -s 203.0.113.51 -j DROP
یا برای رد کردن اتصال با پیغام خطا:
sudo iptables -A INPUT -s 203.0.113.51 -j REJECT
مسدود کردن اتصال به یک اینترفیس خاص
برای مسدود کردن ترافیک از یک آدرس IP به یک اینترفیس خاص:
sudo iptables -A INPUT -i eth0 -s 203.0.113.51 -j DROP
قوانین سرویسهای خاص
مجاز کردن SSH ورودی
برای مجاز کردن تمام اتصالات SSH ورودی:
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
مجاز کردن SSH ورودی از یک Subnet خاص
برای مجاز کردن اتصالات SSH ورودی از یک Subnet خاص:
sudo iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
مدیریت قوانین
ذخیره قوانین
قوانین iptables پس از راهاندازی مجدد سیستم از بین میروند. برای ذخیره آنها در اوبونتو:
sudo apt install iptables-persistent
برای ذخیره تغییرات:
sudo netfilter-persistent save
مشاهده و حذف قوانین
برای مشاهده قوانین فعلی:
sudo iptables -S
sudo iptables -L
حذف بستههای نامعتبر
برای حذف بستههای ترافیک نامعتبر:
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
مجاز کردن ترافیک وبسرور
اجازه دادن به ترافیک HTTP و HTTPS
برای مجاز کردن اتصالات HTTP و HTTPS ورودی:
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
نکات ایمنی
- دسترسی SSH را قفل نکنید: در صورت از دست دادن دسترسی، باید از طریق کنسول ابرک به سرور متصل شوید و قوانین فایروال را تغییر دهید.
- اولویتبندی قوانین: ترتیب اجرای قوانین اهمیت زیادی دارد، از این رو دقت کنید که قوانین به ترتیب مورد نظر شما اعمال شوند.
این مستندات باید به شما کمک کند تا قوانین مورد نیاز برای مدیریت ترافیک شبکه خود را بهطور صحیح اعمال کنید.