一、环境准备
    还原快照网络配置完成

    配置网络参数之DNS服务器地址
    SELinux、系统故障修复、防火墙策略管理、服务管理 - 图1
    DNS服务器:负责域名解析的服务器,将域名解析为IP地址
    /etc/resolv.conf:最终有效配置文件
    ]# echo nameserver 99.100.200.38 > /etc/resolv.conf
    ]# cat /etc/resolv.conf
    nameserver 99.100.200.38

    ]# > /etc/resolv.conf #清空此文件内容,为构建Web服务器做准备
    ]# cat /etc/resolv.conf

    二、常用的网络工具

    • ip命令(Linux最基础的命令)

    1.查看IP地址
    ]# ip address show
    ]# ip a s
    2.临时添加IP地址
    ]# ip address add 192.168.10.1/24 dev eth0
    ]# ip a a 192.168.20.1/24 dev eth0
    ]# ip a s
    3.临时删除IP地址
    ]# ip address del 192.168.10.1/24 dev eth0
    ]# ip a s

    • ping 命令,测网络连接
      • 选项 -c 包个数

    [root@server ~]# ping -c 2 192.168.88.240
    [root@server ~]# ping -c 3 192.168.88.2
    [root@server ~]# ping -c 4 192.168.88.3

    三、日志管理

    • 系统和程序的“日记本”

      • 记录系统、程序运行中发生的各种事件
      • 通过查看日志,了解及排除故障
      • 信息安全控制的“依据”
    • 由系统服务rsyslog统一记录/管理

      • 日志消息采用文本格式
      • 主要记录事件发生的时间、主机、进程、内容
    • 常见的日志文件
      | 日志文件 | 主要用途 | | —- | —- | | /var/log/messages | 记录内核消息、各种服务的公共消息 | | /var/log/dmesg | 记录系统启动过程的各种消息 | | /var/log/cron | 记录与cron计划任务相关的消息 | | /var/log/maillog | 记录邮件收发相关的消息 | | /var/log/secure | 记录与访问限制相关的安全消息 |
    • 通用分析工具
      • tail、tailf、less、grep等文本浏览/检索命令
      • awk、sed等格式化过滤工具

    tailf:实时跟踪文件内容
    [root@server /]# echo 123456 > /opt/1.txt
    [root@server /]# tailf /opt/1.txt

    • users、who、w 命令
      • 查看已登录的用户信息,详细度不同
    • last、lastb 命令
      • 查看最近登录成功/失败的用户信息

    [root@server /]# users
    [root@server /]# who
    pts:图形命令行终端

    [root@server /]# last #登录成功的用户
    [root@server /]# lastb #登录失败的用户

    • Linux内核定义的事件紧急程度

      • 分为 0~7 共8种优先级别
      • 其数值越小,表示对应事件越紧急/重要

      0 EMERG(紧急) 会导致主机系统不可用的情况
      1 ALERT(警告) 必须马上采取措施解决的问题
      2 CRIT(严重) 比较严重的情况
      3 ERR(错误) 运行出现错误
      4 WARNING(提醒) 可能会影响系统功能的事件
      5 NOTICE(注意) 不会影响系统但值得注意
      6 INFO(信息) 一般信息
      7 DEBUG(调试) 程序或系统调试信息等

    五、系统安全保护

    SELinux概述

    • Security-Enhanced Linux
      • 美国NSA国家安全局主导开发,一套增强Linux系统安全的强制访问控制体系
      • 集成到Linux内核(2.6及以上)中运行
      • RHEL7基于SELinux体系针对用户、进程、目录和文件提供了预设的保护策略,以及管理工具

    SELinux、系统故障修复、防火墙策略管理、服务管理 - 图2

    • SELinux的运行模式
      • enforcing(强制)、permissive(宽松)
      • disabled(彻底禁用)

    任何模式变成disabled模式,都要经历重启系统

    • 切换运行模式
      • 临时切换:setenforce 1或0
      • 固定配置:/etc/selinux/config 文件

    虚拟机A
    [root@server /]# getenforce #查看当前运行模式
    Enforcing
    [root@server /]# setenforce 0 #修改当前运行模式
    [root@server /]# getenforce
    Permissive
    [root@server /]# vim /etc/selinux/config
    SELINUX=permissive
    虚拟机B:同上
    虚拟机C:同上

    六、系统故障修复

    • 如果/etc/fstab文件有误:修复办法

    1.输入root的密码
    SELinux、系统故障修复、防火墙策略管理、服务管理 - 图3
    2.修改/etc/fstab文件内容
    SELinux、系统故障修复、防火墙策略管理、服务管理 - 图4

    • 破解root密码思路

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

    1)重启系统,进入 救援模式
    [root@A ~]# reboot
    开启虚拟机A,在此界面按e键
    SELinux、系统故障修复、防火墙策略管理、服务管理 - 图5
    在linux16该行,将此行的ro修改为rw
    在linux16该行的最后,空格输入 rd.break
    SELinux、系统故障修复、防火墙策略管理、服务管理 - 图6
    ctrl + x 启动,会看到switch_root:/#
    2)切换到硬盘操作系统环境
    # chroot /sysroot #切换环境,切换到硬盘操作系统的环境
    3)重新设置root的密码
    sh-4.2# echo 1 | passwd —stdin root
    4)如果SELinux是强制模式,才需要重设SELinux策略(其他模式不需要做此操作)
    sh-4.2# vim /etc/selinux/config #查看SELinux的运行模式
    sh-4.2# touch /.autorelabel #让SELinux失忆
    或者可以修改SELinux运行模式,修改成宽松模式即可
    sh-4.2# vim /etc/selinux/config #查看SELinux开机的运行模式
    5)强制重启系统完成修复 sh-4.2# vim /etc/selinux/config
    sh-4.2# reboot -f

    七、构建基本服务

    • 构建Web服务

    Web服务:提供一个页面内容的服务
    提供Web服务的软件:httpd、Nginx、tomcat
    http协议:超文本传输协议

    daemon(守护神)
    英 [ˈdiːmən] 美 [ˈdiːmən]
    n.(古希腊神话中的)半神半人精灵

    虚拟机A:
    1.安装软件包
    [root@server ~]# yum -y install httpd
    2.运行提供Web服务程序
    ]# > /etc/resolv.conf #清空此文件内容
    ]# /usr/sbin/httpd #绝对路径运行程序
    ]# pgrep -l httpd #查看进程信息
    4.书写一个页面文件
    ]# vim /var/www/html/index.html
    haha阳光明媚
    5.本机浏览器访问测试
    [root@server ~]# curl 192.168.88.240
    haha阳光明媚

    • 构建FTP服务

    FTP:文本传输协议
    实现FTP服务功能的软件:vsftpd
    默认共享数据的主目录:/var/ftp/

    虚拟机A
    1.安装软件包
    [root@server ~]# yum -y install vsftpd
    2.运行程序
    [root@server ~]# /usr/sbin/vsftpd
    [root@server ~]# pgrep -l vsftpd #查看进程信息
    3.访问测试
    [root@server ~]# curl ftp://192.168.88.240
    -rw-r—r— 1 0 0 0 May 16 06:42 dcc.txt
    drwxr-xr-x 2 0 0 6 Oct 13 2020 pub

    八、防火墙的策略管理
    作用:隔离,严格过滤入站,放行出站

    硬件防火墙
    软件防火墙

    • 系统服务:firewalld——》iptables(底层防火墙)
    • 管理工具:firewall-cmd、firewall-config
    • 根据所在的网络场所区分,预设区域
      • public允许访问本机的ssh、dhcp、ping服务
      • trusted:允许任何访问
      • block:拒绝任何来访请求,明确拒绝客户端
      • drop:丢弃任何来访的数据包,不给任何回应
    • 防火墙判定原则:

    1.查看客户端请求中来源IP地址,查看自己所有区域中规则,那个区域中有该源IP地址规则,则进入该区域
    2.进入默认区域(默认情况下为public)

    • 防火墙默认区域的修改

    虚拟机A
    ]# firewall-cmd —get-default-zone #查看默认区域
    虚拟机B
    ]# curl http://192.168.88.240 #失败
    ]# curl ftp://192.168.88.240 #失败
    ]# ping -c 2 192.168.88.240 #成功

    虚拟机A:修改默认区域
    ]# firewall-cmd —set-default-zone=trusted
    虚拟机B
    ]# curl http://192.168.88.240 #成功
    ]# curl ftp://192.168.88.240 #成功

    • 防火墙public区域添加规则

    虚拟机A:添加允许的协议
    ]# firewall-cmd —set-default-zone=public
    ]# firewall-cmd —zone=public —add-service=http
    ]# firewall-cmd —zone=public —list-all
    虚拟机B
    ]# curl http://192.168.88.240 #成功
    ]# curl ftp://192.168.88.240 #失败

    虚拟机A:添加允许的协议
    ]# firewall-cmd —zone=public —add-service=ftp
    ]# firewall-cmd —zone=public —list-all
    虚拟机B
    ]# curl http://192.168.88.240 #成功
    ]# curl ftp://192.168.88.240 #成功

    • 防火墙public区域添加规则(永久)

    -永久(—permanent)
    ]# firewall-cmd —reload #加载防火墙永久策略
    ]# firewall-cmd —zone=public —list-all

    ]# firewall-cmd —permanent —zone=public —add-service=http #永久添加http协议
    ]# firewall-cmd —permanent —zone=public —add-service=ftp #永久添加ftp协议

    ]# firewall-cmd —reload #加载防火墙永久策略
    ]# firewall-cmd —zone=public —list-all

    • 防火墙单独拒绝PC2所有的访问

    虚拟机A:
    [root@server ~]# firewall-cmd —zone=block —add-source=192.168.88.2

    虚拟机A:删除策略
    [root@server ~]# firewall-cmd —zone=block —remove-source=192.168.88.2

    九、服务的管理(运行程序的管理)
    方法一:手动进行运行
    运行: /usr/sbin/httpd
    停止: killall httpd
    方法二:采用systemd方式运行
    用户—systemctl命令—>systemd—配置文件—>httpd程序运行
    –服务配置文件目录:/lib/systemd/system/
    •上帝进程:systemd
    •Linux系统和服务管理器
    –是内核引导之后加载的第一个初始化进程(PID=1)
    –负责掌控整个Linux的运行/服务资源组合
    •一个更高效的系统&服务管理器
    –开机服务并行启动,各系统服务间的精确依赖
    –服务目录:/lib/systemd/system/
    –主要管理工具:systemctl
    [root@server ~]# systemctl -t service —all #列出所有的服务
    •对于服务的管理(与手动启动有冲突)
    方法二:采用systemd方式运行
    用户—systemctl命令—>systemd—配置文件—>httpd程序运行
    –服务配置文件目录:/lib/systemd/system/

    systemctl restart 服务名 #重起服务
    systemctl start 服务名 #开启服务
    systemctl stop 服务名 #停止服务
    systemctl status 服务名 #查看服务当前的状态

    systemctl enable 服务名 #设置服务开机自启动
    systemctl disable 服务名 #设置服务禁止开机自启动
    systemctl is-enabled 服务名 #查看服务是否开机自启

    ]# yum -y install httpd
    ]# > /etc/resolv.conf #清除文件内容
    ]# killall httpd #杀死手动启动的httpd

    ]# systemctl restart httpd #重启httpd服务
    ]# systemctl status httpd #查看服务httpd状态
    ]# systemctl enable httpd #设置httpd开机自启动
    Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
    ]# systemctl is-enabled httpd#查看httpd是否是开机自启动
    ]# systemctl disable httpd #关闭httpd开机自启动
    Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
    ]# systemctl is-enabled httpd#查看httpd是否是开机自启动

    管理运行级别
    RHEL6:运行级别 300
    0:关机 0个服务
    1:单用户模式(基本功能的实现,破解Linux密码) 50个服务
    2:多用户字符界面(不支持网络) 80个服务
    3:多用户字符界面(支持网络)服务器默认运行级别 100个服务
    4:未定义 0个服务
    5:图形界面 300个服务
    6:重起 0个服务
    切换运行级别:init 数字

    RHEL7:运行模式(运行级别)
    字符模式:multi-user.target
    图形模式:graphical.target

    当前直接切换到字符模式
    ]# systemctl isolate multi-user.target #相当于原来的init 3
    当前直接切换到图形模式
    ]# systemctl isolate graphical.target #相当于原来的init 5

    • 查看每次开机默认进入模式

    [root@server /]# systemctl get-default

    • 设置永久策略,每次开机自动进入字符模式

    [root@server /]# systemctl set-default multi-user.target
    [root@server /]# reboot

    • 设置永久策略,每次开机自动进入图形模式

    [root@server /]# systemctl set-default graphical.target
    [root@server /]# reboot

    课后习题:
    案例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服务

    前面习题:

    案例2:虚拟机B上操作:实现静态网络参数配置
    – 主机名:test.example.com
    – IP地址:172.25.0.11
    – 子网掩码:255.255.0.0
    – 默认网关:172.25.0.254
    – DNS服务器:172.25.254.254

    [root@B ~]# hostname test.example.com
    [root@B ~]# echo test.example.com > /etc/hostname
    [root@B ~]# cat /etc/hostname

    [root@B ~]# nmcli connection show
    [root@B ~]# nmcli connection modify ‘ens33’ ipv4.method manual ipv4.addresses 172.25.0.11/18 ipv4.gateway 172.25.0.254 connection.autoconnect yes

    [root@B ~]# nmcli connection up ‘ens33’

    [root@B ~]# route -n #查看网关地址
    [root@B ~]# ifconfig | head -2 #查看网卡地址

    [root@B ~]# echo nameserver 172.25.254.254 > /etc/resolv.conf
    [root@B ~]# cat /etc/resolv.conf

    案例3:虚拟机B上操作:实现静态网络参数配置
    – 主机名:B.tedu.cn
    – IP地址:192.168.1.1
    – 子网掩码:255.255.255.0
    – 默认网关:192.168.1.254
    – DNS服务器:8.8.8.8
    [root@B ~]# hostname B.tedu.cn
    [root@B ~]# echo B.tedu.cn > /etc/hostname
    [root@B ~]# cat /etc/hostname

    [root@B ~]# nmcli connection show
    [root@B ~]# nmcli connection modify ‘ens33’ ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv4.gateway 192.168.1.254 connection.autoconnect yes

    [root@B ~]# nmcli connection up ‘ens33’

    [root@B ~]# route -n #查看网关地址
    [root@B ~]# ifconfig | head -2 #查看网卡地址

    [root@B ~]# echo nameserver 8.8.8.8 > /etc/resolv.conf
    [root@B ~]# cat /etc/resolv.conf

    案例4:虚拟机B上操作:实现静态网络参数配置
    – 主机名:pc2.tedu.cn
    – IP地址:192.168.88.2
    – 子网掩码:255.255.255.0
    – 默认网关:192.168.88.254
    – DNS服务器:1.1.1.1
    [root@B ~]# hostname pc2.tedu.cn
    [root@B ~]# echo pc2.tedu.cn > /etc/hostname
    [root@B ~]# cat /etc/hostname

    [root@B ~]# nmcli connection show
    [root@B ~]# nmcli connection modify ‘ens33’ ipv4.method manual ipv4.addresses 192.168.88.2/24 ipv4.gateway 192.168.88.254 connection.autoconnect yes

    [root@B ~]# nmcli connection up ‘ens33’

    [root@B ~]# route -n #查看网关地址
    [root@B ~]# ifconfig | head -2 #查看网卡地址

    [root@B ~]# echo nameserver 1.1.1.1 > /etc/resolv.conf
    [root@B ~]# cat /etc/resolv.conf

    案例5:虚拟机A上操作:实现静态网络参数配置
    – 主机名:server.tedu.cn
    – IP地址:192.168.88.240
    – 子网掩码:255.255.255.0
    – 默认网关:192.168.88.254
    – DNS服务器:1.1.1.1

    [root@A ~]# hostname server.tedu.cn
    [root@A ~]# echo server.tedu.cn > /etc/hostname
    [root@A ~]# cat /etc/hostname

    [root@A ~]# nmcli connection show
    [root@A ~]# nmcli connection modify ‘ens33’ ipv4.method manual ipv4.addresses 192.168.88.240/24 ipv4.gateway 192.168.88.254 connection.autoconnect yes

    [root@A ~]# nmcli connection up ‘ens33’

    [root@A ~]# route -n #查看网关地址
    [root@A ~]# ifconfig | head -2 #查看网卡地址

    [root@A ~]# echo nameserver 1.1.1.1 > /etc/resolv.conf
    [root@A ~]# cat /etc/resolv.conf

    案例6:虚拟机B:传递数据
    1.将本机/usr/local/tools/other目录传递到虚拟机A,放在虚拟机A的/usr/目录下
    2.将本机/etc/gshadow文件传递到虚拟机A,放在虚拟机A的/root目录下
    3.将本机/etc/skel目录传递到虚拟机A,放在虚拟机A的/tmp目录下
    [root@pc2 ~]# scp -r /usr/local/tools/other root@192.168.88.240:/usr
    [root@pc2 ~]# scp /etc/gshadow root@192.168.88.240:/root
    [root@pc2 ~]# scp -r /etc/skel root@192.168.88.240:/tmp
    虚拟机A
    [root@server ~]# ls /usr
    [root@server ~]# ls /root
    [root@server ~]# ls /tmp

    案例9:虚拟机B:远程无密码验证
    1.实现虚拟机B远程管理虚拟机A,无需密码验证

    1.生成公钥 私钥
    [root@pc2 ~]# ssh-keygen #一路回车
    [root@pc2 ~]# ls /root/.ssh/

    2.传递公钥 到虚拟机A
    [root@pc2 ~]# ssh-copy-id root@192.168.88.240

    3.虚拟机A:查看
    [root@server ~]# ls /root/.ssh/

    4.虚拟机B:测试无密码
    [root@pc2 ~]# ssh root@192.168.88.240