0

我是从日本发的。我的英语不是很好,所以如果我问粗鲁的问题,我很抱歉。

我正在使用 AWS EC2 构建服务器。

我熟悉使用 AWS SecurityGroup 和 NACL。

这次我还需要同时在我的 EC2 上为 Linux 操作系统配置防火墙。

我正在使用 SSM 连接到 EC2 实例。

我想控制 Linux 操作系统防火墙的输出。它看起来像这样。例子)

Rule 1 *. *. *. */* to port ** is allowed
Rule 2 *. *. *. */* to port ** is allowed
Except for rules 1 and 2, all outputs are rejected.

使用命令 [firewall-cmd --direct add-rule ipv4 filter OUTPUT ]。

我也不知道允许返回数据包或 OUTPUT 的数量。有人请帮助我吗?

感谢您的帮助,谢谢。

4

1 回答 1

0

在 Linux 中有多种方法可以做到这一点:

  • 我对firewalld不熟悉,但是根据this,它是这样完成的:

    # Enable and start the service:
    sudo systemctl enable --now firewalld
    firewall-cmd --permanent ---zone=public --add-port=80/tcp
    firewall-cmd --permanent ---zone=public --add-port=22/tcp
    ...
    # Reload the firewall:
    firewall-cmd --reload
    
  • 您还可以使用 Linux 的集成防火墙iptables, 来实现此目的:

    # Delete all previous rules and create a new chain:
    iptables -F
    iptables -N FIREWALL
    # Direct the INPUT and OUTPUT chains to FIREWALL:
    iptables -A OUTPUT -j FIREWALL
    iptables -A INPUT -j FIREWALL
    # Allow the DNS service:
    iptables -A FIREWALL -p udp --dport 53 -j ACCEPT
    iptables -A FIREWALL -p udp --sport 53 -j ACCEPT
    iptables -A FIREWALL -p tcp --dport 53 -j ACCEPT
    iptables -A FIREWALL -p tcp --sport 53 -j ACCEPT
    ...
    # Drop everything else:
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    

    这样做的目的是接受 DNS 的每个连接并丢弃其他所有内容,您可以为要允许的每个服务执行此操作,请记住,您必须为服务使用的每个端口和协议执行此操作。

    请记住,iptables的规则不是永久性的,因此您需要将其存储在启动时运行的脚本中。

  • 您可以使用 ,而不是执行上述任何操作ufw,这更容易:

    sudo ufw default deny incoming
    sudo ufw allow ssh
    ...
    sudo ufw reload
    

    你只需要允许每一个服务,不需要列出端口和协议,如果你需要指定一个端口,你可以做到!

于 2021-06-11T22:09:59.947 回答