در این مطلب با نحوه مسدود کردن شماره پورت با IPtables در سیستمعاملهای لینوکس آشنا خواهیم شد. شمارههای پورت که توسط اینترنت و سایر پروتکلهای شبکه تشخیص داده میشوند، ارتباط و تعامل یک کامپیوتر را را با دیگران فراهم میکنند. هر سرور لینوکس دارای یک شماره پورت است. به عنوان مثال:
۱) پورت TCP شماره ۸۰ – سرور HTTP
۲) پورت TCP شماره ۴۴۳ – سرور HTTPS
۳) پورت TCP شماره ۲۵ – سرور ایمیل
۴) پورت TCP شماره ۲۲ – سرور امنیتی OpenSSH (ریموت)
۵) پورت TCP شماره ۱۱۰ – سرور POP3 (پروتکل پست آفیس نسخه ۳)
۶) پورت TCP شماره ۱۴۳ – مدیریت پیامهای ایمیلی IMAP
۷) پورت TCP / UDP شماره ۵۳ – سیستم نامگذاری دامین یا DNS
مسدود کردن شماره پورت با IPtables در ترافیک ورودی
برای مسدود سازی پورتهای ورودی با IPtables قالب کار به صورت زیر خواهد بود.
[php]
/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
[/php]
برای مسدود کردن پورت ۸۰ (سرور HTTP) مورد زیر را به اسکریپت iptables اضافه کنید.
[php]
# /sbin/iptables -A INPUT -p tcp –destination-port 80 -j DROP
# /sbin/service iptables save
[/php]
مسدود کردن ورودی پورت ۸۰ به جز IP آدرس نمونه 1.2.3.4
[php]
# /sbin/iptables -A INPUT -p tcp -i eth1 ! -s 1.2.3.4 –dport 80 -j DROP
[/php]
مسدود کردن پورت خروجی
قالب کار به صورت زیر خواهد بود.
[php]
/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
[/php]
برای مسدود کردن شماره پورت ۲۵ داریم:
[php]
# /sbin/iptables -A OUTPUT -p tcp –dport 25 -j DROP
# /sbin/service iptables save
[/php]
در همین حال، میتواند پورت نمونه شماره ۱۲۳۴ را تنها برای IP آدرس 192.168.1.2 مسدود کنید.
[php]
# /sbin/iptables -A OUTPUT -p tcp -d 192.168.1.2 –dport 1234 -j DROP
# /sbin/service iptables save
[/php]
نحوه ثبت تاریخچه جزئیات عملکرد پورتها
برای این منظور از قالب زیر استفاده کنید.
[php]
# 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
[/php]
چگونه دسترسی Cracker را با آدرس 123.1.2.3 به پورت UDP شماره ۱۶۱ مسدود کنیم؟
[php]
/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
[/php]
نحوه مشاهده دسترسیهای بلوکه شده پورتها
برای این منظور از فرمان iptables استفاده میکنیم.
[php]
# /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
[/php]
نمونه خروجی

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