๐ง Linux Auditd + SELinux ๅฏฆๅๆไฝๅฎๆดๆๅ:็ณป็ตฑๅฏฉ่จ、ๅผทๅ、็จฝๆ ธ่ๅฎๅ จๆไฝณๅฏฆๅ
Linux ็ๅฎๅ จ่ฝๅไธป่ฆไพ่ชๅ ฉๅคงๆ ธๅฟๅ ไปถ:Auditd(็จฝๆ ธ็ณป็ตฑ) ่ SELinux(ๅผทๅถๅญๅๆงๅถ MAC)。 ๅ ฉ่ ็ตๅๅพๅฏไปฅๅฎๆดๅๅฐ:ไบไปถ่ฟฝ่นค、ๆฌ้ๅผทๅ、่ณๆไฟ่ญท、ๆปๆ่ก็บๅตๆธฌ、ๆ็จ็จๅผ้ๅถ่ๅฎๅ จ็จฝๆ ธ。
ๆฌ็ฏๆไพไธไปฝ็ๆญฃๅฏฆๅ็ด(Production Ready)็ๅฎๆดๆๅ,ๅ ๅซ Auditd ่ฆๅ่จญ่จ、SELinux Context ็ฎก็、Policy ๅปบ็ซ、Troubleshooting、SIEM ๆดๅ่ๅผทๅ็ญ็ฅ。
๐ ไธ、Auditd ๆฏไป้บผ?ๆ ธๅฟๆถๆง่็จ้
Auditd(Linux Auditing System)ๆฏไธๅฅ Kernel ๅฑค็ด็ไบไปถ็จฝๆ ธ็ณป็ตฑ,ๅฏ่ฟฝ่นค:
- ๆชๆก่ฎๅฏซ / ไฟฎๆน
- ๆไปคๅท่ก(execve)
- sudo ่ก็บ
- ๅธณ่็ปๅ ฅ / ็ณป็ตฑ่จญๅฎ่ฎๆด
- ๅฎๅ จ็ธ้ไบไปถ(ๅฏ็ขผ、่ช่ญ、ๆฌ้ไฟฎๆน)
ๆ ธๅฟ็ตไปถ:
| ๅ ไปถ | ่ชชๆ |
|---|---|
| auditd | ไธปๅฎ่ญท็จๅผ,่ฒ ่ฒฌๆฅๆถ่ๅฒๅญไบไปถ。 |
| auditctl | ่จญๅฎ่่จๆ็ฎก็็จฝๆ ธ่ฆๅ。 |
| ausearch | ๆๅฐ็จฝๆ ธ็ด้。 |
| aureport | ็ข็ไบไปถ็ตฑ่จ่ๅ ฑ่กจ。 |
้ฉ็จๅ ดๆฏ:ไผๆฅญ่ณๅฎ、ๆฟๅบ็จฝๆ ธ、้่ๆฅญๆณ้ต(Compliance)、็ณป็ตฑๅฎๅ จ็ฃๆง็ญ。
๐ ไบ、Auditd ๅฎ่ฃ、ๅๅ่ๅบๆฌ่จญๅฎ
๐ฆ ๅฎ่ฃ Auditd
sudo apt install auditd audispd-plugins # Ubuntu / Debian
sudo yum install audit # CentOS / RHEL
๐ฆ ๅๅ Auditd
sudo systemctl enable --now auditd
sudo systemctl status auditd
๐ฆ ๆฅ็็ฎๅ่ฆๅ
sudo auditctl -l
Auditd ้ ่จญๅชๅ็จๅบๆฌ็จฝๆ ธ,่ฅ่ฆๅฎๆด็ฃๆง้่ช่กๆฐๅฏซ่ฆๅ。
๐ ไธ、Auditd ๅธธ็จ็จฝๆ ธ่ฆๅ(ๅฎๆด็ฏไพ)
1️⃣ ็ฃๆง /etc/passwd ่ฎๆด
sudo auditctl -w /etc/passwd -p rwxa -k passwd_changes
2️⃣ ็ฃๆงๆๆๆไปคๅท่ก(execve)
sudo auditctl -a exit,always -F arch=b64 -S execve -k exec_monitor
3️⃣ ็ฃๆง sudo ่ก็บ
sudo auditctl -a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_actions
4️⃣ ๅฏซๅ ฅๆฐธไน ่ฆๅ:/etc/audit/rules.d/audit.rules
-w /etc/passwd -p rwxa -k passwd_changes
-a exit,always -F arch=b64 -S execve -k exec_monitor
ๅฅ็จ่ฆๅ:
sudo augenrules --load
๐ ๅ、Auditd ๆฅ่ชๆฅ่ฉข:ausearch / aureport
๐ ๆๅฐ้้ตๅญไบไปถ
ausearch -k exec_monitor
๐ ๆๅฐ็นๅฎไฝฟ็จ่ ่ก็บ(UID)
ausearch -ua 1000
๐ ็ข็็จฝๆ ธๅ ฑ่กจ
aureport --summary
aureport --exec --summary
ๅฏ่ SIEM(ELK、Splunk)ๆดๅ,ๅปบ็ซ็ฐๅธธๅๆ่ๆปๆๅตๆธฌ。
๐ ไบ、SELinux ไธๅคงๆจกๅผ:Enforcing / Permissive / Disabled
| ๆจกๅผ | ่ชชๆ |
|---|---|
| Enforcing | ้ปๆ้่ฆๆไฝ(ๆญฃๅผ็ฐๅขๅฟ ็จ) |
| Permissive | ไธ้ปๆไฝ่จ้้่ฆ(่ชฟ่ฉฆ็จ) |
| Disabled | ๅฎๅ จๅ็จ(ไธๅปบ่ญฐ) |
getenforce
ๆฐธไน
่จญๅฎ:
sudo nano /etc/selinux/config
SELINUX=enforcing
๐ ๅ ญ、SELinux Context ๆทฑๅบฆ่งฃๆ(Type ๆฏๆ ธๅฟ)
Context ็ฑๅ้จๅ็ตๆ:
| ๆฌไฝ | ่ชชๆ |
|---|---|
| User | SELinux User,ไธ็ญๆผ Linux ็จๆถ |
| Role | ่ง่ฒๆฌ้ๆงๅถ |
| Type | ๆ้่ฆ!MAC ๆงๅถไพๆ |
| Level | ๅคๅฑคๅฎๅ จๆจ็ฑค |
ๆฅ็ Context:
ls -Z /var/www/html/index.html
ๆญฃ็ขบ่จญๅฎ httpd ๆไปถ Context:
sudo chcon -t httpd_sys_content_t /var/www/html/index.html
ๆฐธไน
ไฟฎๆญฃ:
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
sudo restorecon -Rv /var/www/html
๐ ไธ、SELinux Troubleshooting(ๆ้ฏๆต็จ)
๐ ๆฅ็ AVC ๆ็ตไบไปถ
sudo ausearch -m avc
๐ง ่ชๅไฟฎๆญฃ็ญ็ฅ audit2allow
sudo grep AVC /var/log/audit/audit.log | audit2allow -M myfix
sudo semodule -i myfix.pp
ๆณจๆ:audit2allow ๆ「่ชๅ็ๆๅ ่จฑ็ญ็ฅ」,่ซๅๅฟ ๅ ็ขบ่ชๆฏๅฆๅ็,้ฟๅ ้ ๆๅฎๅ จๆงไธ้。
๐ ๅ ซ、Auditd + SELinux ็ณป็ตฑๅผทๅๅฏฆๅๆๅ
- Web ๆๅๅฟ ้ ๅฅ็จ httpd_sys_content_t / httpd_sys_rw_content_t
- ๆๆ็ฎก็ๅไฝ(sudo, passwd)ๆๅ ๅฐ Auditd ่ฆๅ
- ๅจ Enforcing ๅๅ ไปฅ Permissive ่้ๆฅ่ช
- Auditd ๆฅ่ชๅปบ่ญฐ้่ณ SIEM ๅๅๆ
- ไธ่ฆ้จๆ้้ SELinux(้ซ้ขจ้ช)
๐ ไน、ๆไฝณๅฏฆๅ่ๅธธ่ฆ้ฏ่ชค
❌ ้ฏ่ชค 1:้ๅฐ้ฏ่ชคๅฐฑ setenforce 0
้ๆ็ดๆฅๆพๆฃ MAC ้ฒ่ญท。
❌ ้ฏ่ชค 2:audit2allow ็ๆ็็ญ็ฅๆฒๅฏฉๆฅๅฐฑๅฅ็จ
ๅฏ่ฝ้ ๆๆไบๆ็จ็จๅผ็ฒๅพ้ๅบฆๆฌ้。
✔ ๆญฃ็ขบๅๆณ
- ๅ ๆฅ็ AVC ่จๆฏ,ๅๆฑบๅฎๆฏๅฆ้ๆพ
- ้ๅฐ็นๅฎๆ็จๅปบ็ซๆๅฐ็ญ็ฅ(Least Privilege)
- Auditd ่ฆๅๆกๅบๅฎๅ้กๆนไพฟ SIEM ่็
๐ ๅ、ๅธธ่ฆ FAQ
Q1. Auditd ่ SELinux ๆฏๅฆๅปบ่ญฐไธ่ตทไฝฟ็จ?
ๆฏ。Auditd ๅ็จฝๆ ธ,SELinux ๅๅญๅๆงๅถ,ๅ ฉ่ ไบ่ฃๆงๆๅฎๆดๅฎๅ จๆถๆง。
Q2. ไป้บผๆ ๆณ้่ฆ audit2allow?
็ถๆ็จ็จๅผๅๆณๆไฝ่ขซ้ปๆๆ,ไพๅฆ Web App ้่ฆๅฏซๅ ฅ่ณๆๅคพ。
Q3. SELinux ๅฏไปฅ้้ๅ?
ๅฏไปฅ,ไฝไธๅปบ่ญฐ。้้ๅพๅฐฑๅฐไบๆ้่ฆ็ MAC ๅฑคๅฎๅ จ。
๐ ๅปถไผธ้ฑ่ฎ
- ๐ก Linux Fail2Ban ้ฒ้้ฒ็ฆฆๆๅ
- ๐ Linux ้ฒ้ๆชๆกๆฌ้ ACL / SetUID / Sticky Bit
- ๐ Linux Log、SIEM、ELK ๆดๅๆๅ
๐ฌ ๆญก่ฟๅจไธๆน็่จไบคๆต!
ๅฐ Auditd、SELinux ๆ Linux ๅฎๅ จๅผทๅๆ็ๅๅ?ๆญก่ฟ็่จ่จ่ซ!
— WWFandy・Linux Security ๅฏฆๅ็ญ่จ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ