Zgodnie z zaleceniami CISecurity, nieużywane usługi należy usunąć. W przypadku SSH:
# apt purge openssh-server
po każdej zaś zmianie w konfiguracji (jeśli korzystamy z usługi), należy ją zrestartować:
# systemctl reload sshd
Jeśli zaś potrzebujemy zainstalować:
sudo apt install openssh-server
konfiguracja zaś znajduje się tutaj, aby ją edytować:
sudo nano /etc/ssh/sshd_config
Wśród zaleceń m.in. sprawdzenie czy jest wyłączone tunelowanie obrazu X11forwarding (i wyłączenie, jeśli włączone):
wiks@qrgo:~$ sudo sshd -T | grep x11forwarding
X11Forwarding no
Ustawiona maksymalna liczba nieudanych logowań na 4 (ew. korekta, bo domyślnie było 6):
wiks@qrgo:~$ sudo sshd -T | grep maxauthtries
maxauthtries 4
Dozwolone logowanie jako root (było ustawione jako 'without-password’, należy ustawić 'no’):
wiks@qrgo:~$ sudo sshd -T | grep permitrootlogin
permitrootlogin no
Zalecane progi czasu bezczynności oraz maksymalnej liczby wiadomości poprzez SSH od klienta w ciągu sekundy (domyślne ustawienie czasu bezczynności to 0 – wyłączone, zaleca się ustawić tutaj np. 5 minut – 300 sekund):
wiks@qrgo:~$ sudo sshd -T | grep clientaliveinterval
clientaliveinterval 300
wiks@qrgo:~$ sudo sshd -T | grep clientalivecountmax
clientalivecountmax 3
Zalecany maksymalny czas autentyfikacji (od połączenia do podania poprawnego hasła) należy ustawić na 60 sekund (domyślnie to 120 sekund):
wiks@qrgo:~$ sudo sshd -T | grep logingracetime
logingracetime 60
W zaleceniach znalazła się podpowiedź, aby ograniczyć liczbę użytkowników dozwolonych do łączenia się poprzez SSH. Można również wskazać grupy dozwolone, albo użytkowników i grupy, którym nie zezwalamy na takie połączenia.
Domyślnie opcje te są wyłączone. Korzystając z sugestii należy ustalić tych użytkowników, którym zezwalamy i sprawdzić czy działa:
wiks@qrgo:~$ sudo nano /etc/ssh/sshd_config
# [...]
# dopisujemy np.:
AllowUsers wiks sftp
# [...]
sprawdzenie:
wiks@qrgo:~$ sudo sshd -T | grep allowusers
allowusers wiks
allowusers sftp
Zalecane wyłączenie AllowTcpForwarding (domyślnie dozwolone =yes). Jeśli nieużywane, należy ustawić na 'no’. Tutaj trzeba być oczywiście ostrożnym, jeśli używamy np. VNC via TSL, przy zablokowanym i próbie połączenia VNC zobaczymy:
wiks@dellwiks:~$ ssh -L 5901:localhost:5901 -N -f -l wiks 192.168.1.101 -p 57655
wiks@192.168.0.101's password:
wiks@dellwiks:~$ channel 2: open failed: administratively prohibited: open failed
Wymieniono jedynie wybrane elementy, przeważnie te, których ustawienia domyślne były inne niż zalecane. Zalecam oczywiście zerknąć do źródła i sprawdzić wszystkie rekomendacje.