我需要在防火墙中阻止所有传入和传出连接,除了白名单中的 IP 地址。我目前在使用 ubuntu 的虚拟机上。我从这个网站尝试了这些命令:但是我无法连接到这个网站,它是谷歌,但是 ping 工作,我没有使用 linux 的经验,其他网站也不能工作。
iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Run Code Online (Sandbox Code Playgroud)
小智 7
iptables
在第一场比赛的基础上工作。让我们分解你的例子:
iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Run Code Online (Sandbox Code Playgroud)
第一行告诉iptables
允许从 IP 地址172.217.23.206
到应用这些规则的机器的所有流量。而所有的流量,顾名思义,就是所有的流量。因此,无论协议、端口、选项等如何;只要源匹配172.217.23.206
它就通过。
第二行允许从您的机器到172.217.23.206
. 同样,协议、端口等是什么并不重要;只要目的地匹配172.217.23.206
它就被允许。
第三行告诉iptables
给丢弃任何传入流量不匹配所述第一两个规则,而第四和最后一行告诉iptables
给丢弃任何传出通信不三个前述的线相匹配。
我假设您想构建一个仅允许访问几个网站的场景。您编写的规则集不适用于这种情况;
172.217.23.206
. 通常,它可以通过查询 DNS 服务器或通过本地/etc/hosts
条目来获取此信息。iptables
它足够智能以跟踪您的连接并允许回复。这个过程叫做保持状态。172.217.23.206
,仅仅为了获得一个网站是没有任何意义的。ping
)是一种特殊的流量。您需要专门阻止它。此规则集确实适合这种情况:
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 443 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Run Code Online (Sandbox Code Playgroud)
此规则集允许您的计算机使用端口 53/udp 查询 DNS 服务器。然后它允许到 unix.stackexchange.com、端口 80 (http) 和 443 (https) 的 TCP 流量。它跟踪连接并丢弃所有其他流量。
您可以删除允许 DNS 查询的规则,只要您在/etc/resolv.conf
.
归档时间: |
|
查看次数: |
4346 次 |
最近记录: |