Ssh – Konfiguracja serwera

Wstęp

Ssh jest pakietem mającym na celu zastąpienie rlogin, rsh i rsp, które ze względu na przesyłanie danych otwartym tekstem nie są bezpieczne. Pakiet ssh (i jego open-source implementacja openssh) wykonują te same czynności szyfrując całe połączenie.

Instalacja

Kod źródłowy można pobrać ze strony www.openssh.org ale pakiety z openssh znajdują się w każdej dystrybucji. Najprostsza jest oczywiście instalacja z pakietu ale pamiętaj iż program ma wtedy ustawione pewne parametry już podczas kompilacji, które mogą Ci przeszkadzać.

W dystrybucjach używających systemu pakietów rpm instalacje wykonasz wykorzystując polecenie:

rpm -i sshd

Instalacje w Debianie dokonasz wydając polecenie:

apt-get install sshd

Uruchomienie, restart i zatrzymanie serwera

Serwer uruchamiamy (w trybie konsoli) w dystrybucjach wykorzystujących schemat V System (czyli np. Red Hat, Debian, Mandrake ale nie Slackware) przy pomocy polecenia:

/etc/init.d/sshd start

Serwer restartujemy poleceniem:

/etc/init.d/sshd restart

Zatrzymania serwera dokonamy przy pomocy polecenia:

/etc/init.d/sshd stop

Generowanie kluczy serwera

Klucze serwera generujemy przy pomocy polecenia

ssh-keygen -f /etc/ssh/ssh_host_key

tworzy do klucz typu rsa1, jeżeli chcemy inny typ (rsa lub dsa) musimy to jawnie zadeklarować przez dodanie parametru -t ( w naszym przypadku -t rsa lub -t dsa). Przykładowy zapis procesu generowania kluczy to:

[root@workus ssh]# ssh-keygen -f /etc/ssh/ssh_host_key 
Generating public/private rsa1 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
f7:fb:53:07:e2:05:b2:0f:96:b4:4b:e1:4b:b0:93:98 root@workus
[root@workus ssh]#

Jak widać zostały utworzone dwa pliki, Pierwszy to /etc/ssh/ssh_host_key i jest to prywatny klucz serwera, musisz go szczególnie chronić drugi to /etc/ssh/ssh_host_key.pub, jest to publiczny klucz serwera i możesz go spokojnie udostępniać publicznie.

Demon ssh

Demon ssh to program obsługujący połączenia inicjowane przez klienta ssh. Jego plik konfiguracyjny to /etc/ssh/sshd_config. My omówimy jedynie podstawowe i najbardziej przydatne opcje konfiguracyjne, wszystkie potrzebne informacje znajdziesz na stronie pomocy systemowej (man 8 sshd)

Przykładowy plik konfiguracyjny (opracowany na podstawie pliku z dystrybucji Mandrake) to:

-- /etc/ssh/sshd_config -- 
Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
ServerKeyBits 768
LoginGraceTime 600
KeyRegenerationInterval 3600

PermitRootLogin no

IgnoreRhosts yes
#IgnoreUserKnownHosts yes

StrictModes yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd yes

#PrintLastLog no
KeepAlive yes

# Logging
SyslogFacility AUTH
LogLevel INFO

RhostsAuthentication no

RhostsRSAAuthentication no
HostbasedAuthentication no
RSAAuthentication yes

PasswordAuthentication yes
PermitEmptyPasswords no

#CheckMail yes
#UseLogin no

Subsystem sftp /usr/lib/ssh/sftp-server

-- koniec listingu --

Znaczenie ważniejszych parametrów:

ListenAddres
Adresy IP, na których oczekiwane są połączenia. Wpis 0.0.0.0 oznacza wszystkie adresy lokalne.

Port 22
Port TCP, na którym oczekiwane są połączenia. Domyślny port to 22.

HostKey
Określa plik w którym znajduje się klucz prywatny serwera. Klucz publiczny do takiego serwera znajduje się w pliku o identycznej nazwie tylko zakończonej rozszerzeniem .pub

ServerKeyBits
Długość klucza w bitach, im dłuższy klucz tym lepiej, należy jednak pamiętać iż długie klucze mogą znacząco obniżać wydajność serwera.

LoginGraceTime
Czas po którym demon ssh rozłączy się gdy użytkownik nie przejdzie pomyślnie procedury autoryzacji. Domyślnie to 600 sekund.

KeyRegenerationInterval
Opcja dla ssh1 po której następuje regeneracja klucza serwera.

PermitRootLogin no
Opcja zezwala lub nie na logowanie się na serwer użytkownika root. Najlepiej uniemożliwić takie logowanie.

IgnoreRhosts yes
Określa że plik .rhosts i .shosts nie będzie używany w procesach RhostsAuthentication, RhostsRSAAuthentication lub HostbasedAuthentication.

#IgnoreUserKnownHosts yes
Określa czy sshd powinien ignorować pliki użytkownika $HOME/.ssh/knwon_hosts podczas RhostsRSAAutentication lub HostbasedAuthentication. Domyślna wartość to "no"

StrictModes yes
Określa czy powinny być sprawdzany dostęp do katalogu użytkownika. Ma to na celu uniemożliwienie logowania na konta mające ustawiony otwarty dostęp dla wszystkich.

X11Forwarding
Określa czy jest możliwe pośredniczenie w protokole X11. Domyślnie jest to wyłączone

PrintMotd yes
Określa czy należy drukować zawartość /etc/motd. Domyślnie "tak".

PrintLastLog
Określa czy wyświetlać informacje o ostatnim logowaniu

 

Porady praktyczne dla administratorów

Testowanie ustawień na zdalnym serwerze ssh

Jeżeli jestesmy połączeni ze zdalnym serwerem i chcemy przetestować nową opcję konfiguracji (np. zablokować zdalne połączenie dla root-a lub ograniczyć dostęp do okreslonych użytkowników) to możemy je przetestować bez obawy o utrate połączenia, jeżeli wydamy polecenie:

/etc/init.d/ssh restart

Po prostu nowe ustawienia demona ssh są obowiązujące tylko dla nowych połączeń.

Logowanie root-a tylko przez klucz kryptograficzny

Przydatną opcją dla posiadaczy różnych skryptów administrujących zdalnymi serwerami jest możliwosć logowania się na konto administratora systemu tylko przy pomocy kluczy kryptograficznych (dokładniej autoryzacja dla konta root jest możliwia tylko przy wykorzystaniu jego klucza prywatnego). Uzyskamy to ustawiając dla zmiennej PermitRootLogin wartosć without-password.

PermitRootLogin without-password

Openssh i windows

Istnieje również wersja openssh dla maszyn windowsowych. Dostępna jest na stronie http://sshwindows.sourceforge.net/.

Zobacz także

Dodaj komentarz