็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿ”ฅ Linux ๅฎ‰ๅ…จๅผทๅŒ–ๅฎŒๆ•ดๆŒ‡ๅ—:SELinux、AppArmor、Auditd、Fail2Ban ไธ€ๆฌกๆžๆ‡‚

    ๐Ÿ”ฅ 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 ไธŠ้‡้Žๅ“ชไบ›ๅ•้กŒ? ๆญก่ฟŽ็•™่จ€,ไธ€่ตทไบคๆตๆœ€ไฝณๅฏฆๅ‹™!

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš