Сменить порт ssh — один из основных способов защититься от подбора пароля, подбор пароля производится в основном обращениями по стандартным портам, для ssh это порт 22.
Протокол SSH по умолчанию работает по порту 22, оставлять службу на стандартном порту не рекомендуется, поскольку злоумышленными в автоматическом режиме могут подбирать пароли, прежде всего они обращаются на стандартные порты.
Порт можно легко поменять на любой другой (это не должен быть стандартный порт какой-либо другой службы)
Конфигурационный файл службы SSH
Изменения вносятся в конфигурационный файл SSH, на Debian это /etc/ssh/sshd_config
Выглядит файл так (исключены некоторые редко применяемые закомментированные опции):
# Package generated configuration file # See the sshd_config(5) manpage for details # What ports, IPs and protocols we listen for Port 22 # Use these options to restrict which interfaces/protocols sshd will bind to #ListenAddress :: #ListenAddress 0.0.0.0 Protocol 2 # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key #Privilege Separation is turned on for security UsePrivilegeSeparation yes # Lifetime and size of ephemeral version 1 server key KeyRegenerationInterval 3600 ServerKeyBits 768 # Logging SyslogFacility AUTH LogLevel INFO # Authentication: LoginGraceTime 120 PermitRootLogin yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts yes # For this to work you will also need host keys in /etc/ssh_known_hosts RhostsRSAAuthentication no # similar for protocol version 2 HostbasedAuthentication no # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication #IgnoreUserKnownHosts yes # To enable empty passwords, change to yes (NOT RECOMMENDED) PermitEmptyPasswords no # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Change to no to disable tunnelled clear text passwords #PasswordAuthentication yes #PasswordAuthentication yes # Kerberos options # GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes #UseLogin no #MaxStartups 10:30:60 #Banner /etc/issue.net # Allow client to pass locale environment variables AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server UsePAM yes
Как сменить порт ssh
Чтобы сменить порт достаточно найти директиву Port 22 и указать другой номер (например,22111), затем перезапустить службу
systemctl restart sshd
После перезапуска службы проверим на каком порту работает SSH
netstat -nltp | grep ssh
tcp 0 0 0.0.0.0:22111 0.0.0.0:* LISTEN 2118/sshd
tcp6 0 0 :::22111 :::* LISTEN 2118/sshd
Теперь авторизоваться на сервере нужно будет указывая порт
ssh -p 22111 [email protected]
Другие возможности для повышения уровня безопасности при работе по SSH
В этом же файле можно отключить возможность подключаться к серверу пользователю root. Подключаться сможет любой другой пользователь, при необходимости на сервере он сможет эскалировать права до root выполнив su
PermitRootLogin no
Также возможно запретить авторизацию по паролю разрешив ее только по ключу
PasswordAuthentication no
Еще полезным бывает ограничить доступ только для указанных в конфиге адресов — во втором случае подключаться сможет только пользователь web с машины с адресом 214.54.234.54, в первом случае — любой пользователь с этой машины
AllowUsers = *@214.54.234.54
AllowUsers = [email protected]
Каждый раз после внесения изменений нужно перезапускать SSH
systemctl restart sshd
Для большей безопасности следует авторизовываться на сервере по ключу, а пароль не использовать. Подключаться при этом по порту, отличному от стандартного.