# linux 的系統安全強化 ###### tags: `小專題` `unix` `大二` [Raspberry Pi 筆記(58):系統安全強化(上)用戶及連線篇](https://atceiling.blogspot.com/2020/02/raspberry-pi-58.html)) [Raspberry Pi 筆記(58):系統安全強化(中) 安裝防火牆及Fail2Ban](https://atceiling.blogspot.com/2020/02/raspberry-pi-58-fail2ban.html) [Raspberry Pi 筆記(58):系統安全強化(下) - 安裝防毒軟體Clamav](https://atceiling.blogspot.com/2020/02/raspberry-pi-58-fail2ban.html) ## Step 1 :要先更改密碼 ( 但我沒更改 ) ```bash= passwd 或是 sudo raspi-config ``` ![](https://i.imgur.com/6u2mx1j.png) ## Step 2 :更改用戶名 ```bash= sudo adduser tina ``` ![](https://i.imgur.com/9TJvkw8.png) 把必要的權限賦予給 tina 這位用戶、測試帳號是否可用,權限是否有問題: ```bash= sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi tina sudo su - tina ``` :::success 如果成功從 pi 轉換到 tina 這個用戶就成功 ::: ![](https://i.imgur.com/hkg3lZ0.png) 切換成功之後就可以把原本的使用者 pi 刪掉 (但我沒刪) ```bash= sudo pkill -u pi sudo deluser pi # 只刪掉pi帳號 sudo deluser -remove-home pi # 同時把pi & /home/pi的資料夾刪掉 ``` ## Step 3 :sudo 時需要密碼 ```bash= sudo nano /etc/sudoers.d/010_pi-nopasswd ``` ![](https://i.imgur.com/WyxmBOx.png) ## Step 4 :更新最新的安全修正程式 ```bash= sudo apt update sudo apt full-upgrade ``` ## Step 5 :改善SSH安全性 更改配置來允許或拒絕特定用戶使用 SSH連線 ```bash= sudo nano /etc/ssh/sshd_config AllowUsers tina max #在設定檔案的最後面,加上允許登錄的用戶名稱 DenyUsers rex kent #也可以使用 DenyUsers 來阻止某些用戶登錄 sudo systemctl restart ssh #要重新開機才可以生效 - 我不會所以手動關機 ``` ## Step 6 :檢查已經開啟的服務埠 ```bash= netstat -tulnp ``` ![](https://i.imgur.com/RohQsvU.png) ## Step 7 :安裝 ufw 防火牆、啟動 ```bash= sudo apt-get install ufw sudo ufw enable ``` ![](https://i.imgur.com/qRw3v17.png) 關閉防火牆: ```bash= sudo ufw disable ``` ![](https://i.imgur.com/xx9ABzA.png) 查看防火牆狀態 ( 有啟用 - active , 沒有啟用 - inactive ) : ```bash= sudo ufw status ``` ![](https://i.imgur.com/R3tJhGn.png) ## Step 8 :對服務或連接埠設規則 ```bash= Step 8 :對服務或連接埠設規則 ``` ![](https://i.imgur.com/IZI6fMo.png) ufw 刪除,在原本的規則前面加上 delete : ```bash= sudo ufw delete allow http ``` ![](https://i.imgur.com/3SekC5t.png) 如果要進一步指定 tcp 連線的話: ```bash= sudo ufw allow http/tcp ``` ![](https://i.imgur.com/nyBP4Uk.png) 其他: ```bash= sudo ufw deny out ssh # 限制無法從樹莓派 ssh 到其他主機 Rule added Rule added (v6) sudo ufw status # 看一下執行的結果 Status: active To Action From -- ------ ---- 22/tcp DENY OUT Anywhere 22/tcp (v6) DENY OUT Anywhere (v6) sudo ufw delete deny out ssh # 要刪除上述規則 Rule deleted Rule deleted (v6) ``` ## Step 9 :對IP設定規則 ```bash= sudo ufw deny from 192.168.1.10 # 拒絕 192.168.1.10 這個 IP 連線本機所有 Port sudo ufw deny from 192.168.1.10 port 22 # 拒絕對這個來源IP使用 ssh 連線 sudo ufw allow from 192.168.0.0/24 # 允許192.168.0 這個 C Class網段的設備連線這部主機 sudo ufw deny from any to 192.168.1.10 port 22 # 禁止所有連入的 ssh 連線 ``` ## Step 10 :利用編號刪除規則 ```bash= sudo ufw status numbered # 利用參數將 ufw 的規則用編號列出 ``` ![](https://i.imgur.com/5LFbowi.png) ```bash= sudo ufw delete 2 # 如要刪除該編號規則 ``` ![](https://i.imgur.com/c40d4pR.png) ## Step 11 :安裝圖形介面防火牆 gufw ```bash= sudo apt-get install gufw sudo gufw ``` ![](https://i.imgur.com/jtFqIor.png) ```bash= sudo ufw logging on sudo ufw logging off ``` ![](https://i.imgur.com/OwzPVvS.png) 調整日誌紀錄等級:ufw 日誌等級有 low、medium、high、full 四種,預設為 low。low資訊較少,full資訊最多,也站較多硬碟空間,要改成medium ```bash= sudo ufw logging medium ``` ## Step 12 :安裝fail2ban ```bash= sudo apt-get install fail2ban # 先將jail.conf檔案複製成 jail.local,再開啟編輯器修改 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local ``` 在檔案最後面加上以下幾行: ```bash= enabled  = true #啟動fail2ban maxretry = 3 # 允許發生入侵或登入行為時,可以嘗試失敗的次數 bantime = 86400 # 封鎖IP的秒數,設定成 -1時會永久封鎖 findtime = 7200 #搜尋指定日誌的範圍秒數 destemail = root@localhost #要收到通知的郵件收件人 ``` 啟用、停用 fail2ban : ```bash= sudo service fail2ban start #啟用 sudo service fail2ban stop #停用 ``` ## Step 13 :安裝ClamAv防毒軟體 ```bash= sudo apt-get install clamav clamav-daemon sudo nano /etc/clamav/clamd.conf #如果要用 Daemon的模式進行,需要編輯設定檔 clamd.conf ,可依照個人使用需要修改此設定檔的內容 sudo service clamav-daemon start # 在Daemon模式下,如要啟動 ClamAv sudo service clamav-daemon stop # 停止 ClamAv 服務 ``` 要再執行一次才可以正常啟動服務: ```bash= systemctl daemon-reload ``` 查看服務是否正常: ```bash= sudo systemctl status clamav-daemon ``` ![](https://i.imgur.com/YjppTsj.png) 檢查 clamscan 版本: ```bash= clamscan -V ``` ![](https://i.imgur.com/lAZG6vM.png) ## Step 14 :更新病毒碼 ```bash= sudo freshclam ``` ![](https://i.imgur.com/9dFQHCd.png) 上圖,發生了一點問題,因為日誌檔被其他程序鎖定: 所以要先把clamav-freshclam的服務停掉,等執行完病毒碼更新後,再重新啟動服務 ```bash= # 停用服務 sudo systemctl stop clamav-freshclam.service 或 sudo /etc/init.d/clamav-freshclam stop # 啟用服務 sudo systemctl start clamav-freshclam.service 或 sudo /etc/init.d/clamav-freshclam start ``` :::danger 輸入指令的流程應該為:先停用clamav-freshclam的服務,更新病毒碼,再重新啟用服務 ::: ![](https://i.imgur.com/Dq0MNwO.png) ## Step 15 :圖形介面ClamAv 除了命令列及 Daemon 模式外,還有一種圖形介面模式,稱做 ClamTk,ClamTk 是 ClamAV 的圖形界面,ClamTk 本身是不包含防毒軟體的,ClamTk 就是利用 ClamAV 的病毒掃瞄引擎及病毒碼來提供病毒掃瞄的功能。 如要安裝 ClamTk 時,可執行以下指令,安裝前如果還沒有安裝 ClamAv ,執行安裝 ClamTk 時,會一併將 ClamAv 安裝 ```bash= sudo apt-get install clamtk clamtk ``` ![](https://i.imgur.com/9gILAVj.png) ## Step 16 :檔案掃描 要掃描 /home/USER 目錄內的檔案,並將受感染的檔案放到 /home/USER/VIRUS: -r 為遞迴掃描,包含底下所有的子目錄 :::danger 注意注意,要先建一個叫做virus的資料夾 ::: ```bash= sudo clamscan -r --move=/home/pi/virus /home/pi ``` ![](https://i.imgur.com/yqfLXRY.png) **這樣就完成ㄌ掃描檔案的部分** 因為忘記建一個virus的資料夾所以沒有把資料存進去,乾 ![](https://i.imgur.com/Em39AA9.png)