Raspberry Pi 筆記(58):系統安全強化(上)用戶及連線篇

筆者在資安相關的公司待了一段時間,對於資訊安全也有一些瞭解。過去的實做偏向系統跟自動控制方面,這幾篇也來探討一下樹莓派的安全性,如何藉由系統設定或額外的管控措施,避面駭客輕易的入侵。

如果使用樹莓派當作對外服務時,如Web Server、IoT應用等,務必要建立適當的安全性。本篇先針對使用者管理的機制加強其安全設定,下兩篇還會提到安裝防火牆與防毒軟體,來強化系統。

[更改預設密碼]

安裝完成 Raspbian 系統後,預設會有一個 pi 的用戶,最基本的防護是將預設密碼改掉。執行的指令如下:
$ passwd
或是使用設定介面來修改密碼:
$ sudo raspi-config
選擇選項1,然後按照說明更改密碼。
如果要增加/更改 root 密碼,可以執行以下指令:
$ sudo passwd root
最重要的是確保您擁有一個非常可靠的密碼,密碼要有英文字母,且要搭配大小寫字元,再混合數字跟特殊字元,這樣的密碼強度才夠。

[更改用戶名]

建議要將預設的帳號 pi 更改名字,這樣可以更加安全些,以下說明如何新增加一位用戶後,再將預設帳號 pi 刪除,先增一位用戶名稱,以下以增加 maggie 帳號為例:
$ sudo adduser maggie
系統會為新建的用戶詢問密碼及相關資訊,如下圖:
新用戶的主目錄 /home/maggie/。要將這位用戶增加到 sudo 群組中,以賦予他們 sudo 權限以及所有其他必要的權限:
$ sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi maggie
您可以 sudo  su 測試一下剛剛建立的帳號是否可用,權限是否有問題。
$ sudo su - maggie
如果切換用戶 maggie 成功,則可以確保新帳戶在 sudo 群組中。確認新帳戶正常運行後,就可以刪除該 pi 用戶。您首先需要使用以下命令關閉其程序:
$ sudo pkill -u pi
要刪除pi用戶,可執行以下指令:
$ sudo deluser pi
上列指令會刪除pi帳號,但會保留 /home/pi 的資料夾。如有必要,可以使用以下指令同時刪除 pi 用戶的主目錄資料夾。請注意,此資料夾中的檔案將被永久刪除,請留意是否保存該目錄內的檔案。
$ sudo deluser -remove-home pi


[sudo時需要密碼]

在指令前如果加上 sudo 命令,就會用超級用戶身份運行,在預設的情況下不需要密碼,如果只是內部網路使用,應該沒什麼問題。但是,如果 Pi 暴露於網際網路上,提供某特定服務時,例如網頁的 http服務,就需要小心安全性,最好設定成使用 sudo 時,要求輸入密碼,否則攻擊者將可以用超級使用者執行高權限的指令。強制 sudo 要求輸入密碼,需要修改設定檔 010_pi-nopasswd,指令如下:
$ sudo nano /etc/sudoers.d/010_pi-nopasswd
將 pi這一列或具有超級用戶權限的用戶名更改為以下這行範例:
pi ALL=(ALL) PASSWD: ALL

[更新最新的安全修正程式]

可以使用以下指令進行系統安裝程式的更新:
$ sudo apt update
如果要升級版本,可輸入以下指令:
$ sudo apt full-upgrade
如要定期更新,可以利用Crontab 設定排程執行更新的指令。

[改善SSH安全性]

SSH是一種遠端連線 Raspberry Pi 的常用方法,通常使用SSH登錄需要使用者名稱及密碼才能登入系統,有幾個讓他更安全的方法,其中一種就是使用密鑰的身份驗證。如果您的樹莓派暴露在網際網路上,密碼的安全性就變的很重要,使用複雜的密碼,有助於避免字典攻擊等問題。還可以透過更改配置來允許或拒絕特定用戶使用 SSH連線。
$ sudo nano /etc/ssh/sshd_config
在設定檔案的最後面,加上允許登錄的用戶名稱:
AllowUsers maggie max
也可以使用 DenyUsers 來阻止某些用戶登錄:
DenyUsers rex kent
更新設定檔後,需要重新開機或重新啟動 sshd 才能生效,可以使用以下指令重新起動
$ sudo systemctl restart ssh

[檢查已經開啟的服務埠]

可使用以下指令列出目前系統上面正在監聽的網路Port,僅 TCP 與 UDP 埠口:
$ netstat -tulnp

再從列表中用 grep 從/etc/services 裡面把特定服務過濾出來,再用 systemctl 來確認該服務路徑位置並用 systemctl disable 停止不必要的服務。

繼續閱讀:

Post a Comment

較新的 較舊