iptables的管理方式

    技术2022-07-11  97

    一.实验环境

    设置方法

    单网卡主机(workstation只能连接内网) 170.25.254.22 双网卡主机(rhel8一块连接内网,一块连接外网) 170.25.254.11 172.25.254.33 真机(foundation17) 172.25.254.17

    单网卡主机查看 双网卡主机查看

    vim ifcfg-enp1s0双网卡主机中能与单网卡连接的ip vim ifcfg-enp6s0双网卡主机中设置网关为真机ip

    二.火墙介绍

    防火墙在做数据包过滤决定时,有一套遵循和组成的规则。 这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。 在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。 netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。 netfilter netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。对netfilter进行管理。iptables|firewalld 对iptables进行管理,一个是其本身的插件,另一个是firewalld

    三.火墙管理工具切换

    在rhel8中默认使用的是firewalld

    1.firewalld----->iptables

    【1】代码

    firewalld----->iptables - dnf install iptables-services -y #搭建好yum仓库后,安装iptables - systemctl stop firewalld - systemctl disable firewalld - systemctl mask firewalld - systemctl enable --now iptables

    【2】过程 rhel7以上版本可以不用安装,此处是为了方便给大家展示,所以我dnf安装了一下

    dnf install iptables-services.x86_64 -y 搭建好yum仓库后,安装iptables 关闭火墙 开启iptables

    2.iptales -------> fiewalld

    【1】代码

    iptales -------> fiewalld - systemctl stop iptables - systemctl disable iptables - systemctl mask iptables - systemctl enable --now firewalld

    【2】过程

    关闭iptables 锁定iptables并且解锁火墙 开启火墙

    3. iptables 的使用

    /etc/sysconfig/iptables 是 iptables 策略记录文件

    命令作用iptales-save > /etc/sysconfig/iptables将策略存放在记录文件中service iptables save自动存放

    1)临时 iptables -F 刷掉策略(这是临时的,在刷新掉后restart会重新出现) 2)永久保存策略

    【1】iptales-save > /etc/sysconfig/iptables保存当前策略

    -F后保存策略 查看/etc/sysconfig/iptables中的内容 备份iptables文件到/mnt中,-F后重启服务发现不会恢复 将文件放回后再次重启,此时策略信息恢复了

    【2】service iptables save自动存放

    四.火墙默认策略

    1.默认策略中的5条链

    input输入output输出forward转发postrouting路由之后prerouting路由之前

    2.默认的3张表

    filter 经过本机内核的数据(input output forward)

    nat不经过内核的数据(postrouting,prerouting,input,output)

    mangle 当filter和nat表不够用时使用(input output forward postrouting, prerouting,)

    3.iptables的常见命令

    命令作用-t指定表名称-n不做解析-L查看-A添加策略-p协议- -dport目的地端口-s来源-j动作-N新建链-E更改链名称-X删除链-D删除规则-I插入规则-R更改规则-P更改默认规则

    补充:

    -j 动作 ACCEPT ##允许 DROP ##丢弃 REJECT ##拒绝 SNAT ##源地址转换 DNAT ##目的地地址转换

    练习:

    指定表名称,不加 -t 则表示默认使用filter,此处可以结合理解3个表存在的链 添加策略 (对链进行操作)新建链+更改链名称+删除链 默认的链是不能删除的 -D删除INPUT中的第二条规则 -I 默认插入在最前面,但是也可以插入在指定行 -R更改规则 -P修改默认规则 注意:默认规则只能是ACCEPT或DROP,不能是REJECT

    4.数据包状态

    最开始的访问状态是NEW,后续就是ESTABLISHED和RELATED了。此设定会优化我们的火墙数据包状态,使我们的数据包更易通过火墙。

    命令作用RELATED建立过连接的ESTABLISHED正在连接的NEW新的

    【1】代码

    [root@workstation ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #这两种状态的直接让过 [root@workstation ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT [root@workstation ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT [root@workstation ~]# iptables -A INPUT -m state --state NEW -s 170.25.254.11 -p tcp --dport 22 -j ACCEPT #不加!表示只有这个ip的可以来访问,加上!表示只有此ip不可访问 [root@workstation ~]# iptables -A INPUT -j REJECT [root@workstation ~]# service iptables save #对我们的策略进行保存

    【2】验证

    自己访问自己是可以成功的,因为走的是lo回环接口 使用170.25.254.11也是可以访问的,使用其他主机是不可以的

    5.nat表中的dnat snat

    - snat iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 172.25.254.33 - dnat iptables -t nat -A PREROUTING -i enp6s0 -j DNAT --to-dest 170.25.254.22 从enp6s0进来的所有数据都转给170.25.254.11,即给enp6s0(172.25.254.33)的所有请求,都会发送到170.25.254.11。下面的练习就是真机连接双网卡主机,但是最后的连接位置却是单网卡主机

    【1】snat练习:内网访问外网,源地址转换(要在POSTROUTING) 实验预计目标:初始状态下单网卡主机不能访问外网,但是经过设定后,可以访问。 设定内容:将单网卡(170)可以通过双网卡转换为可上网的(172)

    单网卡主机初始状态

    在单网卡中添加网关(所添加部分就是双网卡中与其网段一致的ip) nmcli connection ~ route -n查看网关

    rhel8中内核路由功能是开启的

    此时iptables -t nat -A POSTROUTING -o enp6s0 -j SNAT --to-source 172.25.254.33添加规则,表示所有输出都是以172.25.254.33输出

    此时单网卡主机能成功ping通外网与真机,单网卡170…通过双网卡的转换,能够连接真机172… 使用ssh命令完成单网卡连接真机

    【2】dnat练习:目的地地址转换(要在PREROUTING)

    iptables -t nat -A PREROUTING -i enp6s0 -j DNAT --to-dest 170.25.254.22将所有从enp6s0连接的都转到170.25.254.22 真机连接33,但是真正的连接位置是22。这就是做了目的地地址转换!
    Processed: 0.009, SQL: 9