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

مسدود کردن شماره پورت با IPtables

در این مطلب با نحوه مسدود کردن شماره پورت با IPtables در سیستم‌عامل‌های لینوکس آشنا خواهیم شد. شماره‌های پورت که توسط اینترنت و سایر پروتکل‌های شبکه تشخیص داده می‌شوند، ارتباط و تعامل یک کامپیوتر را را با دیگران فراهم می‌کنند. هر سرور لینوکس دارای یک شماره پورت است. به عنوان مثال: ۱) پورت TCP...

1399/10/234953 بازدید
مسدود کردن شماره پورت با IPtables
در این مطلب با نحوه مسدود کردن شماره پورت با 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
برای مسدود‌ کردن پورت ۸۰ (سرور HTTP) مورد زیر را به اسکریپت iptables اضافه کنید.
php
# /sbin/iptables -A INPUT -p tcp --destination-port 80 -j DROP# /sbin/service iptables save

مسدود کردن ورودی پورت ۸۰ به جز IP آدرس نمونه 1.2.3.4

php
# /sbin/iptables -A INPUT -p tcp -i eth1 ! -s 1.2.3.4 --dport 80 -j DROP

مسدود کردن پورت خروجی

قالب کار به صورت زیر خواهد بود.
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
# /sbin/iptables -A OUTPUT -p tcp --dport 25 -j DROP# /sbin/service iptables save
در همین حال، می‌تواند پورت نمونه شماره ۱۲۳۴  را تنها برای 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
# 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 شماره ۱۶۱ مسدود کنیم؟

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

نحوه مشاهده دسترسی‌های بلوکه شده پورت‌ها

برای این منظور از فرمان 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
نمونه خروجی
مشاهده پورت‌های بلوکه‌شده پس از مسدودسازی شماره پورت با IPtables
مشاهده پورت‌های بلوکه‌شده پس از مسدودسازی شماره پورت با IPtables