De Beste manier om Je SSH Server

0
60
Aanvullende Setiyowati/Shutterstock.com

Het beveiligen van uw Linux-systeem SSH verbinding door naar de bescherming van uw systeem en gegevens. Systeembeheerders en thuisgebruikers zowel nodig om uit te harden en veilige internet-facing computers, maar SSH kan ingewikkeld zijn. Hier zijn tien eenvoudige quick-wins te helpen bij de bescherming van uw SSH-server.

SSH Beveiliging Basis

SSH staat voor Secure Shell. De naam “SSH” is door elkaar gebruikt om, hetzij het SSH protocol zelf of de software tools die kunnen systeembeheerders en gebruikers te maken van beveiligde verbindingen met externe computers via dat protocol.

Het SSH protocol is een versleuteld protocol ontworpen om een beveiligde verbinding over een onveilig netwerk, zoals het internet. SSH in Linux wordt gebouwd op een portable versie van OpenSSH-project. Het is uitgevoerd in een klassieke client-server model, met een SSH server op het accepteren van verbindingen van SSH cliënten. De client wordt gebruikt om verbinding te maken met de server en weer te geven van de sessie van de gebruiker op afstand. De server accepteert de verbinding en voert de sessie.

In de standaard configuratie, een SSH-server zal luisteren naar inkomende verbindingen op TCP (Transmission Control Protocol) poort 22. Want dit is een gestandaardiseerde, op de bekende haven, het is een doel voor dreigingen en schadelijke bots.

Dreigingen lancering bots die scant een range IP-adressen op zoek naar open poorten. De poorten zijn vervolgens onderzocht om te zien of er kwetsbaarheden die kunnen worden benut. Denken, “ik ben veilig, er zijn grotere en betere doelen dan mij voor de bad guys te richten op,” is een valse redenering. De bots zijn niet selecteren van doelen op basis van enige verdienste; ze zijn methodisch op zoek naar systemen die ze kan doorbreken.

U nomineer jezelf als een slachtoffer als je dat nog niet beveiligd je systeem.

Veiligheid Wrijving

Veiligheid wrijving is de irritatie—ongeacht de mate—gebruikers en anderen zult ervaren wanneer u bij het implementeren van beveiligingsmaatregelen. We hebben een goed geheugen en kan me herinneren het introduceren van nieuwe gebruikers van een computersysteem, en hen horen vragen in een bange stem of ze had echt een wachtwoord in te voeren elke keer dat ze aangemeld bij het mainframe. Dat—ze—was de beveiliging van de wrijving.

(Overigens, de uitvinding van het wachtwoord is bijgeschreven op Fernando J. Corbató, een andere figuur in het pantheon van de computer wetenschappers waarvan het gecombineerde werk bijgedragen aan de omstandigheden die leidden tot de geboorte van Unix.)

De invoering van veiligheidsmaatregelen gaat meestal over een vorm van wrijving voor iemand. Ondernemers moeten betalen voor het. Het gebruikers mogelijk om hun vertrouwde praktijken, of denk aan een andere set van verificatie van gegevens, of het toevoegen van extra stappen om verbinding te maken met succes. De systeembeheerders hebben extra werk te doen om de uitvoering en het handhaven van de nieuwe veiligheidsmaatregelen.

Verharding en het vergrendelen van een Linux-of Unix-achtige operating systeem kan krijgen heel betrokken, heel snel. Wat we voorstellen is een set van eenvoudig te implementeren stappen voor het verbeteren van de beveiliging van uw computer zonder de noodzaak voor applicaties van derden en zonder graven door uw firewall.

Deze stappen niet het laatste woord in SSH beveiliging, maar zij gaan een lange manier naar voren uit de standaard instellingen, en zonder al te veel wrijving.

Gebruik SSH Protocol Versie 2

In 2006, het SSH protocol is bijgewerkt van versie 1 naar versie 2. Het was een belangrijke upgrade. Er waren zo veel veranderingen en verbeteringen, met name rond encryptie en beveiliging, die versie 2 is niet compatibel met versie 1. Om te voorkomen dat de aansluitingen van versie 1-clients, kunt u bepalen dat uw computer alleen het accepteren van verbindingen van versie 2 klanten.

Om dit te doen, bewerk je het /etc/ssh/sshd_config bestand. Doen We dit veel in dit artikel. Wanneer u het nodig om dit bestand te bewerken, dit is de opdracht:

sudo gedit /etc/ssh/sshd_config

Het toevoegen van de regel:

Protocol 2

En sla het bestand op. We gaan opnieuw op te starten van de SSH daemon proces. Nogmaals, we doen veel in dit artikel. Dit is de opdracht te gebruiken in elk geval:

sudo systemctl start sshd

Laten we eens kijken dat onze nieuwe instelling van kracht is. We zullen overstappen naar een andere computer en probeer SSH op onze test machine. En gebruiken we de -1 (protocol 1) optie om de kracht van het commando ssh te gebruiken protocol versie 1.

ssh -1 dave@howtogeek.local

Geweldig, onze verbinding verzoek wordt afgewezen. Laten we zorgen dat we kunnen nog steeds verbinding maken met protocol 2. We gebruiken de -2 (protocol 2) optie om te bewijzen feit.

ssh -2 dave@howtogeek.local

Het feit dat de SSH server is een verzoek om wachtwoord is een positieve indicatie dat de verbinding is gemaakt en u communiceert met de server. Eigenlijk, want de moderne SSH clients standaard gebruik van protocol 2, hebben we niet nodig om te specificeren protocol 2 zolang onze opdrachtgever is up-to-date.

ssh dave@howtogeek.local

En onze verbinding wordt geaccepteerd. Dus het is alleen maar zwakker en minder veilig protocol 1 verbindingen die worden afgewezen.

Vermijd Poort 22

Poort 22 is de standaard poort voor SSH verbindingen. Als u een andere poort, het voegt een beetje van veiligheid door obscuriteit tot uw systeem. Veiligheid door obscuriteit is nooit beschouwd als een echte veiligheidsmaatregel, en ik schold tegen het in andere artikelen. In feite, sommige van de betere aanval bots sonde alle poorten openen en te bepalen welke service ze dragen, in plaats van te vertrouwen op een eenvoudige look-up-lijst van de havens en in de veronderstelling dat ze de gebruikelijke diensten. Maar het gebruik van een niet-standaard poort kan helpen met het verlagen van het lawaai en de slechte verkeer op poort 22.

Configureren van een niet-standaard poort, bewerken je SSH configuratie bestand:

sudo gedit /etc/ssh/sshd_config

Verwijder de hash # uit het begin van de “Port” – regel en vervang de “22” met het poortnummer van uw keuze. Sla uw configuratie bestand en start de SSH daemon:

sudo systemctl start sshd

Laten we eens kijken wat voor effect dat heeft gehad. Op onze andere computer, gebruiken we het commando ssh verbinding te maken met onze server. De ssh commando gebruikt standaard poort 22:

ssh dave@howtogeek.local

Onze verbinding is geweigerd. Laten we het opnieuw proberen en geef de haven 470, gebruik de -p (poort) optie:

ssh -p 479 dave@howtogeek.local

Onze verbinding is geaccepteerd.

Filter Verbindingen die TCP Wrappers Gebruiken

TCP Wrappers is een makkelijk te begrijpen, access control list. Kunt u uitsluiten en verbindingen gebaseerd op eigenschappen van de verbinding de aanvraag, zoals het IP-adres of de hostnaam. TCP wrappers gebruikt moeten worden in combinatie met, en niet in de plaats van een juist ingestelde firewall. In ons specifieke geval, we kunnen aanscherpen dingen aanzienlijk door het gebruik van TCP wrappers.

TCP wrappers reeds geïnstalleerd was op de Ubuntu-18.04 LTS machine gebruikt voor het onderzoek in dit artikel. Het moest worden geïnstalleerd op Manjaro 18.10 en Fedora 30.

Te installeren op Fedora, gebruik je dit commando:

sudo yum install tcp_wrappers

Te installeren op Manjaro, gebruik je dit commando:

sudo pacman -Syu tcp-wrappers

Er zijn twee bestanden bij betrokken. Men houdt de toegestane lijst, en de andere heeft geweigerd de lijst. Bewerk de lijst weigeren met behulp van:

sudo gedit /etc/hosts.ontkennen

Dit zal de kde-editor met het ontkennen bestand geladen in.

U dient toe te voegen de lijn:

ALLE : ALLE

En sla het bestand op. Dat blokkeert alle toegang die niet zijn toegestaan. Nu moeten We toestaan dat de verbindingen die u wilt accepteren. Om dat te doen, moet u voor het bewerken van het bestand:

sudo gedit /etc/hosts.toestaan

Dit zal de kde-editor met het bestand geladen in.

We hebben toegevoegd in de SSH daemon naam, SSHD, en het IP-adres van de computer zoals we die nu gaat om een verbinding te maken. Sla het bestand op, en laat zien wanneer de beperkingen en rechten van kracht zijn.

Eerst zullen we proberen om verbinding te maken vanaf een computer die niet in de hosts.bestand:

De verbinding geweigerd. We zullen nu proberen verbinding te maken van de machine in IP-adres 192.168.4.23:

Onze verbinding is geaccepteerd.

Ons voorbeeld hier is een beetje brutaal—slechts één computer kunt aansluiten. TCP wrappers is heel veelzijdig en flexibeler is dan dit. Het ondersteunt hostnamen, wildcards, en subnet masks voor het accepteren van verbindingen van reeksen van IP-adressen. U wordt aangemoedigd om de man pagina.

Weigeren Van Een Verzoek Om Verbinding Met Geen Wachtwoorden

Hoewel het is een slechte gewoonte, een Linux systeem beheerder kan een gebruikers account zonder wachtwoord. Dat betekent dat externe verbinding aanvragen van dat account geen wachtwoord om te controleren tegen. Deze verbindingen worden geaccepteerd, maar niet-geverifieerde.

De default instellingen van SSH aanvaarden van verbindingsverzoeken, zonder wachtwoorden. We kunnen dat heel gemakkelijk, en zorg ervoor dat alle verbindingen worden geverifieerd.

We moeten het bewerken van uw SSH configuratie bestand:

sudo gedit /etc/ssh/sshd_config

Blader door het bestand totdat u de regel met “#PermitEmptyPasswords no.” Verwijder de hash # uit het begin van de regel en sla het bestand op. Opnieuw starten van de SSH daemon:

sudo systemctl start sshd

Gebruik SSH Sleutels in Plaats van op Wachtwoorden

SSH-sleutels bieden een veilig middel van het inloggen op een SSH-server. Wachtwoorden kunnen worden geraden, gebarsten, of brute-gedwongen. SSH-sleutels zijn niet open voor een dergelijke aanval.

Wanneer u het genereren van SSH sleutels, maakt u een paar sleutels. De ene is de publieke sleutel en de private sleutel. De openbare sleutel is geïnstalleerd op de servers waarmee u verbinding wilt maken. De private sleutel is, zoals de naam doet vermoeden, wordt veilig bewaard op uw eigen computer.

SSH-sleutels kunt u verbindingen maken zonder een wachtwoord die zijn—tegen de intuïtie—veiliger dan verbindingen die gebruik maken van een wachtwoord verificatie.

Wanneer u een verbinding verzoek van de externe computer maakt gebruik van de kopie van uw openbare sleutel voor het maken van een gecodeerd bericht dat is verzonden naar uw computer. Omdat het versleuteld met de publieke sleutel, kan uw computer unencrypt het met je private sleutel.

Uw computer kan uitpakken wat informatie van het bericht, met name de sessie-ID, dat codeert, en stuurt het terug naar de server. Als de server kan worden gedecodeerd met een kopie van uw openbare sleutel, en als de informatie in het bericht overeenkomt met wat de server verzonden naar u, uw verbinding wordt bevestigd dat van u komt.

Hier wordt een verbinding gemaakt met de server op 192.168.4.11, op een door gebruiker met SSH-keys. Let op dat ze niet om een wachtwoord gevraagd.

ssh dave@192.168.4.11

SSH sleutels verdienen een artikel helemaal voor zichzelf. Handig, we hebben er één voor u. Hier is het maken en installeren van SSH sleutels.

GERELATEERD: het Maken en Installeren van SSH Sleutels Van de Linux-Shell

Uitschakelen Van Het Wachtwoord Verificatie Helemaal

Natuurlijk, de logische uitbreiding van het gebruik van SSH keys is dat als alle externe gebruikers wordt gedwongen om deze in te voeren, schakelt u het wachtwoord verificatie volledig.

We moeten het bewerken van uw SSH configuratie bestand:

sudo gedit /etc/ssh/sshd_config

Blader door het bestand totdat u de regel die begint met “#PasswordAuthentication ja.” Verwijder de hash # uit het begin van de regel wijzigen in de “ja” naar “nee” en sla het bestand op. Opnieuw starten van de SSH daemon:

sudo systemctl start sshd

Uitschakelen X11 Forwarding

X11 forwarding maakt het mogelijk om externe gebruikers om grafische toepassingen van uw server via een SSH sessie. In de handen van een bedreiging acteur of kwaadwillende gebruiker, een GUI-interface kunnen hun kwaadaardige doeleinden gemakkelijker.

Een standaard mantra in cybersecurity is als u niet over een bonafide reden om het te hebben ingeschakeld, schakelt u deze uit. We zullen dat doen door het bewerken van uw SSH configuratie bestand:

sudo gedit /etc/ssh/sshd_config

Blader door het bestand totdat u de regel die begint met “#X11Forwarding niet.” Verwijder de hash # uit het begin van de regel en sla het bestand op. Opnieuw starten van de SSH daemon:

sudo systemctl start sshd

Instellen van een Idle Time-out Waarde

Als er sprake is van een gevestigde SSH-verbinding naar uw computer, en er is geen activiteit voor een periode van tijd, het kan een veiligheidsrisico opleveren. Er is een kans dat de gebruiker heeft nagelaten hun bureau en is bezig met elders. Iedereen die langs hun bureau kunt gaan zitten en beginnen met hun computer en via SSH, uw computer.

Het is veel veiliger om een time-out te beperken. De SSH-verbinding wordt verbroken wanneer u de inactieve periode overeenkomt met de tijd beperken. Nogmaals, we zullen het bewerken van uw SSH configuratie bestand:

sudo gedit /etc/ssh/sshd_config

Blader door het bestand totdat u de regel die begint met “#ClientAliveInterval 0” Verwijder de hash # uit het begin van de regel wijzigen in het cijfer 0 op de gewenste waarde. Wij hebben 300 seconden, dat is 5 minuten. Sla het bestand op en herstart de SSH daemon:

sudo systemctl start sshd

Een Limiet instellen Voor Pogingen Wachtwoord

Het definiëren van een limiet op het aantal verificatie-pogingen kunnen helpen bij het dwarsbomen van het raden van wachtwoorden en brute-force aanvallen. Na het aangegeven aantal van verificatieaanvragen de gebruiker zal worden losgekoppeld van de SSH-server. Standaard is er geen limiet. Maar dat is snel verholpen.

Nogmaals, we moeten het bewerken van uw SSH configuratie bestand:

sudo gedit /etc/ssh/sshd_config

Blader door het bestand totdat u de regel die begint met “#MaxAuthTries 0”. Verwijder de hash # uit het begin van de regel wijzigen in het cijfer 0 op de gewenste waarde. Wij hebben 3 hier. Sla het bestand op wanneer u uw wijzigingen op en herstart de SSH daemon:

sudo systemctl start sshd

We kunnen dit testen door te proberen om verbinding te maken en bewust foutief invoeren van een wachtwoord.

Merk op dat MaxAuthTries nummer leek te zijn, één meer dan het aantal pogingen van de gebruiker is toegestaan. Na twee slechte pogingen, onze test gebruiker is verbroken. Dit was met MaxAuthTries ingesteld op drie.

Schakel Root Inloggen

Het is een slechte gewoonte om als root in te loggen op uw Linux-computer. U moet zich aanmelden als een normale gebruiker en sudo gebruiken om acties uit te voeren die toegangsrechten voor de hoofdmap nodig. Meer nog, je moet niet toestaan van root in te loggen op uw SSH-server. Alleen regelmatige gebruikers moeten worden toegestaan om te verbinden. Als ze het nodig hebben voor het uitvoeren van een administratieve taak, ze moet gebruiken sudo ook. Als u gedwongen bent om een root gebruiker om in te loggen, kan je op zijn minst hen dwingen om het gebruik van SSH-keys.

Voor de laatste keer, we gaan het bewerken van uw SSH configuratie bestand:

sudo gedit /etc/ssh/sshd_config

Blader door het bestand totdat u de regel die begint met “#PermitRootLogin verbieden-wachtwoord” Verwijder de hash # uit het begin van de regel.

  • Als u wilt voorkomen dat root inlogt op alle vervangen “verbieden-wachtwoord” met “nee”.
  • Als je gaat om het toestaan van root in te loggen, maar hen dwingen om het gebruik van SSH-keys, laten verbieden-wachtwoord” in de plaats.

Sla uw wijzigingen op en herstart de SSH daemon:

sudo systemctl start sshd

De Ultieme Stap

Natuurlijk, als je niet hoeft SSH uitgevoerd op uw computer, controleert u of deze is uitgeschakeld.

sudo systemctl stoppen sshd
sudo systemctl uitschakelen sshd

Als u niet het raam open, niemand kan klimmen.

LEES VERDER

  • “Wat Is Leetspeak, en Hoe Gebruik Je Het?
  • “Stel Jezelf de volgende Vragen Voordat u een Smarthome
  • “Is Uw Oude Router Nog Steeds Beveiligingsupdates?
  • “Het Gebruik van de mkfs Opdracht op Linux
  • “Windows-10 Is Aan de Ingebouwde Ondersteuning voor Netwerk Camera’ s