SSH priručnik Secure Shell

Vodič o ovom veličanstvenom protokolu koji je započeo svoje avanture 1997. godine, nudeći veliki izbor alata koji se ističu svojom sigurnošću, budući da je vrlo opsežan, podijelit ću ga na nekoliko unosa koji pokušavaju pokriti najvažnije na razini klijenta i poslužitelja.

Što je protokol Secure Shell?Secure Shell ili SSH mrežni je protokol koji omogućuje razmjenu podataka putem sigurnog kanala između dva računala. SSH koristi tehnike šifriranja koje čine informacije koje putuju kroz komunikacijski medij nečitljivim i nijedna treća osoba ne može otkriti korisničko ime i lozinku veze ili ono što je napisano tijekom cijele sesije. SSH koristi kriptografiju javnog ključa za provjeru autentičnosti udaljenog računala i dopušta mu autentifikaciju korisnika ako je potrebno.

SSH se obično koristi za početak sesije na udaljenom stroju, gdje možete izvršavati naredbe, ali također dopušta tuneliranje, proizvoljno prosljeđivanje TCP portova i X11 veza; Prijenosi datoteka također se mogu izvesti pomoću pridruženih SFTP ili SCP protokola.

Možemo vidjeti da je njegova velika atrakcija njegova karakteristika više nego dovoljna da zamijeni stari TELNET protokol, koji nema enkripciju informacija, kompromitirajući podatke, uključujući pristupne vjerodajnice.

The SSH poslužitelj, prema zadanim postavkama nudi TCP port 22. SSH klijent se općenito koristi za uspostavljanje veza sa sshd poslužiteljem koji prihvaća udaljene veze. Oba se obično nalaze na većini modernih operativnih sustava, uključujući Mac, Linux, Solaris i OpenVMS.

Očekuje se da će Windows podrška za svoju poslužiteljsku verziju biti službeno objavljena ove godine, dok na razini korisnika nudi širok izbor opcija koje ističu PuTTY u odnosu na ostale.

Naučite koristiti Putty

OpenSSHOpenSSH (Open Secure Shell) je skup aplikacija koje omogućuju šifriranu komunikaciju putem mreže, koristeći SSH protokol. Nastao je kao besplatna i otvorena alternativa SSH protokolu, najviše se koristi pod Linuxom i bit će to onaj koji ćemo koristiti kroz unose.

1. Instalirajte Secure Shell SSH


U gotovo svim distribucijama njegova je klijentska verzija unaprijed instalirana, dok je verzija poslužitelja dostupna u spremištu, instalacija bi trebala biti vrlo jednostavna.

Debian, Ubuntu, Linux Mint i izvedenice

 sudo apt-get install openssh-server

Centos, Rhel, Fedora

 sudo yum instalirajte openssh-server

Arch-Linux

 pacman -Syu openssh

Provjeravamo radi li sa:

 curl localhost: 22
U slučaju ispravnog rada, potrebno je vratiti:

[color = # 696969] [/Boja]

Spajanje na poslužitelj
Pomoću klijenta možemo se spojiti na poslužitelj koji može biti udaljen čak i ako imamo obje verzije za interno povezivanje koristeći localhost.

Najosnovniji način povezivanja bio bi:

 ssh korisnik @ hostaddress
U slučaju interne povezanosti to bi bilo:
 ssh korisnik @ localhost
Imamo širok izbor mogućnosti pri povezivanju, objasnit ću neke vrlo korisne, sve svoje mogućnosti možete navesti sa:
 čovjek ssh
Ovdje im pokazujemo:

Man SSH opcije
-CZatražite kompresiju podataka radi uštede propusnosti ili podataka u slučaju da ste na mobilnoj mreži.

-lOdredite korisnika s kojim ćemo se povezati.

-INapravite datoteku dnevnika u kojoj će se odstupiti od standardne pogreške.

-FOdabiremo drugu konfiguracijsku datoteku korisnu za poslužitelje s neobičnim mogućnostima.

-gPotrebno za tuneliranje luka.

-iOdabiremo mapu koju ćemo koristiti za zamjenski privatni ključ.

-KOmogući pri korištenju vjerodajnica za GSSAPI.

-nKoristeći ga zajedno s X11 na ovaj način, sav dnevnik koji generira aplikacija preusmjerava se u / dev / null.

-iliPotrebno za korištenje naprednijih opcija, poput ServerAliveInterval 30.

-strOdaberite drugi port osim za povezivanje s hostom.

-vPrikazuje sve korake potrebne za uspostavu veze. Još više informacija možete dobiti pomoću -vv -vvv.

-XNeophodno ako želimo koristiti prosljeđivanje X11.

-DaOmogućuje sigurno prosljeđivanje X11.

Povezat ćemo se s poslužiteljem test.solvetic.com s korisnikom jcarrillo koristeći drugi privatni ključ koji se nalazi u našoj / home / jcarrillo / keys-aws mapi pomoću porta 8022 naše instance na AWS-u.

 Primjer → ssh -C -i “~ / keys -aws /” -p 8022 -l jcarrillo test.solvetic.com
Kao što vidimo, to je opsežan, ali vrlo potpun alat koji zaslužuje više unosa kako bi mogao pokriti svoje potrebne funkcije za bilo kojeg Sysadmina srednje ili profesionalne razine.

Sada prelazimo na njegovu konfiguraciju na razini klijent-poslužitelj, generiranje javnih i privatnih ključeva, korištenje prosljeđivanja portova u stvarnim situacijama, preusmjeravanje X poslužitelja putem prosljeđivanja X11, korištenje scp, sftp, ssh-agent između ostalih .

2. Zaštitite SSH poslužitelj


Nastavljamo s OpenSSH usredotočujući se na osiguravajući naš SSH poslužitelj, kako bismo izbjegli sve vrste napada koji bi mogli ugroziti naš poslužitelj. Sve ove konfiguracije bit će izvedene u datoteci sshd_config koja se nalazi u / etc / ssh / koju možemo promijeniti bilo kojim uređivačem teksta u mom slučaju vim:
 sudo vim / etc / ssh / sshd_config
Sada vidimo kako to izmijeniti.

Izmijenite sshd_config
Unutra ćemo vidjeti tipičnu konfiguracijsku datoteku koja se temelji na "Opcija vrijednosti" Ako bilo koja od opcija nije zadano pronađena, liniju moramo postaviti u cijelosti, u drugim slučajevima to će biti samo promjena iz 0 u 1 iz Ne u Da ili raskomentiranje retka.

Izmijenite port 22
Bitno je promijenite zadani port u slučajni mnoge skripte konfigurirane su za napad na ovaj port, preporučuje se da ih promijenite u u rasponu od 1000 do 23000 osiguravajući da port ne koristi druga usluga.

Također ne bismo trebali koristiti portove poput 2222, 8022 ili 1022, oni su uobičajeni kao 22 i mnoge skripte su konfigurirane da ih napadnu.

luka 2345

Ako imamo SELINUX omogućeno moramo koristiti dodatnu naredbu kako bismo omogućili pristup izvana prema novom portu.

Semanage port -a -t ssh_port_t -p tcp 2345 #Promjena porta 22 radi sigurnosti

Koristite zadani protokol 2
Moramo se pobrinuti da sve naše veze budu uspostavljene prema Protokolu 2 jer 1 ima mnogo ranjivosti.

Protokol 2

Vrijeme je za unos vjerodajnica
Odjeljak za pretraživanje "Ovjera". Vaše prve dvije opcije su također važne. Prvi je broj sekundi koje će udaljeni korisnik morati prijaviti na vaš stroj. Postavite tu vrijednost na nekoliko sekundi. Ne treba dugo da se prijavite ako znamo račun i lozinku.

Na taj način izbjegavamo određene skripte koje koriste to vrijeme. Tipična vrijednost u smislu sigurnosti je 30, iako može biti i manja.

PrijavaGraceTime 30

Onemogućite root pristup
Ovaj Najvažnija je mogućnost biti žrtva napada, trebaju im 3 stvari:

  • Korisnik
  • luka
  • Lozinka

Ako onemogućimo root, oni ga već imaju jer je root zajednički korisnik na svim sustavima. Osim toga, ovaj korisnik može izazvati pustoš time što ima omogućena su sva dopuštenja.

PermitRootLogin br

Omogućite kontrolirani pristup
Možemo kontrolirati koji se korisnik može prijaviti putem SSH -a, pa čak i postaviti klauzulu za povezivanje samo s određenog IP -a. Ovo je slično onome što AWS nudi za povezivanje s vašim instancama.

AllowUsers [email protected]

Važno je dopustiti pristup samo korisnicima kojima je potreban daljinski pristup te ih po mogućnosti ograničiti na poznati IP.

Konfigurirajte broj neuspjelih pokušaja
Ako pogrešno unesemo lozinku, poslužitelj nam daje nekoliko pokušaja ponovnog unosa, to mora biti ograničeno ili ste možda žrtva skripte brute force, možemo je postaviti 2 ili 3 puta.

MaxAuthTries 2

Broj dopuštenih veza istovremeno
To može varirati ovisno o tome kako koristite poslužitelj, ali idealno je da ga kontrolirate, samo dodajte ukupan broj korisnika koji dopušta SSH.

Maxpokretanje X

Nakon što izvršimo sve promjene u našoj datoteci, moramo ponovno pokrenite našu sshd uslugu, Može se razlikovati ovisno o upravitelju usluga.

SystemD

 systemctl ponovno pokrenite sshd

Upstart / Sysinit

 ponovno pokretanje usluge sshd

Sve ove promjene dodaju a dodatna razina sigurnosti ali moramo imati na umu:

  • Koristite alfanumeričke lozinke.
  • Koristiti Autentikacija javnim / privatnim ključevima kad je to moguće.
  • Dopunite sigurnost SELINUX -om i vatrozidima.
  • Kontrolirajte pristup na koji se korisnici trebaju prijaviti na daljinu.

Ovjerite SSH javne / privatne ključeve


Trenutno se koristi SSH ključevi To je neizostavan zahtjev, ovu provjeru autentičnosti administratori naširoko koriste za automatizaciju zadataka između različitih poslužitelja, a čak je koriste i programeri za pristup SCM -u, među ostalim, GIT, GITHUB, GITLAB.

Nudi veliku sigurnost i mogućnost stvoriti automatizirane zadatke temeljen na skripti kao a leđa ili Ponavljanje promjena na više čvorova u isto vrijeme.

Prilikom korištenja ključa SSH (javni i privatni), mogu se jednostavno povezati s jednim poslužiteljem ili s više poslužitelja, bez potrebe svaki put unijeti lozinku. Moguće je konfigurirati vaše ključeve bez zaporke, međutim to bi bilo bezobzirno, ako je netko dobio vaš ključ, mogao bi ga upotrijebiti. Govorit ćemo o tome kako generirati ključeve, distribuirati ih i koristiti ssh-agent za postizanje veće sigurnosti.

Generiranje ključeva bez zaporke
Prije svega, provjerite imate li instaliran OpenSSH, nije potrebno, poslužitelj samo klijent.

Počinjemo generiranjem ključa tipa DSA sa 1024 bitova sigurnosti, više nego dovoljno, iako možete ići dalje i generirati ključ tipa RSA s ograničenjem od 4096.

 ssh -keygen -b 1024 -t dsa
Tražit će od nas lokaciju na kojoj će spremiti zadane ključeve ~ / .ssh
 Unesite datoteku u koju želite spremiti ključ (/home/test/.ssh/id_dsa)
Tada će tražiti izraz za sada nećemo koristiti nijedan i ostavit ćemo ga praznim i reći će nam da je ključ kreiran i odražava nas.

Slika će uvijek biti drugačija, generira se nasumično, pa ako odemo u .ssh mapu moramo imati 2 datoteke

id_dsa -----> Privatni ključ (Ne dijelite ga ni s kim, to je kao vaš TDC).
id_dsa.pub ----> To je ono što dijelimo radi povezivanja.

Podijelite javni ključ
U slučaju da želimo podijeliti javni ključ u SCM -u ili Chef, Puppet, Jenkins, vizualiziramo datoteku javnog ključa, kopiramo je i zalijepimo gdje odgovara.

 više 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 + hxw = test 'solvetic 
U slučaju da ga želite podijeliti za pristup poslužitelju, uvijek preporučujem korištenje ssh-copy-id koji je uključen u OpenSSH i vrlo je jednostavan za korištenje:
 ssh-copy-id user @ remote-server-ip -i navodi lokaciju ključa za korištenje.
Postoje i drugi načini poput:
 ssh korisnik @ remote-server-ip \ 'cat >> .ssh / authorized_keys2' <.ssh / id_dsa.pub
 scp ~ / .ssh / id_dsa.pub korisnik @ remote-server-ip
Od sada su ključevi povezani i samo trebate unijeti host.
 ssh -l korisnik remote-server-ip
Ovaj put neće tražiti nikakvu lozinku, a skripte možemo koristiti bez interakcije.

Generirajte zaporku i povežite je ssh-agentom
The Sigurnost ključa SSH Temelji se na našem privatnom ključu koji radi kao pristupna kartica, ali ako nam netko ukrade ključ, moći će pristupiti svim mjestima na kojima mi imamo pristup. No, prilikom generiranja zaporke možemo imati dodatnu razinu, ne samo da je ključ nužan, već i ne moramo uvoditi izraz.

Ovaj put ćemo izraditi rsa ključ s većom sigurnošću konfiguriranjem fraze.

 ssh -keygen -b 4096 -t rsa -C "Ključ sa zaporkom" # -C Dodajte komentar. 
Kao izraz možemo koristiti razmake, točke i posebne znakove
 primjer ---> Ovo je moj novi ključ s Fr @ S3.
Dijelimo novi ključ:
 scp ~ / .ssh / id_rsa.pub korisnik @ remote-server-ip
Ovaj put trebamo ključ i zaporku, ali unos nekoliko puta je dosadan, ali možemo ga nadopuniti ssh-agentom, moramo ga pokrenuti.
 ssh-agent
Dodamo naš ključ
 ssh-add Unesite zaporku za /home/user/.ssh/id_rsa: # Unosimo izraz koji smo konfigurirali. 
Sada se možemo spojiti na bilo koji poslužitelj koji koristi naš ključ bez unosa našeg zaporka.

Ovu metodu preporučujem ako ste izvan intraneta, klijenta i poslužitelja na različitim mjestima na Internetu, a mi nećemo koristiti automatizirane zadatke, već se radije povezujemo sa poslužiteljem radi udaljene administracije, najbolje je navesti lozinku ili jako dugo zaporka (15 ili više znakova, velika, mala slova, brojevi i simboli) u javni ključ.

Ovuda bit će praktički nemoguće biti hakiran ovom metodom, budući da će haker ne samo da mora znati lozinku, već će morati imati i važeći javni certifikat na poslužitelju kako bi se mogao autentificirati. (Naravno pod pretpostavkom da poslužitelj nikada nije bio ugrožen te je potpuno ažuran i s najboljom mogućom sigurnošću).

Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave