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

๐Ÿง Linux SSH ๅฎ‰ๅ…จๅผทๅŒ–ๆŒ‡ๅ—:้‡‘้‘ฐ็™ปๅ…ฅ、Port ่ฝ‰็งป่ˆ‡ Fail2Ban ๆ•ดๅˆ

    ๐Ÿง Linux SSH ๅฎ‰ๅ…จๅผทๅŒ–ๆŒ‡ๅ—:้‡‘้‘ฐ็™ปๅ…ฅ、Port ่ฝ‰็งป่ˆ‡ Fail2Ban ๆ•ดๅˆ

    ๅช่ฆไธ€ๅฐ Linux ไผบๆœๅ™จๅฐๅค–้–‹ๆ”พ SSH,ๅนพไนŽๅฏไปฅไฟ่ญ‰: ไธๅˆฐๅนพๅˆ†้˜,log ่ฃกๅฐฑๆœƒ้–‹ๅง‹ๅ‡บ็พไพ†่‡ชไธ–็•Œๅ„ๅœฐ็š„ๆšดๅŠ›็ ด่งฃๅ˜—่ฉฆ。 ๆ”ปๆ“Š่€…ไธไธ€ๅฎš้Ž–ๅฎšไฝ ,ไฝ†「ๆŽƒๆ 22 port、ไบ‚่ฉฆๅธณ่™Ÿๅฏ†็ขผ」ๆ—ฉๅทฒๆ˜ฏ่ƒŒๆ™ฏๅ™ช้Ÿณ。

    ๆœฌ็ฏ‡ไปฅๅฏฆๅ‹™่ง’ๅบฆ,ๆ•ด็†ไธ€ๅฅ— ๅฏ่ค‡่ฃฝ็š„ SSH ๅฎ‰ๅ…จๅŸบๆบ–(Baseline), ไธป่ฆ็›ฎๆจ™ๅŒ…ๆ‹ฌ:

    • ๆ”น็”จ SSH ้‡‘้‘ฐ็™ปๅ…ฅ,้™ไฝŽๅฏ†็ขผ่ขซ็Œœไธญ็š„้ขจ้šช。
    • ่ชฟๆ•ด Port、ๅ…่จฑๅธณ่™Ÿ、ไพ†ๆบ IP,ๆธ›ๅฐ‘่ขซๆŽƒๆ่ˆ‡่ชค็”จ。
    • ้€้Ž Fail2Ban ่‡ชๅ‹•ๅฐ้Ž–ๆšดๅŠ›็ ด่งฃ IP
    • ๆญ้… sshd_config ็š„ๅ„็จฎ็ดฐ็ฏ€,ๅฝขๅก‘ไธ€ๅฅ—ๅฏ้‡่ค‡ๅฅ—็”จ็š„ๅฎ‰ๅ…จ้…็ฝฎ。

    ไธ€、ๅŸบๆœฌ่ง€ๅฟต:SSH、sshd ่ˆ‡่จญๅฎšๆช”ไฝ็ฝฎ

    ๅ…ˆ้‡ๆธ…ๅนพๅ€‹ๅ่ฉž:

    • SSH Client(ssh):ไฝ ็”จไพ†้€ฃ็ทšๅˆฐไผบๆœๅ™จ็š„็จ‹ๅผ。
    • SSH Server(sshd):ไผบๆœๅ™จ็ซฏๅฎˆ่ญท็จ‹ๅผ,่ฒ ่ฒฌๆŽฅๅ—้€ฃ็ทš。
    • OpenSSH:ๆœ€ๅธธ่ฆ‹็š„ SSH ๅฏฆไฝœ,ๅคง้ƒจๅˆ† Linux ็™ผ่กŒ็‰ˆ้ ่จญๆŽก็”จ。

    ๅธธ่ฆ‹่จญๅฎšๆช”ไฝ็ฝฎ:

    • /etc/ssh/sshd_config:ไผบๆœๅ™จ็ซฏ(sshd)็š„ไธป่จญๅฎšๆช”。
    • ~/.ssh/:ๅ„ไฝฟ็”จ่€…ๆœฌๆฉŸ็š„ SSH ่จญๅฎš่ˆ‡้‡‘้‘ฐ。
    • ~/.ssh/authorized_keys:ไผบๆœๅ™จ็ซฏ่จ˜้Œ„「ๅ…่จฑ็™ปๅ…ฅ็š„ๅ…ฌ้‘ฐ」。

    ไฟฎๆ”น sshd_config ๅพŒ,่จ˜ๅพ—:

    sudo sshd -t          # ๆชขๆŸฅ่จญๅฎšๆช”่ชžๆณ•
    sudo systemctl reload sshd   # ๆˆ– ssh,ไพ็™ผ่กŒ็‰ˆๆœๅ‹™ๅ็จฑ

    ๅœจ้ ็ซฏๆ”น่จญๅฎšๆ™‚,ๅ‹™ๅฟ…ไฟ็•™่ˆŠ้€ฃ็ทš่ฆ–็ช—ไธ่ฆ้—œ้–‰,ๅ…ˆ้–‹็ฌฌไบŒๅ€‹ SSH ๆธฌ่ฉฆๆ–ฐ่จญๅฎš,็ขบ่ชๅฏ็”จๅ†้€€ๅ‡บ่ˆŠ้€ฃ็ทš。


    ไบŒ、SSH ้‡‘้‘ฐ็™ปๅ…ฅ:ๅพžๅฏ†็ขผๅˆฐๅ…ฌ้‘ฐ้ฉ—่ญ‰

    SSH ้‡‘้‘ฐ็™ปๅ…ฅๅˆฉ็”จ「้žๅฐ็จฑๅŠ ๅฏ†」:

    • ๆœฌๆฉŸไฟๅญ˜็ง้‘ฐ(id_ed25519id_rsa)。
    • ไผบๆœๅ™จไฟๅญ˜ๅ…ฌ้‘ฐ(authorized_keys)。
    • ็™ปๅ…ฅๆ™‚ไผบๆœๅ™จ็”จๅ…ฌ้‘ฐ้ฉ—่ญ‰ไฝ ๆ˜ฏๅฆๆ“ๆœ‰ๅฐๆ‡‰็š„็ง้‘ฐ,่€Œไธๅ‚ณ่ผธๅฏ†็ขผ。

    1. ๅœจๆœฌๆฉŸ็”ข็”Ÿ SSH ้‡‘้‘ฐ

    ๅปบ่ญฐไฝฟ็”จ ed25519 ๆผ”็ฎ—ๆณ•(่ผƒๆ–ฐไธ”้‡‘้‘ฐ็Ÿญ)。

    # ๅœจๆœฌๆฉŸ(ไธๆ˜ฏไผบๆœๅ™จ)ๅŸท่กŒ:
    ssh-keygen -t ed25519 -C "ไฝ ็š„่จป่งฃ(ไพ‹ๅฆ‚ email)"

    ่‹ฅ็ณป็ตฑไธๆ”ฏๆด ed25519,ไนŸๅฏไปฅไฝฟ็”จ rsa:

    ssh-keygen -t rsa -b 4096 -C "ไฝ ็š„่จป่งฃ"

    ๆŒ‡ไปคๅŸท่กŒๅพŒๆœƒๅ•ไฝ :

    • ่ฆๅฐ‡้‡‘้‘ฐๅญ˜ๅœจๅ“ช่ฃก(้ ่จญ ~/.ssh/id_ed25519)。
    • ๆ˜ฏๅฆ่จญๅฎš passphrase(ๅปบ่ญฐ่จญๅฎš,็ญ‰ๆ–ผ็ตฆ็ง้‘ฐๅ†ไธŠไธ€ๅฑค้Ž–)。

    ๅฎŒๆˆๅพŒ,ๆœฌๆฉŸๆœƒๅพ—ๅˆฐ:

    • ~/.ssh/id_ed25519:็ง้‘ฐ(่ซ‹ๅฆฅๅ–„ไฟ่ญท,็ต•ไธๅค–ๆต)。
    • ~/.ssh/id_ed25519.pub:ๅ…ฌ้‘ฐ(ๅฏๆ”พๅฟƒๆ”พๅˆฐไผบๆœๅ™จ)。

    ไธ‰、ๅฐ‡ๅ…ฌ้‘ฐ้ƒจ็ฝฒๅˆฐไผบๆœๅ™จ:ssh-copy-id ๆˆ–ๆ‰‹ๅ‹•่จญๅฎš

    1. ไฝฟ็”จ ssh-copy-id(ๆœ€ๆ–นไพฟ)

    ่‹ฅ็›ฎๅ‰ไผบๆœๅ™จไปๅ…่จฑๅฏ†็ขผ็™ปๅ…ฅ,ๅฏไปฅๅœจๆœฌๆฉŸ็›ดๆŽฅๅŸท่กŒ:

    ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip

    ้€™ๆœƒ:

    • ไปฅ็›ฎๅ‰็š„ๅฏ†็ขผ็™ปๅ…ฅไผบๆœๅ™จ。
    • ่‡ชๅ‹•ๆŠŠๅ…ฌ้‘ฐ้™„ๅŠ ๅˆฐ ~user/.ssh/authorized_keys
    • ่ชฟๆ•ดๆญฃ็ขบ็š„ๆช”ๆกˆๆฌŠ้™。

    2. ๆ‰‹ๅ‹•่จญๅฎš authorized_keys

    ่‹ฅๆฒ’ๆœ‰ ssh-copy-id,ๅฏๆ”น็”จๆ‰‹ๅ‹•ๆ–นๅผ:

    1. ๅœจๆœฌๆฉŸๆชข่ฆ–ๅ…ฌ้‘ฐๅ…งๅฎน:
    cat ~/.ssh/id_ed25519.pub
    1. ็™ปๅ…ฅไผบๆœๅ™จ,ๅ‡่จญๅธณ่™Ÿ็‚บ user
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    
    # ๅœจ authorized_keys ไธญ่ฒผไธŠๅ‰›ๅ‰›็š„ๅ…ฌ้‘ฐไธ€ๆ•ด่กŒ
    nano ~/.ssh/authorized_keys   # ๆˆ– vi / vim
    
    chmod 600 ~/.ssh/authorized_keys

    ๆฌŠ้™้žๅธธ้‡่ฆ,้Œฏ่ชคๆฌŠ้™ๆœƒๅฐŽ่‡ด SSH ๆ‹’็ต•ไฝฟ็”จ้‡‘้‘ฐ็™ปๅ…ฅ。


    ๅ››、่ชฟๆ•ด sshd_config:ๅ•Ÿ็”จ้‡‘้‘ฐ็™ปๅ…ฅ、ๆบ–ๅ‚™้—œ้–‰ๅฏ†็ขผ็™ปๅ…ฅ

    ็ทจ่ผฏไผบๆœๅ™จไธŠ็š„ /etc/ssh/sshd_config

    sudo nano /etc/ssh/sshd_config

    ็ขบ่ชๆˆ–ๅŠ ๅ…ฅไปฅไธ‹่จญๅฎš(ๅฐ‡่จป่งฃ # ๆ‹ฟๆމ):

    # ๅ•Ÿ็”จๅ…ฌ้‘ฐ้ฉ—่ญ‰
    PubkeyAuthentication yes
    
    # ็ขบ่ชๆœ‰่ฎ€ๅ– authorized_keys
    AuthorizedKeysFile .ssh/authorized_keys
    
    # ๆšซๆ™‚ไฟ็•™ๅฏ†็ขผ็™ปๅ…ฅ,็ญ‰ๆธฌ่ฉฆ้‡‘้‘ฐๆฒ’ๅ•้กŒๅ†้—œ
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    
    # ๅƒ…ๅ…่จฑ protocol 2(ๆ–ฐ็‰ˆๆœฌ้ ่จญๅณ็‚บ 2)
    Protocol 2

    ้‡ๆ–ฐ่ผ‰ๅ…ฅ่จญๅฎš:

    sudo sshd -t
    sudo systemctl reload sshd

    ๆŽฅ่‘—ๅœจๆœฌๆฉŸ่ฉฆ่‘—็”จ้‡‘้‘ฐ็™ปๅ…ฅ:

    ssh -i ~/.ssh/id_ed25519 user@server-ip

    ่‹ฅไธๅ†่ฆๆฑ‚่ผธๅ…ฅๅธณ่™Ÿๅฏ†็ขผ,่€Œๆ˜ฏ็›ดๆŽฅ้€ฃไธŠ(ๆˆ–ๅชๅ•ไฝ ็ง้‘ฐ็š„ passphrase),ๅฐฑไปฃ่กจ้‡‘้‘ฐ็™ปๅ…ฅๅทฒๆˆๅŠŸ。

    ็ขบ่ช็„กๅ•้กŒๅพŒ้—œ้–‰ๅฏ†็ขผ็™ปๅ…ฅ

    ๅ†ๆฌก็ทจ่ผฏ sshd_config

    PasswordAuthentication no
    KbdInteractiveAuthentication no
    ChallengeResponseAuthentication no

    ็„ถๅพŒ้‡ๆ–ฐ่ผ‰ๅ…ฅ sshd,ไธฆ็”จๆ–ฐ็š„็ต‚็ซฏๆฉŸ่ฆ–็ช—ๆธฌ่ฉฆ้€ฃ็ทš。ๅฆ‚ๆžœไธ€ๅˆ‡ๆญฃๅธธ,ไน‹ๅพŒๅฐฑๅช่ƒฝ้€้Ž้‡‘้‘ฐ็™ปๅ…ฅ,ๅคงๅน…้™ไฝŽๆšดๅŠ›็ ด่งฃๆˆๅŠŸ็š„ๆฉŸๆœƒ。


    ไบ”、Port ่ฝ‰็งป่ˆ‡ๅธณ่™Ÿ้™ๅˆถ:้™ไฝŽ่ขซๆŽƒๆ่ˆ‡่ชค็”จ้ขจ้šช

    ๆ”น Port ไธฆไธๆ˜ฏ「็œŸๆญฃ็š„้˜ฒ็ฆฆ」,ไฝ†่ƒฝๆœ‰ๆ•ˆ้™ไฝŽๆŽƒๆๅ™ช้Ÿณ; ๆญ้…「ๅชๅ…่จฑ็‰นๅฎšๅธณ่™Ÿ / ็พค็ต„็™ปๅ…ฅ」,ๆœƒๆ˜ฏๅฏฆๅ‹™ไธŠๅพˆๅธธ่ฆ‹็š„ไธ€ๅฑค้˜ฒ่ญท。

    1. ่ชฟๆ•ด SSH Port

    ๅœจ sshd_config ไธญ:

    # ้ ่จญๆ˜ฏ 22,ๅฏๆ”น็‚บ 2222 ไน‹้กž็š„้ž็Ÿฅๅ Port
    Port 2222

    ่จ˜ๅพ—ๅŒๆญฅๆ›ดๆ–ฐ้˜ฒ็ซ็‰†่จญๅฎš,ไพ‹ๅฆ‚ไฝฟ็”จ firewalld:

    # ๅŠ ๅ…ฅๆ–ฐ port
    sudo firewall-cmd --permanent --add-port=2222/tcp
    
    # ่‹ฅๅทฒ็ขบ่ชไธๅ†ไฝฟ็”จ 22 ไนŸๅฏ้—œ้–‰
    sudo firewall-cmd --permanent --remove-service=ssh
    
    sudo firewall-cmd --reload

    ้‡ๆ–ฐ่ผ‰ๅ…ฅ sshd ๅ‰,ๅ‹™ๅฟ…ๅ…ˆ็ขบ่ช้˜ฒ็ซ็‰†ๅทฒๆ”พ่กŒๆ–ฐ port,้ฟๅ…ๆŠŠ่‡ชๅทฑ้—œๅœจ้–€ๅค–。

    2. ้™ๅˆถๅฏ็™ปๅ…ฅๅธณ่™Ÿ่ˆ‡็พค็ต„

    ๅœจ sshd_config ไธญๅŠ ๅ…ฅ:

    # ๅƒ…ๅ…่จฑ็‰นๅฎšๅธณ่™Ÿ็™ปๅ…ฅ
    AllowUsers wwfandy devuser
    
    # ๆˆ–ๆ˜ฏๅ…่จฑ็‰นๅฎš็พค็ต„
    AllowGroups sshusers

    ๆญ้…็พค็ต„็ฎก็†,ๅฏไปฅๅฐ‡「ๆœ‰ SSH ็™ปๅ…ฅๆฌŠ็š„ไฝฟ็”จ่€…」้›†ไธญๅˆฐไธ€ๅ€‹็พค็ต„ไธญ,ๆ–นไพฟๆŽง็ฎก่ˆ‡็จฝๆ ธ。

    3. ็ฆๆญข root ็›ดๆŽฅ็™ปๅ…ฅ

    PermitRootLogin no

    ๅปบ่ญฐๅšๆณ•:

    • ๅปบ็ซ‹ไธ€ๅ€‹ไธ€่ˆฌๅธณ่™Ÿ(ไพ‹ๅฆ‚ admin ๆˆ–ไฝ ็š„ๅๅญ—),ๆŽˆไบˆ sudo ๆฌŠ้™。
    • ๅนณๆ™‚ไปฅไธ€่ˆฌๅธณ่™Ÿ็™ปๅ…ฅ,ๅฟ…่ฆๆ™‚็”จ sudo ๅŸท่กŒ็ฎก็†ๆ“ไฝœ。

    ๅ…ญ、ๆ•ดๅˆ Fail2Ban:่‡ชๅ‹•ๅฐ้Ž–ๆšดๅŠ›็ ด่งฃ IP

    ๅณไฝฟ้—œๆމๅฏ†็ขผ็™ปๅ…ฅ,ไป็„ถๆœƒๆœ‰็จ‹ๅผไธๆ–ทๅ˜—่ฉฆ้€ฃ็ทš、่€—่ฒป่ณ‡ๆบๆˆ–ๅกžๆปฟ log。 Fail2Ban ๅฏไปฅ็›ฃๆŽง log ไธญ็š„็•ฐๅธธ็™ปๅ…ฅ่กŒ็‚บ,้”ๅˆฐไธ€ๅฎšๆฌกๆ•ธๅฐฑ่‡ชๅ‹•็”จ้˜ฒ็ซ็‰†ๅฐ้Ž–่ฉฒ IP。

    1. ๅฎ‰่ฃ Fail2Ban

    Debian / Ubuntu:

    sudo apt update
    sudo apt install -y fail2ban

    RHEL / CentOS / Rocky / AlmaLinux:

    sudo dnf install -y fail2ban

    ๅ•Ÿๅ‹• Fail2Ban:

    sudo systemctl enable --now fail2ban
    sudo systemctl status fail2ban

    ไธƒ、่จญๅฎš Fail2Ban ็›ฃๆŽง SSH

    ๅฎ˜ๆ–น้ ่จญ่จญๅฎšๆ”พๅœจ /etc/fail2ban/jail.conf, ๅปบ่ญฐไธ่ฆ็›ดๆŽฅไฟฎๆ”น,่€Œๆ˜ฏๅœจ /etc/fail2ban/jail.local ไธญ่ฆ†่“‹ๆˆ–ๆ–ฐๅขž่จญๅฎš。

    1. ๅปบ็ซ‹ jail.local ไธฆๅ•Ÿ็”จ sshd jail

    sudo nano /etc/fail2ban/jail.local

    ๅŠ ๅ…ฅไปฅไธ‹็ฏ„ไพ‹:

    [DEFAULT]
    # ไฟกไปป็š„ IP(ๆฐธไธๅฐ้Ž–),ๅฏๅŠ ๅ…ฅ่‡ชๅทฑๅ…ฌๅธๆˆ–็ฎก็†็ซฏ IP
    ignoreip = 127.0.0.1/8 ::1
    
    # ๅฐ้Ž–ๆ™‚้–“(็ง’),ไพ‹ๅฆ‚ 30 ๅˆ†้˜
    bantime  = 1800
    
    # ๅœจ findtime ็ง’ๅ…งๅคฑๆ•—้” maxretry ๆฌกๅฐฑๅฐ้Ž–
    findtime = 600
    maxretry = 5
    
    [sshd]
    enabled  = true
    port     = 2222        # ่‹ฅไฝ ๆ”น้Ž SSH Port,่จ˜ๅพ—ๅŒๆญฅไฟฎๆ”น
    logpath  = /var/log/auth.log  ; Debian/Ubuntu
    # logpath = /var/log/secure   ; RHEL/CentOS
    backend  = systemd

    ๅ„ฒๅญ˜ๅพŒ้‡ๆ–ฐๅ•Ÿๅ‹• Fail2Ban:

    sudo systemctl restart fail2ban

    2. ๆŸฅ่ฉข Fail2Ban ็‹€ๆ…‹่ˆ‡ๅฐ้Ž– IP

    # ๆŸฅ็œ‹ๆ‰€ๆœ‰ jail
    sudo fail2ban-client status
    
    # ๆŸฅ็œ‹ sshd jail ่ฉณ็ดฐ็‹€ๆ…‹
    sudo fail2ban-client status sshd

    ่ผธๅ‡บไธญๅฏไปฅ็œ‹ๅˆฐ็›ฎๅ‰่ขซๅฐ้Ž–็š„ IP ๆธ…ๅ–ฎ。

    3. ๆ‰‹ๅ‹•่งฃ้™คๅฐ้Ž–ๆŸ IP

    sudo fail2ban-client set sshd unbanip 1.2.3.4

    ๅฆ‚ๆžœ่ชคๅฐๅˆฐๅˆๆณ•็ฎก็†็ซฏ IP,ๅฏไปฅ็”จ้€™ๅ€‹ๆ–นๅผ่งฃ้™ค。


    ๅ…ซ、ๆ›ดๅคš sshd_config ๅฎ‰ๅ…จ็›ธ้—œๅƒๆ•ธๅปบ่ญฐ

    ้™คไบ† Port ่ˆ‡็™ปๅ…ฅๆ–นๅผ,้‚„ๆœ‰ไธ€ไบ›็ดฐ็ฏ€ๅฏไปฅ้€ฒไธ€ๆญฅๅผทๅŒ–ๅฎ‰ๅ…จๆ€ง:

    1. ้™ไฝŽๆšดๅŠ›็ ด่งฃๆ•ˆ็އ

    # ไฝฟ็”จ่€…ๆœ‰ๅคšๅฐ‘ๆ™‚้–“ๅฏไปฅ่ผธๅ…ฅๅฏ†็ขผ(้—œ้–‰ๅฏ†็ขผ็™ปๅ…ฅๅพŒไปๅฝฑ้Ÿฟ้‡‘้‘ฐๅคฑๆ•—)
    LoginGraceTime 30
    
    # ๅ–ฎไธ€้€ฃ็ทšๅ…่จฑ็š„่ช่ญ‰ๅ˜—่ฉฆๆ•ธ
    MaxAuthTries 3
    
    # ๆฏๅ€‹้€ฃ็ทš็š„ๆœ€ๅคงๅŒๆ™‚ session ๆ•ธ
    MaxSessions 3

    2. ๆŽงๅˆถ้–’็ฝฎ้€ฃ็ทš

    # ๆฏ 60 ็ง’ๅฐ client ็™ผ้€ keepalive ๆชขๆŸฅ
    ClientAliveInterval 60
    
    # ่‹ฅ้€ฃ็บŒ 5 ๆฌกๆฒ’ๆœ‰ๆ”ถๅˆฐๅ›žๆ‡‰ๅฐฑๆ–ท็ทš
    ClientAliveCountMax 5

    ๅฏไปฅ้ฟๅ…「ๆŽ›่‘—ไธๅ‹•」ๅคšๅฐๆ™‚ๅปๅฟ˜่จ˜้—œ้–‰็š„้€ฃ็ทš。

    3. ้—œ้–‰ไธ้œ€่ฆ็š„่ฝ‰็™ผๅŠŸ่ƒฝ

    # ่‹ฅไธ้œ€่ฆ X11 ่ฝ‰็™ผ,ๅปบ่ญฐ้—œ้–‰
    X11Forwarding no
    
    # ่‹ฅไธ้œ€่ฆ TCP Forwarding,ๅฏ่ฆ–ๆƒ…ๆณ้—œ้–‰ๆˆ–ๆ”น็”จ more strict ่จญๅฎš
    AllowTcpForwarding no
    
    # ่‹ฅไธๆไพ› SFTP,ไบฆๅฏ้—œ้–‰็›ธ้—œๅญ็ณป็ตฑ(ไพๅฏฆ้š›้œ€ๆฑ‚่ชฟๆ•ด)
    # Subsystem sftp /usr/lib/openssh/sftp-server

    ๅŽŸๅ‰‡ๆ˜ฏ:ๆฒ’ๅœจ็”จ็š„ๅŠŸ่ƒฝ,ๅฐฑไธ่ฆ้–‹่‘—


    ไน、Log ่ˆ‡็จฝๆ ธ:ๆŽŒๆก SSH ๆดปๅ‹•็ด€้Œ„

    SSH ็›ธ้—œ็š„ log ไฝ็ฝฎ้€šๅธธๅœจ:

    • Debian / Ubuntu:/var/log/auth.log
    • RHEL / CentOS:/var/log/secure

    ๅธธ็”จๆชขๆŸฅๆ–นๅผ:

    # ็œ‹ๆœ€่ฟ‘็™ปๅ…ฅๅคฑๆ•—็ด€้Œ„
    sudo grep "Failed password" /var/log/auth.log | tail -n 20
    
    # ็œ‹็™ปๅ…ฅๆˆๅŠŸ็ด€้Œ„
    sudo grep "Accepted" /var/log/auth.log | tail -n 20
    
    # ๆŒ็บŒๅณๆ™‚็›ฃๆŽง(ๆญ้… sshd ้—œ้ตๅญ—)
    sudo tail -f /var/log/auth.log | grep sshd

    ่‹ฅๆœ‰ๅฐŽๅ…ฅ้›†ไธญๅผๆ—ฅ่ชŒ็ณป็ตฑ(ไพ‹ๅฆ‚ Loki + Grafana、ELK Stack),ๅฏไปฅๆŠŠ SSH log ็ดๅ…ฅ็ตฑไธ€็›ฃๆŽง, ๆ›ดๅฎนๆ˜“็™ผ็พ「ๅฅ‡ๆ€ชๆ™‚้–“้ปž、ๅฅ‡ๆ€ชไพ†ๆบ」็š„็™ปๅ…ฅ่กŒ็‚บ。


    ๅ、ๆ•ด็†:ไธ€ๅฅ—ๅฏ้‡่ค‡ๅฅ—็”จ็š„ SSH ๅฎ‰ๅ…จๅŸบๆบ–

    ๆŠŠๆœฌๆ–‡ๅ…งๅฎนๆ•ด็†ๆˆไธ€ๅฅ—「ไธŠ็ทšๆ–ฐไธปๆฉŸๆ™‚ๅฟ…ๅšๆธ…ๅ–ฎ」:

    1. ๅœจ็ฎก็†็ซฏๆœฌๆฉŸ็”ข็”Ÿ SSH ้‡‘้‘ฐ(ed25519 ๆˆ– RSA 4096)。
    2. ๅฐ‡ๅ…ฌ้‘ฐ้ƒจ็ฝฒ่‡ณไผบๆœๅ™จ็š„ authorized_keys,ไธฆ็ขบ่ช้‡‘้‘ฐ็™ปๅ…ฅๆญฃๅธธ。
    3. ๅœจ sshd_config ๅ•Ÿ็”จ PubkeyAuthentication,ๆบ–ๅ‚™้—œ้–‰ๅฏ†็ขผ็™ปๅ…ฅ。
    4. ๅœจ็ขบ่ช้‡‘้‘ฐ็™ปๅ…ฅ็ฉฉๅฎšไน‹ๅพŒ,ๅฐ‡ PasswordAuthentication ๆ”น็‚บ no。
    5. ไฟฎๆ”น SSH Port(ไพ‹ๅฆ‚ 2222),ไธฆๅŒๆญฅๆ›ดๆ–ฐ้˜ฒ็ซ็‰†่ฆๅ‰‡。
    6. ่จญๅฎš PermitRootLogin no,ๅปบ็ซ‹ไธ€่ˆฌ็ฎก็†ๅธณ่™Ÿ + sudo ๆฌŠ้™。
    7. ไฝฟ็”จ AllowUsers / AllowGroups ้™ๅฎšๅฏ็™ปๅ…ฅๅธณ่™Ÿๆˆ–็พค็ต„。
    8. ๅฎ‰่ฃไธฆ่จญๅฎš Fail2Ban,ๅ•Ÿ็”จ sshd jail,่‡ชๅ‹•ๅฐ้Ž–ๆšดๅŠ›็ ด่งฃไพ†ๆบ。
    9. ่ชฟๆ•ด LoginGraceTime、MaxAuthTries、ClientAliveInterval ็ญ‰็ดฐ็ฏ€。
    10. ๅปบ็ซ‹ๅ›บๅฎš็š„ log ๆชข่ฆ–่ˆ‡็จฝๆ ธๆต็จ‹(ๆญ้…้›†ไธญๅผๆ—ฅ่ชŒๆ›ดไฝณ)。

    ✅ ็•ถ้€™ๅฅ— SSH ๅฎ‰ๅ…จๅŸบๆบ–ๆˆ็‚บไฝ ๆˆ–ๅœ˜้šŠ็š„「ๆจ™ๆบ–ๆต็จ‹」,ๆฏไธ€ๅฐๆ–ฐไธŠ็ทš็š„ Linux ไผบๆœๅ™จๅฐฑ่ƒฝๅœจ ไธ€่‡ด็š„ๅฎ‰ๅ…จๆฐดๆบ– ไธ‹้‹ไฝœ。ไน‹ๅพŒ่‹ฅๅ†ๆญ้…้˜ฒ็ซ็‰†่ฆๅ‰‡、IDS/IPS、VPN ่ˆ‡่ทณๆฟๆฉŸ, ๅฐฑ่ƒฝ้€ๆญฅๅปบๆง‹ๅ‡บๆ›ดๅฎŒๆ•ด็š„ไผบๆœๅ™จๅฎ‰ๅ…จๆžถๆง‹。

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

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

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

    ๅญ—็ดš