Asigurarea conectării la server

Ce veți crea

Datorită abundenței din ce în ce mai mari de aplicații utile găzduite, cum ar fi WordPress și creșterii accesibile a furnizorilor de servicii de găzduire a cloudului, rularea propriului server devine din ce în ce mai convingătoare pentru o audiență mai largă. Dar asigurarea corectă a acestor servere necesită o cunoaștere destul de largă a administrării sistemului Linux; această sarcină nu este întotdeauna potrivită pentru începători. 

Când vă înscrieți pentru contul tipic de găzduire în cloud, veți primi un e-mail cu un cont rădăcină, o parolă și o adresă IP și instrucțiuni de conectare prin SSH la portul 22. Dar este important să faceți mai mulți pași suplimentari dincolo de cele de bază configurații de acces. Prima parolă de root de mai jos este de fapt doar punctul de plecare pentru securitate. Mai sunt multe de făcut.

Acest tutorial va oferi o imagine de ansamblu a abordărilor incrementale comune pentru a vă asigura serverul tipic Linux.

Abordări la securitatea serverului

Pentru scopurile acestui tutorial, folosesc o nouă picătură Ubuntu 14.04 de la Digital Ocean cu configurația LAMP; dacă doriți să urmăriți împreună cu aceeași configurație, exemplificați pașii de configurare aici. 

Odată ce ați cartografiat numele de domeniu ales, sunteți gata să începeți. Folosesc http://secure.lookahead.io pentru exemplul meu.

Vă puteți conecta la serverul dvs. cu SSH: ssh [email protected]. Serverul ar trebui să solicite schimbarea parolei în timpul primei încercări de autentificare:

Acum, restul depinde de tine. Iată o serie de abordări comune pentru îmbunătățirea securității de autentificare a serverului dvs.:

1. Actualizați componentele sistemului

În primul rând, este important să actualizați periodic componentele sistemului Linux. În mod obișnuit, atunci când vă conectați, Ubuntu vă va spune câte pachete aveți pe care trebuie să le actualizați. Comenzile pentru actualizarea pachetelor sunt:

sudo apt-get actualizare sudo apt-get dist-upgrade

Recenta vulnerabilitate a securității Shellshock dezvăluită în Bash este un exemplu perfect al necesității de a actualiza în mod regulat fișierele de sistem.

De fiecare dată când vă conectați, Ubuntu vă va spune dacă există pachete și actualizări de securitate care pot fi actualizate.

Dacă doriți, puteți activa actualizările nesupravegheate:

sudo apt-get instalare nesupravegheată-upgrade-uri sudo dpkg-reconfigurați nesupravegheat-upgrade-uri 

2. Schimbați-vă portul SSH de la valoarea implicită

Lăsând accesul SSH pe portul 22 este mai rapid și mai ușor pentru hackeri să vizeze serverele. Să modificăm portul SSH implicit la ceva mai obscur.

Editați fișierul de configurare SSH:

sudo nano / etc / ssh / sshd_config

Schimbați la un alt număr de port, de exemplu:

# Ce porturi, IP-uri și protocoale ascultăm pentru Port 33322

Reporni SSH:

sudo service ssh reporniți

Apoi, deconectați-vă și încercați să vă conectați din nou. Ar trebui să vedeți acest mesaj de eroare:

ssh [email protected] ssh: conectați la gazdă secure.lookahead.io portul 22: Conexiunea a fost refuzată

De această dată, utilizați următoarea comandă SSH, schimbând portul la 33322: ssh -p 33322 [email protected]. Ar trebui să vă puteți conecta cu succes.

3. Activați un Firewall

Utilizarea unui paravan de protecție (firewall) poate ajuta la blocarea accesului la porturile lăsate în mod inutil de deschidere și închidere a vectorilor de atac; aceasta poate ajuta, de asemenea, la logarea încercărilor de intruziuni.

Dacă întâmplați să utilizați serviciile de cloud Amazon AWS, există o interfață de utilizator frumoasă pentru firewall-ul numit grupuri de securitate. Consola pentru grupurile de securitate AWS facilitează dezactivarea accesului la toate porturile, cu excepția noului port SSH ales și a portului 80 pentru navigarea pe Internet; puteți vedea un exemplu vizual aici:

Dacă doriți să implementați firewall-uri bazate pe Linux, puteți studia ufw și iptables. Deși este dincolo de scopul acestui tutorial, voi da un scurt exemplu de utilizare UFW, "firewall-ul necomplicat". 

În primul rând, vom permite UFW și apoi permiteți accesul pentru portul nostru SSH 33322, precum și tot traficul http, pe portul 80. Apoi, vom refuza accesul pe portul SSH standard 22.

sudo ufw permite sudo ufw permite 33322 sudo ufw permite http sudo ufw deny 22 sudo ufw status

Aveți grijă să configurați UFW, deoarece vă puteți bloca dintr-o sesiune de consolă existentă și din întregul server.

Dacă doriți să mergeți mai adânc, baterea de port oferă o modalitate de a observa mai complet portul de acces SSH. Există un tutorial detaliat pentru utilizatorii avansați de Justin Ellingwood: Cum să folosiți portul Knocking pentru a vă ascunde Daemonul SSH de la atacatori.

4. Schimbați numele dvs. de conectare la rădăcină

Acum, să eliminăm utilizatorul root (sau ubuntu pe unele sisteme) și să personalizăm login-ul administratorului.

Vom adăuga un utilizator numit "hal". Înlocuiți "hal" cu numele de utilizator preferat în exemplele de mai jos:

sudo adduser hal

Adăugați noul dvs. utilizator la grupul sudo pentru administratori:

sudo adduser hal sudo

Adăugați noul dvs. utilizator la grupul sudoers. Editați fișierul sudoers:

sudo nano / etc / sudori

Adăugați această linie în fișierul sudoers, în secțiunea Privilegii utilizator:

hal ALL = (ALL) NOPASSWD: ALL

Editați din nou fișierul de configurare SSH:

sudo nano / etc / ssh / sshd_config

Eliminați rădăcina sau contul ubuntu din AllowUsers camp. Este posibil să fie necesar să adăugați și această linie dacă nu este în fișierul de configurare:

AllowUsers hal

Asigura-te PermitRootLogin e oprit:

PermitRootLogin nr

Reporniți serviciul:

sudo service ssh reporniți

Deconectați-vă și încercați să vă conectați din nou ca root. Nu ar trebui să puteți. Apoi, încercați să vă conectați ca Hal: ssh -p 33322 [email protected]. Ar trebui să funcționeze foarte bine.

Rețineți că unii utilizatori pot dori să repornească SSH, deconectați-vă și verificați dacă vă puteți conecta ca Hal înainte de a dezactiva autentificarea root.

5. Activați autentificarea Google cu doi factori

Acum, vom adăuga autentificarea cu doi factori în datele dvs. de conectare la server; cu alte cuvinte, atunci când încercăm să vă conectăm la server, vi se va cere să furnizăm un cod de timp dependent de o aplicație pe telefonul nostru. 

Pentru acest exemplu, vom folosi Google Authenticator. Asigurați-vă că descărcați Google Authenticator din magazinul de aplicații iTunes sau din Magazin Play.

Apoi, din consola server, instalați pachetul Google Authenticator:

sudo apt-get instalează libpam-google-autenator

Apoi, vom modifica modulul de autentificare plug-in (PAM) pentru SSH pentru a solicita autentificarea de două factori de la Google:

nano /etc/pam.d/sshd

Adăugați următoarea linie în partea de sus:

auth a solicitat pam_google_authenticator.so

Apoi, reveniți la editarea din nou a fișierului de configurare SSH:

sudo nano / etc / ssh / sshd_config

Schimba ChallengeResponseAuthentication la da:

# Schimbați la da pentru a activa parolele provocare-răspuns (atenție la probleme cu # unele module PAM și fire) ChallengeResponseAuthentication yes

Salvați modificarea și activați autentificatorul:

google-authenticator

Pe lângă faptul că vedeți un cod QR mare (după cum se arată în partea de sus a acestui tutorial), veți vedea, de asemenea, un set de chei de conectare secrete și veți primi câteva întrebări pentru a personaliza configurația:

Utilizând aplicația Google Authenticator de pe telefonul dvs., alegeți pictograma stiloului de editare din partea dreaptă sus și adăugați o înregistrare nouă utilizând butonul din partea de jos. Puteți scana codul QR cu aparatul foto sau puteți introduce cheia secretă. După finalizare, Google Authenticator va fi gata să vă ofere coduri pentru următoarea dvs. conectare.

Imprimați o copie a acestor coduri de zgârieturi de urgență și salvați-le într-o locație sigură, în cazul în care vreți să vă recuperați datele de conectare fără autentificare cu doi factori.

Reporniți din nou serviciul SSH și deconectați-l:

sudo serviciu ssh reporniți logout

Conectați-vă din nou și de această dată vi se va solicita un cod de verificare înainte de parola dvs. Introduceți codul de verificare de șase cifre de la Google Authenticator pe telefon:

Adăugarea autentificării cu doi factori adaugă un strat puternic de securitate secundară serverului dvs. Totuși, putem face mai mult.

6. Comutați la Utilizarea tastelor SSH pentru conectare

Este înțelept să dezactivați autentificarea bazată pe parolă a serverului dvs. în favoarea cheilor de securitate; cheile sunt mult mai rezistente la atac. Parolele sunt scurte și sunt supuse atacurilor cu dicționarul; cheile sunt mai lungi și, în cea mai mare parte, pot fi compromise doar de către supercomputerele agenției guvernamentale.

Pentru a crea cheia SSH, urmați aceste instrucțiuni. Schimbați la directorul de acasă pentru noul dvs. utilizator:

cd / home / hal

Efectuați un director SSH și setați permisiunile:

mkdir .ssh chmod 700.ssh

Generați o pereche nouă de chei. Când vi se solicită, depinde de dvs. dacă doriți să adăugați o parolă la cheie:

cd .ssh ssh-keygen -b 1024 -f id_hal -t dsa

Adăugați cheia publică la authorized_keys fişier:

cat ~ / .ssh / id_hal.pub> ~ / .ssh / authorized_keys

Setați permisiunile pentru fișierul cheie:

chmod 600 ~ / .ssh / *

Mutați cheia privată într-un dosar temp pentru a descărca pe computerul local:

cp ~ / .ssh / * / tmp chmod 644 / tmp / *

Descărcați noua cheie privată pe computer utilizând contul dvs. Ubuntu. Pe computer, utilizați Terminal:

scp -P 33322 -i ~ / .ssh / id_hal [email protected]: / tmp / * ~ / .ssh

Setați permisiunile și testați:

cd ~ / .ssh chmod 400 id_hal ssh -p 33322 -i ~ / .ssh / id_hal [email protected]

Dacă întâmpinați erori, puteți încerca să căutați jurnalul de pe serverul AWS în timp ce încercați să vă conectați:

coada -f /var/log/auth.log

Eliminați fișierele temporare cheie din directorul tmp al serverului:

rm -rf / tmp / *

Editați din nou fișierul de configurare SSH:

sudo nano / etc / ssh / sshd_config

Dezactivați autentificarea parolei:

PasswordAuthentication nr

Reporniți din nou serviciul SSH:

sudo service ssh reporniți

Acum, nimeni nu va putea să vă conectați la serverul dvs. fără cheia privată. Pentru a vă conecta la serverul dvs., utilizați următoarea comandă:

ssh -p 33322 -i ~ / .ssh / id_hal [email protected]

Asigurați-vă că vă asigurați computerul pe care îl utilizați cu cheia privată; este, de asemenea, înțelept să stocați o copie a cheii private pe o unitate flash undeva fizic sigură.

Rețineți că autentificarea cu două factori de la Google Authenticator este ocolită atunci când utilizați securitatea cheii SSH.

De asemenea, dacă vreți să fiți blocați din serverul dvs. în timpul acestor configurații, DigitalOcean oferă o consolă web care se comportă ca și cum o tastatură a fost conectată la serverul dvs. Pentru alți gazde, poate fi necesar să obțineți ajutor de la echipa de asistență.

7. Gestionați securitatea aplicației

În timp ce portalul de autentificare al serverului dvs. este o vulnerabilitate serioasă, în mod cinstit, aplicațiile pe care le alegeți să le instalați sunt susceptibile de a genera riscuri și mai mari. De exemplu, recent am citit că folosirea expresiilor regulate necorespunzătoare în aplicația dvs. PHP poate deschide serverul dvs. pentru atacurile ReDoS.

Dar un exemplu mai obișnuit este vulnerabilitatea recentă a pluginului WordPress cu Slider Revolution. O temă pe care am instalat-o, de fapt, a inclus acest plugin, așa că a trebuit să actualizez tema pentru a rezolva problema.

Vulnerabilitățile aplicațiilor pot fi dificil de păstrat. Se poate face revenirea la administrarea reușită să pară din nou atractivă; nu renunta! Aveți grijă de aplicațiile pe care le instalați, rămâneți pe listele de discuții pentru furnizorii de cod și păstrați totul la zi cu regularitate.

Fii proactiv și fă ce poți pentru a-ți proteja aplicațiile. De exemplu, uitați-vă la modul în care descriu adăugarea securității utilizatorilor Apache la instalarea aplicației web populare, PHPMyAdmin, care este utilizată pentru simplificarea accesului și administrarea bazei de date MySQL. Deoarece doar administratorii au nevoie de acces la PHPMyAdmin și consecințele hacking-ului sunt mari, adăugarea unui strat suplimentar de securitate a parolei este destul de adecvată pentru această aplicație particulară.

Securitatea este o preocupare uriașă și o zonă mare cu care să te lupți. Sper că ați găsit acest tutorial util. Vă rugăm să aveți libertatea de a posta propria idee, corecții, întrebări și comentarii de mai jos. Aș fi interesat în special de abordări alternative și extinse. Puteți să mă contactați și pe Twitter @reifman sau să mă trimiteți direct prin e-mail.

Cod