1
liashui OP 疑问:
1.第三条规则是 lo 的,这个可以不用考虑 2.难道 ssh 除了“ state NEW tcp dpt:22 ”这块的数据,还有 “ state RELATED,ESTABLISHED ”这块的数据,所以需要两条配合起来? |
2
mytsing520 2017-03-25 13:30:28 +08:00
NEW 说明这个包是我们看到的第一个包。意思就是,这是 conntrack 模块看到的某个连接第一个包,它即将被匹配了。比如,我们看到一个 SYN 包,是我们所留意的连接的第一个包,就要匹配它。第一个包也可能不是 SYN 包,但它仍会被认为是 NEW 状态。这样做有时会导致一些问题,但对某些情况是有非常大的帮助的。例如,在我们想恢复某条从其他的防火墙丢失的连接时,或者某个连接已经超时,但实际上并未关闭时。
ESTABLISHED 已经注意到两个方向上的数据传输,而且会继续匹配这个连接的包。处于 ESTABLISHED 状态的连接是非常容易理解的。只要发送并接到应答,连接就是 ESTABLISHED 的了。一个连接要从 NEW 变为 ESTABLISHED ,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。 ICMP 的错误和重定向等信息包也被看作是 ESTABLISHED ,只要它们是我 们所发出的信息的应答。 RELATED 是个比较麻烦的状态。当一个连接和某个已处于 ESTABLISHED 状态的连接有关系时,就被认为是 RELATED 的了。换句话说,一个连接要想是 RELATED 的,首先要有一个 ESTABLISHED 的连接。这个 ESTABLISHED 连接再产生一个主连接之外的连接,这个新的连接就是 RELATED 的了,当然前提是 conntrack 模块要能理解 RELATED 。 ftp 是个很好的例子, FTP-data 连接就是和 FTP-control 有 RELATED 的。还有其他的例子,比如,通过 IRC 的 DCC 连接。有了这个状态, ICMP 应 答、 FTP 传输、 DCC 等才能穿过防火墙正常工作。注意,大部分还有一些 UDP 协议都依赖这个机制。这些协议 是很复杂的,它们把连接信息放在数据包里,并且要求这些信息能被正确理解。 INVALID 说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的 ICMP 错误信息。一般地,我们 DROP 这个状态的任何东西。 以上来自 http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1990048&page=2 ,仅供参考。 |
3
liashui OP 求不要沉,伟大的 e2vx
|
4
oaix 2017-03-25 13:31:01 +08:00
state 是指 tcp 连接状态, state NEW 指客户新建一个到 22 端口的连接,你 accept 了,但是连接建立后,后续的包被 reject 了。
|
5
julyclyde 2017-03-25 13:32:47 +08:00
为什么你会问“难道”这种话呢?看 NEW 和 ESTABILISHED 这俩词的意思还不明白?
|
6
luojiyin87 2017-03-25 13:36:11 +08:00
CentOS7 不是用 firewalld 管理的?
|
7
jasontse 2017-03-25 14:06:40 +08:00 via iPad
你只放过了 state 是 NEW 的包啊,当 TCP 连接建立变成 Established 就被 DROP 了啊。
|
8
pagxir 2017-03-25 14:12:22 +08:00 via Android
难道只有我一个人看到 input 链所有包被 drop 么。其实 你用 iptables -nxvL 就知道哪来被 match 了。
|
9
digimoon 2017-03-25 14:46:39 +08:00
policy DROP 不符合规则的默认全部 drop ,然后你还去掉了 ESTABILISHED 的 accept ,那除了 NEW 的以外不就 drop 了么?
|
10
liashui OP |
11
liashui OP @luojiyin87 我禁止了 firewalld ,使用了 iptables
|
12
shiji 2017-03-26 00:18:32 +08:00 via Android
哈哈, LZ 学习了就好, iptables 和 ip route 里面的坑不少,一个不小心服务器就连不上了。。
另外建议把这几个的默认规则都设为 Accept ,在最后一行把所有剩下的 drop 就行。否则小手一抖,给 iptables flush 了,服务器就和互联网失联了。 |