第7章 Iptables与Firewalld防火墙

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第7章Iptables与Firewalld防火墙。章节简述:红帽RHEL7系统已经用firewalld服务替代了iptables服务,新的防火墙管理命令firewall-cmd与图形化工具firewall-config。本章节基于数十个防火墙需求,使用规则策略完整演示对数据包的过滤、SNAT/SDAT技术、端口转发以及复杂均衡等实验。不光光学习iptables命令与firewalld服务,还新增了Tcp_wrappers防火墙服务小节,简单配置即可保证系统与服务的安全。本章目录结构[收起]7.1了解防火墙管理工具7.2Iptables命令o7.2.1规则链与策略o7.2.2基本的命令参数o7.2.3SNAT与DNATo7.2.4端口转发与流量均衡7.3Firewalld防火墙o7.3.1区域概念与作用o7.3.2字符管理工具o7.3.3图形管理工具7.4服务的访问控制列表7.1了解防火墙管理工具防火墙虽有软件或硬件之分但主要功能还是依据策略对外部请求进行过滤,成为公网与内网之间的保护屏障,防火墙会监控每一个数据包并判断是否有相应的匹配策略规则,直到满足其中一条策略规则为止,而防火墙规则策略可以是基于来源地址、请求动作或协议来定制的,最终仅让合法的用户请求流入到内网中,其余的均被丢弃。在红帽RHEL7系统中firewalld服务取代了iptables服务,但依然可以使用iptables命令来管理内核的netfilter。这对于接触Linux系统比较早或学习过红帽RHEL6系统的读者来讲,突然接触firewalld服务会比较抵触,可能会觉得新增Firewalld服务是一次不小的改变,其实这样讲也是有道理的。但其实Iptables服务与Firewalld服务都不是真正的防火墙,它们都只是用来定义防火墙规则功能的“防火墙管理工具”,将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能,所以其实在配置规则的思路上是完全一致的,而我会在本章中将iptables命令与firewalld服务的使用方法都教授给你们,坦白讲日常工作无论用那种都是可行的。7.2Iptables命令iptables命令用于创建数据过滤与NAT规则,主流的Linux系统都会默认启用iptables命令,但其参数较多且规则策略相对比较复杂。7.2.1规则链与策略在iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一个链。举例来说:小区门卫有两条的规则,将这两个规则可以合成一个规则链:遇到外来车辆需要登记。严禁快递小哥进入社区。但是光有策略还不能保证社区的安全,我们需要告诉门卫(iptables)这个策略(规则链)是作用于哪里的,并赋予安保人员可能的操作有这些,如:“允许”,“登记”,“拒绝”,“不理他”,对应到iptables命令中则常见的控制类型有:ACCEPT:允许通过.LOG:记录日志信息,然后传给下一条规则继续匹配.REJECT:拒绝通过,必要时会给出提示.DROP:直接丢弃,不给出任何回应.其中REJECT和DROP的操作都是将数据包拒绝,但REJECT会再回复一条“您的信息我已收到,但被扔掉了”。通过ping命令测试REJECT情况会是这样的:[root@localhost~]#ping-c4192.168.10.10PING192.168.10.10(192.168.10.10)56(84)bytesofdata.From192.168.10.10icmp_seq=1DestinationPortUnreachableFrom192.168.10.10icmp_seq=2DestinationPortUnreachableFrom192.168.10.10icmp_seq=3DestinationPortUnreachableFrom192.168.10.10icmp_seq=4DestinationPortUnreachable---192.168.10.10pingstatistics---4packetstransmitted,0received,+4errors,100%packetloss,time3002ms但如果是DROP则不予响应:[root@localhost~]#ping-c4192.168.10.10PING192.168.10.10(192.168.10.10)56(84)bytesofdata.---192.168.10.10pingstatistics---4packetstransmitted,0received,100%packetloss,time3000ms而规则链则依据处理数据包的位置不同而进行分类:PREROUTING:在进行路由选择前处理数据包INPUT:处理入站的数据包OUTPUT:处理出站的数据包FORWARD:处理转发的数据包POSTROUTING:在进行路由选择后处理数据包Iptables中的规则表是用于容纳规则链,规则表默认是允许状态的,那么规则链就是设置被禁止的规则,而反之如果规则表是禁止状态的,那么规则链就是设置被允许的规则。raw表:确定是否对该数据包进行状态跟踪mangle表:为数据包设置标记nat表:修改数据包中的源、目标IP地址或端口filter表:确定是否放行该数据包(过滤)规则表的先后顺序:raw→mangle→nat→filter规则链的先后顺序:入站顺序:PREROUTING→INPUT出站顺序:OUTPUT→POSTROUTING转发顺序:PREROUTING→FORWARD→POSTROUTING还有三点注意事项:1.没有指定规则表则默认指filter表。2.不指定规则链则指表内所有的规则链。3.在规则链中匹配规则时会依次检查,匹配即停止(LOG规则例外),若没匹配项则按链的默认状态处理。7.2.2基本的命令参数iptables命令用于管理防火墙的规则策略,格式为:“iptables[-t表名]选项[链名][条件][-j控制类型]”。表格为读者总结了几乎所有常用的iptables参数,如果记不住也没关系,用时来查就行,看完后来学习下如何组合并使用吧:参数作用-P设置默认策略:iptables-PINPUT(DROP|ACCEPT)-F清空规则链-L查看规则链-A在规则链的末尾加入新规则-Inum在规则链的头部加入新规则-Dnum删除某一条规则-s匹配来源地址IP/MASK,加叹号!表示除这个IP外。-d匹配目标地址-i网卡名称匹配从这块网卡流入的数据-o网卡名称匹配从这块网卡流出的数据-p匹配协议,如tcp,udp,icmp--dportnum匹配目标端口号--sportnum匹配来源端口号查看已有的规则:[root@linuxprobe~]#iptables-L清空已有的规则:[root@linuxprobe~]#iptables-F将INPUT链的默认策略设置为拒绝:当INPUT链默认规则设置为拒绝时,我们需要写入允许的规则策略。这个动作的目地是当接收到数据包时,按顺序匹配所有的允许规则策略,当全部规则都不匹配时,拒绝这个数据包。[root@linuxprobe~]#iptables-PINPUTDROP允许所有的ping操作:[root@linuxprobe~]#iptables-IINPUT-picmp-jACCEPT在INPUT链的末尾加入一条规则,允许所有未被其他规则匹配上的数据包:因为默认规则表就是filter,所以其中的”-tfilter“一般省略不写,效果是一样的。[root@linuxprobe~]#iptables-tfilter-AINPUT-jACCEPT删除上面的那条规则:[root@linuxprobe~]#iptables-DINPUT2既然读者已经掌握了iptables命令的基本参数,那么来尝试解决模拟训练吧:模拟训练A:仅允许来自于192.168.10.0/24域的用户连接本机的ssh服务。Iptables防火墙会按照顺序匹配规则,请一定要保证“允许”规则是在“拒绝”规则的上面。[root@linuxprobe~]#iptables-IINPUT-s192.168.10.0/24-ptcp--dport22-jACCEPT[root@linuxprobe~]#iptables-IINPUT-ptcp--dport22-jREJECT模拟训练B:不允许任何用户访问本机的12345端口。[root@linuxprobe~]#iptables-IINPUT-ptcp--dport12345-jREJECT[root@linuxprobe~]#iptables-IINPUT-pudp--dport12345-jREJECT模拟实验C(答案模式):拒绝其他用户从”eno16777736“网卡访问本机http服务的数据包。答案:[rootlinuxprobe~]#iptables-IINPUT-ieno16777736-ptcp--dport80-jREJECT模拟训练D:禁止用户访问。[root@linuxprobe~]#iptables-IFORWARD-d禁止IP地址是192.168.10.10的用户上网[root@linuxprobe~]#iptables-IFORWARD-s192.168.10.10-jDROPiptables命令执行后的规则策略仅当前生效,若想重启后依然保存规则需执行”serviceiptablessave“。7.2.3SNAT与DNATSNAT即源地址转换技术,能够让多个内网用户通过一个外网地址上网,解决了IP资源匮乏的问题,确实很实用。例如读者们来访问《Linux就该这么学》的网页,则就是通过家中的网关设备(您的无线路由器)进行的SNAT转换。(多用户局域网共享上网的拓扑)(因未使用SNAT技术,所以在网站服务器应答后找不到192.168.10.10这台主机,无法正常浏览网页)(因使用了SNAT地址转换技术,服务器应答后先由网关服务器接收,再分发给内网的用户主机。)现在需要将”192.168.10.0“网段的内网IP用户经过地址转换技术变成外网IP地址”111.196.211.212“,这样一来内网IP用户就都可以通过这个外网IP上网了,使用iptables防火墙即可实现SNAT源地址转换,根据需求命令如下:不知读者有无这种经历,当使用联通或者电信上网的时候,每次拨号都会重新分配新的IP地址,那么若网关IP经常变动怎么办?这种外网IP地址不稳定的情况即可使用MASQUERADE(动态伪装):能够自动的寻找外网地址并改为当前正确的外网IP地址iptables-tnat-APOSTROUTING-s192.168.10.0/24-jMASQUERADEDNAT即目地地址转换技术,则能够让外网IP用户访问局域网内不同的服务器。(互联网中的客户机访问网站时的拓扑)(DNAT的数据包转换过程)现在希望互联网中的客户机访问到内网”192.168.10.6“这台提供网站服务的主机,那么只需在网关系统上运行这条命令:7.2.4端口转发与流量均衡此处内容已隐藏,点击将本文或后即可浏览7.3Firewalld防火墙Firewalld服务是红帽RHEL7系统中默认的防火墙管理工具,特点是拥有运行时配置与永久配置选项且能够支持动态更新以及“zone”的区域功能概念,使用图形化工具firewall-config或文本管理工具firewall-cmd,下面实验中会讲到~7.3.1区域概念与作用防火墙的网络区域定义了网络连接的可信等级,我们可以根据不同场景来调用不同的firewalld区域,区域规则有:区域默认规则策略trusted允许所有的数据包。home拒绝流入的数据包,除非与输出流量数据包相关或是ssh,mdns,ipp-client,samba-client与dhcpv6-clien

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功