概念与 作用 | 网络中的防火墙,是一种将内部网络和外部网络分开的方法,是一种隔离技术。防火墙在内网与外网通信时进行访问控制,依据所设置的规则对数据包做出判断,最大限度地阻止网络中黑客破坏企业网络,从而加强企业网络安全。 | ||||||||
分类 | 硬件防火墙:思科地ASA,H3C地sepath 软件防火墙:iptables iptables: linux操作系统中默认内置一个软件防火墙,为iptables netfilter:位于linux内核中的包过滤功能体系,称为linux防火墙的“内核态”; iptables:位于/sbin/iptables,用来管理防火墙规则的工具,称为Linux防火墙“用户态” | ||||||||
包过滤的工作层次 | 主要是网络层,针对IP数据包,体现在对包内的IP地址、端口等信息的处理上。 | ||||||||
规则链 | 规则作用:对数据包进行过滤或处理 链作用:容纳各种防火墙规则 链的分类依据:处理数据包的不同时机 | ||||||||
默认的5种规则链 | INPUT:处理入站数据包 OUTPUT:处理出站数据包 FORWARD:处理转发数据包 POSTROUTING:在进行路由选择后处理数据包 PREROUTING:在进行路由选择前处理数据包 | ||||||||
规则表 | 表的作用:容纳各种规则链 表的划分依据:防火墙规则的动作相似 | ||||||||
默认包括四个规则表 | raw表:确认是否对该数据包进行状态跟踪 mangle表:为数据包设置标记 nat表:修改数据包种的源、目标IP地址或端口 filter表:确认是否被放行该数据包(过滤) | ||||||||
iptables 匹配流程 | 规则表之间的顺序: rawà mangleà natà filter 规则链之间的顺序: 入站:PEROUTINGà INPUT 出站:OUTPUTà POSTROUTING 转发:PEROUTINGà FORWARDà POSTROUTING 规则链内的匹配顺序 按照顺序依次检查,匹配即停止 若找不到相匹配规则,按核链的默认策略处理 | ||||||||
命令 | iptables 格式:iptables 选项 参数 | ||||||||
-A:插在链的最上面 -i:插在链的最下面 | |||||||||
linux操作系统就相当于一个路由器,而路由器可以作为网关,所以linux可以模拟网关 数据包在经过Linux时,网关功能是如何实现的呢? 如果ping192.168.200.200,那么数据包的源IP为自己,目标IP为192.168.200.200,当数据包从eth0网卡进去后,网关发现这个数据包的目标IP地址是找自己的,于是就经历:入站à 出站 ,这个过程。(入站是kernel接收这个数据包,出站是kernel返回一个响应包) 如果数据包IP不是自己的,且符合网关路由规则(网关为每个网卡生成一个路由规则,规则为网卡网段,这样网关接收数据后,就可以知道从哪个网卡发出)。按照路由规则,转发数据包走的是FORWARD这条路线。 数据包需要一去一回,在入站堵住,就是kernel收不到,在出站堵住,就是收到了但不回复。这三条录对于iptables来说,叫做链。 | |||||||||
环境搭建 | |||||||||
1. | 准备三台服务器,IP地址如下:
| ||||||||
2. | Server1的配置正常即可,可以改变其IP地址,关闭防火墙。 | ||||||||
3. | 先将server2关机,然后点击编辑虚拟机设置 为server2添加一块网卡,使用VMnet1虚拟网卡(VMnet1使用的是192.168.100.0网段) (注意:第二块网卡不能和第一块网卡选用相同的虚拟网卡。这里我的第一块网卡使用的虚拟网卡的IP网段为192.168.200.0网段,也就是和server1位于同一网段。而server1和server2的第一块网卡都使用VMnet8网卡,此时的VMnet8就是这两块网卡的网关,而server2的第二块网卡网段为192.168.100.0,不同于前两块网卡,所以另起VMnet1作为它的网关。) [root@client ~]# cd /etc/sysconfig/network-scripts/ //在server2上进入网卡配置目录 [root@client network-scripts]# cp ifcfg-eth0 ifcfg-eth1 //复制eth0的网卡配置文件,将其更名为eth1。 解释:新添加的网卡默认是没有配置文件的,所以我们需要在网卡的配置目录手动编写一个配置文件。将其更名为eth1网卡的配置文件,然后进入其中修改内容。 [root@client network-scripts]# vim ifcfg-eth1 //修改eth1网卡配置文件 切记,除了修改IP地址外,上面的DEVICE的值要修改成eth1,否则它将调用eth0网卡,但是它找不到,所以IP将不能应用。 [root@client network-scripts]# ifcfg eth1 up //启动eth1网卡 [root@client network-scripts]# service network restart //重启网卡 [root@client network-scripts]# ifconfig //查看网卡状态 应用成功 | ||||||||
4. | 将server3的IP地址改成192.168.100.7,并更改其网卡为VMnet1,然后关闭防火墙。 | ||||||||
5. | 此时server2拥有两块网卡,地址分别是192.168.200.6和192.168.100.6。然后我们在server2上分别Ping server1和server3,测试连通性。 无误后,我们再在server1上ping server3 可以通信。 这是因为server1的数据包发送给server2的eth0网卡,eth0网卡入站交给kernel,然后在经过eth1网卡出站,发到192.168.100.7。server2在这里就充当了网关的作用。 | ||||||||
6. | 如果出现server1和server3不能ping通,那么执行以下操作 [root@client ~]# vi /etc/sysctl.conf //进入linux内核参数配置文件(不要用vim) 将第一个生效参数的0改成1 [root@client ~]# sysctl -p //让其立即生效 此过程是为了打开FORWARD传输。 | ||||||||
实践测试 | |||||||||
[root@client ~]# iptables -t filter -L //查看filter表里的内容,默认看的就是filter表 policy默认链规则,如果链种没有特殊设定规则,那么默认遵循默链的默认规则。 目前Chain(链)里是没有内容的,如果你的有,那么你应该没有关闭iptables服务。 由于规则是空的,所以它不会阻止任何数据包。 ·从入站让它不通 Xshell的连接协议为TCP,ping的协议为ICMP [root@client ~]# iptables -A INPUT -p icmp -j DROP //-A不指定表名为人为filter,在INPUT,-p指定协议icmp,-j控制类型为DROP丢包 [root@client ~]# iptables -L //查看规则 source:来源 destination:目标;anywhere是任何,也就是所有用户 测试: [root@client ~]# iptables -F //清空链里的所有规则 测试: ·从出站让他出去 [root@client ~]# iptables -A OUTPUT -p icmp -j DROP //出站限制icmp 测试: 数据包能被接收,但是回不来了 如果不限定协议,那么将拒绝所有,xshell也将不能运行。 | |||||||||
桥接模式模拟的其实是交换机,NAT模式模拟的其实是路由器。 | |||||||||
[root@client ~]# yum -y install tcpdump //安装抓包工具 [root@client ~]# tcpdump -p icmp //实时监控抓取icmp协议包 使用Pcping虚拟机 我这里有域名,所以是www.xiaofa.com,但并不影响 192.168.200.1向www.xiaofa.com发数据包,www.xiaofa.com回复相应包给192.168.200.1。 数据包在经过VMnet8后,被重新封装转发,将源地址从PC改成VMnet8。 | |||||||||
修改链的默认规则 | [root@client ~]# iptables -A INPUT -p tcp -j ACCEPT //先添加一条允许tcp的规则,防止xshell掉线 [root@client ~]# iptables -P INPUT DROP //更改默认链的规则为DROP | ||||||||
有几个网卡,几个网段就有几个路由规则。 跨网段数据包是发给网关的,由网关选择数据包走的网卡接口。 如果不设置网关,那么数据包可以发出,但是不能回来。 | |||||||||
实验操作 | |||||||||
1. | [root@centos ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 //进入server3的网卡配置文件,注释网关 [root@centos ~]# service network restart //重启网卡 //当server3注释掉网卡时,server1就不能ping server3了 在server3上进行抓包测试: //可以看到,数据包虽然不能返回,但是server1发出的数据包是成功发到server3,但是没有回复。 当我们解除网卡的注释,在server1上ping server3,再server3上抓包测试: 可以看到,不光由从200.4接收的数据包,还有从100.7发出的数据包。 | ||||||||
2021-2-21 |
Linux基础——防火墙(一)
最新推荐文章于 2024-08-20 16:24:16 发布