๐งฐ Linux PAM ่ sudo ๆฌ้ๅฎๅ จๆง็ฎกๆๅ
ๅจ Linux ็ณป็ตฑไธญ,PAM(Pluggable Authentication Modules)่ sudo ๆฏ็ถญ้ไบบๅกๆๅธธๆฅ่งธ็ๅฎๅ จๆง็ฎกๆฉๅถ。้้้ๆดป็ๆจก็ตๅ้ฉ่ญๆถๆง่็ดฐ็ทป็ๆฌ้่จญๅฎ,ๆๅ่ฝๆๆ้ไฝ่ชค็จ่ๅ ฅไพต้ขจ้ช,ๅปบ็ซๅฎๅ จๅๅฝๆง็็ฎก็็ฐๅข。
๐ ไธ、PAM ๆฏไป้บผ?
PAM(ๅฏๆๅ ฅๅผ้ฉ่ญๆจก็ต)ๆฏ Linux ็ๆ ธๅฟๅฎๅ จๆกๆถ,็จๆผ็ตฑไธ็ฎก็ไฝฟ็จ่ ็ปๅ ฅ、่ช่ญ、ๅฏ็ขผ็ญ็ฅ่ๅธณ่้ๅฎ็ญๅไฝ。ๅๆๅ(ๅฆ SSH、su、login)็้้ PAM ้ฒ่ก่บซๅ้ฉ่ญ。
PAM ่จญๅฎๆชไฝ็ฝฎ:
/etc/pam.d/
├── login
├── sshd
├── su
├── sudo
└── system-auth
ๆฏๅๆๅ้ฝๅฏไฝฟ็จไธๅ PAM ๆจก็ตๆงๅถ็ปๅ
ฅ่ก็บ,ๅฆ pam_unix.so、pam_tally2.so、pam_faillock.so。
๐งฉ ไบ、PAM ้ฉ่ญๆต็จ่งฃๆ
ไปฅ sshd ็บไพ,็ปๅ
ฅๆๆไพๅบๅท่กไปฅไธๆจก็ต:
- auth:ไฝฟ็จ่ ่บซไปฝ้ฉ่ญ。
- account:ๅธณ่็ๆ ่ๅฐๆๆชขๆฅ。
- password:ๅฏ็ขผ่ฎๆด่ฆ็ฏ。
- session:็ปๅ ฅ่็ปๅบ้ๆฎตๅไฝ。
็ฏไพ่จญๅฎ(/etc/pam.d/sshd):
auth required pam_sepermit.so
auth substack password-auth
account required pam_nologin.so
session required pam_selinux.so close
session required pam_loginuid.so
---
๐ ไธ、ๅธณ่้ๅฎ่็ปๅ ฅๆฌกๆธ้ๅถ
ไฝฟ็จ pam_faillock ๆจก็ตๅฏ้ฒๆญขๆดๅ็ ด่งฃ็ปๅ
ฅ:
auth required pam_faillock.so preauth silent deny=3 unlock_time=300
auth [default=die] pam_faillock.so authfail
account required pam_faillock.so
้ไปฃ่กจ:้ฃ็บ 3 ๆฌก็ปๅ ฅๅคฑๆๆ้ๅฎๅธณ่ 5 ๅ้。 ๅฏ็จไธๅๆไปคๆฅ่ฉข้ๅฎ็ๆ :
pam_tally2 --user username
faillock --user username
---
๐งฑ ๅ、sudo ๆฌ้ๆง็ฎกๅๅ
sudo ่ฎไธ่ฌไฝฟ็จ่
ไปฅๅ้ๆนๅผๅท่ก็ฎก็ๅกๆไปค,ๆฏๆ้่ฆ็ๆฌ้็ฎก็ๅทฅๅ
ท。
็ทจ่ผฏ sudoers:
sudo visudo
ๅธธ่ฆ่จญๅฎ็ฏไพ:
# ๅ
่จฑ user1 ไฝฟ็จ root ๆฌ้ๅท่กๆๆๆไปค
user1 ALL=(ALL) ALL
# ้ๅถ group admin ๅช่ฝ้ๅๆๅ
%admin ALL=(ALL) /bin/systemctl restart *
# ็ฆๆญข็นๅฎๆไปค
user2 ALL=(ALL) ALL, !/bin/rm
ๆฅ็็ฎๅไฝฟ็จ่ ็ sudo ๆฌ้:
sudo -l
---
๐ง ไบ、ๆๅ sudo ่ PAM ็ๅฎๅ จๅฑค็ด
- ไฝฟ็จ visudo ็ทจ่ผฏ,้ฟๅ ่ชๆณ้ฏ่ชคๅฐ่ด้ๆญป。
- ๅจ PAM ไธญๆดๅ
pam_faillock.soไปฅ้ๅถ sudo ็ปๅ ฅๆฌกๆธ。 - ้ๅ sudo ๆฅ่ช:ๅจ
/etc/sudoersๅ ๅ ฅDefaults logfile="/var/log/sudo.log" - ๅปบ่ญฐๆญ้ auditd ๆ Rsyslog ๆถ้ sudo ไฝฟ็จ็ด้。
๐ก ๅ ญ、่็ณป็ตฑๅฎๅ จๆจก็ตๆดๅ(Fail2Ban / Rsyslog)
ๅฐ sudo ่ PAM ้ๅฎไบไปถๅฐๅ ฅ Rsyslog,ๅฏๆญ้ Fail2Ban ้ฒ่ก้ฒ่ญท:
# /etc/rsyslog.d/sudo.conf
if $programname == 'sudo' then /var/log/sudo.log
& stop
Fail2Ban ๅฏ้้ /etc/fail2ban/filter.d/sudo.conf ๅตๆธฌๅฏ็ sudo ๅ่ฉฆ,่ชๅๅฐ้ IP。
๐ ็ต่ช
PAM ่ sudo ๆฏ Linux ๆฌ้ๅฎๅ จ็ๅ ฉๅคงๆฏๆฑ。ๅฆฅๅ้็จ้ไบๆจก็ต,ๅฏ้ฒๆญขๆดๅ็ปๅ ฅ、ๆฌ้ๆฟซ็จ่ๆช็ถๆๆฌๆไฝ。ๅปบ่ญฐๅฎๆๆชขๆฅ PAM ่จญๅฎ่ sudo ๆฅ่ช,ๆญ้ Fail2Ban、Rsyslog ็ญ็ฃๆงๅทฅๅ ท,ๅณ่ฝๆง็ฏ็ฉฉๅบ็ๅคๅฑค้ฒ่ญท้ซ็ณป。
๐ ๅปถไผธ้ฑ่ฎ
- ๐งฑ Linux Firewall + Fail2Ban ๅฎๅ จๅผทๅ่่ชๅๅฐ้่จญๅฎ
- ๐งฑ Linux Rsyslog ้ไธญๆฅ่ช็ฎก็่ๅๆๆๅญธ
- ๐งฉ Linux systemd ๆทฑๅ ฅ่งฃๆ่ๅๅๆต็จ็ฎก็
— WWFandy・็ณป็ตฑ็ถญ้็ญ่จ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ