๐ก️ Linux ็ณป็ตฑๅฎๅ จๅฏฆๆฐ:SELinux、AppArmor、Auditd、Fail2Ban ๆทฑๅบฆ่งฃๆ
Linux ๅจไผๆฅญ็ฐๅขไธญๅปฃๆณไฝฟ็จ,่ไผบๆๅจๅฎๅ จไธๅๅชๆฏ「้ฒ็ซ็」ๆ「ๆน SSH Port」้้บผ็ฐกๅฎ。 ็ๆญฃๅฎๆด็ Linux ๅฎๅ จๆถๆงๅ ๅซ:
- ๐ SELinux — ๅผทๅถๅญๅๆงๅถ(MAC)
- ๐ AppArmor — ๆชๆก่ทฏๅพ็บไธป็ๆ็จ็จๅผๅฎๅ จๆกๆถ
- ๐ Auditd — ่ก็บๅฏฉ่จ、ไบไปถ่ฟฝ่นค
- ๐ซ Fail2Ban — ้ฒๆดๅ็ ด่งฃ(SSH / Web / Mail)
ๆฌ็ฏๅฐๅพๅฏฆๅ่งๅบฆๆทฑๅบฆ่งฃๆ้ๅๅคงๅฎๅ จๆกๆถ็ๅฎไฝ、ๅทฎ็ฐ่ๆไฝณๅฏฆๅ,ๅๅฉไฝ ๆ้ ๆดๅฎๆด็ Linux ไธปๆฉๅฎๅ จ็ญ็ฅ。
๐ ็ฌฌไธ็ซ :SELinux — ๆๅผทๅคง็ๅผทๅถๅฎๅ จๆกๆถ(MAC)
SELinux(Security-Enhanced Linux)ๆฏ Linux ๆ้ซ็ดๅฅ็ๅญๅๆงๅถ็ณป็ตฑ,ๆก็จ MAC(Mandatory Access Control)ๅผทๅถๅญๅๆงๅถ,ๆฏๅณ็ตฑ็ DAC(chmod / chown)ๆดๅดๆ ผ。
1.1 SELinux ไธๅ้ไฝๆจกๅผ
| ๆจกๅผ | ่ชชๆ |
|---|---|
| Enforcing | ๅผทๅถๅท่ก่ฆๅ,้ปๆ้่ฆ่ก็บ(้ ่จญ & ๆๅฎๅ จ) |
| Permissive | ไธ้ปๆ,ๅช่จ้้่ฆ่ก็บ(็จๆผ้ค้ฏ) |
| Disabled | ๅฎๅ จๅ็จ(ไธๅปบ่ญฐ) |
sestatus
1.2 ๅธธ่ฆ SELinux ๅ้ก:Permission denied(ไฝๆชๆกๆฌ้ๆญฃๅธธ)
ๆญคๆๅฏๆฅ:
ausearch -m avc -ts recent
1.3 SELinux ้กๅ(Type / Domain)
ๆฏๅ process ่ๆชๆก้ฝๆ「ๅฎๅ จไธไธๆ」:
ls -Z
ps -eZ
ไพๅญ:
- httpd_t(Apache)
- ssh_t
- var_log_t
1.4 ๅธธ่ฆไฟฎๅพฉๆนๅผ(้ๅธธ้่ฆ)
ไฟฎๅพฉ SELinux ๆชๆกๆจ็ฑค:
restorecon -Rv /var/www/html
ๅ ่จฑๆๅไฝฟ็จ็นๅฎ่ก็บ(Boolean):
setsebool -P httpd_can_network_connect on
๐ ็ฌฌไบ็ซ :AppArmor — ่ทฏๅพ็บไธญๅฟ็「่ผ้ๅฎๅ จๆกๆถ」
AppArmor ๆฏ Ubuntu / Debian ็ณป็ตฑ้ ่จญไฝฟ็จ็ๅฎๅ จๆกๆถ,ๅฎไธๅ SELinux ้ฃ้บผ่ค้,ไปฅ「ๆชๆก่ทฏๅพ」็บๆ ธๅฟ。
2.1 AppArmor Profiles ๆฆๅฟต
ๆฏๅๆ็จ็จๅผ้ฝๆ Profile,ๅ ๆฌ:
- ๅ ่จฑ่ฎๅฏซๅชไบๆชๆก
- ๅ ่จฑๅท่กๅชไบ System call
- ๅ ่จฑๅชไบ่ฝๅ(Capabilities)
2.2 ๆฅ็ Profile
aa-status
2.3 ๅฅ็จ Profile
aa-enforce /etc/apparmor.d/usr.sbin.nginx
2.4 AppArmor ่ SELinux ็ๅทฎ็ฐ
| ้ ็ฎ | SELinux | AppArmor |
|---|---|---|
| ๆงๅถๆจกๅ | ๅฎๅ จไธไธๆ(Context) | ่ทฏๅพ็บไธป(Profile) |
| ่ค้ๅบฆ | ่ผ้ซ | ่ผไฝ |
| ้จ็ฝฒ้ฃๅบฆ | ๅไธญ้ซ | ่ผๅฎนๆ |
| ้ ่จญ็ณป็ตฑ | RedHat / Rocky / Fedora | Ubuntu / Debian |
๐ ็ฌฌไธ็ซ :Auditd — ่ก็บ่ฟฝ่นค่ๅฎๅ จๅฏฉ่จ
Auditd ๆฏ Linux ็ๅฏฉ่จ(ๆฅ่ชๅตๆธฌ)ๆกๆถ,็จๆผ็ฃๆง:
- ๆชๆกๅญๅ
- ็ปๅ ฅ่ก็บ
- ็ณป็ตฑ่จญๅฎ่ฎๆด
- ๅฎๅ จไบไปถ
3.1 ๅๅ Auditd
systemctl enable --now auditd
3.2 ๅขๅ ไธๆข่งๅฏ่ฆๅ(็ฃๆง้่ฆๆชๆก)
auditctl -w /etc/passwd -p war -k passwd_changes
ไปฃ่กจ:
--w:็ฃๆง่ทฏๅพ
- -p:่ก็บ(write / read / attribute)
- -k:ไบไปถๅ็จฑ
3.3 ๆฅ่ฉขๅฏฉ่จ็ด้
ausearch -k passwd_changes
3.4 ๆฐธไน ่ฆๅ(/etc/audit/rules.d)
ๅฏซๅ ฅ่ฆๅๆชๅพ้ๅ auditd ๅณๅฏ。
๐ ็ฌฌๅ็ซ :Fail2Ban — ้ฒๆดๅ็ ด่งฃๆไฝณๅฉๅจ
Fail2Ban ๆ่ชๅ่ฎๅ log,่ฅ็ผ็พๆดๅ็ ด่งฃ่ก็บ,ๅฐฑๆ:
- ๅฐ IP ๅ ๅ ฅๅฐ้ - ไฝฟ็จ iptables / nftables ้ปๆ - ๆฏๆด SSH、Web、Mail、FTP、ๅค็จฎๆๅ - ๅฏ่ช่จ Filter ่ Jail4.1 ๅฎ่ฃ Fail2Ban
apt install fail2ban -y
ๆ
yum install fail2ban -y
4.2 ๅ็จ SSH ้ฒๆดๅ็ ด่งฃ
ๅปบ็ซ:/etc/fail2ban/jail.local
ๅ
งๅฎน:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 1h
4.3 ๆฅ็ๅฐ้่็ๆ
fail2ban-client status sshd
4.4 Web Server ้ฒ็ฆฆ็นไพ(ๅพๅธธ็จ)
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 3
๐ ็ฌฌไบ็ซ :ๅๅคงๆกๆถๅฆไฝๆญ้ ?(ๅฎๆดๅฎๅ จๆถๆง)
ไผๆฅญๅธธ็จๆญ้ ๆนๅผๅฆไธ:
✔ RedHat / Rocky / Oracle Linux:
- SELinux(ๆ ธๅฟ้ฒ่ญท)
- Auditd(ๅฏฉ่จ)
- Fail2Ban(ๆดๅ็ ด่งฃ้ฒ็ฆฆ)
✔ Ubuntu / Debian:
- AppArmor(้ ่จญ)
- Auditd(่ฟฝ่นค)
- Fail2Ban(ๅธธ็จ)
๐ ็ฌฌๅ ญ็ซ :ๆไฝณๅฏฆๅ(ไผๆฅญ้จ็ฝฒๅปบ่ญฐ)
- ๐ ๅฟ้้ SELinux,ๅปบ่ญฐไฝฟ็จ Permissive ๆพๅ้ก → ๅๅๅ Enforcing
- ๐ AppArmor Profile ไฟๆๆๅฐๆๆฌๅๅ(Least Privilege)
- ๐งช Auditd ๅฐๆๆๆชๆก่่จญๅฎๅ็ฃๆง(passwd / sudoers / SSH ่จญๅฎ)
- ๐ซ Fail2Ban ็ฃๆง SSH + Nginx + Postfix,ๆๅๅฏฆ้้ฒ่ญทๆๆ
- ๐ ๅฎๆ review ๅฎๅ จ Log(Audit + System Log)
๐ ็ต่ช
Linux ็ๅฎๅ จ้ ๆฏๆณๅไธญ็ๆดๅฎๆด:ๅพๆๅบๅฑค็ๅผทๅถๅญๅๆงๅถ(SELinux/AppArmor)、ๅฐๅฏฉ่จๆกๆถ(Auditd)、ๅๅฐๆดๅ็ ด่งฃ้ฒ็ฆฆ(Fail2Ban),ๅฝขๆๅคๅฑคๆฌกๅฎๅ จ้ฒ่ญท。 ๅช่ฆๅฆฅๅ่จญๅฎ,ๅฐฑ่ฝๅคงๅน ๆ้ซไผบๆๅจๅฎๅ จๆง,้ฟๅ ไธๅฟ ่ฆ็ๅ ฅไพต่่ชค็จ้ขจ้ช。
ไธไธ็ฏๅฐๆจๅบ: 《Linux ็ณป็ตฑๆปๆ้ข็ธฎๆธๆๅ:Sysctl、Kernel Hardening、SSH ้ ็ฝฎ、Firewall ๅ จ้ขๅ ๅบ》
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ