---
# System prepended metadata

title: linux 的系統安全強化
tags: [小專題, unix, 大二]

---

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