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

๐Ÿง Linux SELinux ไป‹็ดน่ˆ‡ๅฏฆๅ‹™ๆ•™ๅญธ(ๅฎ‰ๅ…จๆ€งๅผทๅŒ–ๅŸบ็คŽ)

    ๐Ÿง Linux SELinux ไป‹็ดน่ˆ‡ๅฏฆๅ‹™ๆ•™ๅญธ(ๅฎ‰ๅ…จๆ€งๅผทๅŒ–ๅŸบ็คŽ)

    ๅœจไผๆฅญ็ดš Linux ็™ผ่กŒ็‰ˆ(ๅฆ‚ Red Hat / Rocky / CentOS)ไธญ,SELinux(Security-Enhanced Linux) ๆ˜ฏๆ ธๅฟƒๅฎ‰ๅ…จๆžถๆง‹ไน‹ไธ€,่ฒ ่ฒฌ้™ๅˆถ็จ‹ๅบ่ˆ‡่ณ‡ๆบ้–“็š„ๅญ˜ๅ–ๆฌŠ้™。 ๆœฌๆ–‡ๅฐ‡ๅพžๅŽŸ็†、ๆจกๅผ่จญๅฎš、ๆ—ฅ่ชŒ่ง€ๅฏŸๅˆฐๆ•…้šœๆŽ’้™ค,ๅธถไฝ ๅ…จ้ข็†่งฃ้€™้ …ๅผทๅคง็š„ๅฎ‰ๅ…จๆฉŸๅˆถ。

    ๐Ÿ” ไธ€、ไป€้บผๆ˜ฏ SELinux?

    SELinux ๆ˜ฏ็”ฑ NSA(็พŽๅœ‹ๅœ‹ๅฎ‰ๅฑ€) ้–‹็™ผ็š„ๅญ˜ๅ–ๆŽงๅˆถๆฉŸๅˆถ,ๆŽก็”จ Mandatory Access Control(MAC), ไธๅŒๆ–ผๅ‚ณ็ตฑ Discretionary Access Control(DAC) ๅชไพ้ ๆช”ๆกˆๆ“ๆœ‰่€…่จญๅฎšๆฌŠ้™, SELinux ๆ›ดๅšดๆ ผๅœฐๆ นๆ“š「็จ‹ๅบ้กžๅž‹(Type)」่ˆ‡「ๅฎ‰ๅ…จไธŠไธ‹ๆ–‡(Context)」ไพ†ๅˆคๆ–ทๆ˜ฏๅฆๅ…่จฑ่กŒ็‚บ。

    # ๆŸฅ็œ‹็ณป็ตฑๆ˜ฏๅฆๅ•Ÿ็”จ SELinux
    getenforce        # Enforcing / Permissive / Disabled
    sestatus          # ้กฏ็คบๅฎŒๆ•ด็‹€ๆ…‹
    cat /etc/selinux/config

    ⚙️ ไบŒ、SELinux ๆจกๅผ่ˆ‡็”จ้€”

    • Enforcing:ๅ•Ÿ็”จไธฆๅผทๅˆถๅŸท่กŒๅฎ‰ๅ…จ็ญ–็•ฅ(ๅปบ่ญฐ้ ่จญ)。
    • Permissive:ๅƒ…่จ˜้Œ„้•่ฆ่กŒ็‚บ,ไธ้˜ปๆ“‹(็”จๆ–ผๆธฌ่ฉฆ)。
    • Disabled:ๅฎŒๅ…จๅœ็”จ(้‡ๅ•ŸๅพŒ็”Ÿๆ•ˆ)。
    # ่‡จๆ™‚ๅˆ‡ๆ›ๆจกๅผ(้‡้–‹ๆฉŸๅพŒๅคฑๆ•ˆ)
    sudo setenforce 0    # ๆ”น็‚บ Permissive
    sudo setenforce 1    # ๆ”น็‚บ Enforcing
    
    # ๆฐธไน…่จญๅฎš(้œ€้‡ๅ•Ÿ)
    sudo vi /etc/selinux/config
    SELINUX=enforcing

    ๐Ÿงฉ ไธ‰、ๅฎ‰ๅ…จไธŠไธ‹ๆ–‡(Security Context)็ตๆง‹

    ๆฏๅ€‹ๆช”ๆกˆ、็จ‹ๅบ、Port ้ƒฝๆœ‰ๅฐๆ‡‰็š„ SELinux Context,ไปฅๅ››ๆฎต่กจ็คบ:

    user:role:type:level

    ไพ‹ๅฆ‚:

    system_u:object_r:httpd_sys_content_t:s0
    • user:SELinux ไฝฟ็”จ่€…่บซๅˆ†。
    • role:่ง’่‰ฒ(ไพ‹ๅฆ‚ system_r ่กจ็ณป็ตฑ่ง’่‰ฒ)。
    • type:ๆœ€้‡่ฆ็š„้ƒจๅˆ†,ๆŽงๅˆถๅ“ชไบ›็จ‹ๅบๅฏๅญ˜ๅ–。
    • level:ๅฎ‰ๅ…จ็ญ‰็ดš(ๅคš็”จๆ–ผ MLS/MCS)。
    # ๆŸฅ็œ‹ๆช”ๆกˆ Context
    ls -Z /var/www/html
    
    # ๆŸฅ็œ‹็จ‹ๅบ Context
    ps -eZ | grep httpd

    ๐Ÿง  ๅ››、ๅธธ่ฆ‹ๅ•้กŒ่ˆ‡ไฟฎๅพฉ

    • HTTPD ็„กๆณ•ๅญ˜ๅ–็›ฎ้Œ„:Context ้Œฏ่ชคๅฐŽ่‡ด。
    • sudo restorecon -Rv /var/www/html
    • ๆ–ฐๅขž่‡ช่จ‚็›ฎ้Œ„ๆไพ› Web:้œ€่จญๅฎšๆจ™็ฑค。
    • sudo semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"
      sudo restorecon -Rv /srv/www
    • ๆชข่ฆ–้˜ปๆ“‹ๆ—ฅ่ชŒ:
    • sudo ausearch -m AVC,USER_AVC -ts recent
      sudo journalctl -t setroubleshoot

    ๐Ÿงฐ ไบ”、SELinux ่ˆ‡ๅธธ่ฆ‹ๆœๅ‹™ๆ•ดๅˆ

    ๆœๅ‹™ๅธธ่ฆ‹ๅธƒๆž—ๅ€ผ่จญๅฎšๆŒ‡ไปค
    HTTPDๅ…่จฑ้€ฃๅค–setsebool -P httpd_can_network_connect 1
    FTPๅ…่จฑไธŠๅ‚ณsetsebool -P ftp_home_dir 1
    Sambaๅ…่จฑๅ…ฑไบซๅฎถ็›ฎ้Œ„setsebool -P samba_enable_home_dirs 1

    ๐Ÿ“Š ๅ…ญ、ๅฏฆๅ‹™่ง€ๅฏŸ่ˆ‡ๅปบ่ญฐ

    • ๅˆๆฌกๅปบ็ฝฎๆ–ฐๆœๅ‹™ๆ™‚,ๅ…ˆ่ง€ๅฏŸ /var/log/audit/audit.log ๆ˜ฏๅฆๆœ‰ๆ‹’็ต•็ด€้Œ„。
    • ๅ–„็”จ setroubleshoot ๅทฅๅ…ทๆไพ›ไฟฎๆญฃๅปบ่ญฐ。
    • ้ฟๅ…็›ดๆŽฅๅœ็”จ SELinux,่€Œๆ˜ฏ้‡ๅฐ็‰นๅฎšๆœๅ‹™้–‹ๆ”พๅฐๆ‡‰ๅธƒๆž—ๅ€ผ。

    ๐Ÿ“˜ ็ต่ชž

    SELinux ไธฆ้ž้˜ป็ค™,่€Œๆ˜ฏ้˜ฒๆญข「็ณป็ตฑ่ขซ่ชค็”จ」็š„ๅฎˆ่ญท่€…。 ๆŽŒๆกๅ…ถ้‹ไฝœ้‚่ผฏ่ˆ‡ๅธธ่ฆ‹่จญๅฎšๅพŒ,ไฝ ๅฐ‡่ƒฝ่ฎ“ Linux ไผบๆœๅ™จๅŒๆ™‚ๅ…ผๅ…ท ็ฉฉๅฎš่ˆ‡ๅฎ‰ๅ…จ。 ๅปบ่ญฐ่ˆ‡ systemd、Fail2Ban ็ญ‰ๅฎ‰ๅ…จๆจก็ต„ไธ€ๅŒไฝฟ็”จ,ๅฝขๆˆๅคšๅฑค้˜ฒ่ญท。


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

    — WWFandy・็ณป็ตฑ่ˆ‡็ถฒ่ทฏ็ญ†่จ˜

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

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

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

    ๅญ—็ดš