iptables 规则拒绝我的服务器上的连接,这些连接应该被允许。它们是应该允许连接的 SSH 客户端。
系统日志显示:
Dec 3 16:22:49 server kernel: [4125974.777012] iptables denied: IN=eth0 OUT= MAC=<...> SRC=<...> DST=11.22.33.44 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=327 DF PROTO=TCP SPT=42962 DPT=CLIENTPORT WINDOW=64240 RES=0x00 SYN URGP=0
- DST=11.22.33.44 是服务器的IP地址
- MAC=<...> 是服务器的 eth0 MAC 地址(已编辑)
- SRC=<...> 可以是客户端位置的任何 IP 地址(已编辑)
- DPT=CLIENTPORT 来自我指定的一系列端口。每个客户端都有一个他们使用的端口号。当然,实际的端口号显示在系统日志中。
提供给客户端的端口号并不是为了安全。sshd_config
进行了加固,不允许密码登录等。客户端使用密钥对进行连接。
我需要有关允许这些连接的 iptables 规则的帮助。是否可以为 DPT 指定允许的端口范围?
目前的规则是:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere 127.0.0.0/8 reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:80
ACCEPT tcp -- anywhere anywhere tcp dpt:443
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:22
ACCEPT icmp -- anywhere anywhere icmp echo-request
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: '
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
唯一需要的传入连接是 Web 服务器和 SSH。我认为现有的 iptables 规则需要彻底修改。举一个例子表示赞赏。
答案1
您正在寻找多端口 iptables 扩展所以说:
iptables -A INPUT -p tcp -m multiport --dports <port1>:<portn> -j ACCEPT
防火墙脚本中规则 3 之后的某处。
评论:规则 2(拒绝发往本地主机的数据包)很奇怪:许多本地进程通过接口进行通信lo
。通常你使用相反的规则:
iptables -A INPUT -i lo -j ACCEPT