云计算学习笔记——日志、SELinux、FTP、systemd篇

发布于:2025-09-06 ⋅ 阅读:(19) ⋅ 点赞:(0)

云计算学习日记Day15》—— 从零开始的云计算之旅
今天是系统学习云计算的第十五天,记录了关于我的云计算学习,后续将每日更新我的笔记。欢迎大家一起来学习,如果内容有遗漏和错误,还请大家多多指正和包涵,谢谢大家

因为前一节我们已经掌握了远程控制ssh的使用,所以之后我选择用windows的WindTerm来远程管理这些虚拟机,更加方便一些

关于远程管理,还可以补充一些内容:

1.tmux防止远程管理中断

简单描述一下,当我们在进行远程管理的时候,可能会因为突发情况(服务器停摆等)与远程主机断开连接,这样会导致我们正在进行的任务中断,进而造成任务失败、内存损失等。但是我们使用tmux可以保证我们意外断开连接时,当前任务继续完成

首先安装amux:yum -y install tmux

然后直接运行:

命令:tmux #进入tmux会话

2.tmux多窗口(多会话)

命令:tmux list-sessions #列出已有会话

命令:tmux kill-server #杀死所有会话

日志管理

日志概述

日志的功能

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

内核及系统日志

  • 由系统服务rsyslog统一记录/管理
    • 日志消息采用文本格式
    • 主要记录时间发生的时间、主机、进程、内容
  • 常见的日志文件
日志文件 主要用途
/var/log/messages 记录内核消息、各种服务的公共消息
/var/log/cron 记录与cron计划任务相关的消息
/var/log/maillog 记录邮件收发相关的消息
/var/log/secure 记录与访问限制相关的安全消息

用户日志

  • 由登录程序负责记录/管理
    • 日志消息采用二进制格式
    • 记录登录用户的时间来源、执行的命令等信息
日志文件 主要用途
/var/log/lastlog 记录最近的用户登录事件
/var/log/wtmp 记录成功的用户登录/注销事件
/var/log/btmp 记录失败的用户登录事件

日志分析

查看文本日志消息

  • 通用分析工具
    • tail、tailf、less、grep等文本浏览/检索命令
    • awk、sed等格式化过滤工具
  • 专用工具分析
    • ELK日志分析平台
    • Elasticesearch、k'iba'na等日志统计套件

用户登录分析

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

日志消息的优先级

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

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

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

使用journalctl工具

  • 提取由systemd-journal服务搜索的日志
    • 主要包括内核/系统日志、服务日志
  • 常见用法:
    • journalctl | grep 关键词
    • journalctl -u 服务名 [-p 优先级]
    • journalctl -n 消息条数

SELinux

SELinux安全机制

SELInux概述

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

SELinux运行模式的切换

  • SELinux的运行模式
    • enforcing:强制模式
    • permissive:宽松模式
    • disabled:彻底禁用
  • 切换运行模式:
    • 临时切换:setenforce 1 | 0
    • 查看当前模式:getenforce
    • 固定配置:/etc/selinux/config文件

#查看现在的selinux运行模式
[root@test1 ~]# getenforce 
Enforcing
[root@test1 ~]# setenforce
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]

#进行临时修改
[root@test1 ~]# setenforce 0
[root@test1 ~]# getenforce 
Permissive

那么有人会问:配置文件里面怎么改?

#首先查找配置文件里面的SELINUX
#找到的下面的第四条SELINUX=ecforcing就是配置信息
#要是想要改为宽松模式,只需要把enforcing改为permissive,然后重启即可
#要是想要改为彻底禁用,只需要把enforcing改为disabled,然后重启即可
[root@test1 ~]# grep SELINUX /etc/selinux/config 
# SELINUX= can take one of these three values:
# NOTE: Up to RHEL 8 release included, 
SELINUX=disabled would also
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
SELINUXTYPE=targeted

系统故障修复

故障排除

忘记root密码

解决思路

  • 第一步:重启系统,进入救援模式
    • 开机的时候按e键,进入页面后,将linux开头的那一行中的ro修改为rw(read only→read wirte)
    • 还是在这一行,在最末尾的地方,添加rd.break
    • 按快捷键ctrl + x启动,会看到switch_root:/#
  • 第二步:切换到此环境
    • switch_root:/# chroot /sysroot
  • 第三步:将管理员root的密码进行重设
  • 第四步:重设SELinux安全标签
    • touch /.autorelabel #让SELinux失忆,或者修改SELinux模式,但是只能采取一种方式
  • 第五步:前后执行reboot完成修复
    • reboot -f #强制重新启动

系统文件损坏故障

主要问题:开机自动挂载配置文件书写错误

解决思路:引导进入修复模式,然后进行修复

构建FTP服务

FTP介绍

基本信息

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

安装软件vsftpd

[root@test1 ~]# yum install vsftpd

实现FTP服务

检查软件安装情况

[root@test1 ~]# rpm -q vsftpd 
vsftpd-3.0.5-6.el9.x86_64

修改配置文件

修改vsftpd的配置文件,修改设置为开启无需验证访问功能

[root@test1 ~]# grep anonymous_enable= /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
[root@test1 ~]# vim /etc/vsftpd/vsftpd.conf 
[root@test1 ~]# grep anonymous_enable= /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
[root@test1 ~]# 

访问FTP服务

我们使用另一台虚拟机test2来访问test1的FTP服务

但是这里访问失败了,这是为什么呢?这里是因为防火墙firewalld存在的缘故,我们把它卸载掉就可以,当然也可以修改firewalld配置来实现。看下一小节我们就能明白为什么

防火墙策略管理

firewalld服务基础

Linux的防火墙体系

  • 系统服务:firewalld
  • 管理工具(指令):firewalld-cmd、firewalld-config
  • 作用:严格过滤

预设安全区域

  • 根据所在的网络场所区分,预设保护规则集
    • public:仅允许访问本机的sshd、dhcp(自动获取ip)、ping等少数几个服务
    • trusted:允许任何访问
    • block:阻塞任何来访请求
    • drop:丢弃任何来访的数据包
  • 配置规则的位置
    • 运行时:runtime
    • 永久:permanent

防火墙判定原则

1.查看客户端请求中源IP地址,查看自己所有区域中的规则,哪个区域中有该源IP地址规则,则进入该区域

2.进入默认区域(默认情况下为public)

查看防火墙规则列表

列表查看规则

  • firewalld-cmd - -list-all [- -zone=区域名]
  • firewalld-cmd - -list-all-zones
  • firewalld-cmd - -get-zones
  • firewalld-cmd - -get-services
  • firewalld-cmd - -get-dedault-zone

配置防火墙

指定默认的安全区域

  • 使用命令:firewalld-cmd - -set-defaults-zone=区域名
    • 默认为public,限制比较严格
    • 对于开放式环境,建议将默认区域修改为trusted
    • 针对“运行时/永久配置”均有效
[root@test1 ~]# firewall-cmd --get-default-zone 
public
[root@test1 ~]# firewall-cmd --set-default-zone=trusted 
success
[root@test1 ~]# firewall-cmd --get-default-zone 
trusted

书接上文,我们修改了默认安全区域,这下应该可以实现FTP服务了,用test2连接一下test1试一下

[root@test2 ~]# curl <ftp://192.168.99.10>
drwxr-xr-x    2 0        0               6 Nov 06  2024 pub

成功连接上了,这里可以看到一个pub,这就是test1共享的内容,上面我们也讲过了,提供FTP服务的默认文件路径是/var/ftp/,我们在test1中修改,再用test2访问查看是否会更新

在test1中:

[root@test1 ~]# ls /var/ftp/
pub
[root@test1 ~]# echo 'Hello World!!' > /var/ftp/hello.txt
[root@test1 ~]# cat /var/ftp/hello.txt
Hello World!!

在test2中:

[root@test2 ~]# curl <ftp://192.168.99.10>
-rw-r--r--    1 0        0              14 Sep 03 11:49 hello.txt
drwxr-xr-x    2 0        0               6 Nov 06  2024 pub

我们在test1中创建的hello.txt可以通过FTP服务提供给test2,说明成功

封网段、开服务

  • 若针对“永久配置”,需要添加- -permanent
    • 使用:- -add-source=网段名
    • 使用:- -add-service=服务名

举例

服务管理

systemd介绍

init程序的作用

  • Linux系统和服务管理器
    • 是内核引导之后加载的第一个初始化进程(PID=1)
    • 负责掌控整个Linux的运行/服务资源组合
  • 传统的init程序风格
    • system v:顺序加载,RHEL5系列采用
    • upstart:事件触发,RHEL6系列采用

systemd

  • 一个更高效的系统&服务管理器
    • 开机服务并启动,各系统服务间的精确依赖
    • 服务目录:/lib/systemd/system/
    • 主要管理工具:systemctl
  • 用户→systemctl→systemd→服务启动配置文件→服务程序
  • 服务启动配置文件目录:/lib/systemd/system/

管理系统服务

列出服务

  • 列出活动的系统服务
    • systemctl -t service
  • 列出所有的系统服务(包括不活动的)
    • systemctl -t service - -all

启动/停止/重启/看状态

  • systemctl restart 服务名:重启服务
  • systemctl start 服务名:开启服务
  • systemctl stop 服务名:停止服务
  • systemctl status 服务名:查看服务当前状态
  • systemctl enable 服务名:设置服务开机自启动
  • systemctl disable 服务名:设置服务禁止开机自启动
  • systemctl is-enabled 服务名:查看服务是否开机自启动

管理运行级别

切换级别

1.单用户模式(基本功能的实现,破解Linux密码)····50个服务

2.多用户字符界面(不支持网络)····80个服务

3.多用户字符界面(支持网络)服务器默认运行级别····100个服务

4.未定义····0个服务

5.图形界面····300个服务

6.重启····0个服务····相当于reboot

#当前直接切换到字符模式
systemctl isolate multi-user.target     #相当于init  3

#当前直接切换到图形模式
systemctl isolate graphical.target      #相当于init  5

设置默认级别

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

[root@test1 ~]# systemctl get-default 
graphical.target

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

[root@test1 ~]# systemctl set-default multi-user.target 
Removed "/etc/systemd/system/default.target".
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/multi-user.target.
[root@test1 ~]# systemctl get-default 
multi-user.target

这样就设置成功了,之后我们将一直使用字符模式,一方面为了提高专业能力,一方面减小系统负担


网站公告

今日签到

点亮在社区的每一天
去签到