首先,清理系统上可能正在运行的所有规则

首先,清理系统上可能正在运行的所有规则

我正在寻找一种方法来阻止我的 Linux 上的所有互联网输入/输出(少数选定的应用程序除外),并且我发现了以下使用 iptables 命令的脚本:

在运行脚本之前,会创建一个名为“internet”的组 ( sudo groupadd internet)。

 #!/bin/sh
 # Firewall apps - only allow apps run from "internet" group to run

 # clear previous rules
 sudo iptables -F

 # accept packets for internet group
 sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT

 # also allow local connections
 sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
 sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT

 # reject packets for other users
 sudo iptables -A OUTPUT -p tcp -j REJECT

 # open a shell with internet access
 sudo -g internet -s

来源: https://plus.google.com/+TobyKurien/posts/YZhZJCZmGgm

唯一的问题是它似乎对我不起作用。运行脚本后,我使用同一终端通过键入 来调用 Firefox firefox,浏览器将打开,但无法访问互联网。我得到的只是找不到服务器。在运行脚本之前,互联网访问良好。

问题:为什么我会遇到这个问题?我了解正在执行的代码,但我无法弄清楚为什么 Firefox 浏览器无法获得连接。

答案1

一般来说,在标准 Centos/RHEL 6 版本中发现的基本上允许传出流量但限制 SSH 传入流量的内容是:

/etc/sysconfig/iptables

 # Firewall configuration written by system-config-firewall
 # Manual customization of this file is not recommended.
 *filter
 :INPUT DROP [0:0]
 :FORWARD DROP [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

答案2

首先,清理系统上可能正在运行的所有规则

iptables -X
iptables -F
iptables -Z

然后,建立默认策略

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

允许一切本地化

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -i lo -j ACCEPT

然后开始开放服务[端口]

例如,上网冲浪。

iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp -m multiport --sports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

另一条规则遵循相同的方案规则。

如果您发现任何错误,英语不是我的主要语言。

相关内容