SSH: Jak wyłączyć słabe szyfry?

47

Zespół bezpieczeństwa mojej organizacji powiedział nam, abyśmy wyłączali słabe szyfry, ponieważ wydają słabe klucze.

  arcfour
  arcfour128
  arcfour256

Ale próbowałem szukać tych szyfrów w plikach ssh_config i sshd_config, ale znalazłem je skomentowane.

 grep arcfour *
ssh_config:#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

Gdzie jeszcze powinienem sprawdzić, aby wyłączyć te szyfry z SSH?

rɑːdʒɑ
źródło
dla serwera SSH będzie on /etc/ssh/sshd_configwłączony, a dla klienta SSH będzie /etc/ssh/ssh_config. Chcesz poszukać Cipherlinii w każdym z nich i na przykład właśnie ją Cipher aes256-ctrokreśliłeś. Następnie uruchom ponownie SSH za pomocą /etc/init.d/sshd restartlub za pomocą równoważnego polecenia systemd.
ron
1
chcesz uzyskać wiedzę na temat wszystkich parametrów, sshd_configjeśli naprawdę zależy Ci na bezpieczeństwie SSH, w przeciwnym razie może to być cały teatr bezpieczeństwa.
ron
@ron drugi komentarz jest intrygujący, czy możesz zilustrować przykładem, co zamierzasz?
Jerome,
cipherslista jest tylko jednym z wielu ustawień dla konieczności SSH prawidłowo wdrożony ... Protokół PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel, i tak dalej. Można polegać na ich domyślne ustawienia wprowadzone w swojej dystrybucji Linuksa, aleIgnornance is bliss only up until you have a problem
Rona

Odpowiedzi:

40

Jeśli nie masz jawnej listy szyfrów ustawionych ssh_configza pomocą Cipherssłowa kluczowego, wówczas wartością domyślną, według man 5 ssh_config(po stronie klienta) i man 5 sshd_config(po stronie serwera), jest:

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            [email protected],[email protected],
            [email protected],
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

Zwróć uwagę na obecność szyfrów arcfour. Może być więc konieczne jawne ustawienie bardziej restrykcyjnej wartości dla Ciphers.

ssh -Q cipherod klienta powie Ci, jakie schematy może obsłużyć Twój klient. Zauważ, że na tę listę nie ma wpływu lista szyfrów określonych w ssh_config. Usunięcie szyfru z ssh_confignie spowoduje usunięcia go z wyjścia ssh -Q cipher. Ponadto użycie sshz -copcją jawnego określenia szyfru zastąpi ograniczoną listę szyfrów, które ustawiłeś ssh_configi prawdopodobnie pozwoli ci użyć słabego szyfru. Jest to funkcja, która pozwala używać sshklienta do komunikacji z przestarzałymi serwerami SSH, które nie obsługują nowszych silniejszych szyfrów.

nmap --script ssh2-enum-algos -sV -p <port> <host> powie Ci, jakie schematy obsługuje Twój serwer.

Ulrich Schwarz
źródło
Cześć, wspomniałem o konkretnych szyfrach w ssh_config i zrestartowałem usługę ssh, ale kiedy zrobiłem ssh -Q cipher <nazwa_hosta> nadal otrzymuję wszystkie szyfry, które otrzymuję wcześniej, niezależnie od mojej konfiguracji.
rɑːdʒɑ
1
Przepraszam, ssh_configjest konfiguracja po stronie klienta, konfiguracja po stronie serwera sshd_config, proszę spróbować. (Nazywany również Cipherstam.)
Ulrich Schwarz,
Tak, wiem, ale kiedy szukam szyfrów, znalazłem je na ssh_config, więc dokonałem tam zmian. Jako serwer produkcyjny nic nie robię, nie jestem pewien
rɑːdʒɑ
Pamiętaj, że wartości domyślne mogą się różnić między dystrybucjami.
Jonas Schäfer
Wydaje się, że nie ma ssh -Qstarszych wersji. (np. CentOS 6's openssh v5.3p1)
Tomofumi,
30

Aby wyłączyć RC4 i korzystać z bezpiecznych szyfrów na serwerze SSH, należy na stałe zakodować następujące elementy /etc/ssh/sshd_config

ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

LUB jeśli wolisz nie dyktować szyfrów, a po prostu chcesz usunąć niepewne szyfry, uruchom to w wierszu poleceń (w trybie sudo):

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|[email protected]\)\,\?//g" >> /etc/ssh/sshd_config

Możesz sprawdzić szyfry aktualnie używane przez twój serwer za pomocą:

sudo sshd -T | grep ciphers | perl -pe 's/,/\n/g' | sort -u

Upewnij się, że twój klient ssh może korzystać z tych szyfrów, uruchom

ssh -Q cipher | sort -u

aby zobaczyć listę.

Możesz także poinstruować swojego klienta SSH, aby negocjował tylko bezpieczne szyfry ze zdalnymi serwerami. W /etc/ssh/ssh_configzestawie:

Host *
    ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

Pochodzą stąd powyższe fragmenty
Aby przetestować ustawienia serwera, możesz użyć ssh-audit

savageBum
źródło
20

Problem z jawnym określaniem listy szyfrów polega na tym, że musisz ręcznie dodawać nowe szyfry, gdy tylko się pojawią. Zamiast tego po prostu wypisz szyfry, które chcesz usunąć, poprzedzając listę (nie każdy pojedynczy szyfr) znakiem „-”. W takim przypadku wiersz Ciphers powinien brzmieć:

Ciphers -arcfour*

Lub jeśli wolisz:

Ciphers -arcfour,arcfour128,arcfour256

Ze strony podręcznika sshd_config w opcji Ciphers (od OpenSSH 7.5, wydanej 2017-03-20):

Jeśli określona wartość zaczyna się znakiem „+”, wówczas określone szyfry zostaną dołączone do zestawu domyślnego zamiast ich zastępowania. Jeśli określona wartość zaczyna się znakiem „-”, wówczas określone szyfry (w tym symbole wieloznaczne) zostaną usunięte z zestawu domyślnego zamiast ich zastępowania.

Dotyczy to również opcji KexAlgorytmy i MAC .

Kosmiczny pies
źródło
2

włącz / wyłącz szyfr należy dodać / usunąć w pliku / etc / ssh / sshd_config Po edycji tego pliku usługa musi zostać ponownie załadowana

systemctl reload sshd
/etc/init.d/sshd reload

Następnie uruchomienie tego polecenia na kliencie powie ci, które schematy obsługują

ssh -Q cipher

Aby sprawdzić, czy szyfrowanie arcfour jest włączone na serwerze, uruchom to polecenie

ssh localhost -c arcfour

Aby sprawdzić, czy szyfr arcfour128 jest włączony na serwerze, uruchom tę komendę

ssh localhost -c arcfour128
Kumar
źródło
W powyższych odpowiedziach brakowało tego kroku
Saras Arya,
1

Jak wyłączyć słaby szyfr ssh, testowany w 100% na Fedorze 29. Problem: Nessus zgłasza, że ​​mój serwer samba4 nie używa silnych szyfrów aes256-cbc i aes128-cbc. Więc wstawiłem te linie/etc/ssh/sshd_config

MACs hmac-sha2-512,hmac-sha2-256
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256,[email protected]

Et voilà! .. nadal używa szyfru cbc, ponieważ to polecenie działa :(

ssh -c aes256-cbc samba4

Sprawdzam więc przydatny systemd i stwierdzam, że usługa sshd używa innego pliku dla szyfrów

/etc/crypto-policies/back-ends/opensshserver.config

Utwórz kopię zapasową pliku dla bezpieczeństwa

cp /etc/crypto-policies/back-ends/opensshserver.config     /etc/crypto-policies/back-ends/opensshserver.config.old

Edytuj go i usuń szyfr cbc. Uruchom ponownie usługę

systemctl restart sshd

I na koniec test, działa dobrze .. wyłączony.

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: [email protected],[email protected],aes256-ctr,[email protected],aes128-ctr
Elbarna
źródło