SSH hardenen op LTS systemen
Recentelijk zijn we diverse Linux-systemen onder Long Term Support (LTS) tegengekomen die een zwakke Secure Shell (SSH)-serverconfiguratie hadden. SSH stelt je in staat om veilig in te loggen op een server via een versleutelde verbinding. Verder onderzoek naar deze kwestie leerde ons dat dit de standaardconfiguratie is voor deze wat oudere, maar nog wel ondersteunde systemen.
We hebben deze zwakke configuratie op diverse Linux-smaken onder LTS aangetroffen, namelijk Centos 6 (OpenSSH_5.3p1), Ubuntu 14 (OpenSSH_6.6.1) en Debian 8 (OpenSSH_6.7p1). Recentere Linux versies maken gebruik van OpenSSH versie 7 welke een meer veilige standaard configuratie heeft. In deze blog laten we je zien hoe je de oudere SSH daemons kunt hardenen op deze systemen zodat deze veilig gebruikt kunnen worden.
Wat is het probleem?
Geen enkele cryptografische methode is bestand tegen de tand des tijds. Methodes die we nu als veilig beschouwen, zouden volgend jaar onveilig kunnen worden geacht. Veel cryptografische opties die worden aangeboden door de standaardconfiguratie van SSH-servers op LTS-systemen zijn onveilig gebleken:
- Alle KEX algoritmes die gebruik maken van een Diffie-Hellman sleutel kleiner dan 2048 bits;
- Alle *-CBC en RC4 ciphersuites;
- Alle HMAC algoritmes, op
hmac-sha2-256
enhmac-sha2-512
na.
Om te controleren welke methodes worden aangeboden door de SSH-server, gebruikt men het commando sudo sshd -T
.
Het risico
Gebruik maken van de standaardconfiguratie brengt een risico met zich mee. Een aanvaller of kwaadaardige gebruiker kan misbruik maken van de zwakke cryptografische methoden en mogelijk de verbinding tussen u en de server decoderen. Er zijn verschillende aanvallen bekend die door een aanvaller gebruikt kunnen worden om dit te bereiken, zoals Logjam, FREAK en padding oracles. Logjam is een beveiligingskwetsbaarheid in kleine Diffie-Hellman sleuteluitwisselingen van 512 tot 1024 bits sleutels. FREAK is een soortgelijke kwetsbaarheid die zich ook richt op kleine sleutels. Een padding oracle is een manier voor een aanvaller met de mogelijkheid om gecodeerde tekst die naar de server is verzonden aan te passen, om zo de waarde van de originele tekst te achterhalen.
De oplossing
Voeg de volgende regels toe aan de sshd_config
(deze bevindt zich normaal gesproken in de folder /etc/ssh/
) om een veilige verbinding af te dwingen:
KexAlgorithms diffie-hellman-group-exchange-sha256
MACs hmac-sha2-512,hmac-sha2-256
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
Vervolgens dient de ssh daemon opnieuw gestart te worden. Daarop kan men middels sudo sshd -T
weer controleren welke methodes worden aangeboden. Een alternatief hierop is een ssh-verbinding op zetten met de server en middels de flag -vv
controleren welke methodes de server aanbiedt.
Conclusie
Het is wel degelijk mogelijk om wat oudere Linux-installaties onder Long Term Support veilig te beheren via SSH, maar dan moet de configuratie wel wat aangescherpt worden. Als dit volgens bovenstaande methode wordt gedaan dan kan ook de iets oudere versie van de SSH-server nog veilig gebruikt worden.