Hoe sluit Je SSH-Server

0
51

SSH staat voor Secure Shell, is niet erg veilig standaard te kiezen voor de basic-wachtwoord verificatie met geen andere beperkingen. Als je echt wilt vergrendelen van uw server, moet u meer doen configureren.

Niet Toestaan Wachtwoord Aanmeldingen Gebruik van SSH-Sleutels

Het eerste ding om te doen is zich te ontdoen van het wachtwoord verificatie volledig en overschakelen op het gebruik van SSH-keys. SSH-keys zijn een vorm van public key encryption, je hebt een publieke sleutel die handelingen, zoals uw gebruikersnaam, en een privé-sleutel die fungeert als u uw wachtwoord (met uitzondering van dit wachtwoord is 2048 tekens lang). Uw privé-sleutel is opgeslagen op uw schijf, maar is beveiligd met een wachtwoordzin en de ssh-agent. Wanneer je naar de SSH naar een server, in plaats van te vragen om uw wachtwoord, het ssh-agent verbinding met de server met behulp van uw sleutels.

Zelfs als je al gebruik van SSH sleutels, zult u toch wilt om ervoor te zorgen dat uw wachtwoord aanmeldingen worden uitgeschakeld, zoals de twee zijn niet wederzijds exclusief.

GERELATEERD: Wat is SSH-Agent Forwarding en Hoe Gebruik Je Het?

Het genereren van SSH-Sleutels

U kunt het genereren van een nieuwe SSH-sleutel met behulp van het ssh-keygen-hulpprogramma, standaard geïnstalleerd op de meeste Unix-systemen.

ssh-keygen

Dit zal je vragen om een wachtzin in voor het coderen van de lokale sleutel bestand met. Het is niet gebruikt voor verificatie met de server, maar moet nog steeds geheim worden gehouden.

ssh-keygen zal opslaan van uw persoonlijke sleutel in ~/.ssh/id_rsa en zal ook het opslaan van uw openbare sleutel in ~/.ssh/id_rsa.pub. De private sleutel blijft op uw harde schijf, maar de publieke sleutel moet worden geüpload naar de server, zodat de server kan het verifiëren van uw identiteit, en controleer of u toegang hebt tot de server.

De server houdt een lijst van geautoriseerde gebruikers, meestal opgeslagen in ~/.ssh/authorized_keys. U kunt uw sleutel bestand handmatig naar dit bestand, of u kunt gebruik maken van de ssh-copy-id utility:

de ssh-copy-id-i ~/.ssh/id_rsa.pub user@host

Vervang user@host met je eigen gebruikersnaam en hostnaam server. U zult worden gevraagd zich aan te melden met je oude wachtwoord nogmaals, na die moet u niet worden gevraagd voor het weer, en kan het uitschakelen van het wachtwoord aanmelden.

Schakel SSH Wachtwoord Login

Nu dat u toegang kunt krijgen tot de server met uw sleutels, schakelt u het wachtwoord verificatie helemaal. Zorg ervoor dat key-based authenticatie werkt, of u zult worden buitengesloten van uw server.

Op de server, open /etc/ssh/sshd_config in je favoriete tekst editor en zoek de regel die begint met:

#PasswordAuthentication

Wil je uncomment deze te verwijderen (hashtag) en verander het van “ja” naar “nee”:

PasswordAuthentication no

Vervolgens start u sshd met:

systemctl start sshd

U moet gedwongen worden om opnieuw verbinding te maken, en als uw sleutel bestand is verkeerd, je zal niet gevraagd worden naar een wachtwoord.

Als u dat wilt, kunt u ook force public key-based authenticatie, die zal blokkeren voor alle andere methoden voor verificatie. Voeg de volgende regels toe aan /etc/ssh/sshd_config:

AuthenticationMethods publickey
Aan pubkeyauthentication ja

en opnieuw sshd.

Lock-Out Aanvallers met denyhosts

denyhosts is een hulpprogramma voor het voorkomen van herhaalde mislukte aanmeldingspogingen via SSH, vergelijkbaar met hoe uw telefoon vergrendelt u uit na te veel probeert. Het is niet standaard geïnstalleerd, dus je zult moeten om het te installeren van uw distro ‘ s package manager. Voor op Debian gebaseerde systemen als Ubuntu, dat zou worden:

sudo apt-get install denyhosts -y

Als het eenmaal is geïnstalleerd, schakelt u met:

sudo systemctl enable denyhosts

denyhosts moet nu automatisch worden uitgevoerd, maar je wilt whitelist van uw IP-adres in het geval dat u buitengesloten. Je kan altijd opnieuw proberen van een ander IP-adres, maar dit bespaart u veel gedoe.

Open /etc/hosts.toestaan, en aan de onderkant van het bestand toevoegen:

sshd: uw ip-adres

het vervangen van uw ip-adres met het IP-adres.

Standaard denyhosts zal de lock-out van na een mislukte poging voor root gebruikers en vijf mislukte pogingen voor andere gebruikers. U kunt dit gedrag veranderen door het bewerken van /etc/denyhosts.conf.

Als u per ongeluk opgesloten jezelf, je nodig hebt om te stoppen met denyhosts en verwijderen van uw IP-adres uit een paar plaatsen:

  • /etc/hosts.ontkennen
  • /var/lib/denyhosts/hosts
  • /var/lib/denyhosts/hosts-beperkt
  • /var/lib/denyhosts/hosts-root
  • /var/lib/denyhosts/hosts-geldig
  • /var/lib/denyhosts/gebruikers-hosts

Opnieuw denyhosts en je moet in staat zijn opnieuw verbinding te maken.

De witte lijst voor SSH Toegang

Hoewel dwingt SSH sleutels met denyhosts is waarschijnlijk genoeg beveiliging, kunt u de witte lijst van bepaalde IP-adressen. De meeste server-providers bieden de tools om dit te doen via een web interface. Als dat een optie is, wil je op de witte lijst van er in plaats van de SSH-server, zoals u zult altijd in staat zijn om de IP-whitelist in het geval u vergrendeld.

Als het geen optie is, moet u het handmatig configureren van /etc/hosts.weigeren al het verkeer blokkeren van onbevoegde hosts.

Een belangrijke opmerking: Als je whitelisting uw huis, uw PROVIDER kan niet geven u een statisch IP-adres, en uw IP-adres kunnen op elk moment wijzigen. U zult willen ervoor zorgen dat dat niet zal gebeuren voordat een zwarte alle andere IP-adressen, of het toevoegen van meerdere adressen als back-up, of gewoon overslaan van deze stap helemaal.

Open /etc/hosts.toe en zorg ervoor dat uw IP-adres in het bestand:

sshd: uw ip-adres

Als dat zo is, kun je verder gaan en weigeren alle andere aansluitingen:

echo ‘sshd: ALLE’ >> /etc/hosts.ontkennen

Opnieuw sshd en u moet uw wijzigingen.

U kunt ook het opzetten van een Proxy in de Voorkant van Uw SSH-Server

Als u niet wilt blootstellen je SSH server op het internet, maar nodig om het te benaderen vanaf meerdere IP-adressen heeft, kunt u het opzetten van een proxy voor het afhandelen van de verbinding. Dit kan bij een andere cloud server of zelfs een box met in uw huis.

De SSH-server moet worden geconfigureerd om alleen het accepteren van verbindingen van de proxy-server en de proxyserver moet het accepteren van verbindingen van overal. Kunt u de proxyserver instellen die echter u wilt, maar zelfs een eenvoudige netcat verbinding werkt. Houd in gedachten dat deze proxy server is het enige toegangspunt voor uw SSH-server, dus als de proxy naar beneden gaat, zult u worden geblokkeerd, tenzij u een back-adres.

Het niet Toestaan van Root Login

In plaats daarvan maak een nieuwe gebruiker en die gebruiker sudo voorrecht. Dit effectief is hetzelfde, maar heeft één groot verschil: de potentiële aanvallers nodig om uw user account naam om zelfs beginnen met het aanvallen van uw server, omdat het niet zo eenvoudig als root@yourserver.

Afgezien van de veiligheid, het is over het algemeen goed Unix beleid is om niet te worden aangemeld als root de hele tijd, omdat de wortel niet logs en niet gevraagd wanneer de toegang tot beschermde bronnen.

Maak een nieuwe gebruiker op de SSH-server:

adduser myfancyusername

en stel een wachtwoord in voor de gebruiker:

passwd myfancyusername

U zal niet inloggen met dit wachtwoord, omdat je nog steeds met behulp van SSH sleutels, maar het is nodig. Ideaal, dit verschilt van uw root-wachtwoord.

Deze gebruiker toevoegen aan /etc/sudoers te geven admin rechten:

echo ‘myfancyusername ALL=(ALL) ALL’ >> /etc/sudoers

Over te schakelen naar die gebruiker met su myfancyusername, en controleert u of u kunt overschakelen naar de root user met sudo su (waarvoor geen root-wachtwoord). Als je kunt, heb je sudo toegang.

Nu zult u wilt blokkeren root login. In /etc/ssh/sshd_config, zult u wilt wijzigen:

#PermitRootLogin yes

Verwijder de hastag en verander het van “ja” naar “nee”:

PermitRootLogin no

Opnieuw sshd en de server zou moeten blokkeren alle verzoeken in te loggen als root.

Twee Factor Authenticatie

Dit is zeker overkill, maar als je paranoïde over iemand dieven uw eigen SSH sleutels, kunt u de SSH-server te gebruiken 2FA.

De eenvoudigste manier om dit te doen is gebruik te maken van Google Authenticator met een Android-of iOS-toestel, maar SSH ondersteunt vele factor twee methoden. Met Google Authenticator, krijgt u een QR code die u kunt scannen van de Google Authenticator-mobile app koppelt u uw telefoon aan op de server, en u zult ook worden gegeven een paar back-codes voor herstellen in het geval dat uw telefoon is verloren. Bewaar deze codes op uw belangrijkste machine, anders is het niet echt een factor twee.