---
# System prepended metadata

title: HW3

---


HW3
===
**組員：**

B11009014 @ 王玟雅

M11309123@ 楊子慶

M11309205@ 鄭庾修

本次作業目標
---
📝作業目標敘述
本次作業分為兩個主題，主要是針對 Linux 系統在身份驗證與權限操作記錄，以及稽核機制運作方式的基礎理解與實作能力。

1. 第一題：觀察身份驗證與權限操作紀錄
學習如何透過觀察 /var/log/auth.log，掌握系統對於身份驗證、登入行為及 sudo 指令等操作的記錄方式。學生需模擬登入成功與失敗的情境，並嘗試執行 sudo 指令以觸發權限操作紀錄，進而熟悉 log 檔內容與事件分類。

2. 第二題：設定稽核規則監控敏感檔案存取
實作 Linux 稽核系統 auditd 的安裝與基本操作，透過設定監控規則，對系統中重要檔案（如 /etc/shadow、~/.bashrc 及 root 的 crontab 設定檔）進行存取監控。學生需實際操作這些檔案，並使用 ausearch 指令查詢是否成功記錄相關活動，以理解 Linux 核心層級的稽核紀錄機制。

第一題
---
#### 觀察 /var/log/auth.log來熟悉系統如何記錄與身份驗證、權限操作相關的事件。

1. **製造登入成功以及失敗的紀錄**
`su - userhw3` - 登入不同使用者
* 登入失敗
![image](https://hackmd.io/_uploads/HJEzpiX1xe.png)
* 登入成功
![image](https://hackmd.io/_uploads/Byjsasmyxx.png)

2. **製造一些觸發sudo指令的操作**
需要root權限才能新增及刪除使用者，在這邊馬上來執行一下這些指令，觸發權限操作紀錄!
```sudo adduser anotheruser4hw3    ``` - 新增使用者
```sudo deluser anotheruser4hw3    ``` - 刪除使用者
 ![image](https://hackmd.io/_uploads/BJQ8QhX1gl.png)
 ![image](https://hackmd.io/_uploads/Hk95m3QJgg.png)
~~這邊連續手滑三次~~

3. **查找登入成功以及失敗的紀錄**

```bash
sudo cat /var/log/auth.log 
```

![image](https://hackmd.io/_uploads/SkXH8n7Jgl.png)

登入失敗：
```text
Apr 21 19:32:57 nice2meetuwu su: pam_unix(su-l:auth): authentication failure; logname= uid=1000 euid=0 tty=/dev/pts/0 ruser=andy rhost=  user=user4hw3
Apr 21 19:32:59 nice2meetuwu su: FAILED SU (to user4hw3) andy on pts/0
```

登入成功：
```
Apr 21 19:34:59 nice2meetuwu su: (to user4hw3) andy on pts/0
Apr 21 19:34:59 nice2meetuwu su: pam_unix(su-l:session): session opened for user user4hw3(uid=1001) by (uid=1000)
```


4. **查找使用 sudo 指令的相關紀錄**
```bash
sudo cat /var/log/auth.log 
```
![image](https://hackmd.io/_uploads/HkCpXpmkll.png)
前面觸發sudo指令的操作確實都被記錄下來了，前面的log也有提到因為user4hw3沒有在sudoers裡面所以會有特別紀錄，~~真的不是說說而已~~ :+1: 
```
Apr 21 19:40:38 nice2meetuwu sudo: user4hw3 : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/user4hw3 ; USER=root ; COMMAND=/usr/sbin/adduser anotheruser4hw3
Apr 21 20:00:25 nice2meetuwu sudo: pam_unix(sudo:auth): authentication failure; logname= uid=1001 euid=0 tty=/dev/pts/0 ruser=user4hw3 rhost=  user=user4hw3
Apr 21 20:00:57 nice2meetuwu sudo: user4hw3 : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/user4hw3 ; USER=root ; COMMAND=/usr/sbin/deluser anotheruser4hw3
Apr 21 20:03:13 nice2meetuwu sudo: user4hw3 : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/user4hw3 ; USER=root ; COMMAND=/usr/bin/cat /var/log/auth.log
```
第二題
---
#### 學習並掌握 auditd（Linux Audit Daemon）的基本操作方式，透過設定稽核規則來監控重要系統檔案是否被存取或修改。
1. **安裝auditd**
```bash
sudo apt update
sudo apt install auditd
```
確認安裝完成
![image](https://hackmd.io/_uploads/SyT9qp7Jlg.png)
#### 下面這步是多出來的
2. **啟用auditd(wsl extra step)**
* 1. 使用`sudo systemctl status auditd`檢測auditd目前的狀態
![image](https://hackmd.io/_uploads/BkpgppX1le.png)
這邊可以看到auditd目前是failed的狀態，代表說還沒被啟用，所以要執行其他指令auditd的話會失效。
* 2. 使用`sudo systemctl enable auditd`來啟用auditd
![image](https://hackmd.io/_uploads/Hkkz0a7yxx.png)
debug了一段時間發現原來wsl不支援auditd，即使是使用了sudo也沒用，linus本人來了可能也難救。整理一下心情，重新出發!
#### 這邊開始切換成祖傳的虛擬機來操作
3. **新增監控檔案的rule**

```bash
-w: 指定要監控的檔案
-p: 權限（r 讀、w 寫、x 執行、a 屬性變更）
-k: 標記關鍵字，用來後續搜尋
新增規則 : 
sudo auditctl -w /etc/shadow -p rwxa -k shadow 
sudo auditctl -w /home/<username>/.bashrc -p rwxa -k shell
sudo auditctl -w /var/spool/cron/crontabs/root -p wa -k crontab
查看目前的規則 :
sudo auditctl -l
```
![image](https://hackmd.io/_uploads/ryenXyNyxl.png)
4. **製造一些足跡來被紀錄**
* 開啟shadow以及bashrc來觸發紀錄
```
cat🐱:用來顯示文件內容的指令
sudo cat /etc/shadow
```
![image](https://hackmd.io/_uploads/Hk24FJ4yee.png)
```
cat🐱:用來顯示文件內容的指令
sudo cat /home/<username>/.bashrc 
```
![image](https://hackmd.io/_uploads/Hkz-9JNJlx.png)
* 修改 /var/spool/cron/crontabs/root 來觸發紀錄
```
nano : 是編寫檔案的指令
sudo nano /var/spool/cron/crontabs/root
```
![image](https://hackmd.io/_uploads/ryBk2141le.png)
5. 看log是否有紀錄到操作
```
-k: 標記關鍵字來進行搜尋
sudo ausearch -k <想找的東西>
想找的東西 : shadow、shell、crontab 
```
* shadow(尋找cat)🐱:
![image](https://hackmd.io/_uploads/SyLtglEJxg.png)
* shell(尋找cat)🐱:
![image](https://hackmd.io/_uploads/Syj6ygVylg.png)
* crontab(尋找nano):
![image](https://hackmd.io/_uploads/HyzWxxNJxg.png)

實作心得
---
這次作業讓我第一次比較完整地動手操作 Linux 的登入紀錄與稽核功能。第一題讓我學到原來系統會把每次登入失敗或用sudo執行指令時的紀錄都寫進 /var/log/auth.log，而且從log裡還能看出是誰、什麼時間、在終端機做了什麼事，有種在演樓下的房客裡面房東的感覺，還滿有趣的?

第二題一開始遇到點小卡關，因為我是在WSL上跑Linux，結果auditd竟然不能正常啟動，剛好很久以前有裝一個虛擬機，就直接換到虛擬機重新來一次，順便回味一下青春時光。不過後來設定監控 /etc/shadow、.bashrc 跟crontab時就順利很多，實際用cat和nano去讀寫之後，再用ausearch查紀錄，真的都能找到剛剛做的事，蠻有成就感的。
