Hoe SSH Linux-beveiliging te configureren

Een van de meest gebruikte protocollen op beveiligingsniveau om verbindingen in UNIX-omgevingen tot stand te brengen, is het SSH-protocol (Secure Shell), dat ons een reeks functionaliteiten en speciale kenmerken biedt om gegevens en gemaakte verbindingen te beschermen.

SSH is een protocol dat is ontwikkeld en gericht is op de beveiliging van communicatie tussen twee systemen via het client / server-model en waardoor gebruikers op afstand verbinding kunnen maken met een host.
Een van de belangrijkste kenmerken van SSH is dat het de verbindingssessie versleutelt, wat voorkomt dat een gebruiker ongecodeerde wachtwoorden bemachtigt.

BeschermingstypesBij gebruik van het SSH-protocol hebben we de volgende soorten beveiliging:

  • Zodra de eerste verbinding tot stand is gebracht, kan de client controleren of deze verbinding maakt met dezelfde server waarmee hij eerder verbinding heeft gemaakt
  • De client stuurt de authenticatie-informatie naar de server via 128-bits codering
  • Alle gegevens die tijdens de sessie worden verzonden en ontvangen, worden overgedragen met 128-bits codering, wat het decoderen en lezen moeilijk maakt
  • De client heeft de mogelijkheid om X11-applicaties van de server door te sturen, dit is een techniek genaamd X11-forwarding die een veilige manier biedt om grafische applicaties te gebruiken via een lokaal of extern netwerk.

Nu vinden we in Linux-besturingssystemen het SSH-configuratiebestand in het pad / etc / ssh / ssh_config en dankzij dit bestand is het mogelijk om alle beveiligingsmaatregelen voor SSH-verbindingen uit te voeren.

VERGROTEN

Voor macOS-systemen bevindt dit bestand zich in het / private / etc / ssh / ssh_config pad en dit heeft een symbolische link naar / etc / ssh / ssh_config voor compatibiliteitsdoeleinden.

Bij het bewerken van dit bestand moeten we rekening houden met het volgende.

  • Lege regels en regels die beginnen met '#' zijn opmerkingen
  • Elke regel begint met een trefwoord, gevolgd door argument(en)
  • Configuratie-opties kunnen worden gescheiden door spaties of optionele spaties en een = teken
  • Argumenten kunnen tussen dubbele aanhalingstekens ("") worden geplaatst om argumenten op te geven die spaties bevatten

1. Hoe het Linux ssh_config-bestand te bewerken


Om dit bestand te bewerken om de juiste waarden vast te stellen, moeten we het volgende met een editor uitvoeren:
 sudo nano / etc / ssh / ssh_config
We zullen het volgende zien:

VERGROTEN

Het ssh_config-bestand is georganiseerd door hosts en daar bevat elke host specifieke instellingen voor die specifieke host, daar kunnen we jokertekens zoals * gebruiken om meerdere hostnamen te matchen met een enkele instructie.
Enkele van de parameters die we in dit bestand kunnen gebruiken zijn:

GastheerBeperk instructies die alleen voor hosts zijn die overeenkomen met een van de patronen die na het trefwoord worden gegeven.
OvereenkomstBeperk verklaringen om alleen van toepassing te zijn op hosts die voldoen aan gespecificeerde criteria
AdresFamilieSpecificeert welke adresfamilie moet worden gebruikt bij het verbinden, geldige argumenten zijn: any, inet, inet6.
BatchModusMet deze waarde wordt de wachtwoordquery uitgeschakeld, waardoor onbedoelde blokkering van een wachtwoordverzoek wordt voorkomen
BindAdresGeeft aan dat het adres dat op de lokale computer is opgegeven, moet worden gebruikt als het adres van de verbindingsbron.
UitdagingReactieAuthenticatieGeeft aan of challenge-responsverificatie moet worden gebruikt. Dit is in de eerste plaats een verouderde methode en is vervangen door KbdInteractiveAuthentication
CheckHostIPVraag ssh om ook het IP-adres van de host te controleren in het bestand 'known_hosts'.
CijferVerwijst naar de codering die zal worden gebruikt om de sessie te coderen in protocolversie 1.
cijfersSpecificeert de toegestane cijfers voor versie 2 van het protocol in volgorde van voorkeur.

Vervolgens zullen we enkele praktische tips zien om de beveiliging van SSH-verbindingen met Linux te verbeteren en zo de beste toegangsprestaties te verkrijgen.

2. Hoe Linux SSH-bestanden te vergrendelen


De eerste stap voordat u het bestand bewerkt, is ervoor te zorgen dat zowel het ssh_config-bestand als het sshd_config-bestand de eigenaar en de gebruiker als root hebben geconfigureerd, dit omdat het de supergebruiker van Linux is en niemand beter dan dit de eigenaar is.

Hiervoor voeren wij het volgende uit:

 sudo chown root: root / etc / ssh / sshd_config sudo chmod og-rwx / etc / ssh / sshd_config

3. Hoe SSH-protocol versie 2 Linux te bevestigen


Versie 2 van SSH heeft een verbeterd algoritme voor sleuteluitwisseling dat niet kwetsbaar is voor het beveiligingslek in versie 1, waardoor de algemene beveiliging van de verbindingen wordt verbeterd, dus het is ideaal om te bevestigen dat het nieuwe Protocol 2 wordt gebruikt in plaats van Protocol 1 en hiervoor moeten we de volgende regel in het ssh_config-bestand bevestigen:
 Protocol 2

VERGROTEN

Daar kunnen we het protocol ook impliciet configureren via Ciphers, dat Protocol automatisch op 2 zet om moderne Ciphers te gebruiken, hiervoor valideren we de volgende regel net onder de Protocol-regel:

 Cijfers aes128-ctr, aes192-ctr, aes256-ctr

4. Lege wachtwoorden uitschakelen SSH Linux


Het is belangrijk om te valideren dat elk SSH-account een wachtwoord moet gebruiken bij het inloggen, waarbij lege wachtwoorden worden geblokkeerd die eenvoudige toegang mogelijk maken en beveiligingsrisico's in het systeem veroorzaken, om dit te valideren gebruiken we de volgende regel of, als het niet bestaat, we zal het toevoegen door het symbool # te plaatsen:
 PermitEmptyPasswords nee

VERGROTEN

5. Hoe SSH Linux root login uit te schakelen


Door te voorkomen dat rootgebruikers inloggen, is het mogelijk om specifieke accounts te vergrendelen en het gebruik ervan in het hele systeem te verbieden. De opties voor PermitRootLogin zijn onder meer "ja", "zonder wachtwoord", "alleen geforceerde opdrachten" of "niet doen". De standaard is "ja". Om de root-login volledig te stoppen, gebruiken we de volgende regel:
 PermitRootLogin nr

VERGROTEN

6. Een nieuwe Linux SSH-poort instellen


Standaard is de toegewezen poort voor SSH 22, zodat aanvallers met zekerheid weten via welke poort ze toegang zullen krijgen om hun aanvallen uit te voeren, dus een goede beveiligingsmethode is om deze standaardpoort te wijzigen en alleen geautoriseerde gebruikers aan te geven.

Hiervoor moeten we de poortlijn lokaliseren en de volgende syntaxis toevoegen:

 Poort XXXXX

VERGROTEN

7. Hoe SSH Linux-toegang te beperken


Indien de toegang tot de SSH-server uit meerdere gebruikers bestaat, is het mogelijk om bepaalde beperkingen toe te passen door groepen aan te maken waarin deze gebruikers worden opgenomen, dit kan door trefwoorden toe te voegen zoals:
 AllowUsers (Gebruikerstoegang toestaan) AllowGroups (Groepstoegang toestaan) DenyUsers (Gebruikerstoegang beperken) DenyGroups (Groepstoegang beperken)
We kunnen bijvoorbeeld het volgende uitvoeren in het configuratiebestand:
 AllowUsers Solvetische tests DenyGroups-test

8. Hoe de SSH Linux-grace-tijd bij te werken


Standaard is de hoeveelheid tijd die een gebruiker inactief kan blijven zonder in te loggen twee minuten, om ongeautoriseerde verbindingen met het systeem te voorkomen, kan deze tijd worden bewerkt in de LoginGraceTime-regel om dit weer te vergroten of te verkleinen:
 InloggenGraceTijd 1m

VERGROTEN

9. Een SSH Linux-alias maken


Binnen de SSH-configuraties is het mogelijk om een ​​alias op te geven, deze maken het mogelijk om via een poort verbinding te maken met een specifieke server en gedefinieerde gebruikers, we kunnen bijvoorbeeld het volgende toevoegen:
 Host dev Hostnaam dev.solvetic.com Poort 3333 Gebruiker Solvetic
In dit specifieke geval moeten we als volgt toegang krijgen:
 ssh [email protected] -p 3333

10. Authenticatie met beveiligde sleutels SSH Linux


ssh zal veel veiliger en nuttiger zijn wanneer het wordt gebruikt met openbare / privé-sleutelparen voor authenticatiedoeleinden, in plaats van wachtwoorden te gebruiken. Het ssh_config-bestand kan een specifieke sleutel voor een specifieke host declareren met behulp van de IdentityFile-sleutel, in dit geval zouden we het volgende invoeren:
 Host dev Hostnaam dev.solvetic.com Poort 3333 Gebruiker Solvetic IdentityFile ~ / .ssh / dev.solvetic.key
In dit geval zou de verbinding als volgt zijn:
 ssh -i ~ / .ssh / dev.solvetic.key [email protected] -p 3333
Enkele aanvullende parameters zijn:

CompressieDaar kunnen we waarden als ja of nee gebruiken om compressie voor een host uit te schakelen.
Log niveauHet maakt het mogelijk om het detailniveau in de logs voor de ssh-client te definiëren, de opties zijn QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG1, DEBUG2 en DEBUG3.
StrikteHostKeyCheckingStel een voorkeur in voor het toevoegen van hosts aan het bestand famous_hosts.

We hebben dus verschillende opties om de beveiliging en SSH-connectiviteit in Linux te verbeteren.

wave wave wave wave wave