linux下防火墙的设置(firewalld和iptables两种方式)

一 、防火墙的介绍

防火墙是整个数据包进入主机前的第一道关卡,是一种位于内部网络和外部网络之间的网络安全系统,是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙主要是通过Netfilter与TCPwarppers两个机制来管理的
firewalld编写火墙策略的工具,开启火墙自动管理火墙数据
同名管理iptable 更专业

二、firewalld管理火墙

firewalld是动态防火墙后台程序,它提供了一个动态管理的防火墙,用以支持网络“zones”,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对ipv4和ipv6防火墙的设置支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口

  • 可以有三种方式来设置firewalld
  • 使用命令行工具firewall-cmd
  • 使用图形管理工具firewall-config
  • 使用/etc/firewalld中的配置文件来设置
  • 防火墙的基础开启命令

systemctl start firewalld 开启防火墙
systemctl stop firewalld 关闭防火墙
systemctl enbale firewalld 设置防火墙开机自启动
systectl disable firewalld 设置防火墙开机禁用
systemctl status firewalld 查看防火墙状态

  • firewalld所有的域
    在这里插入图片描述
  • firewall-cmd的常用命令
--state	火墙开启状态
--get-active-zones	列出当前正在使用的所有区域(具有关联的接口或源)及接口和源信息
--get-default-zone	查询当前默认区域
--get-zones		列出所有可用区域
--zone=public --list-all列出public域的所有配置(接口、源、服务和端口)
--get-services		列出所有域定义服务
--list-all-zones	列出所有区域的所有配置(接口、源、服务和端口)
--set-default-zone=dmz	设置默认域为dmz,此命令会同时更改运行时配置和永久的配置
--add-scoure=	将来自IP地址或网络/掩码的所有流量路由到指定区域
--remove-scoure=	从指定区域中删除用于路由来自IP地址或网络/掩码的所有流量规则
--add-interface=	将来自该接口的所有流量到指定区域
--change-intergace=	将接口已有绑定区域而与其他区域关联
--list-all		列出默认区域的所有配置(接口、源、服务和端口)
--add-service=		允许区域某服务的流量
--add-port=		允许区域某端口的流量
--remove-service=	从区域删除某服务的规则
--remove-port=		从区域删除某端口的归则
--reload	丢弃Runtime配置并用Permanet配置

1.列出默认区域的所有配置
在这里插入图片描述
2.查询当前默认区域
在这里插入图片描述
3.从区域删除某服务的规则

[root@localhost ~]# firewall-cmd --permanent --remove-service=
注意使用table键补齐

在这里插入图片描述

4.防火墙状态的查看

[root@localhost ~]# firewall-cmd --state 
running

在这里插入图片描述
5.查看防火墙所有域
在这里插入图片描述
6.查看某个域的具体信息(示例work域)
在这里插入图片描述
7.列出可以使用的服务

[root@localhost ~]# firewall-cmd --get-services 

8.防火墙允许http服务(添加http服务)
在这里插入图片描述 9.删除http服务
在这里插入图片描述10.将指定的ip加入到trusted域
在这里插入图片描述11.删除刚才添加的ip
在这里插入图片描述12.拒绝指定主机ip的所有网络连接

  • (加入到block域中,该指令时有回应的)
    在这里插入图片描述在这里插入图片描述
  • 加入到drop域,没有回应
    在这里插入图片描述在这里插入图片描述

13.将eth0接口从public域中移除
在这里插入图片描述
14.将eth0接口添加到trusted域
在这里插入图片描述
15.将eth0接口从之前的域转移到public域
在这里插入图片描述16.添加8080端口到public域
在这里插入图片描述17.查看firewalld相关配置文件
在这里插入图片描述18.添加http8080服务(查看服务时要可以列出)

  • 添加配置文件http8080.xml文件
    在这里插入图片描述
  • 编辑配置文件
    在这里插入图片描述
  • 重启火墙服务
  • 之后查看可以列出的服务
    在这里插入图片描述
    19.查看firewalld的区域相关的配置文件
    在这里插入图片描述
  • 查看默认public域的信息
    默认public域的服务中是有ssh服务的
    在这里插入图片描述
  • 编辑public域配置文件
    删除默认配置文件中的ssh服务
[root@localhost zones]# vim public.xml

   
   
  • 1

在这里插入图片描述在这里插入图片描述

  • 再次查看默认public域的信息
    在这里插入图片描述
    20.firewalld对服务的控制,永久移除域临时刷新和永久刷新区别
firewall-cmd --permanent --remove-service=ssh       永久移除ssh服务,不加--permanent是暂时移除
firewall-cmd --list-all
firewall-cmd --reload      临时刷新:刷新防火墙的状态,不会改变当前正在的连接
firewall-cmd --list-all
firewall-cmd --complete-reload          永久刷新:完全刷新防火墙的状态,会断开当前正在的连接
  • 防火墙允许的服务中有ssh服务可以正常连接
    在这里插入图片描述
  • 防火墙服务中永久移除ssh服务,之后临时刷新,之前ssh连接的ssh还是可以使用的
    在这里插入图片描述
  • 执行永久刷新之后就不可以继续使用了
    在这里插入图片描述
    21.Direct Rules/端口模式增加特定的防火墙规则

通过firewall-cmd工具,可以使用 --direct选项在运行时间里增加或者移除链。如果不熟悉iptables,使用直接接口非常危险,因为你可能无意间导致防火墙被入侵,直接端口模式适用于服务或者程序,以便于在运行时间内增加特定的防护规则,端口模式添加的规则优先应用.

firewall-cmd --list-all
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.65 -p tcp --dport 22 -j ACCEPT       22端口,只允许172.25.254.65来连接,-s  +来源,-p   协议,-dport    +目的端口,-j + 动作
firewall-cmd --remove-service=ssh --permanent   永久移除ssh服务
firewall-cmd --reload                           重新加载
firewall-cmd --list-all
firewall-cmd --direct --get-all-rules   查看增加的防火墙策略规则

在这里插入图片描述

-j ACCEPT 允许
-j drop 拒绝 无响应 继续访问,会加大负荷
-j reject 拒绝 响应 下一次不会访问

查看防火墙的策略
在这里插入图片描述之后在火墙允许开启的服务中移除ssh服务,主机ip172.25.254.65主机还是会ssh连接到本机,除此之外的其他主机被拒绝,因为在火墙策略允许了

  • 删除防火墙策略
    在这里插入图片描述
    三、防火墙的地址伪装以及端口转发
  • 原地址转换(SNAT)
    1.给充当路由器的主机添加到两块网卡
    在这里插入图片描述
firewall-cmd --add-masquerade  (地址伪装)
firewall-cmd --list-all  

在这里插入图片描述

  • 开启地址伪装功能
    在这里插入图片描述

  • 在另一台1.1网段的虚拟机里设置网关,看是否能ping通真机(172网段)
    在这里插入图片描述

  • 端口转发

  • 在双网卡的主机上设置

firewall-cmd --list-all
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.165      (端口转发)
firewall-cmd --list-all
  • 设置端口转发
    在这里插入图片描述
  • 测试机ssh连接25主机,之后查看ip是165
    在这里插入图片描述
    四、iptables管理火墙
  • iptables对应有三张表五条链

三表的解释:

  • Fliter表:INPUT链,OUTPUT链,FORWARD链
  • NAT表:INPUT链,PREOUTING链,OUTPUT链,POSTROUTING链
  • Mangle表:PREOUTING链,OUTPUT链,POSTROUTING链,INPUT链,FORWARD链
  • Filter表:负责过滤数据包,经过内核(访问本机的)input和output。
  • NAT表:用于网络地址转换(ip,端口),(不访问本机的数据包),做地址转化的时候要用到filter表的forward链。
  • Mangle表:修改数据包的服务类型,TTL,并且可以配置路由时先QOS(限制或开放不够用的时候用Mangle),mangle(转做附加说明,前两张表不够用)

五链的解释:

  • INPUT链:进来的数据包应用此规则链中的规则,input匹配目的IP是本机的数据包;

  • OUTPUT链:外出的数据包应用此规则链中的规则

  • FORWARD链:转发数据包时应用此规则链中的规则,forward匹配流经本机的数据包;

  • PREROUTING链:对数据包做路由选择前应用此规则链中的规则,prerouting用来修改目的地址用来做DNAT;

  • POSTROUTING链:对数据包做路由选择后应用此规则链中的规则,postrouting用来修改源地址用来做SNAT

mangle(前两张表不够用,用mangle表,有五个链:PREOUTING链,OUTPUT链,POSTROUTING链,INPUT链,FORWARD链)

  • 实验配置
  • 实验环境:关闭firewalld火墙管理工具,开启iptables管理工具
    关闭firewalld
    在这里插入图片描述开启iptables
    在这里插入图片描述 iptables的基础语法:
  • -A 向规则链中添加一条规则,默认被添加到末尾
  • -t 指定要操作的表,默认是filter
  • -n 不做解析
  • -L 列出指定表中的策略
  • -D 从规则链中删除规则,可以指定序号或者匹配的规则来删除
  • -R 进行规则替换
  • -I 插入一条规则,默认被插入到首部
  • -F 清空所选的链,重启后恢复
  • -N 新建用户自定义的规则链
  • -X 删除用户自定义的规则链
  • -p 用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,
  • -s 指定源地址
  • -d 指定目的地址
  • -i 进入接口
  • -o 流出接口
  • -j 采取的动作,accept,drop,snat,dnat,masquerade
  • –sport 源端口
  • –dport 目的端口,端口必须和协议一起来配合使用
  • ACCEPT 允许
  • REJECT 拒绝
  • DROP 丢弃
iptables -nL	默认查看的是filter
iptables -t filter -nL
iptables -t mangle -nL
iptables -t nat -nL
iptables -L
iptables -F
iptables -nL
service iptables save
vim /etc/sysconfig/iptables

在这里插入图片描述指定某个表查看
在这里插入图片描述

  • 清空所选的链
    在这里插入图片描述
    iptables的默认策略信息文件:
    /etc/sysconfig/iptables默认iptables火墙的策略文件
    在这里插入图片描述
  • 编写filter表规则
iptables -nL  
iptables -t filter -A INPUT -i lo  -j ACCEPT       回环接口的输入在fiter被允许
iptables -nL
iptables -t filter -A INPUT -s 172.25.254.25  -j ACCEPT      允许172.25.254.25来访问本机
iptables -nL
iptables -t filter -A INPUT -s 172.25.254.25  -j REJECT      拒绝172.25.254.25来访问本机
iptables -nL
iptables -D INPUT 3                       删除filter表INPUT链里的第三个策略
iptables -nL
iptables -R  INPUT 2 -s 172.25.254.25  -j REJECT  (修改规则,拒绝172.25.254.25访问所有端口)
iptables  -I  INPUT 2 -s 172.25.254.25 -p tcp --dport 22 -j ACCEPT(-I插入,允许172.25.254.25来连接22端口。)

注意:防火墙的读取规则是从上到下,遇到自己匹配的就执行。
在这里插入图片描述测试使用172.25.254.65主机来ssh来连接
在这里插入图片描述

  • 配置策略拒绝172.25.254.65主机连接,在之前允许的基础之上再拒绝连接
    在这里插入图片描述
    再次使用172.25.254.65主机连接测试
    在这里插入图片描述
    连接成功,证明火墙的策略的读取规则是从上往下的,遇到可以匹配的就直接执行,因为允许策略在拒绝策略之前,所以就直接执行了
[root@localhost ~]# iptables -D INPUT 3 删除第三条策略
[root@localhost ~]# iptables -nL
[root@localhost ~]# iptables -R INPUT 2 -s 172.25.65.250 -j REJECT 修改第二条策略为拒绝策略

在这里插入图片描述
修改第二条策略
修改之后,ssh连接就已经断掉了(因为之前的命令就是使用172.25.65.250主机ssh连接来写的)
在这里插入图片描述
再次使用172.25.65.250主机测试连接连接不上了
在这里插入图片描述
虚拟机输入:
允许172.25.65.250主机访问22端口策略,并且添加的这个策略为第二条
在这里插入图片描述此时之前断掉的ssh连接就已经恢复了,但只是恢复了22端口,其他端口的服务还是因为第三条拒绝策略的影响是拒绝的

  • 修改预设规则(Policy)
iptables -nL
iptables -P INPUT DROP       修改预设规则为DROP
iptables -nL
iptables -P INPUT ACCEPT

在这里插入图片描述修改回来
在这里插入图片描述

  • 添加、修改、删除链

  • 添加链
    在这里插入图片描述

  • 修改链名
    在这里插入图片描述

  • 删除链
    在这里插入图片描述

  • NAT表的端口转发和地址伪装

  • 端口转发

iptables -t nat -nL
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j  DNAT --to-dest 1.1.1.165:22       将本机的22端口转化为目的地1.1.1.165的端口22,这个动作是在路由前
iptables -t nat -nL

在这里插入图片描述测试机ssh连接测试
在这里插入图片描述

  • 地址伪装
    未做地址伪装之前,使用172网段的测试机区ping1.1.1.网段时一直未响应
    在这里插入图片描述
    做地址伪装
    在这里插入图片描述
    测试可以ping通
    在这里插入图片描述
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值