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

๐Ÿงฉ Linux ๅฎ‰ๅ…จๅผทๅŒ–ๅฏฆๆˆฐ:Firewalld、SELinux ่ˆ‡ Fail2Ban ๆ•ดๅˆๆŒ‡ๅ—

    ๐Ÿงฉ Linux ๅฎ‰ๅ…จๅผทๅŒ–ๅฏฆๆˆฐ:Firewalld、SELinux ่ˆ‡ Fail2Ban ๆ•ดๅˆๆŒ‡ๅ—

    ๅœจไผๆฅญ็ดš Linux ็’ฐๅขƒไธญ,ๅฎ‰ๅ…จ้˜ฒ่ญทไธๆ‡‰ๅช้ ๅ–ฎไธ€ๆฉŸๅˆถ。 ๆœฌ็ฏ‡ๅฐ‡ๅพž FirewalldSELinux ่ˆ‡ Fail2Ban ไธ‰่€…็š„ๅ”ๅŒ้‹ไฝœๅ‡บ็™ผ, ๅธถไฝ ไธ€ๆญฅๆญฅๅปบ็ซ‹ๅคšๅฑค้˜ฒ็ฆฆๆžถๆง‹,ๅ…ผ้กงๅ‹•ๆ…‹ๅฐ้Ž–、ๆฌŠ้™้š”้›ข่ˆ‡ๆœๅ‹™ๆŒ็บŒ้‹่กŒ。

    ๐Ÿ“˜ ไธ€、Firewalld:ๅ€ๅŸŸๅŒ–้˜ฒ็ซ็‰†็ฎก็†

    Firewalld ๆ˜ฏ RHEL / CentOS / Rocky ็š„้ ่จญ้˜ฒ็ซ็‰†ๆก†ๆžถ, ไปฅ「zone」็‚บๆ ธๅฟƒๆฆ‚ๅฟต,่ƒฝ้‡ๅฐไธๅŒไป‹้ขๆˆ–ๆœๅ‹™่จญๅฎšๅฎ‰ๅ…จๅฑค็ดš。

    # ๆชขๆŸฅ็•ถๅ‰ zone ่ˆ‡ๅ•Ÿ็”จ็‹€ๆ…‹
    sudo firewall-cmd --get-active-zones
    sudo firewall-cmd --get-default-zone
    
    # ๆ–ฐๅขžๆœๅ‹™ๅ…่จฑ
    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --add-service=ssh --permanent
    
    # ้‡ๆ–ฐ่ผ‰ๅ…ฅ่จญๅฎš
    sudo firewall-cmd --reload
    
    # ่‡ช่จ‚ port ็ฏ„ไพ‹
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
      
    ๐Ÿ’ก ๅปบ่ญฐ:็‚บไธๅŒไป‹้ขๅˆ†้…ๅฐˆๅฑฌ zone(ๅฆ‚:ๅค–็ถฒ public、ๅ…ง็ถฒ internal), ไธฆๅœจ /etc/firewalld/zones/ ไธ‹ๆŒไน…ๅŒ–่‡ช่จ‚ XML ้…็ฝฎ。

    ๐Ÿ” ไบŒ、SELinux:ๆฌŠ้™้š”้›ข่ˆ‡้˜ฒ็ฏ„ๅ…ง้ƒจๅ…ฅไพต

    SELinux(Security-Enhanced Linux)้€้Žๅฎ‰ๅ…จไธŠไธ‹ๆ–‡ๆŽงๅˆถ็จ‹ๅบ่ˆ‡ๆช”ๆกˆๅญ˜ๅ–, ๆœ‰ๆ•ˆ้˜ปๆญขๆœๅ‹™่ขซๆๆฌŠๆˆ–็ซ„ๆ”น。้›–็„ถ่จฑๅคšไฝฟ็”จ่€…้ธๆ“‡้—œ้–‰ๅฎƒ,ไฝ†ๆญฃ็ขบ่จญๅฎš่ƒฝๆฅตๅคงๅŒ–็ณป็ตฑ้˜ฒ่ญท。

    # ๆŸฅ็œ‹็•ถๅ‰ๆจกๅผ
    getenforce
    # ๆฐธไน…ไฟฎๆ”น็‚บ enforcing
    sudo setenforce 1
    sudo vi /etc/selinux/config
    SELINUX=enforcing
    
    # ๆŸฅ่ฉข่ขซๅฐ้Ž–็š„ๆ“ไฝœ่จ˜้Œ„
    sudo ausearch -m avc -ts recent
    sudo sealert -a /var/log/audit/audit.log
      

    ่‹ฅๆ‡‰็”จๅ›  SELinux ๅฐ้Ž–่€Œๅคฑๆ•ˆ,ๅฏๅˆฉ็”จ audit2allow ่‡ชๅ‹•็”Ÿๆˆๅ…่จฑ่ฆๅ‰‡:

    sudo cat /var/log/audit/audit.log | audit2allow -M mypolicy
    sudo semodule -i mypolicy.pp
      

    ๐Ÿงฑ ไธ‰、Fail2Ban ๆ•ดๅˆ Firewalld ๅ‹•ๆ…‹้˜ฒ่ญท

    ้€้Ž action ่…ณๆœฌ,Fail2Ban ๅฏ่ˆ‡ Firewalld ๅ‹•ๆ…‹ๆ•ดๅˆ,้”ๆˆๅณๆ™‚ๅฐ้Ž–่ˆ‡่‡ชๅ‹•่งฃๅฐ。

    # ็ทจ่ผฏ jail.local(ๅƒ…็คบๆ„)
    [sshd]
    enabled = true
    filter  = sshd
    action  = firewallcmd-ipset
    logpath = /var/log/secure
    maxretry = 5
    bantime  = 900
      

    ๆชขๆŸฅๆ•ดๅˆ็‹€ๆ…‹:

    sudo fail2ban-client status
    sudo firewall-cmd --info-ipset=fail2ban-sshd
      
    ๐Ÿ”Ž ่ชชๆ˜Ž:
    • firewallcmd-ipset ๆœƒๅปบ็ซ‹ๅ‹•ๆ…‹ IP ้›†ๅˆ(ipset),ไธฆ็”ฑ Firewalld ๆŽฅ็ฎกๅฐ้Ž–。
    • ๅฐ้Ž–่ฆๅ‰‡ไธๆœƒๅœจ reboot ๅพŒ้บๅคฑ,็ขบไฟๆŒ็บŒ้˜ฒ่ญท。

    ⚙️ ๅ››、ไธ‰่€…ๆ•ดๅˆๆžถๆง‹็คบๆ„

    • Firewalld:้œๆ…‹้˜ฒ่ญท(้ ่จญ zone、ๆœๅ‹™ๅ…่จฑ)。
    • Fail2Ban:ๅ‹•ๆ…‹ๅฐ้Ž–(ๅณๆ™‚ๅๆ‡‰็•ฐๅธธ่กŒ็‚บ)。
    • SELinux:ๅ…งๅฑคๅผทๅˆถๆŽง็ฎก(้˜ฒๆญข็จ‹ๅผ่ถŠๆฌŠ)。
    [ๅค–้ƒจๆ”ปๆ“Š] → Firewalld → Fail2Ban(่‡ชๅ‹•ๅฐ้Ž– IP)
                          ↓
                   SELinux(้˜ฒๆญขๆๆฌŠ)
                          ↓
                   systemd(็ฉฉๅฎš้‹ไฝœ)
      

    ๐Ÿงญ ไบ”、่กŒๅ‹•ๆธ…ๅ–ฎ

    ✅ ็ขบ่ช Firewalld zone ่ˆ‡ๆœๅ‹™้…็ฝฎๆญฃ็ขบ
    ✅ ๅ•Ÿ็”จ SELinux ไธฆไฝฟ็”จ audit2allow ่™•็†่ชคๅฐ
    ✅ ๆ–ผ Fail2Ban action ไธญๅ•Ÿ็”จ firewallcmd-ipset
    ✅ ้ฉ—่ญ‰ๅฐ้Ž– IP ๆ˜ฏๅฆๅŒๆญฅๅๆ˜ ๆ–ผ ipset
    ✅ ๅปบ็ซ‹ๆฏๆ—ฅๅฐ้Ž–ๅ ฑๅ‘Š(crontab + fail2ban-client)
      

    ๐Ÿ“˜ ็ต่ชž

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


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

    — WWFandy・Linux ๅฎ‰ๅ…จๅผทๅŒ–็ญ†่จ˜

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

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

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

    ๅญ—็ดš