УНИТе

Портал > Документация > Настройки на OpenSSH сървър под CentOS 7 и Scientific Linux 7

Настройки на OpenSSH сървър под CentOS 7 и Scientific Linux 7

Съдържание:

  1. Прегенериране на ключовете на SSH сървъра
  2. Копия от кои SSH сървърски ключове да предоставяте на потребителите при поискване
  3. Потготовка за използване на потребителски SSH ключ като средство за удостоверяване
  4. Допълнителни настройки в /etc/ssh/sshd_config
  5. Защита на OpenSSH сървъра с fail2ban

 

1. Прегенериране на ключовете на SSH сървъра

В случай, че SSH сървъра е прясно инсталиран (нова инсталация на CentOS или Scientific Linux), старите ключове са загубени или частните ключове са разкрити, сървърските ключове да бъдат прегенерирани. Процеса на прегенериране изглежда по следния начин (с права на root):

# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
# ssh-keygen -b 384 -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
# ssh-keygen -b 2048 -t rsa -f /etc/ssh/ssh_host_rsa_key

Направете копие на ключовете, за да може да ги възстановите, ако те бъдат изтрити.

 

2. Копия от кои SSH сървърски ключове да предоставяте на потребителите при поискване

В случай, че потребителите поискат копие на публичните SSH ключове на сървъра, за да установят неговата идентичност (при установяване на SSH сесия), трябва да им дадете копие от следните файлове:

/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_rsa_key.pub

В НИКАКЪВ СЛУЧАЙ НЕ ДАВАЙТЕ КОПИЕ ОТ ЧАСНИТЕ КЛЮЧОВЕ в /etc/ssh/ssh_host_ed25519_key, /etc/ssh/ssh_host_ecdsa_key, /etc/ssh/ssh_host_rsa_key!

 

3. Потготовка за използване на потребителски SSH ключ като средство за удостоверяване

По подразбиране (ако това не е променяно в /etc/ssh/sshd_config, чрез редактиране на стойността присвоена на AuthorizedKeysFile там) потребителските SSH ключове, които даден потребител може да използва като средство за удостоверяване, се намират във файла ~/.ssh/authorize_keys (файл authorize_keys, намиращ се в директория .ssh, която е под-директория на потребителската домашна директория).

Файлът ~/.ssh/authorize_keys може да съдържа един или повече SSH ключ - всеки ключ следва да е описан на един ред във файла, например:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAqq4ppSD79Pt6nplVpFEIRjJ3/IlvN4YFmYUhtR81CyZVWU6hkH3LqHx+utvl+lWajOgKZajxQAhqGK+SGuz7uV5yHvo4I4yF6Am9S16L2j8XYTTYcNgRcFlOMGp251+HF+ZtkZ/jcAMcMaoM1NvLiN3XQJZk3da9Ki02Lrg7QnbLnAqWGdTF6MPg7NhXp735e8hpr17zYTXu4fiDidqPhElhJL9b55UMknX99+DS8FEn9azyomLv+UfBK/iczo5GN65NSBBV0Dq5DPzwKayxrrVdGmbESNXkRuIUBTjvJkvtmdrKwAuYPLRknb9XkMp4oQ3la8gfnPcXWvm8jvStPW3uuUDDqykS/Ot7dFmDStQG/nldF9qiak3j62UGCZq+emZ6zMILox7F/WPiAQBgo12bjzSqUS3mJ7R1khpscaLegAzSCujhkho8voRSBFD0jWuywVAYIXMPNXJivvnEkB2VPTL77oInHUuu3XMbrfkK6JJCDlViZsgecol5yvIgUE667eqsVIvsAzu59n0tS+UVHlmwW+dtxyvkjTHo/mK307PgSXiFSRtjpPtXf9OsTkrIMnO3VWpF1l3PBruo+QbaPWzCCv3c7fRct25pfMCKDisa5eQw0pEl83Wa0Y3ft8qbzs5p3FwH2FVB00PZp36lfZYUKQ4lzDuAvCDdHkM= user_key_1
ssh-rsa AAAAB3NzaC1yc2EAAAACAQABAAACAQCtkp69HQNSiOjPJgnqhkHw8Tb9LxD9Spmsi5KBNXfiRgPFhJX+I+CgqG4cmrIhbTGqEkki6ioxuFS473YTggsTNeH1wsseYbsLkGILirRD+EK0t89Tv/1DEDXeK7FmhpVX9Cf9MOXI00Uo3kQO+2f6FFX+CMU3wiODnz9Ro5Mwtr57/JwlPffU8llQc1DecYqjSuCf/AluaRGeqU0u+CqeeYd//Mz11nv7ICfmQvZan28jJgdE5rrU+KzkmR6q8ULS/NavluftKSwu/cAVlLhGPTY9FQInjUV+G+USkvHJPJAhJtuLt46uHoL9lS2+z3+1EUQaSeCiSFTmAVRg0X6Jm6P99OS+yVbr71D9f1wYEp8Qbi4X9tucfDuf+QCdmCUt2BHgFe57AwttTamleoK6xuBdRQQPBx+U1xCzeE3yW24Ib4CV86yHwO1CyWLCxJ1XEUY9hIHaxfGCB69PnFd2GhIEuS3plCjNBqa81PMw/S1LmrUVGhxm6wKFr9Z3Dz399EDr1/wRzFeuG8x5GkhFFfHjKc30tbZtCZyVVidIO+GQFxW2NbsHId0Nq7pNw1baiJ3RUoujYnQbR4qfSrL5cEP5qSci7Z8S34Zc9wGxgUvjPdzOIx2ophCkTnEIAFDZ68RjHT5qDdTUzMrMsYz1q4gMPpPzKHwUCao/CT4Tuw== user_key_1

В примера горе, всеки ключ е на един отделен ред (всеки ред започва с ssh-rsa или друг идентификатор на алгоритъма на ключа) въпреки, че текстовия редкатор може да ги представи на няколко реда! Когато поставяте ключ в този файл проверете, че всеки ключ заема точно един ред!

Уверете се, че директория ~/.ssh и файла ~/.ssh/authorized_keys са с коректната собственост и права на достъпа (заменете "user" със съответното потребителско име):

# chmod 700 /home/user/.ssh
# chmod 600 /home/user/.ssh/authorized_keys
# chown -R user:user /home/user/.ssh

Ако искате да забраните на потребителя да редактира своя ~/.ssh/authorize_keys, изпълнете (като root) следното:

# chattr +a /home/user/.ssh/authorize_keys

Имайте предвид, че това ще забрани редакцията на съдържанието на файла, включително и от страна на root! В случай, че редакция се налага, изпълнете първо:

# chattr -a /home/user/.ssh/authorize_keys

редактирайте файла и след това отново изпълнете:

# chattr +a /home/user/.ssh/authorize_keys

 

4. Допълнителни настройки в /etc/ssh/sshd_config

Преди да започнете да извършвате настройките, убедете се, че може да влизате в системата с помощта на SSH ключ (ако нямате локален достъп)!
Това се налага, защото в списъка с настройки по-долу се забранява удостоверяването на потребител с парола - удостоверяването ще става само на база валиден потребителски SSH ключ.

Отворете с текстов редактор файла /etc/ssh/sshd_config и там направете следните промени (променете или добавете):

PermitRootLogin no 
PasswordAuthentication no
UseDNS no
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-512,hmac-sha2-256-etm@openssh.com,hmac-sha2-256
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
HostKeyAlgorithms ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256

След като завършите, рестартирайте OpenSSH сървъра:

# systemctl restart sshd

Ако не получите съобщение за грешка, може да приемете, че всички нови настройки, които сте направили в /etc/ssh/sshd_config, са валидни, приети и влезли в сила. За всеки случай, вижте дали няма някакво съобщение за нефатална грешка, свързана с новите настройки, отбелязано във файла /var/log/messages.

 

5. Защита на OpenSSH сървъра с fail2ban

Инсталирайте пакета fail2ban:

# yum install fail2ban

Създайте файла /etc/fail2ban/jail.d/02-sshd.conf със следното съдържание:

[DEFAULT]
# Ban hosts for one day:
bantime = 86400

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[sshd]
enabled = true

След това настройте fail2ban да се зарежда със зареждането на системата:

# systemctl enable fail2ban

и рестартирайте услугата:

# systemctl condrestart fail2ban

 


Последна актуализация: 18 март 2019

2019 УНИТе, Веселин Колев