一、环境准备
还原快照网络配置完成
配置网络参数之DNS服务器地址
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的运行模式
- 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的密码
2.修改/etc/fstab文件内容
- 破解root密码思路
前提:必须是服务器的管理者,涉及重启服务器
1)重启系统,进入 救援模式
[root@A ~]# reboot
开启虚拟机A,在此界面按e键
在linux16该行,将此行的ro修改为rw
在linux16该行的最后,空格输入 rd.break 
按 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
