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

๐Ÿง Linux Auditd + SELinux ๅฏฆๅ‹™ๆ“ไฝœๅฎŒๆ•ดๆŒ‡ๅ—:็ณป็ตฑๅฏฉ่จˆ、ๅผทๅŒ–、็จฝๆ ธ่ˆ‡ๅฎ‰ๅ…จๆœ€ไฝณๅฏฆๅ‹™

    ๐Ÿง Linux Auditd + SELinux ๅฏฆๅ‹™ๆ“ไฝœๅฎŒๆ•ดๆŒ‡ๅ—:็ณป็ตฑๅฏฉ่จˆ、ๅผทๅŒ–、็จฝๆ ธ่ˆ‡ๅฎ‰ๅ…จๆœ€ไฝณๅฏฆๅ‹™

    Linux ็š„ๅฎ‰ๅ…จ่ƒฝๅŠ›ไธป่ฆไพ†่‡ชๅ…ฉๅคงๆ ธๅฟƒๅ…ƒไปถ:Auditd(็จฝๆ ธ็ณป็ตฑ) ่ˆ‡ SELinux(ๅผทๅˆถๅญ˜ๅ–ๆŽงๅˆถ MAC)。 ๅ…ฉ่€…็ตๅˆๅพŒๅฏไปฅๅฎŒๆ•ดๅšๅˆฐ:ไบ‹ไปถ่ฟฝ่นค、ๆฌŠ้™ๅผทๅŒ–、่ณ‡ๆ–™ไฟ่ญท、ๆ”ปๆ“Š่กŒ็‚บๅตๆธฌ、ๆ‡‰็”จ็จ‹ๅผ้™ๅˆถ่ˆ‡ๅฎ‰ๅ…จ็จฝๆ ธ。

    ๆœฌ็ฏ‡ๆไพ›ไธ€ไปฝ็œŸๆญฃๅฏฆๅ‹™็ดš(Production Ready)็š„ๅฎŒๆ•ดๆŒ‡ๅ—,ๅŒ…ๅซ Auditd ่ฆๅ‰‡่จญ่จˆ、SELinux Context ็ฎก็†、Policy ๅปบ็ซ‹、Troubleshooting、SIEM ๆ•ดๅˆ่ˆ‡ๅผทๅŒ–็ญ–็•ฅ。


    ๐Ÿ“Œ ไธ€、Auditd ๆ˜ฏไป€้บผ?ๆ ธๅฟƒๆžถๆง‹่ˆ‡็”จ้€”

    Auditd(Linux Auditing System)ๆ˜ฏไธ€ๅฅ— Kernel ๅฑค็ดš็š„ไบ‹ไปถ็จฝๆ ธ็ณป็ตฑ,ๅฏ่ฟฝ่นค:

    • ๆช”ๆกˆ่ฎ€ๅฏซ / ไฟฎๆ”น
    • ๆŒ‡ไปคๅŸท่กŒ(execve)
    • sudo ่กŒ็‚บ
    • ๅธณ่™Ÿ็™ปๅ…ฅ / ็ณป็ตฑ่จญๅฎš่ฎŠๆ›ด
    • ๅฎ‰ๅ…จ็›ธ้—œไบ‹ไปถ(ๅฏ†็ขผ、่ช่ญ‰、ๆฌŠ้™ไฟฎๆ”น)

    ๆ ธๅฟƒ็ต„ไปถ:

    ๅ…ƒไปถ่ชชๆ˜Ž
    auditdไธปๅฎˆ่ญท็จ‹ๅผ,่ฒ ่ฒฌๆŽฅๆ”ถ่ˆ‡ๅ„ฒๅญ˜ไบ‹ไปถ。
    auditctl่จญๅฎš่ˆ‡่‡จๆ™‚็ฎก็†็จฝๆ ธ่ฆๅ‰‡。
    ausearchๆœๅฐ‹็จฝๆ ธ็ด€้Œ„。
    aureport็”ข็”Ÿไบ‹ไปถ็ตฑ่จˆ่ˆ‡ๅ ฑ่กจ。

    ้ฉ็”จๅ ดๆ™ฏ:ไผๆฅญ่ณ‡ๅฎ‰、ๆ”ฟๅบœ็จฝๆ ธ、้‡‘่žๆฅญๆณ•้ต(Compliance)、็ณป็ตฑๅฎ‰ๅ…จ็›ฃๆŽง็ญ‰。


    ๐Ÿ“Œ ไบŒ、Auditd ๅฎ‰่ฃ、ๅ•Ÿๅ‹•่ˆ‡ๅŸบๆœฌ่จญๅฎš

    ๐ŸŸฆ ๅฎ‰่ฃ Auditd

    sudo apt install auditd audispd-plugins      # Ubuntu / Debian
    sudo yum install audit                        # CentOS / RHEL
    

    ๐ŸŸฆ ๅ•Ÿๅ‹• Auditd

    sudo systemctl enable --now auditd
    sudo systemctl status auditd
    

    ๐ŸŸฆ ๆŸฅ็œ‹็›ฎๅ‰่ฆๅ‰‡

    sudo auditctl -l
    

    Auditd ้ ่จญๅชๅ•Ÿ็”จๅŸบๆœฌ็จฝๆ ธ,่‹ฅ่ฆๅฎŒๆ•ด็›ฃๆŽง้œ€่‡ช่กŒๆ’ฐๅฏซ่ฆๅ‰‡。


    ๐Ÿ“Œ ไธ‰、Auditd ๅธธ็”จ็จฝๆ ธ่ฆๅ‰‡(ๅฎŒๆ•ด็ฏ„ไพ‹)

    1️⃣ ็›ฃๆŽง /etc/passwd ่ฎŠๆ›ด

    sudo auditctl -w /etc/passwd -p rwxa -k passwd_changes
    

    2️⃣ ็›ฃๆŽงๆ‰€ๆœ‰ๆŒ‡ไปคๅŸท่กŒ(execve)

    sudo auditctl -a exit,always -F arch=b64 -S execve -k exec_monitor
    

    3️⃣ ็›ฃๆŽง sudo ่กŒ็‚บ

    sudo auditctl -a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_actions
    

    4️⃣ ๅฏซๅ…ฅๆฐธไน…่ฆๅ‰‡:/etc/audit/rules.d/audit.rules

    -w /etc/passwd -p rwxa -k passwd_changes
    -a exit,always -F arch=b64 -S execve -k exec_monitor
    

    ๅฅ—็”จ่ฆๅ‰‡:

    sudo augenrules --load
    

    ๐Ÿ“Œ ๅ››、Auditd ๆ—ฅ่ชŒๆŸฅ่ฉข:ausearch / aureport

    ๐Ÿ” ๆœๅฐ‹้—œ้ตๅญ—ไบ‹ไปถ

    ausearch -k exec_monitor
    

    ๐Ÿ” ๆœๅฐ‹็‰นๅฎšไฝฟ็”จ่€…่กŒ็‚บ(UID)

    ausearch -ua 1000
    

    ๐Ÿ” ็”ข็”Ÿ็จฝๆ ธๅ ฑ่กจ

    aureport --summary
    aureport --exec --summary
    

    ๅฏ่ˆ‡ SIEM(ELK、Splunk)ๆ•ดๅˆ,ๅปบ็ซ‹็•ฐๅธธๅˆ†ๆž่ˆ‡ๆ”ปๆ“Šๅตๆธฌ。


    ๐Ÿ“Œ ไบ”、SELinux ไธ‰ๅคงๆจกๅผ:Enforcing / Permissive / Disabled

    ๆจกๅผ่ชชๆ˜Ž
    Enforcing้˜ปๆ“‹้•่ฆๆ“ไฝœ(ๆญฃๅผ็’ฐๅขƒๅฟ…็”จ)
    Permissiveไธ้˜ปๆ“‹ไฝ†่จ˜้Œ„้•่ฆ(่ชฟ่ฉฆ็”จ)
    DisabledๅฎŒๅ…จๅœ็”จ(ไธๅปบ่ญฐ)
    ๆชขๆŸฅๆจกๅผ:
    getenforce
    
    ๆฐธไน…่จญๅฎš:
    sudo nano /etc/selinux/config
    SELINUX=enforcing
    

    ๐Ÿ“Œ ๅ…ญ、SELinux Context ๆทฑๅบฆ่งฃๆž(Type ๆ˜ฏๆ ธๅฟƒ)

    Context ็”ฑๅ››้ƒจๅˆ†็ต„ๆˆ:

    ๆฌ„ไฝ่ชชๆ˜Ž
    UserSELinux User,ไธ็ญ‰ๆ–ผ Linux ็”จๆˆถ
    Role่ง’่‰ฒๆฌŠ้™ๆŽงๅˆถ
    Typeๆœ€้‡่ฆ!MAC ๆŽงๅˆถไพๆ“š
    Levelๅคšๅฑคๅฎ‰ๅ…จๆจ™็ฑค

    ๆŸฅ็œ‹ Context:

    ls -Z /var/www/html/index.html
    

    ๆญฃ็ขบ่จญๅฎš httpd ๆ–‡ไปถ Context:

    sudo chcon -t httpd_sys_content_t /var/www/html/index.html
    
    ๆฐธไน…ไฟฎๆญฃ:
    sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
    sudo restorecon -Rv /var/www/html
    

    ๐Ÿ“Œ ไธƒ、SELinux Troubleshooting(ๆŽ’้Œฏๆต็จ‹)

    ๐Ÿ”Ž ๆŸฅ็œ‹ AVC ๆ‹’็ต•ไบ‹ไปถ

    sudo ausearch -m avc
    

    ๐Ÿ”ง ่‡ชๅ‹•ไฟฎๆญฃ็ญ–็•ฅ audit2allow

    sudo grep AVC /var/log/audit/audit.log | audit2allow -M myfix
    sudo semodule -i myfix.pp
    

    ๆณจๆ„:audit2allow ๆœƒ「่‡ชๅ‹•็”Ÿๆˆๅ…่จฑ็ญ–็•ฅ」,่ซ‹ๅ‹™ๅฟ…ๅ…ˆ็ขบ่ชๆ˜ฏๅฆๅˆ็†,้ฟๅ…้€ ๆˆๅฎ‰ๅ…จๆ€งไธ‹้™。


    ๐Ÿ“Œ ๅ…ซ、Auditd + SELinux ็ณป็ตฑๅผทๅŒ–ๅฏฆๅ‹™ๆŒ‡ๅ—

    • Web ๆœๅ‹™ๅฟ…้ ˆๅฅ—็”จ httpd_sys_content_t / httpd_sys_rw_content_t
    • ๆ‰€ๆœ‰็ฎก็†ๅ‹•ไฝœ(sudo, passwd)ๆ‡‰ๅŠ ๅˆฐ Auditd ่ฆๅ‰‡
    • ๅœจ Enforcing ๅ‰ๅ…ˆไปฅ Permissive ่’้›†ๆ—ฅ่ชŒ
    • Auditd ๆ—ฅ่ชŒๅปบ่ญฐ้€่‡ณ SIEM ๅšๅˆ†ๆž
    • ไธ่ฆ้šจๆ„้—œ้–‰ SELinux(้ซ˜้ขจ้šช)

    ๐Ÿ“Œ ไน、ๆœ€ไฝณๅฏฆๅ‹™่ˆ‡ๅธธ่ฆ‹้Œฏ่ชค

    ❌ ้Œฏ่ชค 1:้‡ๅˆฐ้Œฏ่ชคๅฐฑ setenforce 0

    ้€™ๆœƒ็›ดๆŽฅๆ”พๆฃ„ MAC ้˜ฒ่ญท。

    ❌ ้Œฏ่ชค 2:audit2allow ็”Ÿๆˆ็š„็ญ–็•ฅๆฒ’ๅฏฉๆŸฅๅฐฑๅฅ—็”จ

    ๅฏ่ƒฝ้€ ๆˆๆŸไบ›ๆ‡‰็”จ็จ‹ๅผ็ฒๅพ—้ŽๅบฆๆฌŠ้™。

    ✔ ๆญฃ็ขบๅšๆณ•

    • ๅ…ˆๆŸฅ็œ‹ AVC ่จŠๆฏ,ๅ†ๆฑบๅฎšๆ˜ฏๅฆ้–‹ๆ”พ
    • ้‡ๅฐ็‰นๅฎšๆ‡‰็”จๅปบ็ซ‹ๆœ€ๅฐ็ญ–็•ฅ(Least Privilege)
    • Auditd ่ฆๅ‰‡ๆŽกๅ›บๅฎšๅˆ†้กžๆ–นไพฟ SIEM ่™•็†

    ๐Ÿ”Ž ๅ、ๅธธ่ฆ‹ FAQ

    Q1. Auditd ่ˆ‡ SELinux ๆ˜ฏๅฆๅปบ่ญฐไธ€่ตทไฝฟ็”จ?

    ๆ˜ฏ。Auditd ๅš็จฝๆ ธ,SELinux ๅšๅญ˜ๅ–ๆŽงๅˆถ,ๅ…ฉ่€…ไบ’่ฃœๆง‹ๆˆๅฎŒๆ•ดๅฎ‰ๅ…จๆžถๆง‹。

    Q2. ไป€้บผๆƒ…ๆณ้œ€่ฆ audit2allow?

    ็•ถๆ‡‰็”จ็จ‹ๅผๅˆๆณ•ๆ“ไฝœ่ขซ้˜ปๆ“‹ๆ™‚,ไพ‹ๅฆ‚ Web App ้œ€่ฆๅฏซๅ…ฅ่ณ‡ๆ–™ๅคพ。

    Q3. SELinux ๅฏไปฅ้—œ้–‰ๅ—Ž?

    ๅฏไปฅ,ไฝ†ไธๅปบ่ญฐ。้—œ้–‰ๅพŒๅฐฑๅฐ‘ไบ†ๆœ€้‡่ฆ็š„ MAC ๅฑคๅฎ‰ๅ…จ。


    ๐Ÿ”— ๅปถไผธ้–ฑ่ฎ€

    ๐Ÿ’ฌ ๆญก่ฟŽๅœจไธ‹ๆ–น็•™่จ€ไบคๆต!

    ๅฐ Auditd、SELinux ๆˆ– Linux ๅฎ‰ๅ…จๅผทๅŒ–ๆœ‰็–‘ๅ•ๅ—Ž?ๆญก่ฟŽ็•™่จ€่จŽ่ซ–!

    — WWFandy・Linux Security ๅฏฆๅ‹™็ญ†่จ˜

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

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

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

    ๅญ—็ดš