我正在制作一个堡垒 ssh 服务器。当我在 ip 表中使用以下规则时,我能够很好地连接到服务器:
入境规则
- 允许来自我客户端 IP 的端口 22 上的流量
- 阻止所有其他流量
呼出规则
- 允许所有流量流向我的客户端 IP
- 阻止所有其他流量
我的理解是,当有效的客户端调用时,服务器随机选择一个出站端口来完成ssh连接。
- 系统从什么范围的整数中选择这个端口?
- 我可以告诉我的系统使用哪些端口范围吗?
答案1
你的理解是错误的:-)。客户端将选择“tcp-high 端口”来发起到服务器目标端口 22 的流量。服务器将响应客户端发起的源端口。
例如,客户端选择端口 12345 作为源端口来连接到服务器目标端口 22。服务器将尝试将流量从其端口 22 发送到端口 12345 上的客户端。
tcp-high 端口范围为 > 1024 到 65535。
因此,您应该允许 RELATED 和 ESTABLISHED 流量流向您的客户端。例如:
IPTABLES -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
确保上述规则位于“阻止所有其余”规则之前。