我的桌面服务器 Debian Jessie 机器仅出于测试目的运行了 19 个小时。正如您在上面看到的,我已经设定了一些规则。但我并不真正热衷于网络。所以它需要一些修改。
这是我的iptables -L -v
:
Chain INPUT (policy DROP 1429 packets, 233K bytes)
pkts bytes target prot opt in out source destination
1360 61482 DROP all -- any any anywhere anywhere ctstate INVALID
25079 2528K DROP icmp -- any any anywhere anywhere
15 480 DROP igmp -- any any anywhere anywhere
14353 7379K ACCEPT all -- lo any anywhere anywhere
5848K 1157M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED
1632 86441 ACCEPT tcp -- eth0 any anywhere anywhere tcp dpt:8333
9 472 ACCEPT tcp -- eth0 any anywhere anywhere tcp dpt:33211
13801 804K ACCEPT tcp -- eth0 any anywhere anywhere tcp dpt:56874
58386 5659K ACCEPT udp -- eth0 any anywhere anywhere udp dpt:56874
0 0 ACCEPT tcp -- eth0 any anywhere anywhere tcp dpt:63547
0 0 ACCEPT tcp -- eth0 any anywhere anywhere tcp dpt:https
由于机器主要用作 Web 服务器,如何删除我需要的所有其他传入协议(例如 HTTP(S))?
当我运行 Etherape 时,我看到许多协议试图通过(或可能已经渗透)我的防火墙进行连接。
答案1
上面的 iptables 配置只会让 TCP 和 UDP 数据包通过防火墙(除非它们来自环回)。 INPUT 链的默认规则已设置为 DROP,这意味着每个未明确接受的数据包都将被丢弃。环回中不应该有奇怪的数据包,因此只允许 TCP/UDP 数据包进入。
关于协议,有一件重要的事情需要澄清:网络通信发生在许多(实际上是七层)每层都有自己的一套协议。例如,传输层协议(如 TCP 和 UDP)和应用层协议(如 SMB)的目的之间存在根本差异。 iptables 的范围仅限于传输层及以下。分析应用层协议的数据包需要深度数据包检查,并且计算成本要高得多。
人们还应该小心,不要混淆协议和服务名称。受欢迎的服务有分配给特定端口。 FTP 服务通常在端口 21 上可用,而 Web 服务器将在端口 80 上侦听。暗示对于端口 21 上的流量,所使用的协议通常是 FTP,对于端口 80 上的流量,使用的协议通常是 FTP。但是,任何此类端口上的流量都不需要使用与该服务关联的协议。端口 80 上的流量可能是 SSH 或完全是乱码。