1. 程式人生 > >Linux之控制服務篇

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成功顯示了登入失敗使用者的有關資訊。