در این مطلب با نحوه مسدود کردن شماره پورت با IPtables در سیستمعاملهای لینوکس آشنا خواهیم شد. شمارههای پورت که توسط اینترنت و سایر پروتکلهای شبکه تشخیص داده میشوند، ارتباط و تعامل یک کامپیوتر را را با دیگران فراهم میکنند. هر سرور لینوکس دارای یک شماره پورت است. به عنوان مثال:
۱) پورت TCP شماره ۸۰ – سرور HTTP
۲) پورت TCP شماره ۴۴۳ – سرور HTTPS
۳) پورت TCP شماره ۲۵ – سرور ایمیل
۴) پورت TCP شماره ۲۲ – سرور امنیتی OpenSSH (ریموت)
۵) پورت TCP شماره ۱۱۰ – سرور POP3 (پروتکل پست آفیس نسخه ۳)
۶) پورت TCP شماره ۱۴۳ – مدیریت پیامهای ایمیلی IMAP
۷) پورت TCP / UDP شماره ۵۳ – سیستم نامگذاری دامین یا DNS
مسدود کردن شماره پورت با IPtables در ترافیک ورودی
برای مسدود سازی پورتهای ورودی با IPtables قالب کار به صورت زیر خواهد بود.
/sbin/iptables -A INPUT -p tcp --destination-port {PORT-NUMBER-HERE} -j DROP ### interface section - use eth1 ### /sbin/iptables -A INPUT -i eth1 -p tcp --destination-port {PORT-NUMBER-HERE} -j DROP ### only drop port for given IP or Subnet ## /sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP-ADDRESS-HERE} -j DROP /sbin/iptables -A INPUT -i eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP/SUBNET-HERE} -j DROP
برای مسدود کردن پورت ۸۰ (سرور HTTP) مورد زیر را به اسکریپت iptables اضافه کنید.
# /sbin/iptables -A INPUT -p tcp --destination-port 80 -j DROP # /sbin/service iptables save
مسدود کردن ورودی پورت ۸۰ به جز IP آدرس نمونه 1.2.3.4
# /sbin/iptables -A INPUT -p tcp -i eth1 ! -s 1.2.3.4 --dport 80 -j DROP
مسدود کردن پورت خروجی
قالب کار به صورت زیر خواهد بود.
/sbin/iptables -A OUTPUT -p tcp --dport {PORT-NUMBER-HERE} -j DROP ### interface section use eth1 ### /sbin/iptables -A OUTPUT -o eth1 -p tcp --dport {PORT-NUMBER-HERE} -j DROP ### only drop port for given IP or Subnet ## /sbin/iptables -A OUTPUT -o eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP-ADDRESS-HERE} -j DROP /sbin/iptables -A OUTPUT -o eth0 -p tcp --destination-port {PORT-NUMBER-HERE} -s {IP/SUBNET-HERE} -j DROP
برای مسدود کردن شماره پورت ۲۵ داریم:
# /sbin/iptables -A OUTPUT -p tcp --dport 25 -j DROP # /sbin/service iptables save
در همین حال، میتواند پورت نمونه شماره ۱۲۳۴ را تنها برای IP آدرس 192.168.1.2 مسدود کنید.
# /sbin/iptables -A OUTPUT -p tcp -d 192.168.1.2 --dport 1234 -j DROP # /sbin/service iptables save
نحوه ثبت تاریخچه جزئیات عملکرد پورتها
برای این منظور از قالب زیر استفاده کنید.
# Logging # ### If you would like to log dropped packets to syslog, first log it ### /sbin/iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "PORT 80 DROP: " --log-level 7 ### now drop it ### /sbin/iptables -A INPUT -p tcp --destination-port 80 -j DROP
چگونه دسترسی Cracker را با آدرس 123.1.2.3 به پورت UDP شماره ۱۶۱ مسدود کنیم؟
/sbin/iptables -A INPUT -s 123.1.2.3 -i eth1 -p udp -m state --state NEW -m udp --dport 161 -j DROP # drop students 192.168.1.0/24 subnet to port 80 /sbin/iptables -A INPUT -s 192.168.1.0/24 -i eth1 -p tcp -m state --state NEW -m tcp --dport 80 -j DROP
نحوه مشاهده دسترسیهای بلوکه شده پورتها
برای این منظور از فرمان iptables استفاده میکنیم.
# /sbin/iptables -L -n -v # /sbin/iptables -L -n -v | grep port # /sbin/iptables -L -n -v | grep -i DROP # /sbin/iptables -L OUTPUT -n -v # /sbin/iptables -L INPUT -n -v
نمونه خروجی