更新:解决方案不起作用

更新:解决方案不起作用

我将 iptables 设置为默认删除 INPUT、OUTPUT 和 FORWARD 规则手册中的所有内容。但我需要允许通过端口 80 连接(HTTP)和端口 53 上的所有传入 TCP/UDP 请求(DNS)。我有以下设置:

Chain INPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:http
ACCEPT      udp  --  anywhere          anywhere           udp dpt:http  
ACCEPT      udp  --  anywhere          anywhere           udp dpt:domain
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:domain

Chain FORWARD (policy DROP)
target      prot opt source            destination 

Chain OUTPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      udp  --  anywhere          anywhere           udp dpt:http
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:http  
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:domain
ACCEPT      udp  --  anywhere          anywhere           udp dpt:domain

但是,当我尝试运行时sudo apt-get install apache2,找到了该包,但它随后挂在实际下载该包的过程中。通过我的研究,apt-get 在大多数情况下只需要 HTTP 和 DNS 端口即可工作。我错过了什么吗?我尝试参考这个帖子但无济于事。

Err:1 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 libapr1 amd64 1.5.2-3
  Temporary failure resolving ‘us.archive.ubuntu.com’
Err:2 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 libaprutil1 amd64 1.5.4-1build1
  Temporary failure resolving ‘us.archive.ubuntu.com’
0% [Connecting to us.archive.ubuntu.com]

系统信息:
经销商编号: 乌班图
描述: Ubuntu 16.04.3 LTS
发布: 16.04
代码名称: 谢尼尔


更新:解决方案不起作用

我跟着托马斯再次在下面回答,但没有成功。apt-get仍然像上面的例子一样被困在下载中(例如apache2)(即没有变化)。这是我尝试使用的新 iptables:

Chain INPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      all  --  anywhere          anywhere           state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target      prot opt source            destination 

Chain OUTPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:http state NEW,RELATED,ESTABLISHED
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:domain state NEW,RELATED,ESTABLISHED
ACCEPT      udp  --  anywhere          anywhere           udp dpt:domain state NEW,RELATED,ESTABLISHED

我尝试了输出规则手册中的版本有和没有状态信息没有成功。

答案1

我不知道为什么你需要在 53 和 80 上打开 INPUT,但如果这是为了接收 DNS 和 HTTP 的响应,那就错了。这是通过以下行完成的:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

(正如在这个答案到你提到的帖子。)

答案2

我已经通过测试系统深入研究了这一点的细节。

我能够正确配置iptables以下规则集并apt-get正确出站:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53 state NEW,RELATED,ESTABLISHED
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53 state NEW,RELATED,ESTABLISHED

这反映了您上面所述的最新配置。我能够apt-get正常工作,并且也能够毫无问题地进行 DNS 查询。

但是,请务必注意,您的系统在将主机名解析为 IP 地址时遇到问题,并且会出现解析错误。

确保您的/etc/resolv.conf配置正确,并且至少包含如下内容:

nameserver 8.8.8.8
nameserver 8.8.4.4

通过/etc/resolv.conf这种方式的设置,并iptables使用与您相同的规则集,我可以毫无问题地在面向 Internet 的系统以及我自己的可以连接到 Internet 的 LAN 子网内进行访问并获得正确的 DNS 解析来自网络内部。

对我来说,这更像是您的/etc/resolv.conf设置不正确,并且配置错误导致您的系统无法正确配置 DNS。

答案3

大家好,在这个问题上打破了我可怜的头脑并浏览了 user147505 的回答 100 次之后,我终于弄清楚为什么它对我不起作用,这是我之前的设置:-

root@myserver:~# iptables -L --line-numbers
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:3652
2    ACCEPT     udp  --  anywhere             anywhere             udp dpt:51234
3    DROP       icmp --  anywhere             anywhere
4    DROP       all  --  anywhere             anywhere
5    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere
2    ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

如您所见,上面的“ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT”规则是在删除所有流量规则“iptables -A INPUT -j DROP”之后添加的,因为这apt update不起作用

所以最后我所做的就是像下面这样切换它们,然后一切都令人惊奇地工作:-

num  target     prot opt source               destination
1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:3652
2    ACCEPT     udp  --  anywhere             anywhere             udp dpt:51234
3    DROP       icmp --  anywhere             anywhere
4    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
5    DROP       all  --  anywhere             anywhere

我猜我学到了一些关于 iptables 的知识,希望以后能参加一门课程来理解这个 jaba huba

相关内容