我试图了解 Linux firewalld 区域背后的逻辑,以及它们的评估方式。
据我了解,区域被定义为接口和 IP 范围的列表,可以应用允许/拒绝规则。这样对吗?对于包含接口和附加 IP 范围的区域。即使流量将从该范围内的 IP 到达机器,但通过不同的接口,该区域允许的服务是否也将被允许用于 IP 范围?
以什么顺序评估区域?与两个(可能相互矛盾的)区域匹配的传入流量会发生什么情况?例如,区域“Z1”允许从给定接口到机器的 nfs,区域“Z2”拒绝来自 IP 的所有传入流量。通过“Z1”中定义的接口但从“Z2”中定义的 IP 到达机器的 NFS 流量会发生什么?
(找到解决方案,见下文...)
服务器 (CentOS 7) 有多个公共 IP,这些都是通过常用的ifcfg-eth0:0配置文件设置的,并且运行良好。我正在尝试适应 firewalld(来自 iptables)。我喜欢能够为每个 IP 别名指定开放端口 - 使用 iptables,只需将目标 IP 设置为匹配端口所需的任何别名即可完成。
我认为使用 firewalld 我可以对每个接口应用不同的区域以达到相同的效果,但似乎我不能这样做。
我们从:
# firewall-cmd --get-active-zones
public
interfaces: eth0 eth0:0
trusted
interfaces: eth1
Run Code Online (Sandbox Code Playgroud)
我创建了一个public_web我想用于的新区域eth0:0
# firewall-cmd --permanent --new-zone=public_web
success
# firewall-cmd --permanent --zone=public_web --add-service=http
success
# firewall-cmd --permanent --zone=public_web --add-interface=eth0:0
success
# firewall-cmd --reload
success
Run Code Online (Sandbox Code Playgroud)
但...
# firewall-cmd --get-active-zones
public
interfaces: eth0 eth0:0
trusted
interfaces: eth1
Run Code Online (Sandbox Code Playgroud)
我尝试了--remove-interface,--change-interface以及各种顺序的各种其他命令,但eth0:0不会让步。我似乎无法在任何地方找到任何关于使用别名的文档,所以我不确定这是否是实现我想要的正确方法?
谢谢大家。
解决方案是destination …
我想在我的 centos 7 机器上显式打开端口,因此我在面向公众的界面上将防火墙配置为 drop 作为默认区域和外部区域。当我运行python -m SimpleHTTPServer 8000并点击端口 8000 上的盒子时,它失败了。但是如果我将端口添加到外部区域。有用。一切都如预期。
但是,当我在端口 8000 上启动 docker 容器并在外部点击该框时,我可以访问该服务。这不是我想要发生的事情。我希望只有在外部区域上打开端口 8000 时才能访问它。
即使我将 docker 容器绑定到盒子的公共地址,它仍然可以绕过防火墙。如果需要,我可以提供更多信息,例如路由表和接口配置,但我不太知道什么有用。寻找学习。
该盒子上有两个物理接口,eth0 分配有公共 IP,eth1 连接到专用网络,我希望能够访问。
编辑已解决添加--iptables=false到泊坞窗选项。
我添加了许多类似这样的丰富规则:
firewall-cmd --permanent --zone="thezone" --add-rich-rule='rule family=ipv4 source address=1.2.3.4 reject'
Run Code Online (Sandbox Code Playgroud)
现在我想清除/删除我的“thezone”区域中的所有丰富规则。
另外,您尝试删除行的行:
firewall-cmd --permanent --zone="thezone" --remove-rich-rule='rule family=ipv4 source address=1.2.3.4 reject'
Run Code Online (Sandbox Code Playgroud)
或者
firewall-cmd --permanent --zone="thezone" --remove-rich-rule='rule family=ipv4 source address=1.2.3.4 accept'
Run Code Online (Sandbox Code Playgroud)
或者
firewall-cmd --permanent --zone="thezone" --add-rich-rule='rule family=ipv4 source address=1.2.3.4 accept'
Run Code Online (Sandbox Code Playgroud)
使用 firewall-cmd --reload 仍然没有成功。
谁能告诉我如何清除所有内容或用一种方法告诉我我做错了什么?
我有以下问题。
我刚刚安装了 DVD CenOS 7。在我启动进入系统后,我通常以 root 用户身份登录。从那里我试图在我的服务器上配置防火墙。
因为我对这一切都比较陌生,所以我只是搜索了一些关于如何启动和管理 Firewalld 的搜索,它似乎是与 CentOS 7 一起使用的预期防火墙软件。
我尝试的第一件事是打字
systemctl status firewalld
Run Code Online (Sandbox Code Playgroud)
作为输出我得到
Warning: iptables not usable, disabling IPv4 firewall.
Warning: ip6tables not usable, disabling IPv6 firewall.
FATAL ERROR: No IPv4 and IPv6 firewall.
ERROR: Raising SystemExit in run_server
Run Code Online (Sandbox Code Playgroud)
我已经尝试重新启动系统,更新它。我重新安装了 iptables 和 firewalld。尝试使用其中任何一个被屏蔽或禁用。这些都没有奏效,但也许我错过了一些东西。
我通常只想设置一个 Teamspeak 服务器供外部使用,当我向防火墙添加特定规则时,该服务器在 Windows 下工作。我想在 CentOS 7 下做同样的事情,主要是出于学习目的或完全熟悉 Linux 作为服务器。
我正在尝试使用 firewalld 设置 CentOS 7 VM,以在 2 个不同子网之间路由流量。
我有 2 个网络接口,ens192 用于外部网络,ens224 用于内部网络:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:62:88:ba brd ff:ff:ff:ff:ff:ff
inet 10.212.21.26/16 brd 10.212.255.255 scope global ens192
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe62:88ba/64 scope link
valid_lft forever …Run Code Online (Sandbox Code Playgroud) 由于某种原因我无法弄清楚,Fail2Ban 拒绝将 IP 地址添加到 ipset/firewalld。
我被一个中国 IP 地址强制使用,Fail2Ban 似乎确实试图禁止它(至少它出现在 fail2ban-client status sshd 命令中),但它实际上并没有停止对服务器进行暴力破解,而且它没有不会出现在 ipset/iptables/firewalld 中。
fail2ban 客户端状态 sshd:
[root@GITserver alex]# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 2
| |- Total failed: 93613
| `- File list: /var/log/secure
`- Actions
|- Currently banned: 2
|- Total banned: 1003
`- Banned IP list: 61.177.172.17 95.103.88.106
Run Code Online (Sandbox Code Playgroud)
ipset/防火墙:
[root@GITserver alex]# ipset list
[root@GITserver alex]# firewall-cmd --direct --get-all-rules
[root@GITserver alex]#
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?可以根据要求添加更多日志
编辑,仍然没有解决方案,仍然被蛮力和 DDoS 攻击,这里是完整的 /var/log/fail2ban.log 如果它可能有帮助https://paste.fedoraproject.org/paste/Y5aPF8~WY~fpuhaZBDo7Ml5M1UNdIGYhyRLivL9gydE=/raw …
我有centos 7。我试图阻止从服务器到特定IP地址的所有出站流量,但firewalld不会阻止流量。这就是我所做的:
[root@server network-scripts]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens192
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" destination address="134.223.116.100" drop
[root@server network-scripts]# firewall-cmd --get-active-zones
public
interfaces: ens192
[root@server network-scripts]# firewall-cmd --state
running
Run Code Online (Sandbox Code Playgroud)
但我仍然可以curl到ip地址,那么有什么问题吗?
[root@server network-scripts]# curl 134.223.116.100
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
Run Code Online (Sandbox Code Playgroud) 我已经禁用了selinux /etc/sysconfig/selinux:
SELINUX=disabled\nRun Code Online (Sandbox Code Playgroud)\n\n重新启动并禁用这两个firewalld服务iptables。
# sestatus\nSELinux status: disabled\n\n# systemctl status firewalld\n\xe2\x97\x8f firewalld.service - firewalld - dynamic firewall daemon\n Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)\n Active: inactive (dead)\n Docs: man:firewalld(1)\n\n# systemctl status iptables\n\xe2\x97\x8f iptables.service - IPv4 firewall with iptables\n Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)\n Active: inactive (dead) \n\n# ufw status\nStatus: inactive\nRun Code Online (Sandbox Code Playgroud)\n\n我仍然无法使用特定端口访问服务器:
\n\n# nc -v 10.0.12.3 8887\nnc: connect to 10.0.12.3 port 8887 (tcp) failed: Connection refused\nRun Code Online (Sandbox Code Playgroud)\n\n我可以 …
firewall-cmd --reload和 和有什么区别systemctl restart firewalld?