ssh


SSH Configuration Quick Start"
Krzysztof Maj

4 stycznia 2002 roku
Spis treści
1. Opcje konfiguracyjne pliku ssh config . . . . . . . . . . . . . . . . . . . . 2
1.1. Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. ForwardAgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. ForwardX11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. RHostsAuthentication . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5. RHostsRSAAuthentication . . . . . . . . . . . . . . . . . . . . . . 3
1.6. RSARHostAuthentication . . . . . . . . . . . . . . . . . . . . . . . 3
1.7. PasswordAuthentication . . . . . . . . . . . . . . . . . . . . . . . . 3
1.8. FallBackToRsh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.9. UseRsh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.10. BatchMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.11. CheckHostIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.12. StrictHostChecking . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.13. IdentityFile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.14. Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.15. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.16. Cipher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.17. Przykład pliku ssh config . . . . . . . . . . . . . . . . . . . . . . . 4
2. Opcje konfiguracyjne pliku sshd config . . . . . . . . . . . . . . . . . . . 5
2.1. ListenAddress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2. HostKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3. KeyRegenerationInterval . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4. ServerKeyBits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5. SyslogFacility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6. LogLevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.7. LoginGraceTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.8. PermitRootLogin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.9. StrictModes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.10. RSAAuthentication . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.11. PubkeyAuthentication . . . . . . . . . . . . . . . . . . . . . . . . . 7
"
Dotyczy OpenSSH 2.9.9p1, SSH protocols 1.5/2.0, OpenSSL 0x0090603f oraz Linux
Mandrake 7.2.
1
2.12. PermitEmptyPassowrd . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.13. KeepAlive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.14. PrintLastLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.15. X11Forwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.16. AllowUsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.17. PrintMotd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.18. Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.19. Przykład pliku sshd config . . . . . . . . . . . . . . . . . . . . . . . 8
3. Zakończenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1. Opcje konfiguracyjne pliku ssh config
Plik ten zwykle umieszczony jest w ścieżce/etc/ssh/ssh_config, ale
tak z musu nie musi być. Gdzie zostanie on umieszczony określamy podczas
kompilacji SSH. Odpowiedzialna jest za to opcja--sysconfdir=. Przykład
opcji przekazywanych do skryptuconfigureOpenSSH:
./configure \
--prefix=/usr/local \
--sysconfdir=/etc/ssh \
--with-tcp-wrappers \
--with-pam \
--with-md5-passwords \
--with-ipv4-default \
--with-ssl-dir=/usr/local/openssl \
--with-ipv4-default
Pamiętajmy, że używamy tutaj modułów PAM, a więc należy w pliku
/etc/pam.d/sshd1 umieścić to, co ponieżej:
#%PAM-1.0
auth required /lib/security/pam_pwdb.so shadow nodelay
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow md5 nullok use_authtok
session required /lib/security/pam_pwdb.so
session required /lib/security/pam_limits.so
1.1. Host
Wprowadza odpowiednie restrykcje dla naszego hosta. Odpowiednie, zna-
czy te które wprowadziliśmy poniżej w postaci dyrektyw. Dopuszczalne są
parametry globalne w postaci znaku gwiazdki i wtedy odnoszą się do wszyst-
kich komputerów.
1
Pisząc to korzystam z Linux Mandrake 7.2
2
1.2. ForwardAgent
Wyznacza, czy połączenie do agenta uwierzytelniającego zastanie przeka-
zane na odległą maszynę. Dopuszczalne opcje to  yes lub  no . Domyślnie
jest  no .
1.3. ForwardX11
Wyznacza, czy zdalne połączenia do serwera X11 zastaną automatycznie
przekierowane przez bezpieczny kanał SSH i zmienną$DISPLAY. Domyślnie
jest nie.
1.4. RHostsAuthentication
Opcja dotycząca protokołu wersji pierszej. Zabrania ona lub pozwala na
korzystanie z logowań przy wykorzystaniu plików.rhost. Wiele serwerów nie
pozwala na tego typu uwierzytelnianie, ponieważ nie jest ono bezpieczne. My
też zabrońmy takich praktyk. Domyślne ustawienie to  yes , zmieńmy
na  no .
1.5. RHostsRSAAuthentication
Dyrektywa dotycząca także protokołu wersji pierszej. Jej znaczenie jest
takie samo jak wyżej, ale dla uwierzytelniania RSA. Domyślnie jest  yes .
1.6. RSARHostAuthentication
Tylko dla protokołu wersji pierszej. Określa, czy próbujemy logowania
z użyciem RSA, czy nie. Takowe nastąpi, jeśli istnieją odpowiednie klucze
lub agent uwierzytelniający jest uruchomiony. Domyślnie jest  yes .
1.7. PasswordAuthentication
Używamy logowania z hasłem oczywiście. Domyślnie jest  yes .
1.8. FallBackToRsh
Określa, czy jeśli zastaniemy odrzuceni przy próbie logowania z powodu
błędu, np. jeśli demon sshd nie będzie uruchomiony, to czy automatycznie
mają być użyte r-komendy (rsh). Domyślnie jest  no i tak też zostawny.
1.9. UseRsh
Podobnie jak wyżej. Określa, czy na naszym komputerku będą kiedykol-
wiek wykorzystywane r-komendy (Brrr!). Ustawiamy na  no .
1.10. BatchMode
Wyłączamy tą opcją pytanie o hasło. Domyślnie jest  no i tak zostawmy.
Chyba, że korzystamy z jakiś plików wsadowym itp., to wtedy będziemy
musieli ustawić na  yes .
3
1.11. CheckHostIP
Domyślnie jest  yes i tak też zostawmy. Dyrektywa ta jest potrzebna
ze względów bezpieczeństwa. Sprawdza adres IP hosta w pliku
known_hosts.
Pozwala wykryć ssh, czy taki adres się zmienił np. na skutek ataku na
serwer DNS (DNS Spoofing).
1.12. StrictHostChecking
Ważna z punktu bezpieczeństwa. Jeśli jest ustawiona na  yes , to
ssh nigdy nie doda kluczy hosta do plikuknown_hostsi odrzuci takie połą-
czenie, którego klucze uległy zmianie. Jest to zabezpieczenie przed koniami
trojańskimi. Może to być w pewnych przypadkach bardzo wkurzające, jeśli
połączenia wykonywane są często. Klucze możemy dodawać ręcznie i wtedy
zostaniemy o nie zapytani, ale pod warunkiem, że dyrektywę tą ustawimy
na  ask . Jeśli na własne ryzyko damy  no to wszystkie nowe klucze będą
automatycznie dodawane do plikuknown_hosts.
Domyślnie jest  ask , ale sugeruję ustawić na  yes .
1.13. IdentityFile
Określa, które pliki są używane przy uwierzytelnianiu przy użyciu kluczy
RSA i DSA. Możliwe jest posiadanie kilku plków z takimi kluczami, wówczas
sprawdzane są one sekwencyjnie. Przykład:
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_rsa
1.14. Port
Coż, czyba nie ma wątpliwości. Domyślnie jest 22 i tak zostawiamy.
1.15. Protocol
Określa protoków dla wersji ssh. Możliwe są ustawienia 1 i 2 oraz oba
oddzielone przecinkiem. Domyślnie jest  2,1 , co oznacza, że najpierw pró-
bujemy przy użyciu protokołu wersji 2., a jak ta nie jest osiągalna
(saportowalna :-) ), to korzystamy z 1.
1.16. Cipher
Określa rodzaj szyfrowania dla naszych sesji połączeniowych, ale tylko dla
protokołu wersji 1. Nie wgłębiając się w szczegóły ustawmy na  blowfish .
1.17. Przykład pliku ssh config
Przykład typowej konfiguracji SSH. U mnie takowa działa z powodzeniem,
jak odkryję coś ciekawego, to objaśnię.
4
Host *
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication yes
RSAAuthentication yes
PasswordAuthentication yes
FallBackToRsh no
UseRsh no
BatchMode no
CheckHostIP yes
StrictHostKeyChecking yes
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_rsa
Port 22
Protocol 2,1
Cipher blowfish
EscapeChar ~
2. Opcje konfiguracyjne pliku sshd config
Nie będę opisywał tych, które występują także w opisywanym wcześniej
plikussh_config. Skupimy się na nowo występujących. Oto one:
2.1. ListenAddress
Określa lokalne adresy, na których sshd powinien słuchać. Domyślnie słu-
cha na wszystkich lokalnych adresach. Możemy tu podać jako argument adres
naszego komputera, na którym uruchamiany jest sshd.
2.2. HostKey
Określa plik zawierający prywatne klucze hosta używane przez SSH proto-
kół wersji 1 i 2. Należy podkreślić, że sshd odrzuci te klucze, których
prawa dostępu są ogólnie możliwe. Możliwe jest posiadanie kilku kluczy.
Dla protokołu wersji 1. używane są klucze rsa1, a dla wersji 2. dsa lub rsa.
Przykład:
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
2.3. KeyRegenerationInterval
Dotyczy protokołu SSH wersji 1. (ephemereal?) Klucz servera jest auto-
matycznie regenorowany po określonej ilości sekund. Zamiarem tej regenara-
cji jest niedopuszczenie do odszyfrowania przechwyconej sesji. Klucz nie jest
5
nigdzie przechowywany. Jeśli ustawimy 0, klucz nie będzie nigdy regenero-
wany. Wartością domyślną jest 3600 sekund. Tak też możemy zostawić.
2.4. ServerKeyBits
Definiuje liczbę efemeralnego klucza hosta, dla protokołu wersji 1. War-
tością minimalną jest 512 bitów, a domyślną 768. My ustawiamy na przykład
na 1024 bity.
2.5. SyslogFacility
Sposób w jaki będą logowane poczyniania demona sshd. Mozliwe wartości
to:
" DAEMON,
" USER,
" AUTH,
" LOCAL0,
" LOCAL1,
" LOCAL2,
" LOCAL3,
" i tak do LOCAL7.
Domyślnie jest AUTH (autoryzacja) i tak zastawiamy.
2.6. LogLevel
Ustawia stopnień  gadatliwości demona sshd przy logowaniu komunika-
tów z jego działania. Domyślnie jest INFO i tak zastawiamy, chyba że zależy
nam na debuggingu, to można tymczasowo ustawić na DEBUG. Tyma-
czowo, bo zagraża to prywatności użytkowników.
2.7. LoginGraceTime
Server rozłączy się po podanym czasie, jeśli użytkownik nie zalogował się
poprawnie. Jeśli damy zero, taki czas zostanie wyłączony. Domyślnie jest 600
sekund i tak zostawiamy.
2.8. PermitRootLogin
Czy administrator może się zdalnie zalogować na serwer przy użyciu SSH.
Domyślnie jest  yes , sugeruję ustawić na  no .
2.9. StrictModes
Określa, czy sshd sprawdzi prawa dostępu i właściciela plików oraz kata-
logu domowego ludka, który się loguje zanim pozwoli na zalogowanie. Do-
myślnie jest  yes i tak zostawmy.
2.10. RSAAuthentication
Tylko dla protokołu wersji 1. Czy logowanie z użyciem RSA jest dopusz-
czalne. Domyślnie jest  yes i tak zostawiamy.
6
2.11. PubkeyAuthentication
Tylko dla protokołu wersji 2. Określa, czy uwierzytelnianie z użyciem
kluczy publicznych jest możliwe. Domyślnie jest  yes i tak zostawiamy.
2.12. PermitEmptyPassowrd
Jeśli logowanie przy użyciu haseł jest dostępne, to czy można się zalogo-
wać na konta z pustym hasłem. Domyślnie jest  no i tak zostawmy.
2.13. KeepAlive
Ustala, czy w przypadku kiedy klient lub trasa do niego zdechnie, to
czy serwer przerwie połączenie dowiadując się o tym natychmiast. Zapobiego
to tworzeniu się tzw. użytkowników-duchów, procesów, które niepotrzebnie
zabierają zasoby serwera. Domyślnie jest  yes i tak zostawmy.
2.14. PrintLastLog
Można się domyśleć po nazwie. Ja preferuję ciche logowania, szczególnie
w przypadku SSH, więc ustawiam tę dyrektywę na  no .
2.15. X11Forwarding
Określa, czy dozwolone jest przekierowanie X Window. Domyślnie jest
 no . Nie zwiększa to bezpieczeństwa, bo użytkownić może użyć własnego
sposobu przekierowania, ale jeśli takowego nie potrzebujemy, to dajmy tu
jasno  no . Przekierowanie takie jest domyślnie wyłączone, jeśli ustalona
jest dyrektywa UseLogin.
2.16. AllowUsers
Ważna opcja, można się tego domyśleć po nazwie. Określa użytkownika
lub użytkowników, którzy mogą się logować. Odziela się ich przecinkiem.
Można też podać wyrażenie postaciuser@host, wówczas użytkownik i host
są sprawdzane odzielnie. Wpiszmy tu swoich ludków.
2.17. PrintMotd
Domyślnie jest  yes . Określa, czy po zalogowaniu czytana i wyświetalana
jest zawartość pliku/etc/motd.
2.18. Subsystem
Dotyczy tylko protokołu wersji 2. i określa podsystem, który może być
użyty przy wykorzystaniu SSH. Najczęściej jest to sftp, ale domyślnie dyrek-
tywa ta nie jest pisana  musimy ją więc dopisać:
Subsystem sftp /usr/local/libexec/sftp-server
7
2.19. Przykład pliku sshd config
# This is ssh server systemwide configuration file.
Port 22
Protocol 2,1
ListenAddress 192.168.1.1
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 600
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
RhostsAuthentication no
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PasswordAuthentication yes
PermitEmptyPasswords no
KeepAlive yes
PrintLastLog no
X11Forwarding no
PrintMotd yes
AllowUsers mkrzych
Subsystem sftp /usr/local/libexec/sftp-server
3. Zakończenie
Przedstawiłem w tym docu krótkie wprowadzenie w opcje konfiguracyjne
Secure Shella. Po resztę odsyłam do podręcznika ekranowego tegoż oprogra-
mowania oraz na stronęwww.openssh.com.
Sukcesów i zadowolenia z Linux-a
Krzysztof  Siwy Maj
8


Wyszukiwarka