【网络教程】IPtables官方教程--学习笔记2

本部分主要内容有:
讨论了在一些常见的平台上如何获取和安装iptables和netfilter。在大多数现代Linux发行版中,iptables将随默认安装一起提供,但有时可能需要编译自己的内核和iptables二进制文件来获得绝对最新的更新。本章应该对解决这个问题有所帮助。


准备知识----NAT技术介绍(Network Address Translation)
由于现在的网络设备越来越多,IPV4地址已经不够用了,通过NAT技术,可以缓解IP地址不够用的现状。其主要技术原理是将几个私有地址映射到同一个公共地址上,通俗地讲就是我们的村落,每个村落都有一个固定地址,比如:XX省XX市XX县XX路赵家庄,每个村庄都有村民都有自己的家,村民的家就像我们网络上的私有地址,村庄就好比我们的公共地址。将私有地址映射到公共地址的技术就相当于村民门跟通过以自己所在的庄为公共地址,与外界进行联系的方式。常见的NAT技术有:静态NAT、动态NAT、NAPT,三种技术特点如下图所示:
在这里插入图片描述
其中,静态NAT技术是将私有IP地址与固定的公有IP地址绑定,这种一般用于外部网络对内部网络中某些特定设备(比如服务器)的访问。动态NAT技术是将内部私有IP地址随机的转化为公有IP地址,NAPT技术是内部所有的主机均使用同一个公有IP,但是他们分别使用不同的端口,这项技术目前应用最广,因为其可以最大限度地节约IP地址资源,也可以隐藏内部所有主机,可以有效避免来自因特网的攻击。

NAT技术按照转换的IP地址分类,可以分为源地址转换(SNAT)和目的地址转换(DNAT),源地址转换的场景很好理解,内部网络主机对外发送报文时,经过路由器,路由器或把报文里的源地址改成设置好的公共IP地址
目的地址转换主要用来设置服务器,几个服务器共用一个公共IP地址,比如一个公司的网络服务器和FTP服务器他们在物理上是不同的服务器,但是他们共用一个公有IP,该公司的员工要访问这些服务器,发出来的报文目的地址肯定都得是同一个目的地址,之后该公司网络架构上的NAT机器将收到的报文目的地址进行转换成对应的内部网络服务器地址。

Linux中有两种不同类型的NAT,FAST-NAT或Netfilter-NAT。FAST-NAT在Linux内核的IP路由代码中实现,而Netfilter-NAT在Linux内核的Netfilter代码实现。FAST-NAT之所以快是因为它不跟踪连接。

参考:
百度百科:网络地址转换技术
书籍:漫画IP:TCP/IP基础知识读本


一、防火墙准备

iptables安装包下载地址:http://www.netfilter.org/,iptables包还利用了内核空间设施,可以在设计配置(原文是make configure)期间将这些设施配置到内核中。

1.1 内核设置(kenel setup)

配置名称释义
CONFIG_PACKET该选项允许需要直接使用各种网络设备的应用程序和实用程序。这类实用程序的示例是tcpdump或snort,严格来说iptables不需要config_packet
CONFIG-NETFILTER将计算机用作互联网的防火墙或网关,则需要此选项 ,另外,相应的驱动比如以太网适配器,PPP,SLIP都需要再安装
CONFIG_IP_NF_CONNTRACK用于设置连接跟踪,在局域网设置防火墙的时候需要标记此选项,需要配合’rc.firewall.txt’脚本一起使用
CONFIG_IP_NF_FTP设置FTP连接跟踪,FTP连接跟踪比较困难,该设置集成了相关跟踪助手
CONFIG_IP_NF_IPTABLES该选项用于支持过滤/伪装/NAT技术,它在内核里添加整个iptables框架,如果没有该选项,iptables将无法使用
CONFIG_IP_NF_MATCH_LIMIT这个模块并不是必需的,但是在示例rc.firewall.txt中使用了它。这个选项提供了LIMIT匹配,它可以通过适当的规则来控制每分钟匹配多少个数据包。例如,-m limit --limit 3/minute将匹配每分钟最多3个数据包。此模块还可用于避免某些拒绝服务攻击。
CONFIG_IP_NF_MATCH_MAC该选项允许我们基于MAC地址匹配数据包,每个以太网适配器都有自己的MAC地址,所以我们可以根据使用的MAC地址来阻止数据包,因为MAC地址很少改变,所以我们可以很好地址阻止某台计算机
CONFIG_IP_NF_MATCH_MARK这选项允许我们使用MARK匹配。例如,如果我们使用目标MARK,我们可以标记一个包,然后根据这个包是否在表中进一步标记,我们可以根据这个标记进行匹配。这个选项是实际的匹配MARK,我们将进一步描述实际的目标MARK。
CONFIG_IP_NF_MATCH_MULTIPORT这个模块允许我们将数据包与整个范围的目的端口或源端口匹配。通常情况下这是不可能的,但使用这项匹配就可以了。
CONFIG_IP_NF_MATCH_TOS通过这个匹配,我们可以根据数据包的TOS字段匹配它们。TOS代表服务类型。TOS也可以通过mangle表中的某些规则和ip/tc命令来设置。
CONFIG_IP_NF_MATCH_TCPMSS这个选项增加了我们根据MSS字段匹配TCP数据包的可能性
CONFIG_IP_NF_MATCH_STATE与ipchains相比,这是最大的革新之一。通过这个模块,我们可以对数据包进行有状态匹配。例如,如果我们已经在一个TCP连接中看到了两个方向的流量,这个数据包将被统计为ESTABLISHED。这个模块在rc.firewall.txt示例中被广泛使用。
CONFIG_IP_NF_MATCH_UNCLEAN这个模块将增加我们匹配IP, TCP, UDP和ICMP数据包不符合类型或无效的可能性。例如,我们可以丢弃这些数据包,但我们永远不知道它们是否合法。注意,这种匹配仍然是实验性的,可能不是在所有情况下都能完美地工作。
CONFIG_IP_NF_MATCH_OWNER该选项将增加基于数据包所有者进行匹配的可能性。例如,我们可以只允许root用户访问Internet。这个模块最初只是作为一个示例编写的,用于说明新的iptables可以做些什么。注意,这种匹配仍然是实验性的,可能并不适用于所有人。
CONFIG_IP_NF_FILTER此模块将添加基本的过滤表,使您能够进行IP过滤。在过滤器表中,我们将找到INPUT、FORWARD和OUTPUT链。如果计划对接收和发送的数据包进行任何类型的过滤,则需要此模块。
CONFIG_IP_NF_TARGET_REJECT这个目标允许我们指定发送一个ICMP错误消息来回应传入的数据包,而不是直接把它们扔到地上。请记住,TCP连接,相对于ICMP和UDP,总是重置或拒绝TCP RST报文。
CONFIG_IP_NF_TARGET_MIRROR这允许数据包被弹回到数据包的发送方。例如,如果我们在INPUT链的目的端口HTTP上设置了一个MIRROR目标,并且有人试图访问这个端口,我们将把他的包弹回给他,最后他可能会看到他自己的主页。MIRROR目标不能轻易使用。它最初是作为一个测试和示例模块构建的,并且很可能对设置它的人非常危险(在其他情况下会导致严重的DDoS)。
CONFIG_IP_NF_NAT这个选项使我们能够访问iptables中的nat表。如果我们想要进行端口转发、伪装等操作,则需要此选项。注意,这个选项对于防火墙和LAN伪装不是必需的,但是我们应该使用它,除非能够为所有主机提供唯一的IP地址。因此,为了使示例rc.firewall.txt脚本正常工作,并且在我们的网络中,如果我们不能像上面指定的那样添加唯一的IP地址,那么这个选项是必需的。
CONFIG_IP_NF_TARGET_MASQUERADE这个模块添加伪装目标。例如,如果我们不知道我们有什么IP到互联网,这将是获得IP的首选方式,而不是使用DNAT或SNAT。换句话说,如果我们使用DHCP、PPP、SLIP或其他分配给我们IP的连接,我们需要使用这个目标而不是SNAT。与NAT相比,假面伪装对计算机的负载略高,但可以在我们事先不知道IP地址的情况下工作。
CONFIG_IP_NF_TARGET_REDIRECT该目标与应用程序代理一起使用。我们不是让一个包直接通过,而是将它们重新映射到本地的盒子中。换句话说,我们有可能通过这种方式创建一个透明代理。
CONFIG_IP_NF_TARGET_LOG这将LOG目标及其功能添加到iptables中。我们可以使用此模块将某些包记录到syslogd,从而查看包发生了什么。这对于安全审查、取证或调试正在编写的脚本是非常宝贵的。
CONFIG_IP_NF_TARGET_TCPMSS此选项可用于对抗阻止ICMP分片所需数据包的互联网服务提供商和服务器。这可能导致网页无法通过,小邮件通过而大邮件无法通过,ssh工作,但scp在握手后死亡,等等。然后,我们可以使用TCPMSS目标来克服这一点,将我们的MSS(最大段大小)夹到PMTU(路径最大传输单元)。
CONFIG_IP_NF_COMPAT_IPCHAINS增加了一个兼容老版本ipchains模式。不要把它看作是解决从Linux 2.2内核迁移到2.4内核的任何真正的长期解决方案,因为它很可能在内核2.6中就已经消失了。
CONFIG_IP_NF_COMPAT_IPFWADM兼容老版本IPFWADM

为了让rc.firewall.txt脚本工作,我们需要将以下选项编译到内核中,或者作为模块。如果您需要其他脚本所需的选项方面的帮助,请查看示例防火墙脚本部分

  • CONFIG_PACKET
  • CONFIG_NETFILTER
  • CONFIG_IP_NF_CONNTRACK
  • CONFIG_IP_NF_FTP
  • CONFIG_IP_NF_IRC
  • CONFIG_IP_NF_IPTABLES
  • CONFIG_IP_NF_FILTER
  • CONFIG_IP_NF_NAT
  • CONFIG_IP_NF_MATCH_STATE
  • CONFIG_IP_NF_TARGET_LOG
  • CONFIG_IP_NF_MATCH_LIMIT
  • CONFIG_IP_NF_TARGET_MASQUERADE
    以上这些配置在rc.firewall.txt脚本上是必须的

在大多数情况下,iptables的配置和编译与内核配置和编译是同步进行的。某些发行版预装了iptables包,其中一个就是Red Hat。

参考:Iptables Tutorial 1.2.2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值