๐ฅ Linux ๅฎๅ จๅผทๅๅฎๆดๆๅ:SELinux、AppArmor、Auditd、Fail2Ban ไธๆฌกๆๆ
Linux ๅจไผๆฅญ็ฐๅขไธญๆฎๆผๆ ธๅฟ่ง่ฒ,็ก่ซๆฏ Web Server、่ณๆๅบซ、ๅฎนๅจๅนณๅฐ、่ๆฌๅๅนณๅฐ(ๅฆ Proxmox、KVM)、CI/CD Pipeline,่ณๅฎ้ฝๆ็บไธๅฏๅฟฝ็ฅ็ๅบ็ค。 ๆฌ็ฏ็บ ็พ็ง็ด Linux ๅฎๅ จๅฎๆดๆๅ,ๆดๅ 4 ๅคงๆ ธๅฟๅฎๅ จๆฉๅถ:
- SELinux:ๆๅดๆ ผ็ Mandatory Access Control(MAC)
- AppArmor:่ผๆ็ฎก็็ๆชๆก่ทฏๅพๅๅฎๅ จๆกๆถ
- Auditd:็ณป็ตฑ่ก็บ็จฝๆ ธ、ไบไปถ่ฟฝ่นค
- Fail2Ban:ๆดๅ็ ด่งฃ้ฒ่ญท、SSH/ๆๅๅฐ้
้็ฏๆ็ซ ๅฐๅพๆถๆง、็จ้、่จญๅฎ็คบไพๅฐไผๆฅญ็ดๆไฝณๅฏฆๅไธๆฌก่ชชๆ。
๐ Linux ๅฎๅ จๆถๆง็ธฝ่ฆฝ(ASCII ็คบๆ)
Linux Server Security Architecture ---------------------------------------------------- | Layer 1:ๅบ็คๅญๅๆงๅถ(DAC) | - User / Group / Permission | - sudo, chmod, chown | | Layer 2:ๅผทๅถๅญๅๆงๅถ(MAC) | - SELinux(ๆจ็ฑคๅ) | - AppArmor(่ทฏๅพๅ) | | Layer 3:ไบไปถ็จฝๆ ธ(Audit) | - auditd:่จ้ๆๆๅฎๅ จ็ธ้ไบไปถ | | Layer 4:ๅ ฅไพต้ฒ็ฆฆ(Service Protection) | - Fail2Ban:้ฒๆดๅ็ ด่งฃ、่ชๅๅฐ้ IP ---------------------------------------------------- ๅ่ ไบ่ฃๅฝขๆๅฎๆดๅฎๅ จๆจกๅ
๐งฑ ไธ、SELinux — ๆๅดๆ ผ็ MAC ็ณป็ตฑ
SELinux(Security-Enhanced Linux)็ฑ NSA ้็ผ,ไฝฟ็จ「ๆจ็ฑค」ๆงๅถๆฏๅ Process、File ็ๅฎๅ จไธไธๆ,ๆฏ Linux ไธ็ๆๅดๆ ผ็ๅฎๅ จๆกๆถ。
๐ 1. SELinux ไธ็จฎๆจกๅผ
| ๆจกๅผ | ่ชชๆ |
|---|---|
| Enforcing | ๅ จ้ขๅผทๅถ,้ปๆไธๅ้่ฆๅญๅ(ไผๆฅญ้ ่จญ) |
| Permissive | ไธ้ปๆ,ๅช่จ้ Log(็จๆผ้ค้ฏ) |
| Disabled | ๅฎๅ จ้้(ไธๅปบ่ญฐ) |
๐ 2. ๆชขๆฅ SELinux ็ๆ
sestatus getenforce
๐ 3. ๅๆๆจกๅผ
# ่จญ็บ Enforcing sudo setenforce 1 # ่จญ็บ Permissive sudo setenforce 0
ๆฐธไน ่ฎๆด(/etc/selinux/config):
SELINUX=enforcing
๐ 4. SELinux ไธไธๆ(Context)
ls -Z /var/www/html -rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
่ฅๆชๆกๆฒๆๆญฃ็ขบ Context → Apache/Nginx ๆๆ็ตๅญๅ。
ไฟฎๆญฃ Context:
sudo restorecon -Rv /var/www/html
๐ 5. ๅธธ่ฆๆๅๅฐๆ็ SELinux Type
- httpd:
httpd_sys_content_t - MySQL:
mysqld_db_t - SSH:
ssh_port_t
๐งฉ ไบ、AppArmor — ้ฉๅ Ubuntu ็่ทฏๅพๅ MAC
AppArmor ็บ Ubuntu / Debian ้ ่จญ MAC ็ณป็ตฑ,ๆฏ SELinux ๆดๅฎนๆ็ฎก็。 ้้「Profile」ๅฎ็พฉๆฏๅๆๅๅฏ่ฎๅฏซ็ๆชๆก่่ก็บ。
๐ 1. ๆฅ็็จๅผ Profile
aa-status
๐ 2. ๅ็จๆๅ็จ Profile
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx sudo aa-disable /etc/apparmor.d/usr.sbin.nginx
๐ 3. AppArmor Profile ็ตๆง(็ฏไพ)
/usr/sbin/nginx {
# ๅฏ่ฎๅฏซ่ณๆ
/var/www/html/ r,
/var/www/html/** r,
# ็ฆๆญข่ฎๅฏซ /etc/shadow
/etc/shadow r,
}
AppArmor ็็ฎก็ๆนๅผๅฐๆฐๆๆดๅๅ,ไธไธๆ่ชคๅฐๆๅ。
๐ ไธ、Auditd — ็ณป็ตฑ็จฝๆ ธ่่ก็บ่ฟฝ่นค
Auditd ๆฏ Linux ็ไบไปถ็จฝๆ ธ็ณป็ตฑ,ๅฏไปฅ็จไพ่จ้:
- ่ชฐไฟฎๆนไบ /etc/passwd?
- ๆฏๅฆๆไบบ่ฎๅๆๆๆชๆก?
- ๆฏๅฆๅท่กๅฏ็ๆไปค?
๐ 1. ๅฎ่ฃ
sudo apt install auditd sudo systemctl enable --now auditd
๐ 2. ็ฃๆงๆชๆก่ฎๆด(็ฏไพ)
sudo auditctl -w /etc/passwd -p wa -k passwd_watch
ๆฅ็็จฝๆ ธ็ด้:
sudo ausearch -k passwd_watch
๐ 3. ็ฃๆงๆๆ sudo ่ก็บ
sudo auditctl -w /usr/bin/sudo -p x -k sudo_exec
๐ 4. ๆฐธไน ่ฆๅ(/etc/audit/rules.d/)
-w /etc/shadow -p rwxa -k shadow_edit
๐ก Fail2Ban — SSH ่ๆๅๆดๅ็ ด่งฃ้ฒ่ญท
Fail2Ban ๆๆ นๆ Log ๅคๆทๆฏๅฆๆไบบๆดๅ็ ด่งฃไผบๆๅจ(SSH、Nginx、Postfix…)。 ็ฌฆๅๆขไปถๅพ → ่ชๅๅฐ้ IP。
๐ 1. ๅฎ่ฃ
sudo apt install fail2ban
๐ 2. ๅ็จ SSH ไฟ่ญท
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
็ทจ่ผฏ:
[sshd] enabled = true port = ssh maxretry = 5 bantime = 3600 findtime = 600
๐ 3. ๆฅ็่ขซๅฐ้ IP
sudo fail2ban-client status sshd
๐ข ไผๆฅญ็ด Linux ๅฎๅ จๆไฝณๅฏฆๅ(2025)
- SSH ๅฟ ้ :็ฆๆญข root ็ปๅ ฅ、ๆน Port、ไฝฟ็จ้้ฐ็ปๅ ฅ
- ๆๆๆๅๆๆๅฐๆ็ SELinux / AppArmor Profile
- Auditd ๅฟ ้ ็ฃๆง /etc/passwd、/etc/shadow、sudo
- Fail2Ban ๅฟ ้ ๅ็จ SSH + ๅๅไปฃ็ไฟ่ญท
- Web Server ๅปบ่ญฐไฝฟ็จ:ๅๅไปฃ็ + WAF(ๅฆ Nginx)
- ไฝฟ็จ ZFS snapshot ไฟ่ญท Web / Config
๐ ็ต่ช
Linux ๅฎๅ จไธฆ้ไพ้ ๅฎไธๅทฅๅ ท,่ๆฏๅคๅฑค้ฒ่ญท: DAC → MAC(SELinux / AppArmor)→ ็จฝๆ ธ(Auditd)→ ้ฒ็(Fail2Ban)。 ๆฌ็ฏๆไพไฝ ไธๅฅๅฎๆด็ไผๆฅญ็ดๅฎๅ จๆถๆง,ๅฏ็ซๅณ้จ็ฝฒๅจไปปไฝ Linux ไผบๆๅจไธญ。
๐ฌ ็ไธไฝ ็่ง้ป,่ฎ่จ่ซๆด็ฒพๅฝฉ!
ไฝ ็ฎๅ็ Linux ไผบๆๅจๆๅ็จๅช็จฎๅฎๅ จๆกๆถ? ๅจ SELinux、AppArmor、Auditd ๆ Fail2Ban ไธ้้ๅชไบๅ้ก? ๆญก่ฟ็่จ,ไธ่ตทไบคๆตๆไฝณๅฏฆๅ!
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ