我需要将我的机器配置为仅允许进出 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) 有人告诉我这是可能的,但我在谷歌或手册页上找不到任何内容。
我需要在一定时间内禁止 IP,然后自动取消禁止。
目前我有一个设置,由于配置需要永远修复,我有一个只能通过 ipv4 访问的服务器。但是,我也有一台可以通过 ipv6 访问的服务器。我想知道是否可以使用 iptables 将某个端口上的 ipv6 流量从一台服务器转发到另一台使用 ipv4 流量的服务器。
我有两台服务器。第一个程序需要在端口 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) 我敢肯定这是非常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) iftop是查看几乎实时带宽使用情况的好工具,可以通过 source-ip source-port destination-ip 目标端口区分。
我正在使用它来查看哪个客户端的 ip 使用了最多的带宽。现在我想将输出存储在某处。
iftop 使用 ncurses 所以
iftop > log.txt
Run Code Online (Sandbox Code Playgroud)
没有按预期工作,结果文件不可读。
有没有这样的工具可用于将输出通过管道传输到文本文件?
我有这个 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) 让我们看看这两个经常用于允许传出 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 数据包?(如果我不小心尝试在时间范围内在该端口上启动服务会发生什么 - 该尝试会被拒绝/阻止吗?)
请找出以上文本中的所有错误:-) 谢谢,
克里斯
背景,很长一段时间以来,我们的防火墙都存在问题,有时会导致 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) 我有一个防火墙/路由器(不做 NAT)。
我用谷歌搜索并看到了相互矛盾的答案。看来 UDP 500 是常见的。但其他人很困惑。1701、4500。
有人说我还需要允许 gre 50、或 47、或 50 和 51。
好的,哪些端口是 IPSec/L2TP 在没有 NAT 的路由环境中工作的正确端口?即我想使用内置的 Windows 客户端连接到此路由器/防火墙后面的 VPN。
也许这里的一个很好的答案是指定在不同情况下要打开哪些端口。我认为这对很多人来说都是有用的。