Secure Shell SSH -håndboken

Opplæring om denne praktfulle protokollen som begynte sine eventyr i 1997, og som tilbyr et stort utvalg av verktøy som skiller seg ut for deres sikkerhet, og som er veldig omfattende, vil jeg dele den inn i flere oppføringer som prøver å dekke det viktigste både på klient- og servernivå.

Hva er Secure Shell -protokollen?Secure Shell eller SSH er en nettverksprotokoll som tillater utveksling av data over en sikker kanal mellom to datamaskiner. SSH bruker krypteringsteknikker som gjør at informasjonen som beveger seg gjennom kommunikasjonsmediet blir uleselig, og ingen tredjeperson kan oppdage brukernavnet og passordet til tilkoblingen eller det som er skrevet under hele økten. SSH bruker krypto med offentlig nøkkel for å autentisere den eksterne datamaskinen og la den autentisere brukeren om nødvendig.

SSH brukes vanligvis til å starte en økt på en ekstern maskin, der du kan utføre kommandoer, men det tillater også tunneling, vilkårlig videresending av TCP -porter og X11 -tilkoblinger; Filoverføringer kan også utføres ved hjelp av tilhørende SFTP- eller SCP -protokoller.

Vi kan se at dens store attraksjon er dens karakteristikk mer enn nok til å fortrenge den gamle TELNET -protokollen, som mangler informasjonskryptering, kompromittere data, inkludert tilgangsinformasjon.

De SSH -server, tilbyr TCP -port 22 som standard. En SSH -klient brukes vanligvis til å opprette tilkoblinger til en sshd -server som godtar eksterne tilkoblinger. Begge finnes ofte på de fleste moderne operativsystemer, inkludert Mac, Linux, Solaris og OpenVMS.

Windows -støtte for serverversjonen forventes å bli offisielt utgitt i år, mens den på kundenivå tilbyr et stort utvalg alternativer som fremhever PuTTY fremfor de andre.

Lær å bruke kitt

OpenSSHOpenSSH (Open Secure Shell) er et sett med applikasjoner som tillater kryptert kommunikasjon over et nettverk, ved hjelp av SSH -protokollen. Det ble opprettet som et gratis og åpent alternativ til SSH -protokollen, det er det mest brukte under Linux, og det vil være det vi vil bruke gjennom oppføringene.

1. Installer Secure Shell SSH


I nesten alle distribusjoner er klientversjonen forhåndsinstallert mens serverversjonen er tilgjengelig av depotet, installasjonen bør være veldig enkel.

Debian, Ubuntu, Linux Mint og derivater

 sudo apt-get install openssh-server

Centos, Rhel, Fedora

 sudo yum installerer openssh-server

Arch-Linux

 pacman -Syu openssh

Vi bekrefter at den kjører med:

 curl lokal vert: 22
Hvis den kjører riktig, skal den returnere:

[farge = # 696969] [/Farge]

Koble til serveren
Ved å bruke klienten kan vi koble til serveren som kan være ekstern selv om vi har begge versjonene for å koble til internt ved hjelp av localhost.

Den mest grunnleggende måten å koble til vil være:

 ssh bruker @ hostaddress
Ved tilkobling internt vil det være:
 ssh bruker @ localhost
Vi har et stort utvalg alternativer når du kobler til. Jeg vil forklare noen veldig nyttige alternativer. Du kan liste alle alternativene dine med:
 mann ssh
Her viser vi dem:

Mann SSH -alternativer
-CBe om datakomprimering som sparer båndbredde eller data i tilfelle du befinner deg i et mobilnett.

-lSpesifiser brukeren som vi vil koble til.

-OGLag en loggfil der standardfeilen vil avvike.

-FVi velger en annen konfigurasjonsfil som er nyttig for servere med uvanlige alternativer.

-gNødvendig for havntunnel.

-JegVi velger mappen som vi vil bruke for en alternativ privat nøkkel.

-KAktiver når du bruker GSSAPI -legitimasjon.

-nVed å bruke den i forbindelse med X11 på denne måten viderekobles all logg generert av programmet til / dev / null.

-ellerKreves for å bruke mer avanserte alternativer som ServerAliveInterval 30.

-sVelg en annen port enn 22 for å koble til verten.

-vDen viser alle trinnene som er nødvendige for å opprette tilkoblingen. Du kan få enda mer informasjon med -vv -vvv.

-XNødvendig hvis vi vil bruke X11 -videresending.

-YMuliggjør sikker X11 -videresending.

Vi vil koble til test.solvetic.com-serveren med jcarrillo-brukeren ved hjelp av en annen privat nøkkel i mappen / home / jcarrillo / keys-aws ved å bruke port 8022 av vår forekomst på AWS.

 Eksempel → ssh -C -i “~ / keys -aws /” -p 8022 -l jcarrillo test.solvetic.com
Som vi kan se, er det et omfattende, men veldig komplett verktøy som fortjener flere oppføringer for å kunne dekke de nødvendige funksjonene for alle Sysadmin på mellomliggende eller profesjonelt nivå.

Nå går vi videre til konfigurasjonen på klient-server-nivå, genererer offentlige og private nøkler, bruk av portvideresending i virkelige situasjoner, omdirigering av X-serveren gjennom X11-videresending, bruk av blant annet scp, sftp, ssh-agent .

2. Sikre SSH -serveren


Vi fortsetter med OpenSSH Fokuserer på sikre vår SSH -server, for å unngå alle typer angrep som kan kompromittere serveren vår. Alle disse konfigurasjonene vil bli utført i sshd_config -filen som ligger i / etc / ssh / som vi kan endre med hvilken som helst tekstredigerer i mitt tilfelle. vim:
 sudo vim / etc / ssh / sshd_config
Nå ser vi hvordan vi endrer det.

Endre sshd_config
Inne ser vi en typisk konfigurasjonsfil basert på "Verdialternativ" Hvis noen av alternativene ikke blir funnet som standard, må vi plassere linjen helt, i andre tilfeller vil det bare være å bytte fra 0 til 1 fra Nei til Ja eller kommentere en linje.

Endre port 22
Er viktig endre standardporten til en tilfeldig port mange skript er konfigurert til å angripe denne porten, anbefales det å endre den i varierer fra 1000 til 23000 sikre at porten ikke brukes av en annen tjeneste.

Vi skal heller ikke bruke porter som 2222, 8022 eller 1022, de er like vanlige som 22 og mange skript er konfigurert til å angripe dem.

port 2345

Hvis vi har SELINUX aktivert må vi bruke en ekstra kommando for å gi tilgang utenfra til den nye porten.

Semanage port -a -t ssh_port_t -p tcp 2345 #Endre port 22 for sikkerhet

Bruk standardprotokoll 2
Vi må sørge for at alle våre tilkoblinger er gjort under protokoll 2 som 1 har mange sårbarheter.

Protokoll 2

På tide å legge inn legitimasjon
Søk -seksjon "Godkjenning". De to første alternativene er også viktige. Den første er antall sekunder den eksterne brukeren må logge på maskinen din. Sett den verdien til noen få sekunder, det tar ikke lang tid å logge inn hvis vi kjenner kontoen og passordet.

På denne måten unngår vi visse skript som utnytter den tiden. Den typiske verdien når det gjelder sikkerhet er 30, selv om den kan være enda mindre.

Logg inn GraceTime 30

Deaktiver rottilgang
Dette Det er det viktigste alternativet for å være offer for et angrep, de trenger 3 ting:

  • Bruker
  • havn
  • Passord

Hvis vi deaktiverer root, har de allerede en siden root er en vanlig bruker på alle systemer. I tillegg til dette kan denne brukeren skape ødeleggelse ved å ha alle tillatelser aktivert.

PermitRootLogin no

Aktiver kontrollert tilgang
Vi kan kontrollere hvilken bruker som kan logge inn via SSH og til og med plassere en klausul for å koble til bare fra en bestemt IP. Dette ligner på hva AWS tilbyr for å koble oss til instansene dine.

AllowUsers [email protected]

Det er viktig å bare gi tilgang til brukere som trenger ekstern tilgang og om mulig begrense dem til en kjent IP.

Konfigurer antall mislykkede forsøk
Hvis vi setter passordet feil, gir serveren oss flere forsøk på å skrive det inn igjen, dette må begrenses, eller du kan bli offer for et brute force-skript, vi kan plassere det 2 eller 3 ganger.

MaxAuthTries 2

Antall tilkoblinger tillatt samtidig
Dette kan variere avhengig av hvordan du bruker serveren, men det ideelle er å få den kontrollert, bare legg til det totale antallet brukere som SSH tillater.

MaxStartups X

Etter at vi har gjort alle endringene i filen, må vi start sshd -tjenesten på nytt, Det kan variere avhengig av tjenesteansvarlig.

SystemD

 systemctl start sshd på nytt

Oppstart / Sysinit

 service restart sshd

Alle disse endringene legger til a ekstra sikkerhetsnivå men vi må huske på:

  • Bruk alfanumeriske passord.
  • Bruk Godkjenning med offentlige / private nøkler når det er mulig.
  • Komplementsikkerhet med SELINUX og brannmurer.
  • Kontroller tilgangen som brukerne må logge på eksternt.

Autentiser SSH offentlige / private nøkler


For øyeblikket brukt SSH -nøkler Det er et uunnværlig krav, denne autentiseringen er mye brukt av administratorer for å automatisere oppgaver mellom forskjellige servere og brukes til og med av utviklere for å få tilgang til SCM som GIT, GITHUB, GITLAB blant andre.

Det gir stor sikkerhet og muligheten for lage automatiserte oppgaver skriptbasert som en Tilbake eller Gjenta endringer til flere noder samtidig.

Når du bruker en nøkkel SSH (offentlig og privat), de kan enkelt koble til en server, eller flere servere, uten å måtte skrive inn et passord hver gang. Det er mulig å konfigurere nøklene dine uten en passordfrase, men det ville være hensynsløst, hvis noen skaffet nøkkelen din, kunne de bruke den. Vi vil snakke om hvordan du genererer nøkler, distribuerer dem og bruker ssh-agent for å oppnå større sikkerhet.

Generere nøkler uten passord
Først av alt, sørg for at du har OpenSSH installert, det er ikke nødvendig, serveren er bare klienten.

Vi starter med å generere en DSA -nøkkel med 1024 bits sikkerhet, mer enn nok, selv om du kan gå videre og generere en RSA -nøkkel med en grense på 4096.

 ssh -keygen -b 1024 -t dsa
Det vil be oss om stedet der det vil lagre standardnøklene ~ / .ssh
 Skriv inn filen der du vil lagre nøkkelen (/home/test/.ssh/id_dsa)
Da vil det be om et uttrykk for nå skal vi ikke bruke noe, og vi vil la det stå tomt, og det vil fortelle oss at nøkkelen er opprettet og gjenspeiler oss.

Bildet vil alltid være annerledes, det genereres tilfeldig, så hvis vi går til .ssh -mappen må vi ha 2 filer

id_dsa -----> Privat nøkkel (Ikke del den med noen, det er som din TDC).
id_dsa.pub ----> Det er den vi deler for å koble til.

Del offentlig nøkkel
Hvis vi ønsker å dele den offentlige nøkkelen i SCM eller Chef, Puppet, Jenkins, visualiserer vi den offentlige nøkkelfilen, kopierer den og limer den inn der den tilsvarer.

 mer id_dsa.pub ssh-dss AAAAB3NzaC1kc3MAAACBAN6SEI4Qqzb23pJYRXIAtPmGJHln5hFdthFq43ef + ifR29v2IknXCFwefKK8jorSDiUEY / 1F / yp0xao mjhFQu1jNXOgF0PAZTfivRVFn6Q9FRsyXU9s + fx + + L22sV7GkCHPxAAAAFQCyF1Gdh3 xQiW3mf3y4IX654O82SLGl7Vhh5UsvG8r8d8pV6R Cap4xr / J44xDDn 0gFArHmFwAxfQAAAIEAmVYjPYAdQ9DCNWP + + + 03anWgyoZqSPPs23djyVQ756U4VitM0GiIQQ89HCdvTFFpSagnfdVpWh4 Hxo4Y5skKihnPMtB bFNbP / 2SmGdPz1AOmb7tvRrTkj5VLtXeDeB3ulowUKarwiBVVvAvxtxmozoZHOADWqrEPizxIAAACAU2DF1ZGTiJMP OhVB7mlsVhhkq53OxKKJbZqsl9hkOiSxaLUfQBNu6Ae441ekIObqolWNCBIvCO3uQYOozyzNGBhqHE7FVq 1oXguj + + + 2GAQ UGNkee96D2by S7daieIKNmFer2hO / SBxzepMrWAiIUnUsP5irmYspkjGlQxP + HxB = test @ solvetic 
Hvis du vil dele den for å få tilgang til en server, anbefaler jeg alltid å bruke ssh-copy-id som er inkludert i OpenSSH og er veldig enkel å bruke:
 ssh-copy-id user @ remote-server-ip -i spesifiserer plasseringen av nøkkelen som skal brukes.
Det er andre måter som:
 ssh user @ remote-server-ip \ 'cat >> .ssh / autorized_keys2' <.ssh / id_dsa.pub
 scp ~ / .ssh / id_dsa.pub bruker @ ekstern server-ip
Fra nå av er tastene koblet til, og du trenger bare å angi verten.
 ssh -l bruker ekstern server-ip
Denne gangen vil det ikke be om passord, og vi kan bruke skript uten interaksjon.

Generer passord og tilknyt ssh-agent
De SSH nøkkelsikkerhet Den er basert på vår private nøkkel som fungerer som et adgangskort, men hvis noen stjeler nøkkelen vår, vil de få tilgang til alle stedene vi har tilgang til. Men når vi genererer en passordfrase kan vi ha et ekstra nivå, ikke bare er nøkkelen nødvendig, men vi trenger ikke å introdusere uttrykket vårt.

Denne gangen vil vi lage en rsa -nøkkel med større sikkerhet ved å konfigurere en setning.

 ssh -keygen -b 4096 -t rsa -C "Nøkkel med passord" # -C Legg til en kommentar. 
Som et uttrykk kan vi bruke mellomrom, prikker og spesialtegn
 eksempel ---> Dette er min nye nøkkel med Fr @ S3.
Vi deler den nye nøkkelen:
 scp ~ / .ssh / id_rsa.pub bruker @ ekstern server-ip
Denne gangen trenger vi nøkkelen og passordet, men å skrive det inn flere ganger er kjedelig, men vi kan utfylle det med ssh-agent, vi må starte det.
 ssh-agent
Vi legger til nøkkelen vår
 ssh-add Skriv inn passordfrase for /home/user/.ssh/id_rsa: # Vi skriver inn setningen vi har konfigurert. 
Nå kan vi koble til hvilken som helst server som bruker nøkkelen vår uten å måtte skrive inn vår passord.

Jeg anbefaler denne metoden hvis du er utenfor intranettet, klienten og serveren på forskjellige punkter på Internett, og vi ikke vil bruke automatiserte oppgaver, men heller koble til serveren for fjernadministrasjonsformål, det er best å angi et passord eller veldig lenge passord (15 eller flere tegn, store, små, tall og symboler) til den offentlige nøkkelen.

Denne måten det vil være praktisk talt umulig å bli hacket ved denne metoden, siden ikke bare hackeren må kjenne passordet, men han må ha et gyldig offentlig sertifikat på serveren slik at han kan autentiseres. (Selvfølgelig forutsatt at serveren aldri har blitt kompromittert og er helt oppdatert og med best mulig sikkerhet).

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave