SSH 的安全设置



ssh 的基本安全设置。

一般我对服务器上的 ssh 服务,至少会设置 /etc/ssh/sshd_config :


PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
PermitEmptyPasswords no
PermitRootLogin no

但是这样的设置是不够的,需要更多额外的安全设置。如果密钥使用的是 RSA 算法生成,则还需注意 RSA 的长度需要足够长(4096以上)。

比如,客户端生成密钥文件时,使用足够安全的方式:


ssh-keygen -t ed25519 -o -a 100
ssh-keygen -t rsa -b 4096 -o -a 100

本文里额外的安全设置,主要采用了 stribika 的 这篇文章 里的结论。

关闭 OpenSSH 的 UseRoaming 特性,在服务器上,设置 /etc/ssh/ssh_config :


Host *
    UseRoaming no

密钥交换

为了使密钥交换更安全,在服务器上,设置 /etc/ssh/sshd_config :


KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

设置 /etc/ssh/ssh_config :


Host *
    KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

认证

在服务器上,重新生成新的更安全的 key 文件:


cd /etc/ssh
sudo rm ssh_host_*key*
sudo ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N "" < /dev/null
sudo ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key -N "" < /dev/null

在服务器上,设置 /etc/ssh/ssh_config :


    Protocol 2
    HostKey /etc/ssh/ssh_host_ed25519_key
    HostKey /etc/ssh/ssh_host_rsa_key

    PasswordAuthentication no
    ChallengeResponseAuthentication no

    PubkeyAuthentication yes
    HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa

可以考虑在服务器上的 /etc/ssh/sshd_config 里设置 AllowGroups ,通过用户组来管理允许ssh登录的用户。

通信内容加密

在服务器上,设置 /etc/ssh/sshd_config :


Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

在服务器上,设置 /etc/ssh/ssh_config :


Host *
    Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

MACs

在服务器上,设置 /etc/ssh/sshd_config :


MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com

在服务器上,设置 /etc/ssh/ssh_config :


Host *
    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com
本文链接: https://paxinla.github.io/posts/2020/05/ssh-de-an-quan-she-zhi.html

知识共享许可协议 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可,欢迎转载、演绎,
但是必须保留本文的署名 Charles(包含链接),且不得用于商业目的。