我怎样才能阻止 Ubuntu 中除三个端口之外的所有端口?

我怎样才能阻止 Ubuntu 中除三个端口之外的所有端口?

如何封锁除 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

相关内容