20
2019
05
09:30:14

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





推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/748.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: