• Linux基础——防火墙(一)


    概念与

    作用

    网络中的防火墙,是一种将内部网络和外部网络分开的方法,是一种隔离技术。防火墙在内网与外网通信时进行访问控制,依据所设置的规则对数据包做出判断,最大限度地阻止网络中黑客破坏企业网络,从而加强企业网络安全。

    分类

    硬件防火墙:思科地ASAH3Csepath

    软件防火墙: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为自己,目标IP192.168.200.200,当数据包从eth0网卡进去后,网关发现这个数据包的目标IP地址是找自己的,于是就经历:入站à 出站 ,这个过程。(入站是kernel接收这个数据包,出站是kernel返回一个响应包)

    如果数据包IP不是自己的,且符合网关路由规则(网关为每个网卡生成一个路由规则,规则为网卡网段,这样网关接收数据后,就可以知道从哪个网卡发出)。按照路由规则,转发数据包走的是FORWARD这条路线。

    数据包需要一去一回,在入站堵住,就是kernel收不到,在出站堵住,就是收到了但不回复。这三条录对于iptables来说,叫做链。

    环境搭建

    1.

    准备三台服务器,IP地址如下:

    名称

    IP

    Server1

    192.168.200.4

    Server2

    充当网关

    192.168.200.6

    192.168.100.6

    Server3

    192.168.100.7

    2.

    Server1的配置正常即可,可以改变其IP地址,关闭防火墙。

    3.

    先将server2关机,然后点击编辑虚拟机设置

    server2添加一块网卡,使用VMnet1虚拟网卡(VMnet1使用的是192.168.100.0网段)

    (注意:第二块网卡不能和第一块网卡选用相同的虚拟网卡。这里我的第一块网卡使用的虚拟网卡的IP网段为192.168.200.0网段,也就是和server1位于同一网段。而server1server2的第一块网卡都使用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.

    server3IP地址改成192.168.100.7,并更改其网卡为VMnet1,然后关闭防火墙。

    5.

    此时server2拥有两块网卡,地址分别是192.168.200.6192.168.100.6。然后我们在server2上分别Ping server1server3,测试连通性。

    无误后,我们再在server1ping server3

    可以通信。

    这是因为server1的数据包发送给server2eth0网卡,eth0网卡入站交给kernel,然后在经过eth1网卡出站,发到192.168.100.7server2在这里就充当了网关的作用。

    6.

    如果出现server1server3不能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的连接协议为TCPping的协议为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.1www.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,但是没有回复。

    当我们解除网卡的注释,在server1ping server3,再server3上抓包测试:

    可以看到,不光由从200.4接收的数据包,还有从100.7发出的数据包。

    2021-2-21

  • 相关阅读:
    36、异常(Exception)
    Window 安装 Kafka ,使用GO开发操作
    Excel-VBA 快速上手(二、条件判断和循环)
    Netty入门——组件(Channel)二
    快速幂(c++,超级详细)
    HSRP热备份路由器协议的解析和配置
    mac安装Homebrew
    C语言 深入探究C语言中的文件操作
    37、Docker 安装 RabbitMQ
    MongoDB的介绍和使用
  • 原文地址:https://blog.csdn.net/Xiaofa_123/article/details/125283474