我错误地设置了开放式解析器 DNS 服务器,该服务器很快被用于从/到俄罗斯某处发起的一系列 DDoS 攻击。出于这个原因,除了受信任的 IP 之外,我完全阻止了每个人在两个 DNS 服务器上的端口 53。它确实有效,因为我无法再连接到它们,但对我来说似乎很奇怪的是,当我在eth1(这是服务器与公共 Internet 的接口)上运行 tcpdump 时,我看到很多来自攻击者到端口 53 的传入数据包.
即使 iptables 丢弃这些数据包,tcpdump 也会显示这些数据包是否正常?或者我是否错误地配置了 iptables?
另一方面,我没有看到来自我的服务器的任何传出数据包,这是我以前做过的,所以我认为防火墙有点工作。内核没有完全丢弃数据包让我感到惊讶?或者tcpdump以一种甚至在数据包到达 iptables 之前就可以看到数据包的方式连接到内核?
我需要向 iptables 添加规则以阻止从 Internet 连接到 tcp 端口。
由于我的脚本可能被多次调用,而且没有删除规则的脚本,所以我想在插入之前检查iptables规则是否已经存在——否则INPUT链中会有很多dup规则。
如何检查 iptables 规则是否已存在?
对于我的测试环境,我想接受所有传入的流量,有人可以给我要添加的 iptable 规则。
我当前的iptables -L -n输出看起来像这样
Chain INPUT (policy ACCEPT) target prot opt source
destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
state RELATED,ESTABLISHED ACCEPT icmp -- 0.0.0.0/0
0.0.0.0/0 ACCEPT all -- 0.0.0.0 /0 0.0.0.0/0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 REJECT all -- 0.0.0.0/0 0.0.0.0/0
reject-with icmp-host-prohibited ACCEPT tcp -- 0.0.0.0/0
0.0.0.0/0 tcp dpt:8443 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 接受 tcp -- 0.0.0.0/0 0.0.0.0. dpt:9443 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2124Chain FORWARD …
我在 OSX Mountain Lion 10.8.3 上,我刚刚重新启动了我的 Mac。
我想启动一个服务(比如端口 80 上的 Apache),但是端口 80 已经发生了一些事情:
telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)
等等,我听到你说,你可以用 lsof 或 netstat 找到。除了什么都没有
netstat -an | grep LISTEN | grep '\.80'
*comes back blank*
lsof -i :80 | grep LISTEN
*comes back blank
Run Code Online (Sandbox Code Playgroud)
因此,根据我对 unix 系统的了解,我认为这一定是数据包转发规则吗?即数据包正在从入站端口 80 转发到其他正在侦听该服务的东西。
ipfw show
65535 0 0 allow ip from any to any
Run Code Online (Sandbox Code Playgroud)
嗯,没什么异常
pfctl -s nat
No ALTQ support in kernel
ALTQ related functions disabled
Run Code Online (Sandbox Code Playgroud)
没有什么不寻常的 …
这两个工具有什么区别?
谁能告诉我 Linux 背后的主要网络工作流程(与 IPv4 数据包过滤、NAT 和 IP 路由表有关)是什么?
有没有办法iptables -L在 Ubuntu 12.04 中显示网络接口?
当我执行一个iptables -L我得到这样的输出:
Chain INPUT (policy DROP)
target prot opt source destination
...
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
...
Run Code Online (Sandbox Code Playgroud)
这在某种程度上具有误导性。首先我在想,伟大的规则,允许一切,直到我发现这个规则绑定到接口 localhost。
有没有办法获得同时显示规则和界面的概览?
我的服务器时钟错误,因为防火墙不允许 ntp 流量。允许ntp客户端进出需要什么iptables规则?
任何关于如何在 Ubuntu 上实施这些规则的建议也表示赞赏。
我想跟踪在 Linux 桌面上启动出站连接的进程。我能想到的最好的是:
iptables -A OUTPUT -m state --state NEW -j LOG --log-uid
Run Code Online (Sandbox Code Playgroud)
这会记录启动连接的 uid/gid,但不会记录进程/命令名称甚至 pid。如果我能得到 pid,我可能会创建一个脚本,在写入日志时提取进程名称,但这似乎是不可能的。
理想情况下,我也想记录接受传入连接的进程。
任何想法如何在 Linux 机器上使用 iptables [或其他任何东西]?
当我在我的 linux Redhat 6.8 版机器上运行时 - service iptables status
我得到了规则表(但不是 iptables 是否运行)
以下是否表明 iptables 正在运行?
# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject- with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination …Run Code Online (Sandbox Code Playgroud) 我在不同的超级用户回答中看到了这个 iptables 片段:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
关键是始终允许作为已建立连接的一部分发送的数据包。我想知道的部分是前两行。
对于INPUT链,同时写-m conntrack --ctstate RELATED,ESTABLISHED和 有什么意义-m state --state RELATED,ESTABLISHED。似乎两者都应该做同样的事情?
解释这两者之间的区别会很好。