IPTables:只允许SSH访问,没有其他的input或输出

你如何configurationIPTables,使其允许SSH进入,并且不允许其他stream量进出

任何人都可以推荐的安全防范措施?

我有一台服务器,我相信已经成功从GoDaddy迁移,我相信不再使用。

但是我想确定是因为……你永远不知道。 🙂

请注意,这是来自GoDaddy的虚拟专用服务器…这意味着没有备份,几乎不支持。

您只需要将INPUT和OUTPUT链上的默认策略设置为DROP即可。

要允许SSH进入,您需要以下命令:

$ sudo iptables -P INPUT DROP $ sudo iptables -P OUTPUT DROP $ sudo iptables -A INPUT -i lo -j ACCEPT $ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT $ sudo iptables -A OUTPUT -o lo -j ACCEPT $ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 

最后两个命令允许回送stream量,因为这是一些应用程序正常运行所必需的。 您可以使用-s source_ip选项来限制来自特定IP的SSH访问。

按照上面的顺序执行命令会导致当前的SSH会话挂起。 这是因为iptables命令立即生效。 您需要在shell脚本中执行它们,以避免在远程执行时无法连接到您的机器。

像这样的东西:

 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -j REJECT # or iptables -P INPUT DROP iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP 

这是非常普遍的情况。 您只想通过SSH访问远程机器。 您希望阻止所有传入您的系统的stream量,除了Linux下的ssh连接。

将以下规则添加到您的iptables shell脚本中:

/ sbin / iptables -A INPUT -p tcp –dport 22 -j ACCEPT

/ sbin / iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT

第一条规则将接受端口22(ssh服务器)上的传入(INPUT)TCP连接,第二条规则将从我们的ssh服务器源端口22向客户端(OUTPUT)发送传入ssh服务器的响应。

但是,内核为2.4 / 2.6的iptables提供了非常强大的function,可以根据不同的连接状态(如已build立或新连接等)过滤规则。下面是完成此任务的完整小脚本:

#!/ bin / sh的

  • 我的系统IP /设置服务器的IP地址

SERVER_IP = “65.55.12.13”

  • 冲洗所有规则

iptables -F

iptables -X

  • 设置默认的过滤策略

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

  • 允许无限stream量环回

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

  • 只允许传入的SSH

iptables -A INPUT -p tcp -s 0/0 -d $ SERVER_IP –sport 513:65535 –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp -s $ SERVER_IP -d 0/0 – 端口22 – 端口513:65535 -m状态 – 状态ESTABLISHED -j ACCEPT

  • 确保没有任何东西出来或离开这个盒子

iptables -A INPUT -j DROP

iptables -A OUTPUT -j DROP

这个脚本纯粹是严格的防火墙。 它只允许传入的SSH。 没有其他传入服务或ping请求或不允许传出服务或请求。 传入的ssh连接可以是新build立的,也可以是已build立的连接,这是由状态规则'-m state –state NEW,ESTABLISHED'指定的。