使用Iptable限制SSH访问

时间:2020-01-09 10:43:16  来源:igfitidea点击:

问题描述:如何使用基于Linux iptables的防火墙停止或者限制对OpenSSH(SSHD)服务器的访问?

解决方法:Linux iptables防火墙可用于阻止或者限制对ssh服务器的访问。

iptables命令用于在Linux内核中设置,维护和检查IP数据包过滤器规则表。
但是,您也可以将tcpd(访问控制工具)用于Internet服务。

使用iptables限制SSH访问

以下是一条简单的规则,该规则阻止端口22上的所有传入ssh访问

iptables -A INPUT -p tcp -s 0/0 --sport 513:65535 -d 195.55.55.78 --dport 22 -m state --state NEW,ESTABLISHED -j DROP

但是,在现实生活中,您需要使用以下内容。
让我们假设您的ssh服务器IP地址为195.55.55.78,请记住ssh服务器使用TCP端口22进行所有传入连接。
使用iptables,您可以使用以下两个规则来阻止端口22上的所有传入连接:

iptables -A INPUT -p tcp -s 0/0 --sport 513:65535 -d 195.55.55.78 --dport 22 -m state --state NEW,ESTABLISHED -j DROP
iptables -A OUTPUT -p tcp -s 195.55.55.78 --sport 22 -d 0/0 --dport 513:65535 -m state --state ESTABLISHED -j DROP

如果您只想拒绝对IPS组的访问,则需要在脚本中添加以下规则:

IPS="192.54.1.20 64.66.44.22 64.66.44.25"
for i in $IPS
do
iptables -A INPUT -p tcp -s 0/0 -s $i --sport 513:65535 -d 195.55.55.78 --dport 22 -m state --state NEW,ESTABLISHED -j DROP
iptables -A OUTPUT -p tcp -s 195.55.55.78 --sport 22 -d $i --dport 513:65535 -m state --state ESTABLISHED -j DROP
done

将上述所有规则添加到您的iptables防火墙shell程序脚本中(不要执行@ shell提示符)