firewalld服务

firewalld服务在企业7以上的版本,,是一款类似于windows界面的可以图形化设置防火墙策略的工具。

一.firewalld服务的安装与启用

yum install firewalld ##安装firewalld服务
systemctl start firewalld ##启用firewalld服务
systemctl enable firewalld ##设置开机自动启动

二.firewald域

这里写图片描述

三.图形管理工具

firewall-config ##打开图形管理工具
这里写图片描述

1永久添加53端口到public域,完成后重新加载:

点击port–>>add–>>53–>>tcp–>ok完成添加。
这里写图片描述
左上角选择permanent永久生效,
这里写图片描述
完成后Options–>Reload Firewalld 重新加载
这里写图片描述

2.添加服务

添加http服务,点击server 相应的服务前点击勾中,重新加载即可
这里写图片描述

3.添加/删除新域,仅仅针对自定义域

左下角“+“新建域,“-“删除域
这里写图片描述
这里写图片描述

4.server栏中是各服务对应的协议和端口号

这里写图片描述

四.命令管理模式

1.基本命令


firewall-cmd --state ##查看firewall服务当前状态
firewall-cmd --get-active-zones ##查看当前活跃域(已经激活的域)
firewall-cmd --get-default-zone ##查看当前默认域
firewall-cmd --get-zones ##列出所有域
firewall-cmd --zone=public --list-all ##列出public域的所有策略
firewall-cmd --get-services ##查看firewall管控的所有服务
firewall-cmd --list-all-zones ##列出所有域
firewall-cmd --set-default-zone=trusted ##设置默认域为trusted

firewall-cmd --get-services ##查看firewall管控的所有服务
所有服务的信息控制:/usr/lib/firewalld/services/*.xml,这些服务也是firewalld服务所能管理的所有服务

这里写图片描述

2.1在默认域名为public的情况下,该域无httpd策略,trusted也无httpd策略,客户机1,客户机2均无法访问httpd服务,添加httpd服务到trusted后,public虽无httpd服务策略,但两台客户机均能访问htppf服务

实验环境:服务端: eth0:192.168.0.210;eth1:172.25.254.210
客户端1: 172.25.254.51
客户端2:192.168.0.110 网关:192.168.0.210
为实验效果安装htppd服务,添加默认网页index.html
yum install httpd
echo "<h1>eth1:172.25.254.210</h2><br><h1>eht0:192.168.0.210</h1>" > /var/www/html/index.html
这里写图片描述

2.2firewalld策略:服务器网卡管控实验

默认域public 激活网卡接口eth0:192.168.0.210,无httpd服务,trusted添加httpd服务,激活网卡eth1:172.25.254.210 ,这时客户端1: 172.25.254.51可以访问httpd服务, 客户端2:192.168.0.110无法访问,因为httpd服务在域trusted也就是说任何相同主机都可以访问该域的服务,且通过该域的eth1172.25.254.210网卡接口传输数据,所以客户机1:172.25.254.51可以访问httpd服务,客户主机2:192.168.0.210,首先通过服务主机eth0:192.168.0.210接口进入内核,但是eth0:192.168.0.210网卡接口由public域管控,该域无httpd服务,所以客户机192.168.0.110无法访问httpd
firewall-cmd –set-default-zone=public ##设置默认域为public
firewall-cmd –add-interface=eth0 –zone=public ##添加网口eth0到public域
firewall-cmd –add-interface=eth1 –zone=trusted ##添加网口eth1到trusted域
firewall-cmd –add-service=httpd –zone=trusted ##添加服务httpd到trusted域
firewall-cmd –list-all (–zone=public) ##列出(当前域)所有的策略
firewall-cmd –get-active-zones ##查看当前激活域

这里写图片描述
这里写图片描述

2.3remove掉public域的eth0,添加到trusted域上 ,也就是说trusted域中,有httpd服务,eth0,eth1,当然不论那台主机都可以访问了

这里写图片描述
这里写图片描述
这里写图片描述

2.4在上述基础上,改变eth1到public域上,trusted域保留eth0:192.168.0.210,这时客户主机1:172.25.254.51会无法访问httpd服务

这里写图片描述
这里写图片描述

3.1对指定ip或网段的控制:

在2.3实验中客户主机172.25.254.51是无法访问httpd服务的,策略如下,
这里写图片描述

通过设置特定网段来是172.25.254.51使用httpd服务,使用该域
这里写图片描述

4.1服务端口的控制

firewalld读取服务信息的文件:/usr/lib/firewalld/services/*.xml
以httpd服务为例说明

vim /etc/httpd/conf/httpd.conf
         --->>port 8080 
vim /usr/lib/firewalld/services/http.xml
         --->>port 8080
systemctl restart httpd
systemctl restart firewalld
客户端2:192.168.0.110测试:firefox  http://192.168.0.210:8080

vim /etc/httpd/conf/httpd.conf
这里写图片描述
vim /usr/lib/firewalld/services/http.xml
这里写图片描述
systemctl restart httpd
systemctl restart firewalld
注意:因为之前的设置都是临时的,重启firewalld后设置会失效,重新设置策略
这里写图片描述
客户主机172.25.254.51测试:
这里写图片描述

4.2不改/usr/lib/firewalld/services/http.xml中的端口,使用默认端口80,改动 /etc/httpd/conf/httpd.conf端口为8080,实验中 –permanent永久设定,

这里写图片描述

这里写图片描述

5.ssh控制

在没有从public域中remove ssh服务,之前客户机ssh连接上服务器,remove ssh服务之后,已经链接上的shell还能继续使用,在重新开一个shell却无法链接了
!这里写图片描述

6.firewall高级管理 (默认域public)
(vim /usr/lib/firewalld/services/http.xml 
     -->>port 80) 不用改上边的实验已经改为80了
  vim /etc/httpd/conf/httpd.conf
     --->>port 80   要改上边的实验此配置文件端口为8080
 systemctl restart httpd
 netstat -antlpue | grep httpd 查看80端口状态。处于开启状态
 firewall-cmd --add-service=http  --permanent  --zone=public
firewall-cmd --reload

这里写图片描述
实验前两台主机都能访问httpd服务
这里写图片描述

firewall-cmd --direct --get-all-rules  ##查看rules
firewall-cmd --direct --add-rule ipv4 filter INPUT 0  -s 172.25.254.51 -p tcp --dport 80 -j REJECT     ##添加rules
firewall-cmd --direct --get-all-rules  ##查看rules

这里写图片描述
192.25.254.110主机可以使用http服务
172.25.254.51主机不能访问http服务
这里写图片描述
这里写图片描述
实验完成后

firewall-cmd --direct --remove-rule ipv4 filter INPUT 0 -s 172.25.254.51 -p tcp --dport 80 -j REJECT    ##删除rules

 firewall-cmd --direct --get-all-rules 

 ###firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 192.168.0.0/24 -p tcp --dport 80 -j REJECT  表示非192.168.0.0网段的用户无法访问80端口
7.ssh服务转到指定主机
 firewall-cmd --permanent --add-masquerade
 firewall-cmd --reload
 firewall-cmd --permanent --zone=public --add-forward-      port=port=22:proto=tcp:toport=22:toaddr=172.25.254.10

###firewall-cmd --permanent --zone=public --remove-forward-      port=port=22:proto=tcp:toport=22:toaddr=172.25.254.10  移除策略

这里写图片描述
客户主机192.168.0.110ssh远程连接172.25.254.210主机会转到172.25.254.51上
这里写图片描述

8.地址伪装

实验前执行以下代码,清除环境上边实验的环境

firewall-cmd --permanent --zone=public --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.10
firewall-cmd --permanent --remove-masquerade
firewall-cmd --reload

这里写图片描述
添加规则

firewalld-cmd --add-rich-rule='rule family=ipv4 masquerade'

这里写图片描述
客户主机ip192.168.0.110,但连接172.25.254.51却显示是172.25.254.210连接的
这里写图片描述

五.tcpwarp

实验前清除法环境
这里写图片描述
ssh —>firewalld –>> tcpwrap –>>守护进程 —>>service本身 —>>selinux —>>文件系统
ldd /usr/sbin/sshd
—libwrap.so.0 查看,有这个文件表示受tcpwrap保护,htpp服务不受此保护
这里写图片描述
这里写图片描述
受tcpwarp保护的服务在/etc/hosts.allow和 /etc/hosts.deny管控
vim /etc/hosts.deny
—>>ALL:ALL 拒绝服务列表,ALL:ALL表示所有服务,所有主机
vim /etc/hosts.allow (优先)
—>>sshd:172.25.254. EXCEPT 172.25.254.10 sshd服务对172.25.254.网段开放,除了172.25.254.10用户,该用户无法访问sshd服务
当/etc/hosts.allow和 /etc/hosts.deny冲突时以/etc/hosts.allow为准

实验: /etc/hosts.allow
这里写图片描述
客户主机172.25.254.51 尝试ssh root@172.25.254.210 成功
客户主机172.25.254.10 尝试ssh root@172.25.254.210 失败

这里写图片描述

1监控sawnp

vim /etc/hosts.allow (优先)
—>>sshd:172.25.254. :spawn echo date from %c to %s | mail -s warning root
有用户登录的话发送邮件给root用户 mail 查看邮件 /var/spool/mail/root

这里写图片描述
这里写图片描述
vim /etc/hosts.allow (优先)
—>>sshd:172.25.254. :spawn echo date from %c to %s > /dev/pts/num ##[num] 由shell ps查看,有用户登陆的话,直接在root用户shell命令行后,显示信息
这里写图片描述
这里写图片描述

vim /etc/hosts.allow (优先)
—>>sshd:172.25.254. :spawn echo date from %c to %s >> /logfile
登陆信息到指定文件
这里写图片描述
这里写图片描述

六.守护进程

以telnet为例
  yum install xinetd   安装守护进程服务
  yum install telnet-server (telnet服务端)
  yum install telnet     (telnet客户端)
  systemctl start xinetd.service
  vim /etc/xinetd.d/telnet
    --->>service telnet
               {
                socket_type = stream
                protocol = tcp
                user =  root
                server = /usr/sbin/in.telnetd  (rpm -ql telnet 查看)
                disable = no 
                flags =  REUSER
                wait = no
                }
   systemctl restart xinetd
   systemctl restart telnet.socket
   重启失败查看22端口若LISTEN则表示已经开启
    natstat -anplute | grep 22 

这里写图片描述
这里写图片描述
服务器本地测试(非root用户)
这里写图片描述

守护进程主配置文件,对所有受守护进程管控的服务都适用,实验前关闭firewalld服务

/etc/xinetd.conf
vim /etc/xinetd.conf
—->>

       13 #       enabled         =    ##启用守护进程    
       14 #       disabled        =    ##关闭守护进程

       23 #       no_access       =    ##用户黑名单
       24 #       only_from       =    ##用户白名单
       25 #       max_load        = 0  ##连接最大负载  %0
       26         cps             = 3 10   ## 第一个num表示同一时间最多3个连接数连,大于该数目(3)的用户则无法连接需要等待10秒后处理
       27         instances       = 10    ##最大连接个数为10(!同一ip)
       28         per_source      = 5     ##同一个ip能够建立的连接个数5

systemctl restart xinetd.service

对于字配置文件同样适用/etc/xinetd.conf/*

七.selinux对服务端口的控制

1-1024系统默认使用端口
以httpd服务为例,改httpd服务端口为6666,完成后重新启动会报错,查看selinux 状态为enforcing,设置selinux为警告状态重启成功
vim /etc/httpd/conf/httpd.conf
—LISTEN port 6666
systemctl restart httpd 重启
setenforce 0
systemctl restart httpd
—>>重其成功
这里写图片描述
在selinux 为enfocing状态,使httpd服务正常使用,方法
setenforce 1

semanage  port -a -t port_type -p tcp 6666
systemctl restart httpd

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值