SELinux、Web服务及管理、防火墙策略管理


系统安全保护

SElinux安全机制

SElinux概述
  • Security-Enhanced Linux
  • 美国你家安全局主导开发,增强linux安全的强制访问控制体系
  • linux内核2.6及以上运行
  • RHEL7基于SELinux体系针对用户/进程/目录/文件
    • 提供预设的保护策略
    • 以及管理工具

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vOuvgBF0-1592181271487)(5129D8591F404BDC96357EAA30095594)]

SElinux运行模式的切换
1. SELinux的运行模式
  • enforcing 强制
  • permissive /pəˈmɪsɪv/宽松
    • 将丧失约80%的策略
  • disabled 彻底禁用

任何默认 变成 disabled (彻底禁用)模式, 都要经历重启系统

2. 切换运行模式
  • 临时切换 setenforce 1|0
    • 0修改
  • 固定配置 /etc/selinux/config 文件
    • 每次开机均读取此文件
    • vim更改为permissive ,
    • getenforce查看, 当前不生效
    • setenforce 0 修改当前SELinux运行模式
//修改为permissive
[root@svr7 ~]# vim /etc/selinux/config
[root@svr7 ~]# getenforce
Enforcing
[root@svr7 ~]# setenforce
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@svr7 ~]# setenforce 0
[root@svr7 ~]# getenforce
Permissive
[root@svr7 ~]# 

  • 默认配置为强制模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IIADX3Ko-1592181271494)(DAAD70395495485785731563B502CC77)]

  • 更改为SELINUX=permissive

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QddAjxMv-1592181271499)(247DB1909364415F862F3440FDE60C2C)]

案例:启用SELinux保护
  • 为虚拟机A和B 配置SELinux
  • 确保SELinux处于强制启动模式
  • 每次重新开机后, 此设置必须仍有效
    返回

重设root用户密码

前提: 必须是服务器的管理者, 涉及重启服务器

遗忘root用户密码
故障现象
  • 无法执行需要root权限的管理操作
  • 若没有其他可用账号, 将无法登陆系统
解决思路
  1. 开机linux行尾添加, rd.break console=tty0 ,若切换不成功,将此段中ro开头改为rw
  2. 以可写方式重新挂载/ 或/sysroot 下, 并切换到此环境
  • chroot /sysroot #切换环境, 切换到硬盘操作系统的环境
  • mount -o remount,rw /(或/sysroot)
  1. 重新设置root密码
  • echo a | passwd --stdin root
  1. 若SELinux是强制模式, 才需要重新设置SELinux策略(其他模式不需要做此操作)
  • 可vim /etc/selinux/config # 查看SELinux开机的运行模式
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qVobpknR-1592181271503)(36A0467BDED8435688CF4621BD5D7B14)]
  • touch /.autorelabel

    exit

    reboot
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3oFwkSPU-1592181271507)(F0E42368FE5547F4AAE0E1EA194B1149)]
    返回

构建基本的Web服务

  • Web服务: 提供页面内容
  • Web服务器: 提供页面内容的机器
  • http协议: 超文本传输协议
  • https协议: 安全超文本传输协议(加密传输,更安全)
1. 安装可以提供Web服务功能的软件
  • httpd
    • 应用构建最简单
  • Nginx engine x
    • 支持并发访问量最好
    • 并发能力强,占用内存少
  • Tomcat
    • 与Java语言较兼容
httpd软件构建Web服务
  • yum -y install httpd
  • rpm -q httpd
    • httpd-2.4.6-80.el7.centos.x86_64
[root@svr7 ~]# yum -y install httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
//.....省略一万行
Dependency Installed:
  apr.x86_64 0:1.4.8-3.el7_4.1                    apr-util.x86_64 0:1.5.2-6.el7       
  httpd-tools.x86_64 0:2.4.6-80.el7.centos        mailcap.noarch 0:2.1.41-2.el7       

Complete!
[root@svr7 ~]# rpm -q httpd
httpd-2.4.6-80.el7.centos.x86_64
[root@svr7 ~]# 

返回

2. 安装运行
  • ls /usr/sbin/httpd
    • 启动 → 先找DNS服务器(读取/etc/resolv.conf) → 查找域名解析地址 —当找不到时, 运行较慢
  • 故一般先将/etc/resolv.conf 内容清空
  • /usr/sbin/httpd 输入确定运行
[root@svr7 ~]# /usr/sbin/httpd
[root@svr7 ~]# pgrep -l httpd
3350 httpd
3354 httpd
3355 httpd
3356 httpd
3357 httpd
3358 httpd
[root@svr7 ~]# 
//默认启动6个httpd进程等待, 方便提供服务
  • killall httpd 停止httpd所有运行进程
    返回
3. 本机测试()
  • vim /var/www/html/index.html
  • curl http://192.168.4.7
    • 本机ip 192.168.4.7
[root@svr7 ~]# vim /var/www/html/index.html  //默认存放网页文件的路径

[root@svr7 ~]# curl http://192.168.4.7      //curl为非图形的浏览器
ni hao  nihao 
[root@svr7 ~]# 

返回目录

服务管理

systemd 上帝进程
  • systemd --启动–> 服务
Linux系统和服务管理器
  • 是内核引导之后加载的第一个初始化进程(PID=1)
  • 负责掌控整个Linux的运行/服务资源组合
传统的 init 程序风格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lp3PmCrv-1592181271509)(C3952E621B004ED3905927D3298745D6)]

systemd 服务管理
  • systemctl命令(以服务名httpd为例)
    • systemctl start httpd 启动服务
    • systemctl status httpd 查看服务状态
    • systemctl stop httpd 停止服务
    • systemctl restart httpd 重启服务
      • ???临时添加服务相关后重启激活
    • systemctl enable httpd 开机自启动
    • systemctl is-enable httpd 查看开机自启动状态
    • systemctl disabled httpd 关闭开机自启动
// start → status → stop → status → restart → status 
[root@svr7 ~]# systemctl start httpd         //开启httpd服务
[root@svr7 ~]# systemctl status httpd        //查看httpd服务状态
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-06-13 09:24:25 CST; 26s ago
//.....省略一万行
Jun 13 09:24:25 svr7.tedu.cn systemd[1]: Started The Apache HTTP Server.
[root@svr7 ~]# systemctl stop httpd
[root@svr7 ~]# systemctl status httpd           //关闭httpd服务
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
//......省略
Jun 13 09:25:42 svr7.tedu.cn systemd[1]: Stopped The Apache HTTP Server.
[root@svr7 ~]# systemctl restart httpd          //重启httpd服务
[root@svr7 ~]# systemctl status httpd           //查看
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-06-13 09:26:24 CST; 13s ago
//.....省略
Jun 13 09:26:24 svr7.tedu.cn systemd[1]: Started The Apache HTTP Server.
[root@svr7 ~]# 
# systemctl enable 服务名 第一次会出现一些运行信息,,下一次不会出现
[root@svr7 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@svr7 ~]# systemctl is-enable httpd //查看自启动状态
Unknown operation 'is-enable'. 
[root@svr7 ~]# systemctl disable httpd //关闭自启动
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
管理运行级别
RHEL6 运行级别 300
  • 0 关机
  • 1 单用户模式
  • 2 多用户模式 (不支持网络)80个服务
  • 3 多用户字符界面(支持网络)服务器默认的运行级别 100个服务
  • 4 未定义 0个服务
  • 5 图形界面 300个服务
  • 6 重启 0个服务
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xfmt08QK-1592181271511)(86FCA23FF17842CA853D7A09C97D5280)]
RHEL7 运行模式(运行级别)
  • 字符模式:multi-user.target
  • 图形模式:graphical.target
  • 命令
    • systemctl isolate multi-user.target 相当于原来的init3
    • systemctl isolate graphical.target 相当于原来的init5
    • systemctl get-default 每次开机默认进入模式
    • systemctl set-default multi-user.target 设置永久策略,每次开机自动进入multi-user.target
    • systemctl get-default graphical.target

返回目录

防火墙策略管理

基本概念—Linux防火墙体系
  • 作用: 隔离
    • 示例:虚拟机A连接虚拟机B,提示错误,No route to host
[root@svr7 ~]# ping -c 2 192.168.4.207
PING 192.168.4.207 (192.168.4.207) 56(84) bytes of data.
64 bytes from 192.168.4.207: icmp_seq=1 ttl=64 time=0.304 ms
64 bytes from 192.168.4.207: icmp_seq=2 ttl=64 time=0.468 ms

--- 192.168.4.207 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.304/0.386/0.468/0.082 ms
    • 本例:网络间可以通讯,但无法进行http服务连接
[root@svr7 ~]# curl http://192.168.4.207  
curl: (7) Failed connect to 192.168.4.207:80; No route to host
[root@svr7 ~]# 
  • 硬件防火墙: 保护一个网络中所有的机器
    • 华为/思科
  • 软件防火墙: 保护主机本身
    • 火绒/360/卡巴斯基
  • 管理工具:
    • firewall-cmd(命令)
      • 实现自动分发
    • firewall-config(图形)
      返回
防火墙预设安全区域
根据所在网络场所区域—预设保护规则集
  • public 仅允许访问本机的ssh/dhcp/ping等服务, 其他都拒绝
  • trusted 允许任何访问
  • block 拒绝任何来访请求, 会回应客户端
  • drop 丢弃任何来访的数据包, 不会回应客户端
    • 不同客户端,重新访问时间不同
防火墙判断进入区域的原则
  1. 查看客户端请求中源IP地址, 然后查看所有区域中的规则, 哪个区域有该源IP的规则, 则进入该区域
  2. 进入默认区域(默认情况下为public)返回
配置规则的位置
  • runtime 运行时
  • permanent 永久 /'pɜːm(ə)nənt/
查看防火墙规则列表
列表查看操作
  • 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 --zone=区域名 --add-service=服务名
    • 指定区域添加服务名
  • firewall-cmd --zone=区域名 --add-source=IP地址
    • 指定区域添加ip地址
  • –remove-service=服务名
  • –remove-source=ip
  • firewall-cmd --permanent --zone=public --add-service=http
    • 指定区域添加永久http服务
    • firewall-cmd --reload
  1. 查看默认区域并设置为都可访问\
    • firewall-cmd --get-default-zone
    • firewall-cmd --set-default-zone=trusted
//1. 虚拟机A----查看防火墙进程信息
[root@svr7 ~]# pstree | grep firewalld
        |-firewalld---{firewalld}
[root@svr7 ~]# /usr/sbin/firewalld              //绝对路径运行

[root@svr7 ~]# firewall-cmd --get-default-zone //查看默认区域
public   
[root@svr7 ~]# curl http://192.168.4.7
ni hao  nihao 
//虚拟机B---curl虚拟机B,连接失败
[root@pc207 ~]# curl http://192.168.4.7         //访问失败
curl: (7) Failed connect to 192.168.4.7:80; No route to host

//2. 虚拟机A----修改默认规则区域为trusted
[root@svr7 ~]# firewall-cmd --set-default-zone=trusted //更改为trusted
success
[root@svr7 ~]# firewall-cmd --get-default-zone      //查看更改
trusted
//3. 虚拟机B---curl连接虚拟机A,连接成功
[root@pc207 ~]# curl http://192.168.4.7
ni hao  nihao 
[root@pc207 ~]# 
  1. 设置默认区域为public,并添加服务httpd
  • firewall-cmd --set-default-zone=public
  • firewall-cmd --zone=public --add-service=http
    返回
// 虚拟机A
[root@svr7 ~]# pstree | grep firewalld   //开启两个firewalld时, 不能设置默认区域
        |-2*[firewalld---{firewalld}]
[root@svr7 ~]# firewall-cmd --set-default-zone=public
Error: COMMAND_FAILED
[root@svr7 ~]# killall firewalld //关闭防火墙服务
[root@svr7 ~]# firewall-cmd --set-default-zone=public
FirewallD is not running
[root@svr7 ~]# /usr/sbin/firewalld //开启防火墙服务
[root@svr7 ~]# firewall-cmd --set-default-zone=public   //设置为public
Warning: ZONE_ALREADY_SET: public
success

//虚拟机B访问失败
[root@pc207 ~]# curl http://192.168.4.7
curl: (7) Failed connect to 192.168.4.7:80; No route to host
//虚拟机A---public 默认区域添加 http
[root@svr7 ~]# firewall-cmd --zone=public --add-service=http
success
[root@svr7 ~]# firewall-cmd --get-default-zone
public
//虚拟机B 连接成功
[root@pc207 ~]# curl http://192.168.4.7
ni hao  nihao 

  1. 实现永久规则
  • 命令永久选项 (–permanent)
  • firewall-cmd --permanent --zone=public --add-service=http
[root@svr7 ~]# firewall-cmd --zone=public --list-all
public (active)
  ...
  services: ssh dhcpv6-client http
  ...
  
[root@svr7 ~]# firewall-cmd --zone=public --remove-service=http    //删除
success
[root@svr7 ~]# firewall-cmd --zone=public --list-all 
public (active)
 ...
  services: ssh dhcpv6-client
 ...
  
// 添加永久规则 
[root@svr7 ~]# firewall-cmd --permanent --zone=public --add-service=http //添加永久规则
success
[root@svr7 ~]# firewall-cmd --zone=public --list-all 
public (active)
 ...
  services: ssh dhcpv6-client
 ...

//重新加载所有永久规则,实现当前生效
[root@svr7 ~]# firewall-cmd --reload 
success  
[root@svr7 ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: ssh dhcpv6-client http  //http已生效
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@svr7 ~]# 

返回
4. 单独拒绝某个用户ip(了解)

  • 防火墙单独拒绝虚拟机B所有访问,其他机器可以访问
  • ]# firewall-cmd --zone=block --add-source=192.168.4.207
  • ]# firewall-cmd --zone=block --list-all

练习:

案例1:设置SELinux保护
为虚拟机A、虚拟机B 配置SELinux

  1. 确保 SELinux 处于宽松模式(permissive)
  2. 在每次重新开机后,此设置必须仍然有效

案例2:实现虚拟机A 的Web服务

  1. 利用httpd软件搭建Web服务,页面显示内容为 小蝌蚪找妈妈

案例3:实现虚拟机A 的防火墙配置

  1. 修改虚拟机A防火墙配置,明确拒绝所有客户端访问(默认区域修改为block)
  2. 在虚拟机B上,测试能否访问虚拟机A 的Web服务
  3. 在虚拟机B上,测试能否 ping通 虚拟机A

案例4:实现虚拟机A 的防火墙配置

  1. 修改虚拟机A防火墙配置,将默认区域修改为public
  2. 在虚拟机B上,测试能否访问虚拟机A 的Web服务
  3. 在虚拟机B上,测试能否 ping通虚拟机A

案例5:实现虚拟机A的防火墙配置

  1. 修改虚拟机A防火墙配置,将默认区域修改为public
  2. 修改虚拟机A永久的防火墙配置,在public区域中添加http协议
  3. 在虚拟机B上,测试能否访问虚拟机A的Web服务
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值