linux – 你能推荐一个很好的iptables介绍吗?

我必须在 Linux服务器上设置防火墙(我以前的所有经验都是在Windows上).我的规则非常简单 – 禁止所有,允许一些端口全部,允许一些端口用于特定IP子网,而网络虽小但复杂(每个主机的IP至少有2 192.168 …网,每个人都可以互连许多不同的方式).我认为使用iptables包装器会使系统过于复杂化,从逻辑上引入许多不必要的实体,最好保持简单并直接使用iptables.

你能推荐一个关于如何编写iptables规则的快速介绍吗?

解决方法

Netfilter网站上提供了官方和推荐的 documentation的链接.

这不是一个新主题,资源是limitless.

大多数基本命令都非常直观,可以很容易地参考manpage.

netfilter是支持数据包过滤的内核级技术,非常先进.还有其他表可以破坏数据包,转换数据包,否则会影响路由. iptables实用程序是用于与netfilter交互的用户空间工具.如果您想了解高级功能,建议您参考上述文档.有关基本功能的介绍,请进一步阅读.

列出所有现有规则:

iptables -L -n

-n防止iptables解析ips,从而产生更快的输出.

默认表是过滤器表,用于将基本防火墙规则应用于三个链.过滤器表中的三个默认链是INPUT,OUTPUT和FORWARD.

这些链很大程度上是自我解释的INPUT链影响进入的数据包,OUTPUT链影响本地生成的数据包,最后FORWARD用于路由通过系统的任何数据包.

在您可以指定的目标中,您可以DROP数据包,这意味着只需忽略而不响应.您可以拒绝数据包,其中icmp响应将被发送到拒绝源.最后,您可以接受它们,这允许数据包继续路由.

通常使用面向外部的防火墙,默认选择是DROP而不是REJECT,因为它减少了Internet上可见的网络占用空间.例如,以其他方式限制对特定主机的服务的IP对DROP的可见性较低.

注意,-A表示附加到链的末尾.如果要插入顶部,可以使用-I.所有规则都是自上而下处理的. -D用于删除.

要丢弃来自192.168.235.235的传入数据包:

iptables -A INPUT -s 192.168.235.235 -j DROP

这将跳转到来自该IP的所有协议的DROP目标.

接受:

iptables -A INPUT -s 192.168.235.235 -j ACCEPT

要阻止从本地服务器或网络访问该IP,请执行以下操作:

iptables -A OUTPUT -d 192.168.235.235 -j DROP

您可以指定-p协议,数据包的-s源,数据包的-d目标,目标端口–dport,源端口–sport以及将影响数据包处理方式的许多其他标志按照规则.

如果您的默认INPUT策略是DROP,并且您希望允许192.168.123.0/24子网的每个人访问您服务器上的SSH,那么这是一个示例:

iptables -A INPUT -s 192.168.123.0/24 -p tcp –dport 22 -j ACCEPT

没错,你也可以使用CIDR notation

一般来说,最好的默认策略是所有链的DROP.每个链都有一个默认策略,由-P标志指定.即使您将策略设置为默认DROP,仍建议将链中的最终条目设置为DROP.

例如,要将INPUT,FORWARD和OUTPUT链的策略更改为DROP:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

请注意,如果在没有首先允许自己访问SSH的情况下在远程系统上为INPUT指定DROP的默认策略,则可能会阻止自己访问系统.如果在远程系统上,您可以指定临时crontab以每5分钟刷新所有规则作为故障保护.

删除所有规则并允许所有流量:

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F

注意,-X删除所有创建的链. -F刷新所有规则.

有一些本机工具可以保存和恢复规则.特别是,iptables-save和iptables-restore.大多数现代Linux发行版都在系统提供的iptables init文件中保存和恢复功能.

还有其他防火墙最佳做法,例如丢弃格式错误的数据包和其他类型的不良流量.这是使用前端实用程序(如Shorewall)的一个优点,因为它默认会实现许多这些策略.尽管如此,我同意您的方法,并且更愿意直接维护自己的规则,并且可以在没有前端的情况下实现这些相同的最佳实践.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...