Linux之控制服務篇
一、什麼是服務?
系統中執行的對於系統本身沒有意義,但是對客戶主機有重大意義的程式叫做服務型軟體,簡稱服務。
cs模型
c表示client
s表示server
二、用什麼控制服務?
系統中的初始化程序可以對服務進行相應的控制。
三、系統的初始化程序是什麼
systemd #系統初始化程序
示例:
pstree #顯示系統中的程序樹
四、程序控制命令
systemctl ##服務控制命令
systemctl status sshd ##檢視sshd服務狀態,inactive(不可用),active(可用)
systemctl start sshd ##開啟服務 systemctl stop sshd ##關閉服務
關閉服務
開啟服務
systemctl restart sshd ##重啟服務
systemctl reload sshd ##重新載入服務配置
重啟服務類似於服務的關閉和再啟動,而重新載入服務配置類似於服務不關閉的前提下載入配置
systemctl enable sshd ##設定服務開機啟動
systemctl disable sshd ##設定服務開機不啟動
開機啟動和開機不啟動就是在系統剛開機後,服務的初始狀態。
systemctl list-units ##列出已經開啟服務當前狀態 systemctl list-unit-files ##列出所有服務開機啟動的狀態
systemctl mask sshd ##鎖定服務
systemctl unmask sshd ##解鎖服務
分析:如果關閉服務後再鎖定,這個服務就不能再被啟動了。
分析:解鎖後可以被正常啟動。
systemctl list-dependencies ##列出服務的依賴
systemctl set-default multi-user.target ##設定系統啟動的級別為多使用者模式(無圖形)
systemctl set-default graphical.target ##設定系統啟動級別為圖形模式
五、sshd服務
1、sshd簡介
sshd=secure shell
連線方式:
ssh [email protected] ##文字模式的連結
ssh -X [email protected] ##可以在連結成功後開機圖形
示例:
注意:
第一次連結陌生主機是要建立認證檔案的
所以,會詢問是否建立,需要輸入yes
再次連結此臺主機時,因為已經生成~/.ssh/know_hosts檔案所以不需要再次輸入yes
遠端複製:
scp file [email protected]:dir ##上傳
scp [email protected]:file dir ##下載
2、sshd的key認證
生成認證:
ssh-keygen -f /root/.ssh/id_rsa -N ""
N選項是設定認證時不需要再輸入認證的密碼。
加密服務:
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
示例:
分發鑰匙: 分發鑰匙給客戶機
注意:
這裡客戶機需要關閉防火牆,否則客戶機的防火牆會阻止服務機的鑰匙遠端複製到客戶機。
scp id_rsa [email protected]:/root/.ssh/
在這裡我們已經把鑰匙id_rsa分發給我們的客戶機了。
測試:
在這裡我們需要明白一點,我們採用sshd服務的目的在於,更換系統預設的遠端連線驗證方式:即輸入系統的密碼。所以,我們測試時首先關閉服務機的原始密碼驗證方式:
vim /etc/ssh/sshd_config ##更改sshd服務的配置檔案
systemctl restart sshd ##重啟sshd服務,這裡重啟的目的是使上一步的更改生效。
用客戶機遠端登入服務機測試:
分析:可以看到,服務機關閉ssh遠端登入需要輸入密碼,並且客戶機有鑰匙的情況下,直接就登入成功了,避免管理員的密碼知道的使用者過多的情況。
接下來,我們再測試另一臺沒有鑰匙的客戶機能否成功登陸。
分析:沒有鑰匙的客戶機是無法成功登入的。
這裡大家可能會有疑問: 有鑰匙的客戶機不需要輸入密碼可以隨便登入服務機,那如果我們不想讓有鑰匙的客戶機登入該怎麼辦呢?
其實,我們只需要在服務機上刪除authorized_keys檔案就可以了。 authorized_keys和id_rsa.pub檔案的內容其實是一樣的,我們刪除後如果想讓有鑰匙的客戶機連線,只要把id_rsa.pub複製一份並且重新命名成authorized_keys就好了。
左邊為服務機,右為客戶機,服務機刪除authorized_keys檔案後,有鑰匙的客戶機不能正常登入了。
把id_rsa.pub複製一份並且重新命名成authorized_keys後,有鑰匙的客戶機可以正常登入了。
3、sshd的安全設定
vim /etc/ssh/sshd_config ##編輯sshd配置檔案愛你
systemctl restart sshd.service ##重新載入sshd配置檔案
注意:每次更改後都要重啟服務才能使更改生效
78 PasswordAuthentication yes|no ##是否允許使用者通過系統的密碼做sshd的認證
48 PermitRootLogin yes|no ##是否允許root使用者通過sshd服務的認證
52 Allowusers student westos ##設定使用者白名單,白名單出現,預設不再名單中使用者不可以使用sshd
53 Denyusers westos ##設定使用者黑名單,黑名單出現,預設不再名單中的使用者可以使用sshd
進行白名單和黑名單測試時,因為我們只給服務機的root使用者添加了sshd認證方式,我們用客戶機遠端登入服務機的其他使用者時,仍需要密碼的原始認證方式。所以這裡我們需要把原始的密碼認證開啟。
分析:服務機的白名單有student使用者,客戶機遠端登入服務機的root使用者時,雖然會提示輸入密碼,但是輸入正確密碼後仍會提示錯誤。但登入服務機的student使用者時,輸入密碼就成功登陸了。
分析:黑名單出現student使用者,客戶機遠端登入服務機的student使用者時,雖然會提示輸入密碼,但是輸入正確密碼後仍會提示錯誤。但登入服務機的root使用者時,就成功登陸了。
總分析: 白名單出現的使用者可以遠端登入主機,其他均不能成功登陸。黑名單出現的使用者不能遠端登入主機,其他均可以成功登陸。從系統安全的角度出發,白名單的安全級別高於黑名單。
4、新增sshd登入資訊
vim /etc/motd ##檔案的內容就是登入後顯示的資訊
示例:
5、使用者的登入審計
w ##檢視正在使用當前系統的使用者
-f ##檢視使用來源
-i ##顯示ip
示例:
分析:w 檢視的其實是/run/utmp 檔案的內容,w可以檢視哪些使用者或者主機登入了我們的伺服器。我們把/run/utmp 檔案裡面的內容清空再檢視就查不到了。至於登入資訊為什麼會儲存在這個檔案裡面,我們下篇再詳細說明。
last ##檢視使用過並退出的使用者資訊
示例:
分析:last檢視的是/var/log/wtmp 檔案的內容,在之前我先清空了檔案內容,再遠端登入並退出,last成功顯示了使用過並退出的使用者的有關資訊。
lastb ##試圖登入但沒有成功的使用者
示例:
分析:lastb檢視的是/var/log/btmp 檔案的內容,在之前先清空了檔案內容,再遠端登入輸入錯誤密碼登入失敗,lasbt成功顯示了登入失敗使用者的有關資訊。