临时文件
确保firewalld服务正在运行:
sh
复制代码
sudo systemctl start firewalld
sudo systemctl enable firewalld
禁止所有流量:
首先,设置默认的策略为拒绝所有进入和外出的流量。
sh
复制代码
sudo firewall-cmd --set-default-zone=drop
允许26.6.6.1访问主机的22端口:
为了允许特定主机访问22端口,您可以添加以下规则:
sh
复制代码
sudo firewall-cmd --permanent --new-zone=special
sudo firewall-cmd --permanent --zone=special --add-source=26.6.6.1
sudo firewall-cmd --permanent --zone=special --add-port=22/tcp
sudo firewall-cmd --reload
允许主机访问10.0.0.3的9200端口:
为了允许特定的主机访问外部主机的特定端口,您需要在 trusted 区域中添加规则:
sh
复制代码
sudo firewall-cmd --permanent --zone=trusted --add-source=10.0.0.10
sudo firewall-cmd --permanent --zone=trusted --add-rich-rule='rule family="ipv4" source address="10.0.0.10" destination address="10.0.0.3" port protocol="tcp" port="9200" accept'
sudo firewall-cmd --reload
综上所述,这些命令将完成以下几件事:
将默认区域设置为 drop,拒绝所有未明确允许的流量。
创建一个新的区域 special,允许 26.6.6.1 访问22端口。
在 trusted 区域中,允许 10.0.0.10 访问 10.0.0.3 的9200端口。
这样配置后,您的RHEL 8主机将会符合您的需求:只允许 26.6.6.1 访问22端口,并且主机可以访问 10.0.0.3 的9200端口,同时禁止所有其他的入站和出站连接。
如有其他问题,请随时告知!
多个zone太乱了。能否在一个默认zone里面实现功能
ChatGPT
当然可以,我们可以在一个默认区域(比如 public 区域)中配置所有的规则。以下是实现这些需求的步骤:
确保firewalld服务正在运行:
sh
复制代码
sudo systemctl start firewalld
sudo systemctl enable firewalld
设置默认区域为public:
sh
复制代码
sudo firewall-cmd --set-default-zone=public
清除public区域的所有现有规则:
sh
复制代码
sudo firewall-cmd --permanent --zone=public --remove-service=ssh
sudo firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client
sudo firewall-cmd --permanent --zone=public --remove-service=cockpit
sudo firewall-cmd --reload
禁止所有流量:
设置默认的策略为拒绝所有进入和外出的流量:
sh
复制代码
sudo firewall-cmd --permanent --zone=public --set-target=DROP
sudo firewall-cmd --reload
允许26.6.6.1访问主机的22端口:
为了允许特定主机访问22端口,您可以添加以下规则:
sh
复制代码
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="26.6.6.1" port port="22" protocol="tcp" accept'
sudo firewall-cmd --reload
允许主机访问10.0.0.3的9200端口:
为了允许主机访问外部主机的特定端口,您可以添加以下规则:
sh
复制代码
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.10" destination address="10.0.0.3" port port="9200" protocol="tcp" accept'
sudo firewall-cmd --reload
综上所述,这些命令将完成以下几件事:
设置 public 区域为默认区域,并且将其策略设置为 DROP,以禁止所有未明确允许的流量。
允许来自 26.6.6.1 的流量访问主机的22端口。
允许主机 10.0.0.10 访问 10.0.0.3 的9200端口。
这样配置后,您的RHEL 8主机将在public区域中实现所需的防火墙规则。如果有其他问题或需要进一步调整,请随时告知!
不要使用富规则,可以直接使用direct规则吗
ChatGPT
当然可以使用 firewalld 的 direct 规则来实现这些需求。以下是具体步骤:
确保 firewalld 服务正在运行:
sh
复制代码
sudo systemctl start firewalld
sudo systemctl enable firewalld
设置默认区域为 public:
sh
复制代码
sudo firewall-cmd --set-default-zone=public
清除 public 区域的所有现有规则:
sh
复制代码
sudo firewall-cmd --permanent --zone=public --remove-service=ssh
sudo firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client
sudo firewall-cmd --permanent --zone=public --remove-service=cockpit
sudo firewall-cmd --reload
使用 direct 规则配置防火墙:
禁止所有流量:
由于默认策略是 DROP,所以不需要额外的规则来禁止流量。我们仅需要配置允许的流量。
允许 26.6.6.1 访问主机的 22 端口:
sh
复制代码
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 22 -s 26.6.6.1 -j ACCEPT
允许主机访问 10.0.0.3 的 9200 端口:
sh
复制代码
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp --dport 9200 -d 10.0.0.3 -j ACCEPT
重新加载 firewalld 配置:
sh
复制代码
sudo firewall-cmd --reload
综上所述,这些命令将完成以下几件事:
确保 firewalld 服务正在运行,并设置默认区域为 public。
移除 public 区域的所有现有规则。
使用 direct 规则允许 26.6.6.1 访问主机的 22 端口。
使用 direct 规则允许主机访问 10.0.0.3 的 9200 端口。
这样配置后,您的 RHEL 8 主机将会符合您的需求:只允许 26.6.6.1 访问 22 端口,并且主机可以访问 10.0.0.3 的 9200 端口,同时禁止所有其他的入站和出站连接。
如有其他问题,请随时告知!
可以使用direct 规则来禁止所有流量吗
ChatGPT
可以使用 direct 规则来禁止所有流量。下面是使用 direct 规则来实现您的需求的详细步骤:
确保 firewalld 服务正在运行:
sh
复制代码
sudo systemctl start firewalld
sudo systemctl enable firewalld
清除所有现有规则:
sh
复制代码
sudo firewall-cmd --permanent --direct --remove-rules ipv4 filter INPUT
sudo firewall-cmd --permanent --direct --remove-rules ipv4 filter OUTPUT
sudo firewall-cmd --reload
使用 direct 规则禁止所有流量:
sh
复制代码
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -j DROP
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -j DROP
允许 26.6.6.1 访问主机的 22 端口:
sh
复制代码
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 26.6.6.1 -j ACCEPT
允许主机访问 10.0.0.3 的 9200 端口:
sh
复制代码
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp --dport 9200 -d 10.0.0.3 -j ACCEPT
重新加载 firewalld 配置:
sh
复制代码
sudo firewall-cmd --reload
综上所述,这些命令将完成以下几件事:
确保 firewalld 服务正在运行。
清除所有现有的 direct 规则。
使用 direct 规则禁止所有入站和出站的流量。
使用 direct 规则允许 26.6.6.1 访问主机的 22 端口。
使用 direct 规则允许主机访问 10.0.0.3 的 9200 端口。
这样配置后,您的 RHEL 8 主机将会符合您的需求:只允许 26.6.6.1 访问 22 端口,并且主机可以访问 10.0.0.3 的 9200 端口,同时禁止所有其他的入站和出站连接。
本文来自博客园,作者:18cm的烦恼,转载请注明原文链接:https://www.cnblogs.com/jubian520/p/18315681