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

๐Ÿ›ก️ Linux ็ณป็ตฑๅฎ‰ๅ…จๅฏฆๆˆฐ:SELinux、AppArmor、Auditd、Fail2Ban ๆทฑๅบฆ่งฃๆž

    ๐Ÿ›ก️ 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 ็š„ๅทฎ็•ฐ

    ้ …็›ฎSELinuxAppArmor
    ๆŽงๅˆถๆจกๅž‹ๅฎ‰ๅ…จไธŠไธ‹ๆ–‡(Context)่ทฏๅพ‘็‚บไธป(Profile)
    ่ค‡้›œๅบฆ่ผƒ้ซ˜่ผƒไฝŽ
    ้ƒจ็ฝฒ้›ฃๅบฆๅไธญ้ซ˜่ผƒๅฎนๆ˜“
    ้ ่จญ็ณป็ตฑRedHat / Rocky / FedoraUbuntu / 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 ่ˆ‡ Jail

    4.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 ๅ…จ้ขๅŠ ๅ›บ》


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

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

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

    ๅญ—็ดš