Tutorial despre acest protocol magnific care și-a început aventurile în 1997, oferind o mare varietate de instrumente care se remarcă prin securitatea lor, fiind foarte extins îl voi împărți în mai multe intrări încercând să acoperi cel mai important lucru atât la nivel de client, cât și la nivel de server.
Ce este Protocolul Secure Shell?Secure Shell sau SSH este un protocol de rețea care permite schimbul de date pe un canal sigur între două computere. SSH folosește tehnici de criptare care fac ca informațiile care călătoresc prin mediul de comunicare să devină ilizibile și nicio terță persoană nu poate descoperi numele de utilizator și parola conexiunii sau ceea ce este scris în timpul întregii sesiuni. SSH folosește criptografie cu cheie publică pentru a autentifica computerul la distanță și a permite acestuia să autentifice utilizatorul, dacă este necesar.
SSH este de obicei folosit pentru a porni o sesiune pe o mașină la distanță, unde puteți executa comenzi, dar permite, de asemenea, tunelarea, redirecționarea arbitrară a porturilor TCP și a conexiunilor X11; Transferurile de fișiere pot fi efectuate, de asemenea, utilizând protocoalele SFTP sau SCP asociate.
Putem vedea că marea sa atracție este caracteristica sa mai mult decât suficientă pentru a înlocui vechiul protocol TELNET, care lipsește criptarea informațiilor, compromitând datele, inclusiv acreditările de acces.
Server SSH, oferă în mod implicit portul TCP 22. Un client SSH este utilizat în general pentru a stabili conexiuni la un server sshd care acceptă conexiuni la distanță. Ambele se găsesc în mod obișnuit pe majoritatea sistemelor de operare moderne, inclusiv Mac, Linux, Solaris și OpenVMS.
Asistența Windows pentru versiunea sa de server este așteptată să fie lansată oficial în acest an, în timp ce la nivel de client oferă o mare varietate de opțiuni care evidențiază PuTTY asupra celorlalte.
Învață să folosești Putty
OpenSSHOpenSSH (Open Secure Shell) este un set de aplicații care permit comunicații criptate pe o rețea, utilizând protocolul SSH. A fost creat ca o alternativă gratuită și deschisă la protocolul SSH, este cel mai utilizat sub Linux și va fi cel pe care îl vom folosi pe parcursul intrărilor.
1. Instalați Secure Shell SSH
În aproape toate distribuțiile, versiunea clientului său este preinstalată, în timp ce versiunea de server este disponibilă de depozit, instalarea sa ar trebui să fie foarte simplă.
Debian, Ubuntu, Linux Mint și derivate
sudo apt-get install openssh-server
Centos, Rhel, Fedora
sudo yum instalează openssh-server
Arch-Linux
pacman -Syu openssh
Verificăm dacă rulează cu:
curl localhost: 22În cazul în care funcționează corect, acesta ar trebui să returneze:
[culoare = # 696969] [/Culoare]
Conectarea la server
Folosind clientul ne putem conecta la server, care poate fi la distanță, chiar dacă avem ambele versiuni pentru a ne conecta intern folosind localhost.
Cel mai simplu mod de conectare ar fi:
ssh user @ hostaddressÎn cazul conectării interne ar fi:
utilizator ssh @ localhostAvem o mare varietate de opțiuni la conectare, vă voi explica unele foarte utile, puteți lista toate opțiunile cu:
om sshAici le arătăm:
Opțiuni Man SSH
-CSolicitați compresia de date economisind lățimea de bandă sau datele în cazul în care vă aflați într-o rețea mobilă.
-lSpecificați utilizatorul cu care ne vom conecta.
-ȘICreați un fișier jurnal în care va fi deviată eroarea standard.
-FSelectăm un alt fișier de configurare util pentru servere cu opțiuni neobișnuite.
-gNecesar pentru tunelarea portului.
-iAlegem folderul pe care îl vom folosi pentru o cheie privată alternativă.
-KActivați când utilizați acreditările GSSAPI.
-nFolosindu-l împreună cu X11 în acest mod, toate jurnalele generate de aplicație sunt redirecționate către / dev / null.
-sauNecesar pentru a utiliza opțiuni mai avansate, cum ar fi ServerAliveInterval 30.
-pSelectați un alt port decât 22 pentru a vă conecta la gazdă.
-vAfișează toți pașii necesari pentru stabilirea conexiunii. Puteți obține și mai multe informații cu -vv -vvv.
-XNecesar dacă dorim să folosim X11 Forwarding.
-DaActivează redirecționarea X11 securizată.
Ne vom conecta la serverul test.solvetic.com cu utilizatorul jcarrillo folosind o altă cheie privată situată în folderul / home / jcarrillo / keys-aws folosind portul 8022 al instanței noastre pe AWS.
Exemplu → ssh -C -i „~ / keys-aws /” -p 8022 -l jcarrillo test.solvetic.comDupă cum putem vedea, este un instrument extins, dar foarte complet, care merită mai multe intrări pentru a-și putea acoperi funcțiile necesare pentru orice Sysadmin de nivel intermediar sau profesional.
Acum trecem la configurația sa la nivel client-server, generând chei publice și private, utilizarea redirecționării porturilor în situații reale, redirecționarea serverului X prin X11 Forwarding, utilizarea scp, sftp, ssh-agent printre altele .
2. Securizați serverul SSH
Continuăm cu OpenSSH concentrându-se asupra securizarea serverului nostru SSH, pentru a evita toate tipurile de atacuri care ar putea compromite serverul nostru. Toate aceste configurații se vor face în fișierul sshd_config situat în / etc / ssh / pe care îl putem modifica cu orice editor de text în cazul meu vim:
sudo vim / etc / ssh / sshd_configAcum vedem cum să-l modificăm.
Modificați sshd_config
În interior vom vedea un fișier de configurare tipic bazat pe „Opțiune valoare” Dacă oricare dintre opțiuni nu este găsită în mod implicit, trebuie să plasăm linia complet, în alte cazuri va fi doar schimbarea de la 0 la 1 de la Nu la Da sau decomentarea unei linii.
Modificați portul 22
Este esential schimbați portul implicit la unul aleatoriu multe scripturi sunt configurate pentru a ataca acest port, este recomandat să îl modificați în variază de la 1000 la 23000 asigurându-se că portul nu este utilizat de un alt serviciu.
Nici nu ar trebui să folosim porturi precum 2222, 8022 sau 1022, acestea sunt la fel de comune ca 22 și multe scripturi sunt configurate pentru a le ataca.
portul 2345
Daca avem SELINUX activat trebuie să folosim o comandă suplimentară pentru a permite accesul din exterior la noul port.
Semanage port -a -t ssh_port_t -p tcp 2345 #Changing port 22 for Security
Utilizați Protocolul 2 implicit
Trebuie să ne asigurăm că toate conexiunile noastre sunt realizate în conformitate cu Protocolul 2, deoarece 1 are multe vulnerabilități.
Protocolul 2
Este timpul să introduceți acreditările
Secțiunea de căutare "Autentificare". Primele două opțiuni sunt, de asemenea, importante. Primul este numărul de secunde pe care utilizatorul la distanță va trebui să se conecteze la aparatul dvs. Setați acea valoare la câteva secunde, nu durează mult până vă conectați dacă știm contul și parola.
În acest fel, evităm anumite scripturi care profită de acel moment. Valoarea tipică din punct de vedere al securității este 30, deși poate fi chiar mai mică.
LoginGraceTime 30
Dezactivați accesul la rădăcină
Acest Este cea mai importantă opțiune de a fi victima unui atac, au nevoie de 3 lucruri:
- Utilizator
- port
- Parola
Dacă dezactivăm root, acestea au deja unul, deoarece root este un utilizator obișnuit pe toate sistemele. În plus, acest utilizator poate face ravagii prin faptul că are toate permisiunile sunt activate.
PermitRootLogin nr
Activați accesul controlat
Putem controla ce utilizator se poate conecta prin SSH și chiar plasa o clauză pentru a se conecta numai de la un anumit IP. Acest lucru este similar cu ceea ce oferă AWS pentru a ne conecta la instanțele dvs.
AllowUsers [email protected]
Este important să permiteți accesul numai utilizatorilor care au nevoie de acces la distanță și, dacă este posibil, să le limitați la un IP cunoscut.
Configurați numărul de încercări eșuate
Dacă am greșit parola, serverul ne dă mai multe încercări de a o reintroduce, aceasta trebuie să fie limitată sau este posibil să fiți victima unui script de forță brută, o putem plasa de 2 sau 3 ori.
MaxAuthTries 2
Număr de conexiuni permise simultan
Acest lucru poate varia în funcție de modul în care utilizați serverul, dar idealul este să îl controlați, adăugați doar numărul total de utilizatori permiși de SSH.
MaxStartups X
După ce facem toate modificările din fișierul nostru, trebuie reporniți serviciul nostru sshd, Poate varia în funcție de managerul de service.
SystemD
systemctl reporniți sshd
Upstart / Sysinit
service reporniți sshd
Toate aceste modificări adaugă un nivel suplimentar de securitate dar trebuie să ținem cont de:
- Folosiți parole alfanumerice.
- Utilizare Autentificare prin chei publice / private când este posibil.
- Completați securitatea cu SELINUX și firewall-uri.
- Controlați accesul la care utilizatorii trebuie să se conecteze de la distanță.
Autentificați cheile publice / private SSH
Utilizați în prezent Taste SSH Este o cerință indispensabilă, această autentificare este utilizată pe scară largă de către administratori pentru a automatiza sarcini între diferite servere și este chiar utilizată de dezvoltatori pentru a accesa SCM precum GIT, GITHUB, GITLAB printre altele.
Oferă mare securitate și posibilitatea de a creați sarcini automate bazat pe scripturi ca Înapoi sau Replică modificările la mai multe noduri în același timp.
Când utilizați o tastă SSH (public și privat), se pot conecta cu ușurință la un server sau la mai multe servere, fără a fi nevoie să introduceți o parolă de fiecare dată. Este posibil să vă configurați cheile fără o expresie de acces, totuși ar fi nechibzuit, dacă cineva a obținut cheia dvs., ar putea să o folosească. Vom vorbi despre cum să generați chei, să le distribuiți și să utilizați ssh-agent pentru a obține o securitate mai mare.
Generarea cheilor fără expresie de acces
În primul rând, asigurați-vă că aveți instalat OpenSSH, nu este necesar, serverul doar clientul.
Începem prin generarea unei chei de tip DSA cu securitate de 1024 biți, mai mult decât suficient, deși puteți merge mai departe și puteți genera o cheie de tip RSA cu o limită de 4096.
ssh-keygen -b 1024 -t dsaNe va cere locația în care va salva tastele implicite ~ / .ssh
Introduceți fișierul în care să salvați cheia (/home/test/.ssh/id_dsa)Apoi va cere o frază deocamdată nu vom folosi niciuna și o vom lăsa necompletată și ne va spune că cheia a fost creată și ne reflectă.
Imaginea va fi întotdeauna diferită, este generată aleatoriu, atunci dacă mergem în folderul .ssh trebuie să avem 2 fișiere
id_dsa -----> Cheie privată (Nu o împărtășiți cu nimeni, este ca TDC-ul dvs.).
id_dsa.pub ----> Este cel pe care îl împărtășim pentru a ne conecta.
Distribuiți cheia publică
În cazul în care dorim să partajăm cheia publică în SCM sau Chef, Puppet, Jenkins, vizualizăm fișierul cheii publice, îl copiem și îl lipim acolo unde corespunde.
mai 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 + hxl = testul @ solveticÎn cazul în care doriți să-l partajați pentru a accesa un server, vă recomand întotdeauna să utilizați ssh-copy-id este inclus în OpenSSH și este foarte ușor de utilizat:
ssh-copy-id user @ remote-server-ip -i specifică locația cheii de utilizat.Există și alte moduri precum:
Utilizator ssh @ remote-server-ip \ 'cat >> .ssh / author_keys2' <.ssh / id_dsa.pub
scp ~ / .ssh / id_dsa.pub user @ remote-server-ipDe acum înainte, tastele sunt conectate și trebuie doar să introduceți gazda.
ssh -l utilizator de la distanță-server-ipDe data aceasta nu va cere nicio parolă și putem folosi scripturi fără interacțiune.
Generați expresia de acces și asociați cu ssh-agent
Securitate cheie SSH Se bazează pe cheia noastră privată care funcționează ca o carte de acces, dar dacă cineva ne fură cheia, va putea accesa toate locurile unde avem acces. Dar atunci când generăm o expresie de acces, putem avea un nivel suplimentar, nu numai că este necesară cheia, dar nu trebuie să ne introducem expresia.
De data aceasta vom crea o cheie rsa cu o securitate mai mare prin configurarea unei fraze.
ssh-keygen -b 4096 -t rsa -C "Key with Passphrase" # -C Adaugă un comentariu.Fiind o frază putem folosi spații, puncte și caractere speciale
exemplu ---> Aceasta este noua mea cheie cu Fr @ S3.Împărtășim noua cheie:
scp ~ / .ssh / id_rsa.pub user @ remote-server-ipDe data aceasta avem nevoie de cheie și de expresie, dar introducerea ei de mai multe ori este obositoare, dar o putem completa cu ssh-agent, trebuie să o pornim.
ssh-agentAdăugăm cheia noastră
ssh-add Introduceți expresia de acces pentru /home/user/.ssh/id_rsa: # Introducem expresia pe care am configurat-o.Acum ne putem conecta la orice server care folosește cheia noastră fără a fi nevoie să o introducem pe expresie de acces.
Vă recomand această metodă dacă vă aflați în afara intranetului, clientului și serverului în diferite puncte de pe Internet și nu vom folosi sarcini automate, ci mai degrabă ne conectăm la server în scopuri de administrare la distanță, cel mai bine este să indicați o parolă sau foarte lungă expresie de trecere (15 sau mai multe caractere, majuscule, minuscule, numere și simboluri) la cheia publică.
Pe aici va fi practic imposibil să fii piratat prin această metodă, deoarece hackerul nu numai că va trebui să știe parola, ci va trebui să aibă un certificat public valabil pe server, astfel încât să poată fi autentificat. (Desigur, presupunând că serverul nu a fost niciodată compromis și că este complet actualizat și cu cea mai bună securitate posibilă).
V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv