Uruchomienie SSH
na alternatywnym porcie nie jest już traktowane jako bezpieczeństwo. Daje to tylko odrobinę niejasności i dodatkowy stopień złożoności dla użytkowników. Dodaje zero przeszkód dla osób chcących złamać sieć, które korzystają ze zautomatyzowanych skanerów portów i nie dbają o to, na jakim porcie działa.
Jeśli chcesz wzmocnić bezpieczeństwo w systemie, który zezwala na zdalny przychodzący SSH przez Internet, kontroluj swoich użytkowników sshd_config
zgodnie ze wskazaniami @Anthon, a następnie wdrażaj zabezpieczenia bezpośrednio w PAM.
Utwórz dwie grupy lusers
i rusers
. Dodaj zdalnych użytkowników mobilnych do rusers
grupy. Użyj modułu PAM pam_succeed_if.so , aby zezwolić na dostęp tym użytkownikom. Dodaj linie do konfiguracji pam dla ssh:
account sufficient pam_succeed_if.so user ingroup lusers
account sufficient pam_succeed_if.so user ingroup rusers
Niektóre moduły pam_succeed_if.so mogą wymagać użycia nieco innej składni, np group = lusers
.
Wówczas nie tylko sshd
ogranicza użytkowników, którzy mogą się połączyć, ale w przypadku błędu sshd
nadal masz ochronę, którą oferują ograniczenia oparte na PAM.
Dodatkowym krokiem dla zdalnych użytkowników jest wymuszenie użycia ssh_keys z hasłami. Tak więc lokalni użytkownicy mogą logować się przy użyciu kluczy lub haseł, ale użytkownicy zdalni muszą mieć klucz, a jeśli utworzysz dla nich klucze, możesz upewnić się, że klucz ma skojarzone hasło. Ograniczając w ten sposób dostęp do lokalizacji, które faktycznie posiadają klucz SSH i hasło. I ograniczenie potencjalnych wektorów ataku, jeśli hasło użytkownika zostanie naruszone.
W sshd_config
:
zmień 2 ustawienia:
ChallengeResponseAuthentication yes
i
PasswordAuthentication yes
do:
ChallengeResponseAuthentication no
i
PasswordAuthentication no
Tak więc domyślnie jest teraz dozwolone tylko uwierzytelnianie klucza. Następnie dla użytkowników lokalnych możesz użyć match
ustawienia konfiguracji, aby zmienić ustawienie domyślne dla użytkowników lokalnych. Zakładając, że Twoja lokalna sieć prywatna to 192.168.1.0/24, dodaj do sshd_config
:
Match Address 192.168.1.0/24
PasswordAuthentication yes
Teraz użytkownicy lokalni mogą łączyć się za pomocą haseł lub kluczy, a użytkownicy zdalni będą zmuszeni do korzystania z kluczy. To od Ciebie zależy, czy utworzysz klucze ze zdaniami.
Jako dodatkową korzyść, musisz zarządzać tylko jednym sshd_config
, i musisz uruchomić ssh tylko na jednym porcie, co ułatwia twoje własne zarządzanie.
edycja 2017-01-21 - Ograniczenie użycia authorized_keys
plików.
Jeśli chcesz się upewnić, że użytkownicy nie mogą po prostu samodzielnie wygenerować klucza ssh i użyć go z authorized_keys
plikiem do logowania, możesz kontrolować, ustawiając określoną lokalizację dla sshd, aby szukał autoryzowanych kluczy.
W /etc/ssh/sshd_config
zmień:
AuthorizedKeysFile %h/ssh/authorized_keys
do czegoś takiego:
AuthorizedKeysFile /etc/.ssh/authorized_keys/%u
Wskazanie kontrolowanego katalogu, do którego użytkownicy nie mają uprawnień do zapisu, oznacza, że nie mogą wygenerować własnego klucza i użyć go do obejścia wprowadzonych reguł.
lusers
grupie, ale nie wrusers
grupie, wygeneruje parę kluczy i zaktualizuje ją~/.ssh/authorized_keys
, będzie mógł zalogować się zdalnie.