标签: iptables

iptables 规则只允许一个域的 HTTP 流量

我需要将我的机器配置为仅允许进出 serverfault.com 的 HTTP 流量。所有其他网站、服务端口均无法访问。我想出了这些 iptables 规则:

#drop everything
iptables -P INPUT DROP
iptables -P OUTPUT DROP

#Now, allow connection to website serverfault.com on port 80
iptables -A OUTPUT -p tcp -d serverfault.com --dport 80 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#allow loopback
iptables -I INPUT 1 -i lo -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

它不太好用:

  • 在我放下一切之后,继续规则 3:

    iptables -A 输出 -p tcp -d serverfault.com --dport 80 -j 接受

我收到此错误:

iptables v1.4.4: host/network `serverfault.com' not found
Try `iptables -h' …
Run Code Online (Sandbox Code Playgroud)

domain-name-system iptables loopback

22
推荐指数
3
解决办法
8万
查看次数

如何使iptables规则过期?

有人告诉我这是可能的,但我在谷歌或手册页上找不到任何内容。

我需要在一定时间内禁止 IP,然后自动取消禁止。

linux iptables centos

22
推荐指数
3
解决办法
3万
查看次数

使用iptables将ipv6转发到ipv4?

目前我有一个设置,由于配置需要永远修复,我有一个只能通过 ipv4 访问的服务器。但是,我也有一台可以通过 ipv6 访问的服务器。我想知道是否可以使用 iptables 将某个端口上的 ipv6 流量从一台服务器转发到另一台使用 ipv4 流量的服务器。

iptables port-forwarding

22
推荐指数
4
解决办法
3万
查看次数

如何通过 iptables 允许传出连接?

我有两台服务器。第一个程序需要在端口 2194 上与第二个程序通信。

我知道它不起作用,因为当我这样做时:

root@server1 [~]# telnet myserver2.com 2194
Trying 123.123.123.98...
telnet: connect to address 123.123.123.98: Connection timed out
telnet: Unable to connect to remote host: Connection timed out
Run Code Online (Sandbox Code Playgroud)
server1# iptables -L -n

Chain INPUT (policy DROP)
...
...

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
...

Chain LOCALINPUT (1 references)
target     prot opt source               destination
...

Chain LOCALOUTPUT (1 references)
target     prot opt source               destination
...

Chain LOGDROPIN (1 references)
target     prot opt …
Run Code Online (Sandbox Code Playgroud)

linux redhat iptables connection

21
推荐指数
2
解决办法
10万
查看次数

无法从 Ubuntu 上的外部 IP 访问 Node.js

我敢肯定这是非常noobish,所以请原谅我。我正在尝试在我的 ubuntu 10.04 的端口 8080 上运行 node.js 服务器。

这是服务器上 iptables -L 的结果:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Run Code Online (Sandbox Code Playgroud)

这是 nmap -p 8080 的结果(编辑了 ip 地址,因为一切都是或应该是完全开放的)

nmap 173.203.xxx.xxx -p 8080 -A

Starting Nmap 5.00 ( http://nmap.org ) at 2011-05-19 22:52 PDT
Interesting ports on xxx (173.203.xxx.xxx):
PORT     STATE  SERVICE    VERSION
8080/tcp closed http-proxy
Run Code Online (Sandbox Code Playgroud)

为什么 8080 被视为封闭的?添加这个没有帮助:

iptables -A OUTPUT -p …
Run Code Online (Sandbox Code Playgroud)

ubuntu iptables port node.js

21
推荐指数
2
解决办法
8万
查看次数

iftop - 如何生成带有输出的文本文件?

iftop是查看几乎实时带宽使用情况的好工具,可以通过 source-ip source-port destination-ip 目标端口区分。

我正在使用它来查看哪个客户端的 ip 使用了最多的带宽。现在我想将输出存储在某处。

iftop 使用 ncurses 所以

iftop > log.txt
Run Code Online (Sandbox Code Playgroud)

没有按预期工作,结果文件不可读。

有没有这样的工具可用于将输出通过管道传输到文本文件?

networking linux debian bash iptables

21
推荐指数
2
解决办法
3万
查看次数

重复的 iptable 规则

我有这个 iptable 规则:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
-A fail2ban-ssh -s xx.xxx.xx.xx/32 -j REJECT --reject-with icmp-port-unreachable …
Run Code Online (Sandbox Code Playgroud)

ubuntu iptables

21
推荐指数
3
解决办法
2万
查看次数

iptables:“-p udp --state ESTABLISHED”

让我们看看这两个经常用于允许传出 DNS 的 iptables 规则:

iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53 
   -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -p udp --sport 53 --dport 1024:65535
   -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

我的问题是:我究竟应该如何理解 UDP 中的 ESTABLISHED 状态?UDP 是无状态的。

这是我的直觉 - 我想知道这是否或哪里不正确:

手册页告诉我:

状态

该模块与连接跟踪结合使用时,允许访问
此数据包的连接跟踪状态。

  - 状态 ...

因此,iptables 基本上会记住用于传出数据包的端口号(对于 UDP 数据包它还能记住什么?),然后允许在短时间内发回的第一个传入数据包?攻击者必须猜测端口号(这真的太难了吗?)

关于避免冲突:

内核会跟踪哪些端口被阻止(被其他服务或先前传出的 UDP 数据包),以便这些端口不会在时间范围内用于新的传出 DNS 数据包?(如果我不小心尝试在时间范围内在该端口上启动服务会发生什么 - 该尝试会被拒绝/阻止吗?)

请找出以上文本中的所有错误:-) 谢谢,

克里斯

domain-name-system linux iptables udp

20
推荐指数
2
解决办法
3万
查看次数

为什么我们的防火墙(Ubuntu 8.04)拒绝带有 RST 的最终数据包(FIN、ACK、PSH)

背景,很长一段时间以来,我们的防火墙都存在问题,有时会导致 HTTP 请求挂起部分加载,直到 TCP 超时。

在跟踪防火墙上的流量后,我注意到它仅在某些时间条件下发生,例如,在客户端在有效负载上发送第二个 ACK​​ 之前,网络服务器已经发送了整个响应。[SYN, SYN/ACK, ACK] 已交换,REQUEST 已发送并确认,第一个 RESPONSE 数据包已收到并确认,然后网络服务器一次性发送其余的响应正文(8 个数据包)包括最后一个 FIN,PSH)并且在客户端确认其中任何一个之前,防火墙拒绝向 Web 服务器发送 RST,并使客户端无限挂起。

这是来自防火墙两侧的数据包的整个wireshark跟踪。192.168.126.161 是客户端的私有 NAT'et IP 地址。172.16.1.2是网络服务器IP(不显示真实公网IP),10.1.1.1是防火墙外部IP(不显示真实公网IP)

2105 0.086275 192.168.126.161  172.16.1.2       TCP 37854 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SACK_PERM=1 TSV=89375083 TSER=0
2106 0.000066 10.1.1.1         172.16.1.2       TCP 37854 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SACK_PERM=1 TSV=89375083 TSER=0
2107 0.002643 172.16.1.2       10.1.1.1         TCP http > 37854 [SYN, ACK] Seq=0 Ack=1 Win=32768 Len=0 MSS=1460
2108 0.007705 172.16.1.2       192.168.126.161  TCP http > 37854 [SYN, …
Run Code Online (Sandbox Code Playgroud)

firewall iptables ubuntu-8.04

20
推荐指数
1
解决办法
2万
查看次数

哪些端口用于 IPSEC/LT2P?

我有一个防火墙/路由器(不做 NAT)。

我用谷歌搜索并看到了相互矛盾的答案。看来 UDP 500 是常见的。但其他人很困惑。1701、4500。

有人说我还需要允许 gre 50、或 47、或 50 和 51。

好的,哪些端口是 IPSec/L2TP 在没有 NAT 的路由环境中工作的正确端口?即我想使用内置的 Windows 客户端连接到此路由器/防火墙后面的 VPN。

也许这里的一个很好的答案是指定在不同情况下要打开哪些端口。我认为这对很多人来说都是有用的。

linux firewall iptables ipsec l2tp

20
推荐指数
2
解决办法
17万
查看次数