《云計算學習日記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
這樣就設置成功了,之后我們將一直使用字符模式,一方面為了提高專業能力,一方面減小系統負擔