我有一台安装了 KVM 虚拟化的 Ubuntu 9.10 服务器(我将其称为 HOST)。它运行着三台虚拟机,一台安装了 Apache(称为 APACHE),一台安装了 Mysql(称为 MYSQL),一台在端口 8080 上运行着 Jetty(JETTY)。主机配置了一个桥接器以提供对虚拟机的访问。
我想在主机上运行防火墙,但不在每个虚拟机上运行防火墙。防火墙应该阻止主机和虚拟机上所有不必要的端口。下面是我想要配置它的具体方式:
- 主机只能通过其网络块内的 SSH 进行连接。
- HOST 不应打开除 SSH 之外的任何其他端口。
- APAHCE,MYSQL 应该能够从任何地方通过 SSH 连接。
- MYSQL 应该只能从网络块内通过端口 3306 连接。
- JETTY 应该能够通过端口 8080 进行连接(它以用户身份运行,因此无法在 80 上运行),但是到端口 80 的流量也应该在防火墙中转发到 8080,这样它就可以显示为常规 http 服务器。
我最近刚换到 Ubuntu,所以不确定最好的防火墙工具是什么。我以前在 CentOS 上尝试过 iptables,但 iptables 没有在我的主机系统上运行。我看到有人提到 UWF 是 ubuntu 的防火墙工具?看起来 UWF 已安装,但未激活。
关于如何开始,有什么建议吗?我应该编辑哪些文件?有没有我还没找到的关于如何做这件事的好方法?
答案1
我认为 UFW 只是 iptables 的一个前端。无论如何,你可以使用它的图形界面前端。
但我强烈建议你学习一下iptables。Unbuntu官方文档:https://help.ubuntu.com/community/IptablesHowTo
答案2
就您所描述的情况而言,我认为您不需要设置防火墙(即数据包过滤器)。只需确保所有不需要的服务都已禁用或仅侦听 localhost/127.0.0.1,并且必要的服务(SSH、MySQL 的 TCP 套接字)仅侦听特定接口或子网。
对于 SSH,这ListenAddress
是/etc/ssh/sshd_configbind-address
对于MySQL 来说/etc/mysql/my.cnf。在 Linux 系统上,也可以使用/etc/hosts.allow和/etc/hosts.deny以增加安全性。
不要依赖数据包过滤器来提供您所需的所有安全性。更重要的是,您要确切知道哪些服务正在运行以及它们在监听什么。您不能只是在设置不当且安全性不佳的主机前安装防火墙,然后希望一切就绪。这是非常糟糕的做法。
答案3
听起来很完美岸墙.shorewall 是一个基于区域的 iptables/netfilter 防火墙工具,设置起来非常容易
答案4
这就是您要找的东西……