我想在 CentOS 7.1 服务器上使用命令打开4567IP 地址的端口。1.2.3.4firewall-cmd
我怎样才能做到这一点,因为我能找到的文档太具体了?
TL;DR 在新安装的 CentOS 服务器上,我应该使用 firewalld 还是只是禁用它并重新使用/etc/sysconfig/iptables?
firewalld 和 iptables 用于类似的目的。两者都进行数据包过滤 - 但如果我理解正确,firewalld 不会在每次更改时刷新整个规则集。
我对 iptables 了解很多,但对 firewalld 知之甚少。
在 Fedora 和 RHEL/CentOS 上 - 传统的 iptables 配置是在/etc/sysconfig/iptables. 使用 firewalld,它的配置存在/etc/firewalld/并且是一组 XML 文件。Fedora 似乎正在转向 firewalld 作为这种旧配置的替代品。我确实理解 firewalld 在幕后使用 iptables,但它也有自己的命令行界面和配置文件格式,如上所述 - 这就是我所指的使用一个与另一个。
是否有最适合的特定配置/场景?在 NetworkMangaer 与网络的情况下,虽然 NetworkManager 可能旨在替代网络脚本,但由于缺乏网桥支持和其他一些东西,许多人只是没有在服务器设置中使用它全部。所以似乎有一个通用的概念“如果你在 Linux 上使用 NetworkManager desktop/gui,如果你在运行服务器则使用网络”。这正是我从阅读各种帖子中了解到的——但它至少为这些东西的可行用途提供了指导——至少当它们处于当前状态时。
但是我一直在用 firewalld 做同样的事情,只是将其关闭并使用 iptables。(我几乎总是在服务器上安装 linux,而不是桌面使用)。firewalld 是 iptables 的有效替代品吗,我应该在所有新系统上使用它吗?
最新的 Fedora 将 firewalld 作为新的防火墙应用程序。我喜欢旧的 iptables 服务。我想让他们回来,但不知道该怎么做。我试过了 :
systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service
systemctl start iptables.service
systemctl start ip6tables.service
Run Code Online (Sandbox Code Playgroud)
但它不起作用!在 wiki 或 google 上没有找到任何帮助。
禁用 firewalld 工作正常,但是当我尝试启用 iptables.service 时,我得到:
systemctl enable iptables.service
Failed to issue method call: No such file or directory
Run Code Online (Sandbox Code Playgroud) 在 linux 联网机器上,我想限制允许访问它的“公共”区域(防火墙概念)上的地址集。所以最终的结果是没有其他机器可以访问任何端口或协议,除了那些明确允许的,有点混合
--add-rich-rule='rule family="ipv4" source not address="192.168.56.120" drop'
--add-rich-rule='rule family="ipv4" source not address="192.168.56.105" drop'
Run Code Online (Sandbox Code Playgroud)
上面的问题是,这不是一个真正的列表,它会阻止所有内容,因为如果它的一个地址与另一个地址不同而被阻止,则会产生意外的“全部删除”效果,我将如何“取消阻止”特定的非连续集?source 是否接受地址列表?到目前为止,我在查看文档或谷歌结果时没有看到任何内容。
编辑:我刚刚创建了这个:
# firewall-cmd --zone=encrypt --list-all
encrypt (active)
interfaces: eth1
sources: 192.168.56.120
services: ssh
ports: 6000/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Run Code Online (Sandbox Code Playgroud)
但是我仍然可以到达端口 6000,因为 .123 我的意图是如果未列出源,则它应该无法到达任何服务或端口
我刚刚安装了 CentOS 7:
[root@new ~]# cat /etc/redhat-release CentOS Linux 版本 7.1.1503(核心)
我正在尝试配置防火墙,我被告知在 CentOS 7 中不再使用 iptables,而是用 firewalld 代替。当尝试运行命令来设置防火墙规则时:
firewall-cmd --add-port=80/tcp
我收到以下消息:
[root@new ~]# firewall-cmd --add-port=80/tcp -bash: firewall-cmd: 命令未找到
编辑:我也尝试了以下命令:
[root@new ~]# firewall-offline-cmd --add-port=80/tcp -bash: firewall-offline-cmd: 命令未找到
没有任何成功。
我尝试运行以下命令来检查是否安装了 firewalld:
[root@new ~]# service firewalld status 重定向到 /bin/systemctl status firewalld.service 防火墙服务 已加载:未找到(原因:没有那个文件或目录) 活动:不活动(死)
在此输出之后,我尝试启动 firewalld:
[root@new ~]# service firewalld start 重定向到 /bin/systemctl start firewalld.service 无法发出方法调用:Unit firewalld.service 加载失败:没有这样的文件或目录。
任何想法 CentOS 7 安装有什么问题?这是在 OpenVZ VPS 上的全新安装,我还没有进行任何更改。
这是一个建议的 关于理解和调试 Linux 系统上的软件防火墙的规范问题。
为了回应 EEAA 的回答和@Shog 的评论,我们需要一个合适的规范问答来结束关于 iptables 的常见的相对简单的问题。
什么是调试 Linux 软件防火墙问题的结构化方法,netfilter包过滤框架,通常被用户界面接口iptables引用?
有哪些常见的陷阱、反复出现的问题和简单或更模糊的事情,以检查偶尔的防火墙管理员可能会忽略或以其他方式从了解中受益?
即使您使用诸如UFW、FirewallD(又名firewall-cmd)、Shorewall或类似的工具,您也可以从没有这些工具提供的抽象层的情况下查看引擎盖中受益。
这个问题不是用于构建防火墙的方法:检查产品文档,例如为iptables Trips & Tricks贡献食谱或搜索标记的iptables ufw firewalld firewall-cmd问题以获取现有的常见且备受推崇的高分问答环节。
我开始使用 RHEL7 并了解一些 systemd 带来的变化。
有没有办法/sbin/service iptables save在firewalld中执行?
$ /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
Run Code Online (Sandbox Code Playgroud)
我可以从文档中找到的最接近的平行是--reload:
Reload the firewall without loosing state information:
$ firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)
但它没有明确说明它是否在保存。
RHEL7/CentOS7 提供了一个新的firewalld防火墙服务,它取代了iptables service(两者都使用iptables工具与内核的 Netfilter 进行交互)。
firewalld可以轻松调整以阻止传入流量,但正如 Thomas Woerner 1,5 年前指出的那样, “目前,firewalld 无法以简单的方式限制传出流量”。据我所知,情况从那时起就没有改变。或者有吗?有没有办法阻止传出流量firewalld?如果没有,除了通过iptables工具手动添加规则之外,还有其他“标准”方式(在 RHEL7 发行版上)阻止传出流量吗?
有没有一种简单的方法可以导出/导入 firewalld 设置?我想在一台服务器上设置 firewalld,然后对许多其他服务器使用相同的。包括添加自定义区域、直接规则等。
跑步时
[root@host ~]# firewall-cmd --get-active-zones
[root@host ~]#
[root@host ~]# firewall-cmd --get-default-zone
public
Run Code Online (Sandbox Code Playgroud)
我没有得到任何活动区域。如何激活区域?