Când este implementat un nou vpsie bazat pe Linux, acesta va avea fișier de configurare SSH implicit. Aceasta înseamnă că serverul SSH ascultă pe portul TCP 22 și acceptă autentificarea bazată pe parolă.
Pentru a găsi sisteme cu portul SSH deschis pe internet, atacatorii trimit un pachet TCP SYN la o gamă largă de adrese IP. Adresele IP care returnează un pachet SYN+ACK sunt păstrate într-o listă de server pentru a forța în continuare o pereche nume de utilizator + parolă.
În primul rând, dacă vă puteți conecta la porturi TCP mai înalte de la conexiunea(ele) la internet la destinații de pe internet, în special serverul VPS, atunci mai întâi schimbați portul de ascultare SSH cu unul mai înalt. !!! Rețineți că acest pas trebuie făcut numai după ce v-ați asigurat că vă puteți accesa VPSie prin consola web pentru a evita blocarea dvs.!!!
După cum sa menționat anterior, atacatorii trimit un pachet TCP SYN către portul de destinație 22 către o gamă largă de IP-uri. Serverul dvs. nu va răspunde dacă SSH ascultă alt port.
Pentru a realiza acest lucru, localizați sshd_config (atât pe CentOS, cât și pe Debian, se află în directorul „/etc/ssh”), editați-l și modificați sau decomentați directiva „ListenAddress” la ceva de genul „ListenAddress 0.0.0.0:10022” .
Mai multe despre această directivă. În termeni de rețea Unix și Linux, adresa de 32 de octeți, toți zero, „0.0.0.0” se referă la toate adresele locale/toate interfețele locale. Dacă știți ce faceți, puteți fie să utilizați acest lucru, fie să fiți foarte precis cu privire la adresa IP pe care doriți să asculte serverul dvs. SSH. Iată un alt exemplu pentru a-l face să asculte o anumită adresă IP „ListenAddress 10.1.1.53:10022”.
Salvați fișierul de configurare și verificați:
# lsof -Pni :10022
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 14035 root 3u IPv4 182063 0t0 TCP 10.1.1.53:10022 (LISTEN)
Cele de mai sus confirmă că comanda „sshd” cu ID de proces 14035, descriptorul de fișier numărul 3u ascultă pe IP 10.1.1.53 și portul 10022 (port non-standard pentru SSH). Socket-ul este de tip IPv4.
Cele de mai sus sunt doar un exemplu. Ar trebui să utilizați IP-ul atribuit pe interfața destinată procesării conexiunilor SSH de intrare.
Un al doilea instrument de cea mai bună practică este dezactivarea autentificarea prin parolă în SSH. Acest lucru vă lasă doar opțiunea (securizată) de a vă autentifica numai folosind cheile ssh.
Crearea și implementarea cheilor ssh nu este scopul acestui articol (ci unul viitor), așa că voi presupune că acest pas a fost finalizat. Iată ce trebuie schimbat în fișierul „sshd_config”:
...
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
...
PasswordAuthentication no
...
Primele trei directive permit autentificarea RSA și permit fișierului authorized_keys să dețină chei publice. Când este implementată autentificarea SSH RSA, rețineți că serverul SSH păstrează ÎNTOTDEAUNA cheia publică, iar utilizatorul deține cheia privată. De aceea, este responsabilitatea utilizatorului să o păstreze în siguranță și să raporteze pierderea sau mai rău, iar responsabilitatea administratorului de a reacționa și de a elimina cheia publică dacă cheia privată corespunzătoare a fost compromisă.
Acum, pentru a confirma cele de mai sus, voi încerca să fac ssh la localhost:
$ ssh localhost
ssh: connect to host localhost port 22: Connection refused
Portul 22 nu mai este deschis
$ ssh localhost -p 10022
ssh: connect to host localhost port 10022: Connection refused
Nici portul 10022 nu funcționează. De ce? Deoarece SSH ascultă o anumită adresă IP:
$ ssh 10.1.1.53 -p 10022
Permission denied (publickey).
Bine. Deci nu mă mai pot autentifica la portul 22 și nu mă pot autentifica folosind parole.Pentru a configura o parolă rădăcină pentru serverele mysql, trebuie să aveți un server mysql care rulează, prin urmare trebuie să rulați următoarea comandă:
#service mysqld restart
Acum, deoarece sunteți sigur că ați repornit cu succes serverul, puteți verifica dacă serverul dvs. mysql rulează, rulând un netstat pe Linux.
#netstat -ntlp
Aceasta vă va afișa toate aplicațiile care ascultă pe serverul dvs. Ieșirea ar trebui să arate cam așa:
# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 960/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 904/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 876/sshd
tcp6 0 0 :::80 :::* LISTEN 904/nginx
tcp6 0 0 :::22 :::* LISTEN 876/sshd
Serverele Mysql rulează implicit pe portul 3306, prin urmare, dacă vedeți că portul 3306 ascultă, sunteți gata. Următorul pas este să setați parola root, astfel încât nimeni să nu aibă acces fără parolă la bazele de date. Veți face asta folosind următoarea comandă:
#mysqladmin -u root password 'some_very_hard_and_complicated_password'
Pentru a verifica dacă parola a fost configurată, vă puteți autentifica la baza de date mysql:
#mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 5.5.37-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Când vi se solicită parola, utilizați parola pe care ați configurat-o la pasul anterior. Pentru a părăsi promptul mysql, trebuie doar să tastați ieșire sau \q.
În cazul în care ați pierdut/uitat parola de root mysql, o puteți reseta. Pentru aceasta, va trebui să opriți serverul mysql și să-l porniți în modul sigur.
#service mysqld stop
#mysqld_safe --skip-grant-tables
Ar trebui să vedeți serverul mysql pornit și să vă puteți conecta fără o parolă la el. Acum conectați-vă la baza de date mysql și rulați următoarea interogare pentru a vă reseta parola mysql:
#mysql --user=root mysql
mysql> update user set Password=PASSWORD('new-password') where user='root';
mysql> flush privileges;
mysql> exit;
Opriți serviciul mysql care rulează și porniți-l normal.
#killall -9 mysqld_safe
#service mysqld start
Acum parola mysql a fost resetată și vă puteți conecta în siguranță la baza de date cu noua parolă.
De fapt, puteți încerca acești pași de server MySQL pe platforma noastră în câteva minute utilizând PCS (Soluția Cloud Privată) care vă permite să aveți VPSie(e) într-o rețea privată – NAT – Port forward – control trafic pentru intrare și ieșire – gateway multiple IP-uri pe care le-ați putea folosi pentru echilibrarea încărcăturii și failover.