Linux系統管理
實驗所用系統為Redhat-rhel8.2。
目錄
- Linux系統管理
- Linux的系統管理--Linux中的遠端登陸服務
-
- 一、Openssh的功能
-
- 1、sshd服務的用途
- 2、安裝包
- 3、主配置檔案
- 4、預設端口
- 5、用戶端指令
- 二、ssh
-
- 1、基本用法
- 三、sshd key認證
-
- 1、認證類型
- 2、生成非對稱加密密鑰
-
- 1)方法1:互動式生成密鑰
- 2)自動生成密鑰
- 3、安全優化(對伺服器a)
-
- 1)關閉原始密碼認證
- 2)修改預設端口
- 3)使用者白名單
- 4)使用者黑名單
- Linux的系統管理--Linux中的日志管理
-
- 一、journald程式
-
- 1、實驗1 journalctl指令的用法
- 2、實驗2 用journald服務永久存放日志
- 二、rsyslog程式
-
- 實驗1、自定義日志采集路徑
- 實驗2 、日志遠端同步remote machinevim
- 實驗3、更改日志采集格式
- 三、timedatectl
- 四、時間同步服務
Linux的系統管理–Linux中的遠端登陸服務
實驗環境–配置兩台純淨的虛拟機
- 真機
westos-vmctl reset westosa
westos-vmctl reset westosb
- westosa–server服務端
hostnamectl set-hostname westosa.westos.org
nmcli connection show
nmcli connection delete Wired\ connection\ 1
cd /etc/sysconfig/network-scripts/(非圖形設定,也可以nm-connection-editor圖形設定)
ls(空)
vim ifcfg-ens3
###
DEVICE=ens3
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.254.109
NETMASK=255.255.255.0
NAME=ens3
###
nmcli connection reload
nmcli connection up ens3
rm -rf /root/.ssh/ (預設沒有這個檔案,删掉儲存原始狀态)
ifconfig
init 3
sshd(預設下載下傳)
systemctl enable --now sshd(預設打開)
#也可圖形方式進行設定
-
wesosb–client用戶端
操作同a
- 真機
ssh -l root 172.25.254.109
ssh -l root 172.25.254.209
一、Openssh的功能
1、sshd服務的用途
Secure Shell ===>ssh ##用戶端
Secure Shell daemon ===>sshd ##服務端
2、安裝包
openssh-server
3、主配置檔案
rpm -qc openssh-server
/etc/ssh/sshd_conf
4、預設端口
netstst -antupe | grep ssh
對外開放的接口 22
5、用戶端指令
ssh(ssh sshd)
二、ssh
1、基本用法
ssh [-l 遠端主機使用者] <ip|hostname>
ssh -l root 172.25.254.109 ##通過ssh指令在105主機中 以root身份開啟遠端shell
當收入yes後
109主機會向目前主機發送身份公鑰,并儲存此公鑰到~/.ssh/known_hosts
109主機持有私鑰,當客戶主機再次連接配接時對其進行身份驗證
當連接配接因為認證問題被拒絕時,
vim ~/.ssh/know_hosts
在此檔案中删除報錯提示相應的行
ssh 常用參數
-l ##指定登陸使用者
-i ##指定私鑰
-X ##開啟圖形
###
真機,開啟圖形
ssh -X -f -l root 172.25.254.109 gedit
###
-f ##背景運作
-o ##指定連接配接參數
#ssh -l [email protected] -o "StrictHostKeyChecking=no" 首次連接配接不需要輸入yes
-t ##指定連接配接跳闆
ssh -l root 172.25.254.1 -t ssh -l root 172.25.254.109
實驗步驟:
- 用戶端b連接配接服務端a,
中生成公鑰/root/.ssh/known_hosts
- 服務端a
中生成私鑰/etc/ssh/ssh_host-ecdsa_key.pub
- 公鑰與私鑰内容相同
- 當不同時,ssh失敗,即當連接配接因為認證問題被拒絕
- 用戶端b重新連接配接,報錯
出錯,則删掉對應的行,重新連接配接。known_hosts:x
用戶端b連接配接服務端a
###用戶端b
ssh -l root 172.25.254.109(用戶端連接配接伺服器)
exit
cd /root/.ssh
ls
cat known_hosts
###服務端a
cd /etc/ssh/
ls
cat ssh_host_ecdsa_key.pub
#用戶端b
##服務端a,兩者内容相同
##如果兩個檔案内容不同則不能ssh成功,(當連接配接因為認證問題被拒絕時)解決:
###a(模仿連接配接出錯)
cd /etc/ssh/
ls
rm -rf ssh_host_* ##删掉配置檔案
systemctl restart sshd ##重新開機sshd
###b
ssh -l root 172.25.254.109
報錯known_hosts:1出錯
vim known_hosts
删掉對應行
ssh -l root 172.25.254.109
成功
exit
#/root/.ssh/known_hosts中删除第一行
三、sshd key認證
1、認證類型
1)
對稱加密:加密和解密是同一串字元
缺點:容易洩露;可暴力破解;容易遺忘
2)
非對稱加密加密用公鑰,解密用私鑰
優點:不會被盜用;攻擊者無法通過無密鑰方式登陸伺服器
2、生成非對稱加密密鑰
不必要求在伺服器或者用戶端,在哪都可以
1)方法1:互動式生成密鑰
- 用戶端b
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_ras): ##存放密鑰加密字元串的檔案,可輸入或者預設
Enter passphrase (empty for no passphrase): ##密鑰密碼,可為空(免密認證)
Enter same passphrase again: ##确認密碼
Your identification has been saved in /root/.ssh/id_ras. ##私鑰
Your public key has been saved in /root/.ssh/id_ras.pub。 ##公鑰
The key fingerprint is:生成的密鑰
[注意] 如果接下來要做自動生成,需要删除已經生成的密鑰檔案
rm -rf /root/.ssh/
2)自動生成密鑰
- 用戶端b
ssh-keygen -f /root/.ssh/id_ras -P "" ##生成key;-f 儲存加密字元的檔案,-P設定密碼,""表示免密認證
ssh-copy-id -i /root/.ssh/id_ras.pub [email protected].25.254.109 ##用key對指定root使用者加密(此時需要輸入109的密碼才能設定成功)
cat /root/.ssh/id_ras.pub
- 服務端a
ls -l /root/.ssh/
cat /root/.ssh/authorized_keys ##上鎖成功,密碼内容和b裡的/root/.ssh/id_ras.pub相同
當有很多私鑰對應一個公鑰時,可以用 -i
指定私鑰
- 用戶端b
3、安全優化(對伺服器a)
rpm -qc openssh-server ##查找主配置檔案
/etc/ssh/sshd_config ##主配置檔案
vim /etc/ssh/sshd_config
vim ~/.vimrc ##寫入set nu,永久添加行号
systemctl status sshd ##檢視sshd服務狀态,保證開啟
1)關閉原始密碼認證
vim /etc/ssh/sshd_config
///
73 PasswordAuthentication yes ##原始密碼認證開啟 改成no
///
systemctl restart sshd ##重新開機服務
#原始密碼認證關閉,即不能輸入密碼來登入
測試
沒有key的使用者沒有輸入密碼的途徑
有key的使用者可以使用私鑰連接配接
#有key的用戶端b使用私鑰可以連接配接服務端a
#沒有key的真機被拒絕
[注意] 做完實驗要将no改回yes。
2)修改預設端口
将預設端口22改為2021
- 服務端a
getenforce ##限制端口更改
setenforcr 0 ##關掉限制
systemctl disable --now firewalld ##關閉火牆
vim /etc/ssh/sshd_config
///
17 Port 22 改成2021 (同時删掉注釋符)
///
systemctl restsrt sshd ##重新開機服務
- 服務端b
ssh -l root 172.25.254.109 ##連接配接失敗
ssh -l root 172.25.254.109 -p 2021 ##指定端口,連接配接成功
[注意] 做完實驗要将端口改回22。
3)使用者白名單
- 服務端a
vim /etc/ssh/sshd_config
///
50 AllowUsers root ... ##指定多個使用者可以登陸
///
systemctl restsrt sshd
- 服務端b
ssh -l root 172.25.254.109 ##可以登入
ssh -l westos 172.25.254.109 ##不可以登入
4)使用者黑名單
- 服務端a
vim /etc/ssh/sshd_config
///
51 DenyUsers westos ... ##指定使用者不可以登陸
##注意:需要注釋掉白名單
///
systemctl restsrt sshd ##重新開機服務
- 用戶端b
ssh -l root 172.25.254.109 ##可以登入
ssh -l westos 172.25.254.109 ##不可以登入
Linux的系統管理–Linux中的日志管理
[注意] 還原配置檔案或者重新開機,但是不建議重新開機
重新開機
rm -rf /etc/ssh/sshd_config
dnf reinstall openssh-server -y
vim /etc/ssh/sshd_config
systemctl restart sshd
實驗環境:
兩台純淨的虛拟機
systemctl disable --now firewalld
一、journald程式
服務名稱:systemd-journald.service(預設開啟)
預設日志存放路徑: /run/log/機器碼/system.journal
1、實驗1 journalctl指令的用法
journalctl #分析日志(n,N向上/下比對)
-n 3 ##日志的最新3條
--since “11:00:00“ ##顯示11點之後的日志
--until “11:05:00" ##顯示11:05之前的日志(注意引号的中英文區分)
-o ##設定日志的顯示方式
#short 經典模式顯示日志
#verbose 顯示日志的全部位元組
#export 适合傳出和備份的二進制格式(不常用)
#json js格式顯示輸出(不常用)
-p ##顯示制定級别的日志
#0 emerg 系統的嚴重問題日志
#1 alert 系統中立即要更改的資訊
#2 crit 嚴重級别會導緻系統軟體不能正常工作
#3 err 程式報錯
#4 warning 程式警告
#5 notice 重要資訊的普通日志
#6 info 普通資訊
#7 debug 程式排錯資訊
-F PRIORITY ##檢視可控日志級别
-u sshd ##檢視指定服務
--disk-usage ##檢視日志大小
設定日志復原,将最先生成,最早存放的日志删除(期限,大小)
--vacuum-size=1G ##設定日志存放大小
--vacuum-time=1w ##設定日志在系統中最長存放時間
-f ##監控日志
_日志裡的資訊 ##檢視該資訊的日志
例:journalctl _PID=32350
journalctl _PID=10924 _SYSTEMD_UNIT=sshd.servie
#根據條件顯示日志
#檢視可控日志級别
#檢視指定服務
#檢視日志大小與設定復原(注意大小寫)
#監控日志,預設後十行
[注意] 關機後/run/log/機器碼/system.journal會被清理,重新開機後日志從目前開始
2、實驗2 用journald服務永久存放日志
- 系統預設儲存日志:/run/log/journal中,關機後被清理
想要永久儲存日志,則需要将其放在硬碟裡
mkdir /var/log/journal
chgrp systemd-journal /var/log/journal ##程式隻能識别屬于他的組的檔案
chmod 2775 /var/log/journal
systemctl restart systemd-journald.service
服務重新開機後,日志将存放在: /var/log/journal
-
測試方法:
檢視日志
重新開機系統
再次檢視日志
可以看到重新開機以前的日志被清理(看id,日志開始時間)
但是完成以上操作,日志會被儲存
步驟:
###與虛拟機連接配接的真機
mkdir /var/log/journal ##建立永久儲存日志的目錄
ls -ld /var/log/journal ##檢視目錄的權限
chgrp systemd-journal /var/log/journal ##改變目錄的所有組
chmod 2775 /var/log/journal ##改變目錄的權限
systemctl restart systemd-journald.service ##重新開機服務
ls -l /run/log ##檢視原日志檔案
ls -ld /var/log/journal ##檢視新日志檔案的權限
ls /var/log/journal ##檢視日志檔案
cd /var/log/journal/機器碼/
ls
ls -i system.journal ##檢視日志的節點号
date ##檢視日志的時間
reboot ##重新開機
ping 172.25.254.109 ##用來檢視虛拟機是否開啟
ssh -l root 172.25.254.109 ##連接配接
journalctl ##檢視日志開始時間是否改變
#日志開始時間并未因為重新開機而改變,即永久儲存日志
二、rsyslog程式
日志采集工具:采集日志到指定位置
- 服務名稱:rsyslog.service
日志存放:
/var/log/ ##所有
/var/log/messages ##系統服務日志,正常資訊,服務報錯
/var/log/secure ##系統認證資訊日志
/var/log/maillog ##系統郵件日志資訊
/var/log/cron ##系統定時任務資訊
/var/log/boot.log ##系統啟動日志資訊
var/log/firewalld ##火牆日志
- 配置檔案:/etc/rsyslog.conf
實驗1、自定義日志采集路徑
日志類型.日志類型級别 日志存放路徑
*.* /var/log/westos ##把系統中所有級别的日志存放到westos中
*.*;authpriv.none /var/log/westos ##把系統中除了authpriv的日志的所有級别都存放在westos中
日志類型
auth #使用者認證
authpriv #服務認證
cron #時間任務
kern #核心類型
mail #郵件
news #系統更新資訊
user #使用者
日志級别
debug #程式排錯資訊
info #程式正常運作資訊
notice #重要資訊的普通日志
waring #程式警告
err #程式報錯
crit #嚴重級别會導緻系統軟體不能正常工作
alert #系統中立即要更改的資訊
emerg #系統的嚴重問題日志
none #不采集
實驗步驟:
1.虛拟機a–修改配置檔案将所有日志的所有級别都采集到/var/log/westos中
2. 重新開機服務,清空日志
3. 虛拟機b–ssh連結虛拟機a
4. 虛拟機a–在/var/log/westos生成了新的日志
###a(所有日志的所有級别都采集到/var/log/westos中)
vim /etc/rsyslog.conf
///
47 *.* /var/log/westos
///
systemctl restart rsyslog.service
> /var/log/westos
cat /var/log/westos
###b
ssh -l root 172.25.254.109
###a
cat /var/log/westos
#虛拟機a中修改配置檔案,重新開機服務,清空日志;在b連結a之後,生成新日志
#配置檔案内容
#虛拟機b連結a
實驗2 、日志遠端同步remote machinevim
設定
b發送日志;a接收日志
UDP協定和TCP協定都是傳輸層協定。
TCP(Transmission Control Protocol,傳輸控制協定)提供的是面向連接配接,可靠的位元組流服務。即客戶和伺服器交換資料前,必須現在雙方之間建立一個TCP連接配接,之後才能傳輸資料。并且提供逾時重發,丢棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。
穩定,但是内網主機不需要。
UDP(User Data Protocol,使用者資料報協定)是一個簡單的面向資料報的運輸層協定。它不提供可靠性,隻是把應用程式傳給IP層的資料報發送出去,但是不能保證它們能到達目的地。由于UDP在傳輸資料報前不用再客戶和伺服器之間建立一個連接配接,且沒有逾時重發等機制,是以傳輸速度很快。
速度快,效率高。
@ #表示使用UDP傳輸日志
@@ #表示使用TCP傳輸日志
例:
@172.25.254.109 #把本機日志用UDP傳輸方式發送到172.25.254.109主機
實驗步驟:
- 在虛拟機b中修改配置檔案,将所有日志的所有級别都用UDP傳輸方式采集到虛拟a中,重新開機服務
- 在虛拟機a中修改配置檔案,使udp傳輸可用
- 測試,清空a和b的日志,在a中監控日志,在b中發送消息
###b發送
vim /etc/rsyslog.conf
///
47 *.* @172.25.254.109 ##所有日志的所有級别都用UDP傳輸方式采集到172.25.254.109
///
systemctl restart rsyslog.service
###a接收
vim /etc/rsyslog.conf
删掉19,20的注釋(注意:删掉UDP的注釋,看仔細)
///
19 module(load="imudp") ##打開日志接收子產品
20 input(type="imudp" port="514") ##指定子產品使用接口
///
systemctl restart rsyslog.service
netstat -antlupe | grep rsyslog ##查詢端口(關閉防火牆的原因:保證UDP的514端口暢通)
測試
在a和b裡
> /var/log/messages ##清空日志
###a
tail -f /var/log/messages
###b
logger hhh #生成日志
#虛拟機b中,修改配置檔案,生成日志
#虛拟機b的配置檔案
#虛拟機a,修改配置檔案,重新開機服務,監控日志
#虛拟機a的配置檔案
實驗3、更改日志采集格式
[注意] 接收方作改變(在哪看日志就在哪裡改)
- 定義日志采集格式
$template WESTOS,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
##指定采集日志的格式,名稱叫WESTOS,注意","
WESTOS 格式名稱(必須大寫)
%timegenerated% 日志生成時間
%FROMHOST-IP% 日志來源主機的IP
%syslogtag% 日志生成服務
%msg% 日志内容
\n 換行符
- 設定日志采集格式應用
47 *.info;mail.none;authpriv.none;cron.none /var/log/messages;WESTOS
##應用該格式采集日志到/var/log/messages中(設定使用該格式,不做設定則使用預設格式)
34 module(load="builtin:omfile" Template="WESTOS")
##定義日志采集格式
實驗步驟:
- 在虛拟機a中修改配置檔案,将接收方的标志從主機名改成對應的IP
- 測試,清空a和b的日志,在a中監控日志,在b中發送消息
###a接收
vim /etc/rsyslog.conf(如果需要其他内容,可以man 5 rsyslog.conf)
///
28 $template WESTOS,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
33 module(load="builtin:omfile" Template="WESTOS")
46 *.info;mail.none;authpriv.none;cron.none /var/log/messages;WESTOS
///
systemctl restart rsyslog.service
測試
在a和b裡
> /var/log/messages ##清空日志
###a
tail -f /var/log/messages
###b
logger hhh #生成日志
#虛拟機a,修改配置檔案,重新開機服務,監控日志,日志發送方顯示為ip
#修改配置檔案
#在b中發送
三、timedatectl
timedatectl (status) ##檢視時間資訊
timedatectl set-time "2020-02-13 10:00:00" ##設定系統時間(關閉時間同步服務systemctl stop chronyd.service,預設是開啟的)
timedatectl list-timezones ##顯示系統的所有時區
timedatectl set-timezone "Asia/Shanghai" ##設定系統時區
timedatectl set-local-rtc 0|1 ##設定系統時間計算方式;0表示使用utc時間計算方式,1表示使用rtc時間計算方式(推薦使用utc)
timedatectl顯示資訊
Local time: Wed 2021-07-21 10:12:53 CST ##當地時間
Universal time: Wed 2021-07-21 02:12:53 UTC ##世界時間(倫敦時間,硬體時間+時區)
RTC time: Wed 2021-07-21 02:12:54 ##硬體時間(本地時間)
Time zone: Asia/Shanghai (CST, +0800) ##所在時區
System clock synchronized: no ##系統時鐘同步
NTP service: active ##NTP服務
RTC in local TZ: no ##所采用的時間是rtc(yes)還是utc(no)
#設定系統時間(關閉時間同步服務systemctl stop chronyd.service,預設是開啟的)
#設定系統時區
#設定系統時間計算方式;0表示使用utc時間計算方式,1表示使用rtc時間計算方式(推薦使用utc),所采用的時間是rtc(yes)還是utc(no)
四、時間同步服務
服務名稱:chronyd.service
配置檔案:/etc/chrony.conf
vim /etc/chrony.conf
23 allow 172.25.254.0/24 ##允許172.25.254.0網段主機同步時間
26 local stratum 10 ##開啟時間同步伺服器功能并設定級别為10
實驗步驟:
- 在虛拟機a,關閉火牆,修改配置檔案,将本機作為時間同步源
- 在虛拟機b中,修改配置檔案,指定a為要同步的對象
- 測試
###a服務端
systemctl stop firewalld ##關閉火牆
vim /etc/chrony.conf
///
23 allow 0.0.0.0/0 ##删掉注釋符,修改為0.0.0.0/0,指定讓誰同步
26 local stratum 10 ##删掉注釋符,把本機作為時間源,服務開啟
///
systemctl restart chronyd.service
###b用戶端
vim /etc/chrony.conf
///
3 pool 172.25.254.109 iburst ##指定要同步的對象
///
systemctl restart chronyd.service
測試(不會同步時區,時區不同會導緻時間不同)
在a和b
watch -n 1 date
###b
chronyc sources -v
#虛拟機a中,關閉火牆,修改配置檔案
#虛拟機a的配置檔案
#虛拟機b中,修改配置檔案,時間同步
[注意] 如果一直顯示為? 表示網絡沒有設定正确,需要設定配置檔案中的網絡
#虛拟機b的配置檔案,設定與虛拟機a的時間同步
#虛拟機a的時間經過上一個實驗設定為2020年
#虛拟機b的時間被a同步為2020年