如何在 Fedora 13 最小安装中配置防火墙?正确的做法是什么Fedora 方式防火墙配置?
是否有任何易于使用的命令行工具来操作 /etc/sysconfig/iptables
等?
基本上,我只想允许传入的 http/https 流量到几个端口。
这就是我的/etc/sysconfig/iptables
样子
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
答案1
iptables 基本上是第 4 层,因此“http”流量对它来说毫无意义,只有端口有意义。您有 GUI 吗?您想做什么?
可能有第三方工具可以提供帮助,但它的基本用法非常简单。为了简单起见,我将假设在链(INPUT)上。当收到数据包时,iptables 从上到下遍历链并将其与每条规则进行比较。如果有一条规则与该数据包完全匹配,它将遵循该规则中提供的指令(DROP、REJECT、ACCEPT)并停止处理该数据包(链有点复杂,它们就像子程序一样)。记住,它是第一的匹配规则很重要,因此如果您有一条规则丢弃所有 TCP 流量,然后有一条规则接受来自家庭网络的 SSH,则来自家庭网络的 SSH 将被忽略。如果未找到匹配的规则,则遵循策略(接受、拒绝或丢弃)。接受是默认设置,被认为是良好做法。
要将规则添加到链的末尾,请使用 -A CHAIN。要添加到开头,请使用 -I CHAIN。要插入到特定位置,请使用 -I line_number CHAIN。以下是一些示例:
在 INPUT 的底部添加一条规则,以允许来自 192.168.1.1 的端口 80 上的 TCP 连接:
iptables -A INPUT -p tcp --source 192.168.1.1 --dport 80 -j ACCEPT
在 INPUT 的顶部添加一条规则,以允许来自 12.34.15.0 /24 的端口 443 上的 TCP 连接:
iptables -I INPUT -p tcp --source 12.34.15.0/24 --dport 443 -j ACCEPT
拒绝任何其他到端口 80 的连接:
iptables -A INPUT -p tcp --dport 80 -j REJECT
丢弃(无响应)任何其他 TCP 流量(不要运行这一条,否则您将丢失 SSH):
iptables -A INPUT -p tcp -j DROP
当添加和删除规则时,您会发现在文本文件中执行这些操作更容易。要保存到文本文件,请执行以下操作:
iptables-save > /path/to/file
编辑它,然后重新加载:
cat /path/to/file | iptables-restore
还要注意,默认情况下,重启后 iptables 将没有规则。在 RedHat 系统上,它将从 /etc/sysconfig/iptables 加载默认规则,您可以使用以下命令保存规则/etc/init.d/iptables save
(反之,使用以下命令加载这些规则/etc/init.d/iptables restore
答案2
我最终将以下行放在第一REJECT
行之前。这允许来自任何地方的传入 http(端口 80)流量:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT