IP 过滤仅仅是一种机制,它决定哪些类型的 IP 数据报将被正常处理,哪些将被丢弃。通过丢弃,我们的意思是数据报被删除并完全忽略,就像它从未被接收到一样。您可以应用许多不同的标准来确定您希望过滤哪些数据报;以下是一些示例:
协议类型:TCP、UDP、ICMP 等。
套接字号(对于 TCP/UPD)
数据报类型:SYN/ACK、数据、ICMP 回显请求等。
数据报源地址:它来自哪里
数据报目标地址:它要去哪里
重要的是在此处理解 IP 过滤是一个网络层设施。这意味着它不了解任何关于使用网络连接的应用程序的信息,只了解关于连接本身的信息。例如,您可能会拒绝用户通过默认 telnet 端口访问您的内部网络,但如果您仅依赖 IP 过滤,您无法阻止他们使用 telnet 程序和一个您允许通过防火墙的端口。您可以通过为每个您允许通过防火墙的服务使用代理服务器来防止此类问题。代理服务器了解他们被设计代理的应用程序,因此可以防止滥用,例如使用 telnet 程序通过使用万维网端口来绕过防火墙。如果您的防火墙支持万维网代理,他们的 telnet 连接将始终由代理应答,并且只允许 HTTP 请求通过。存在大量的代理服务器程序。有些是免费软件,许多其他是商业产品。《防火墙-HOWTO》讨论了一组流行的此类程序,但它们超出了本书的范围。
IP 过滤规则集由先前列出的标准的许多组合构成。例如,让我们想象一下,您希望允许 Virtual Brewery 网络内的万维网用户除了使用其他站点的 Web 服务器外,不能访问互联网。您需要配置您的防火墙以允许转发
源地址在 Virtual Brewery 网络上、目标地址在任何地方且目标端口为 80 (WWW) 的数据报
目标地址为 Virtual Brewery 网络且源端口为 80 (WWW) 的来自任何地方的源地址的数据报
请注意,我们在这里使用了两个规则。我们必须允许我们的数据发送出去,但也允许相应的回复数据返回。在实践中,正如我们稍后将看到的,Linux 简化了这一点,并允许我们在一个命令中指定它。