Linux:使用IPtables阻止端口

时间:2020-01-09 10:41:04  来源:igfitidea点击:

在Linux操作系统下,如何使用iptables阻止端口号?

Internet和其他网络协议可以识别的端口号,从而使计算机可以与他人进行交互。
每个Linux服务器都有一个端口号(请参阅/etc/services文件)。
例如:

  • TCP端口80 HTTP服务器
  • TCP端口443 HTTPS服务器
  • TCP端口25邮件服务器
  • TCP端口22 OpenSSH(远程)安全shell服务器
  • TCP端口110 POP3(邮局协议v3)服务器
  • 电子邮件的TCP端口143 Internet邮件访问协议(IMAP)管理
  • TCP/UDP端口53域名系统(DNS)

阻止输入端口(入站端口)

语法如下所示,以使用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

要阻止端口80(HTTP服务器),请输入(或将其添加到iptables shell脚本中):

# /sbin/iptables -A INPUT -p tcp --destination-port 80 -j DROP
# /sbin/service iptables save

阻止传入端口80(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

要阻止出站端口25,请执行:

# /sbin/iptables -A OUTPUT -p tcp --dport 25 -j DROP
# /sbin/service iptables save

您只能为IP地址192.168.1.2阻止端口1234:

# /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(IP:123.1.2.3)访问UDP端口161?

/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