如何封锁除 1962、999、12020 之外的所有端口?
一个端口用于 SSH,另外两个端口用于某种脚本。因此,有必要允许这些端口传出,对吗?
我的 iptables:
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*mangle
:PREROUTING ACCEPT [643521:136954367]
:INPUT ACCEPT [643521:136954367]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
:POSTROUTING ACCEPT [645723:99904505]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*filter
:INPUT ACCEPT [643490:136950781]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
-A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 999 -j ACCEPT
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*nat
:PREROUTING ACCEPT [5673:734891]
:POSTROUTING ACCEPT [2816:179474]
:OUTPUT ACCEPT [2816:179474]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
抱歉,但我对这些东西还真是个新手,我只是想让我的服务器更安全。
答案1
首先,你应该总是刷新以确保已经定义了什么……什么都没有
iptables -F
然后,如果到达末尾且没有匹配的规则,则将 INPUT 链的默认策略设置为 DROP:
iptables -P INPUT DROP
为了确保环回不受影响,你应该添加
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
允许低优先级上的所有流量和您建立的连接的所有传入流量。之后,添加您服务所需的每条规则(如果需要,不要忘记打开 ssh!否则你就出局了):
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT
为了防止自己和其他人意外地在安全方面造成漏洞,我采用了一个小技巧,最后补充一点:
iptables -A INPUT -j DROP
此行与 INPUT 链的所有内容匹配,并且策略不应该得到任何东西。这样做的好处是,即使你在初始化规则集之后的某个时间添加了一个 ACCEPT 规则,它也永远不会被检查,因为所有内容之前都被删除了。所以它确保你必须将所有内容放在一个地方。
对于你的问题,整个事情总结如下:
iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT
iptables -A INPUT -j DROP
答案2
来自和你一样的新手的回复 :-) 我也需要保护我的 Ubuntu 服务器,学习 iptables 是一件我无法完成的痛苦事。UFW(简单防火墙)是一个让防火墙配置尽可能简单的程序。
安装 ufw:
sudo apt-get install ufw
立即禁用它(我必须进行救援启动,因为我被锁定在自己的 SSH 登录之外):
sudo ufw disable
将“拒绝”设置为默认规则(这将阻止所有端口):
sudo ufw default deny
允许您需要的端口:
sudo ufw allow to 1962 sudo ufw allow to 999 sudo ufw allow to 12020 sudo ufw allow from 1962 sudo ufw allow from 999 sudo ufw allow from 12020
如果你确定上述规则不会破坏你的 ssh 连接,请启用 ufw:
sudo ufw enable
文档写得很好,并提供了更多示例:https://help.ubuntu.com/community/UFW