防火墙——rhel 7

防火墙策略管理

硬件防火墙

软件防火墙

Firewalld服务基础

RHEL7的防火墙体系 ——软件防火墙

系统服务:firewalld

管理工具firewall-cmd(命令行),firewall-config(图形界面管理)

防火墙应用: 起到隔离作用,保护局域网或主机系统

预设安全区域

根据所在的网络场所区分,预设保护规则集,常用的安全区域

    public:仅允许访问本机的sshd等少数几个服务

    trusted:允许任何访问

    block:阻塞任何来访请求        //回应请求不通信,实验时常用

    drop:丢弃任何来访的数据包     //不回应请求,节省服务器资源,工作中常用

新增防火墙规则的位置:

    运行时(runtime):仅当前有效,重载防火墙后失效

    永久(permanent):静态配置,需要重载防火墙才能生效

查看防火墙规则列表

firewall-cmd --list-all    //查看默认区域策略

firewall-cmd --list-all --zone=区域名   //查看指定区域的策略

firewall-cmd --list-all -zones

firewall-cmd --get-zones  

firewall-cmd --get-services

firewall-cmd --get-default-zone   //查看当前默认区域

firewall-cmd --set-default-zone=区域名   //设置默认区域

firewall-cmd --zone=block  --add-source=网段地址/掩码   //临时阻止一个网段

firewall-cmd  --permanent  --zone=block  --add-source=网段地址/掩码 

                                                       //永久阻止一个网段

查看防火墙服务是否开启,设置为开机自起

# systemctl status firewalld

# systemctl enable firewalld

######################################################

默认区域修改

虚拟机server0

# firewall-cmd --set-default-zone=public

# firewall-cmd --list-all             #查看默认区域信息

public (default, active)              //public域,活跃

  interfaces: eth0

  services: dhcpv6-client ssh          //允许服务

虚拟机desktop0   # ping -c 2 172.25.0.11  //可以通信

虚拟机server0   修改默认区域为block

# firewall-cmd  --set-default-zone=block 

# firewall-cmd  --list-all

block (default, active)

  interfaces: eth0

虚拟机desktop0   # ping -c 2 172.25.0.11  //不可通信,有回应

虚拟机server0   修改默认区域为drop

    # firewall-cmd  --set-default-zone=drop 

# firewall-cmd  --list-all

drop (default, active)

  interfaces: eth0

虚拟机desktop0   # ping -c 2 172.25.0.11  //不可通信,没有回应

虚拟机server0   修改默认区域为trusted

    # firewall-cmd  --set-default-zone=trusted 

# firewall-cmd  --list-all

     trusted (default, active)

        interfaces: eth0

虚拟机esktop0   # ping -c 2 172.25.0.11  //可通信,有回应

###############################################################################

firewall典型的应用方式

严格:将默认区域保持为(block、drop),针对需要放行的IP访问在trused区域添加策略

宽松:将默认区域保持为trusted,针对需要阻止的访问IP在(block、drop)区域添加策略

常见配置方式:

默认区域public,在trusted区域添加信任网段

或者

默认区域trusted,在drop区域添加需要封锁的网段

###############################################################################

默认区域的修改,默认是永久,不需要添加--permanent(永久)选项

添加服务到默认区域

虚拟机server0:# firewall-cmd --set-default-zone=public

# firewall-cmd --list-all

虚拟机desktop0:# firefox http://172.25.0.11  #不可以

  等价于命令# elinks -dump http://172.25.0.11

            # firefox ftp://172.25.0.11   #不可以

虚拟机server0:

# firewall-cmd --permanent --add-service=http #永久设置

# firewall-cmd --permanent --add-service=ftp  #永久设置

# firewall-cmd --reload                    #重新加载

# firewall-cmd --list-all

虚拟机desktop0:# firefox http://172.25.0.11  #可以

            # firefox ftp://172.25.0.11   #可以

###############################################################################

设置server0防护墙规则,默认区域为trusted,最终真机可以访问server0的web服务,desktop0则不能

虚拟机server0:# firewall-cmd --list-all

public (default, active)               //public域,活跃

            services: dhcpv6-client ssh             //允许服务

虚拟机desktop0:#firefox http://172.25.0.11   //不能访问

真机#firefox  http:172.25.0.11                  //不能访问

虚拟机server0  把172.25.0.10添加到trusted中,永久有效

    # firewall-cmd --zone=trusted --add-source=172.25.0.10

# firewall-cmd --list-all --zone=trusted

# firewall-cmd --reload    //重新加载配置

# firewall-cmd --list-all --zone=trusted

虚拟机desktop:# firefox http://172.25.0.11  #可以

真机:# firefox http://172.25.0.11            #不可以

#########################################################################

配置防火墙

指定默认的安全区域

使用firewall-cmd --set-default-zone=区域名

默认为public,限制较严格

对于开放环境,建议将默认区域修改为trusted

针对“运行时/永久配置”均有效

封网段,开服务

若针对“永久配置”,需添加 --permanent

使用 --add source=网段地址   

使用--add-service=服务名:

# firewall-cmd --permanent --zone=block  --add-source=172.34.0.0/24

# firewall-cmd --permanent --zone=public  --add-service=http

实现本机的端口映射

本地应用的端口重定向(端口1-->端口2:从客户及访问端口1的请求,自动映射到本机的端口2,2个端口等效,真正的网络应用服务其实在端口2 提供监听)

# firewall-cmd --permanent --zone=默认区域  --add-forward-port=被转发端口设置:协议设置:目标端口设置

# firewall-cmd --permanent --zone=默认区域  --add-forward-port=port=源端口:proto=协议名:toport=目标端口

防火墙配置重载:firewall-cmd --reload

防火墙功能的实现

Linux内核机制(netfilter) —— 控制数据包是否允许通过

Linux系统是如何运行起来的?(人类繁衍)

 kernel --> /usr/sbin/init --> .....

 login --> /bin/bash --> /bin/bash --> /bin/bash Web服务

防火墙处理数据包的流程:

先检查其他区域(IP地址、接口……),最后检查默认区域   【匹配及停止】

###############################################################################

# firewall-config    //图形工具

.. .. //默认区域改成 trusted,在block区域内添加要阻止的源地址

找到默认trusted区域,配置永久策略--Port Forwarding转发策略

# firewall-cmd --set-default-zone=trusted 

###############################################################################

示例:配置firewalld防火墙

为两个虚拟机 server0、desktop0配置防火墙策略:

允许从172.25.0.0/24网段的客户机访问 server0、desktop0 的任何服务

(# firewall-cmd --permanent --zone=block --remove-source=172.25.0.10)

禁止从my133t.org域(172.34.0.0/24网段)的客户机访问 server0、desktop0 的任何服务

在172.25.0.0/24网络中的系统,访问 server0 的本地端口5423将被转发到80

(elinks -dump http://172.25.0.11:5423====>elinks -dump http://172.25.0.11:80)

    上述设置必须永久有效

步骤一:采取“默认全允许,仅拒绝个别”的防护策略

1)启用防火墙服务

    [root@server0 ~]# systemctl  restart  firewalld

    [root@server0 ~]# systemctl  enable  firewalld

2)将默认区域设置为trusted

    [root@server0 ~]# firewall-cmd  --get-default-zone             //修改前

    [root@server0 ~]# firewall-cmd  --set-default-zone=trusted      //修改操作

    [root@server0 ~]# firewall-cmd  --get-default-zone              //修改后

步骤二:封锁指定的IP网段

1)添加永久配置“阻塞来自网段172.34.0.0/24的任何访问”

firewall-cmd  --permanent  --zone=block  --add-source=172.34.0.0/24

2)重载防火墙 # firewall-cmd  --reload

3)检查运行时规则

 # firewall-cmd  --list-all  --zone=block

    Block …… sources: 172.34.0.0/24

步骤三:实现5423-->80端口转发

1)针对80端口部署测试应用

快速搭建一个测试网站:

    [root@server0 ~]# yum  -y  install  httpd                    //装包

    [root@server0 ~]# vim  /var/www/html/index.html              //部署测试网页

    [root@server0 ~]# systemctl  restart  httpd                   //起服务

从客户端访问,确认测试网页:

    [root@desktop0 ~]# yum  -y  install  elinks

    [root@desktop0 ~]# elinks  -dump  http://server0.example.com/

2)配置5423-->80端口转发策略

# firewall-cmd  --permanent  --zone=trusted  --add-forward-port=port=5423:proto=tcp:toport=80                 //添加永久配置

# firewall-cmd  --reload                      //重载服务

# firewall-cmd  --list-all                  //确认运行时规则

    trusted (default, active)

      interfaces: eth1 eth2 eth0 team0

         forward-ports: port=5423:proto=tcp:toport=80:toaddr=

3)验证端口转发策略

从desktop0上访问server0的5423端口,与访问server0的80端口效果一样:

    [root@desktop0 ~]# elinks  -dump  http://server0.example.com:5423/

       test site.            //等价命令:# elinks -dump http://172.25.0.11:5423

[root@desktop0 ~]# elinks  -dump  http://server0.example.com/

你可能感兴趣的:(Linux,防火墙)