# 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
```

## Step 2 :更改用戶名
```bash=
sudo adduser tina
```

把必要的權限賦予給 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 這個用戶就成功
:::

切換成功之後就可以把原本的使用者 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
```

## 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
```

## Step 7 :安裝 ufw 防火牆、啟動
```bash=
sudo apt-get install ufw
sudo ufw enable
```

關閉防火牆:
```bash=
sudo ufw disable
```

查看防火牆狀態 ( 有啟用 - active , 沒有啟用 - inactive ) :
```bash=
sudo ufw status
```

## Step 8 :對服務或連接埠設規則
```bash=
Step 8 :對服務或連接埠設規則
```

ufw 刪除,在原本的規則前面加上 delete :
```bash=
sudo ufw delete allow http
```

如果要進一步指定 tcp 連線的話:
```bash=
sudo ufw allow http/tcp
```

其他:
```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 的規則用編號列出
```

```bash=
sudo ufw delete 2 # 如要刪除該編號規則
```

## Step 11 :安裝圖形介面防火牆 gufw
```bash=
sudo apt-get install gufw
sudo gufw
```

```bash=
sudo ufw logging on
sudo ufw logging off
```

調整日誌紀錄等級: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
```

檢查 clamscan 版本:
```bash=
clamscan -V
```

## Step 14 :更新病毒碼
```bash=
sudo freshclam
```

上圖,發生了一點問題,因為日誌檔被其他程序鎖定:
所以要先把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的服務,更新病毒碼,再重新啟用服務
:::

## Step 15 :圖形介面ClamAv
除了命令列及 Daemon 模式外,還有一種圖形介面模式,稱做 ClamTk,ClamTk 是 ClamAV 的圖形界面,ClamTk 本身是不包含防毒軟體的,ClamTk 就是利用 ClamAV 的病毒掃瞄引擎及病毒碼來提供病毒掃瞄的功能。
如要安裝 ClamTk 時,可執行以下指令,安裝前如果還沒有安裝 ClamAv ,執行安裝 ClamTk 時,會一併將 ClamAv 安裝
```bash=
sudo apt-get install clamtk
clamtk
```

## Step 16 :檔案掃描
要掃描 /home/USER 目錄內的檔案,並將受感染的檔案放到 /home/USER/VIRUS:
-r 為遞迴掃描,包含底下所有的子目錄
:::danger
注意注意,要先建一個叫做virus的資料夾
:::
```bash=
sudo clamscan -r --move=/home/pi/virus /home/pi
```

**這樣就完成ㄌ掃描檔案的部分**
因為忘記建一個virus的資料夾所以沒有把資料存進去,乾
