我已阅读了所有man
相关页面,并探索了在配置之前 firewalld
预安装的所有文件。firewalld
如何配置zones
为firewall
提供最大的安全性private web application
?
这是用例:
1.) Twenty known users will have http/https access to the web
application from specific machines.
2.) One administrator will have remote ssh login access.
3.) The app will send and receive SSL email with the 20 users, the
administrator, and with a known group of other users that will
change over time and that will be defined by the users through
the web application.
4.) The app includes a database, a war file, and uses various services.
5.) All usage not described in steps 1 through 4 will be blocked.
我的理解是,我需要向一个或多个区域添加接口,然后向具有接口的区域添加服务。我还看到我可以将源 IP 地址添加到区域。我还发现我可以使用丰富的规则来定义配置。但我以前从未配置过防火墙。 有人可以告诉我如何将上面的用例转换为firewalld
远程CentOS 7
Web 服务器上的特定区域/接口/服务/源。
另外,/etc/firewalld/firewalld.conf
说的default zone
是public
。应该是什么default zone
?
答案1
您还应该查看这Fedora Wiki 上的页面。我认为您会想要使用拖放区,因为这是最严格的方式。
- 创建高级规则,以便您可以从您的 ip 连接到端口 22(或不同的 ssh 端口),
firewall-cmd ---permanent -zone=home --add-forward-port=port=22:proto=tcp:toaddr=xxx.xxx.xxx.xxx
并在下一步中允许您自己的 ip 地址 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="xxx.xxx.xxx.xxx" allow'
对于所有 IP 地址- 添加服务 http、https 等(现在适用于所有用户)
firewall-cmd --permanent --zone=drop --add-service=<service>
- 运行
firewall-cmd --reload
以应用这些永久规则 - 将您的接口更改为 drop with
firewall-cmd --zone=drop --add-interface=<interface>
,您可能必须将其从以前的区域中删除(检查firewall-cmd --list-all-zones
firewalld是否允许接口位于我不知道的多个区域中) - 如果你没有失去 ssh 访问权限,一切都应该可以工作,你必须再次运行最后一个命令,但现在使用 --permanent 开关。
但是您希望如何允许 Web 应用程序中特定用户列表的访问呢?当然,我解释的配置也仅在每个用户都有静态 IP 地址的情况下才有效。
编辑:这是对区域概念的一个小解释。该功能实际上对于服务器来说不太有用,但更好的例子是笔记本电脑。当您在家时,您可能希望通过 dlna 自动共享您的音乐。在这种情况下,您将在家庭区域中打开 dlna 端口并配置 NetworkManager,以便如果您位于家庭 WiFi 或以太网 LAN 中,它将您的防火墙区域切换到家庭。然而,默认区域应该是public
因为如果您加入公共 WiFi 热点,您会自动为公共网络制定不同的规则,而不得启用此共享。如果您想从家庭网络外部通过 ssh 访问家庭服务器,例如您不会使用防火墙规则,而是使用其他安全技术,则防火墙应配置为“公共”,并默认允许 ssh 端口上来自任何地方的连接。为了保护这种高度易受攻击的 ssh 访问,您需要将其配置为仅使用客户端证书身份验证和一个名为fail2ban 的程序,该程序可以识别并阻止暴力攻击,因为您的 IP 在旅行时会发生变化。 Web 服务器还具有限制访问等特定功能。