当前位置: 首页>>技术教程>>正文


如何在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

抱歉,但是我真的是个新手,我只想让我的服务器更安全。

最佳回答

起初,您应该始终冲洗以确保已定义了什么……没什么

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

以允许lo-if上的所有流量以及您建立的连接的所有传入流量。之后,添加您服务所需的每条规则(如果需要,请不要忘记打开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-rule,也不会检查它,因为之前已删除所有内容。这样可以确保您将所有内容都放在一个地方。

对于您的问题,整个内容总结如下:

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

次佳回答

像您这样的新手回复:-)我也需要保护我的Ubuntu服务器,学习iptables是我无法克服的痛苦。 UFW(简单防火墙)是使防火墙配置尽可能简单的程序。

  • 安装ufw:

    sudo apt-get install ufw
    
  • 立即禁用它(我必须使用rescue-boot,因为我被自己的SSH登录名锁定了):

    sudo ufw disable
    
  • 将”deny”设置为默认规则(这将阻止所有端口):

    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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11158.html,未经允许,请勿转载。