در این مطلب با نحوه مسدود کردن شماره پورت با 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

نمونه خروجی

مشاهده پورت‌های بلوکه‌شده پس از مسدودسازی شماره پورت با IPtables

مشاهده پورت‌های بلوکه‌شده پس از مسدودسازی شماره پورت با IPtables