Co oznacza „bez hasła” w pliku sshd_config?

118

Właśnie zainstalowałem Ubuntu 14.04 na moim serwerze i konfigurowałem wszystkie moje pliki konfiguracyjne, gdy natknąłem się na to w moim sshd_configpliku:

# Authentication:
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes

To mnie bardzo martwiło. Pomyślałem, że możliwe jest, że ktoś zaloguje się na mój serwer jako root bez hasła.

Próbowałem połączyć się z moim serwerem jako root przez:

johns-mbp:~ john$ ssh [email protected]
The authenticity of host '192.168.1.48 (192.168.1.48)' can't be established.
RSA key fingerprint is 40:7e:28:f1:a8:36:28:da:eb:6f:d2:d0:3f:4b:4b:fe.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.48' (RSA) to the list of known hosts.
[email protected]'s password:  

Podałem puste hasło i nie wpuściło mnie, co było ulgą. Więc moje pytanie brzmi: co oznacza bez hasła i dlaczego jest to domyślne w Ubuntu 14.04?

Jan
źródło

Odpowiedzi:

142

Z strony podręcznika :

PermitRootLogin

Określa, czy root może się zalogować przy użyciu ssh (1). Argumentem musi być „tak”, „bez hasła”, „tylko wymuszone polecenia” lub „nie”. Domyślnie jest to „tak”.

Jeśli ta opcja jest ustawiona na „bez hasła”, uwierzytelnianie za pomocą hasła jest wyłączone dla użytkownika root.

Jeśli ta opcja jest ustawiona na „tylko wymuszone polecenia”, logowanie do katalogu głównego z uwierzytelnianiem za pomocą klucza publicznego będzie dozwolone, ale tylko wtedy, gdy commandopcja zostanie określona (co może być przydatne do wykonywania zdalnych kopii zapasowych, nawet jeśli logowanie do katalogu głównego zwykle nie jest dozwolone) . Wszystkie inne metody uwierzytelniania są wyłączone dla użytkownika root.

Jeśli ta opcja jest ustawiona na „nie”, root nie będzie mógł się zalogować.

W ten sposób without-passwordumożliwia logowanie roota tylko z uwierzytelniania klucza publicznego. Jest to często używane w skryptach powłoki i automatycznych zadaniach.

Florian Diesch
źródło
2
Nie zezwalanie na „rootowanie” przy użyciu hasła jest uważane za większe bezpieczeństwo niż na to pozwalanie. To powiedziawszy, nie powinieneś logować się do roota , chyba że żadna inna metoda (sudo itp.) Nie zadziała.
david6
5
Jak widać jednak, podczas gdy strona podręcznika wskazuje, że domyślną wartością jest „tak”, Ubuntu ustawił domyślną wartość „bez hasła”.
żelazne koło
36
Więc without-passwordoznacza wszelkie metody dozwolony z wyjątkiem hasła? To naprawdę brzmi jak „wolno się logować bez potrzeby podawania hasła”.
Gauthier
1
„Wszelki dostęp do roota powinien być ułatwiony poprzez lokalne logowanie z unikalnym i możliwym do zidentyfikowania identyfikatorem użytkownika, a następnie za pomocą komendy su po lokalnym uwierzytelnieniu. Bezpośrednie logowanie do roota jest wyjątkowo niepewne i oferuje niewiele w zakresie kontroli kontroli odpowiedzialności”. - Przewodnik po systemie CIS IBM AIX
Dominik Antal
22
PermitRootLogin now accepts an argument of 'prohibit-password' as a less-ambiguous synonym of 'without-password'.
endolith,
16

W rzeczywistości to ustawienie praktycznie nie działa, jeśli używasz uwierzytelniania PAM. Na dole sshd_configpliku konfiguracyjnego znajdziesz:

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

Domyślnym ustawieniem w Ubuntu jest użycie uwierzytelnienia PAM:

UsePAM yes
Atari911
źródło
1
Z mojego krótkiego doświadczenia wynika , że nawet ustawienie tego w jakiś sposób nonie sprawi, PermitRootLogin without-passwordże zadziała! :(
cregox
1
@ cregox, jeśli używasz typowego systemu komputerowego, musisz to zrobić ssh-copy-id -i ~/.ssh/id_rsa.pub user@ipi to ~/.ssh/authorized_keysweź pod uwagę, jeśli nie możesz zalogować się jako root, nie utworzyłbyś tego pliku w /root/.ssh/, ale działa, jeśli skopiujesz plik tam
Rutrus
3

Należy pamiętać, że istnieją uzasadnione powody, aby zalogować się przez root (ale przy użyciu kluczy kryptograficznych i nigdy hasła). Typowym przykładem jest zdalna synchronizacja dwóch serwerów (aby jeden z nich był używany jako tryb failover). Ponieważ struktura musi być identyczna, często wymagane jest hasło roota.

Oto przykład użycia unison do synchronizacji: https://serverfault.com/questions/341985/remotely-use-root-over-ssh-for-unison

Gwyneth Llewelyn
źródło
2
Czy logowanie się przy użyciu zwykłego użytkownika (najprawdopodobniej przy użyciu kluczy kryptograficznych) i przynależność do sudogrupy również nie pozwoli ci to zrobić?
NS du Toit
2

W nowszych wersjach sshd zmieniono „bez hasła” na „zabrania hasła”.

Obie wersje działają, prawdopodobnie najlepiej użyć „zabroń hasła”, jeśli możesz: lepiej się tłumaczy.

teknopaul
źródło