前提条件:您只有在已授权可关闭 iptables 的情况下,才能做该项排查。
故障现象:SSH 无法连接,关闭 iptables 后连接恢复。
解决方法:调整 iptables 配置策略。
查看防火墙规则:
iptables -nvL –line-number
L 查看当前表的所有规则,默认查看的是 filter 表,如果要查看 NAT 表,可以加上 -t NAT 参数。
n 不对 IP 地址进行反查,加上这个参数显示速度会快很多。
v 输出详细信息,包含通过该规则的数据包数量、总字节数及相应的网络接口。
修改规则。
若之前已设置过规则策略的,将原有的 iptables 文件保存一份,避免之前设置的策略丢失。
cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
清空服务器上所有的规则。
iptables -F
设置 INPUT 方向所有的请求都拒绝。如果是线上业务请勿直接操作,会导致业务直接中断。
iptables -P INPUT DROP
设置 iptables 防火墙后需放行 22 号端口,否则会导致无法远程。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
指定 IP 访问22号端口。(根据我的判断,这一段可以不用加,因为暂时没必要)
iptables -I INPUT -s 192.168.1.1 -p tcp --dport 22 -j ACCEPT
说明:192.168.1.1 为请求端 IP 地址。
使用iptables -L查看一下添加的规则是否生效。
iptables -L
保存添加的规则。
iptables-save > /etc/sysconfig/iptables
设置后需要重启iptables。
service iptables restart 或 /etc/init.d/iptables restart
操作完成后,重启服务器进行配置验证。
systemctl reboot
完成操作后,请再进行 SSH 连接。
安全组设置
在ECS安全组放行需访问的端口和访问白名单,下面的示例表示允许所有IP访问服务器的80端口。您可以根据实际情况放行允许访问的客户端IP。