Kādi pakalpojumi klausās Jūsu VPS, un kas no tiem ir pieejams no ārpuses?
Katra programma, kas pieņem savienojumus, klausās kādā portā: SSH portā 22, tīmekļa serveris portos 80 un 443, MariaDB portā 3306. Katrs ports, kas ir pieejams no ārpuses, ir durvis uz Jūsu serveri. Tīmekļa vietnei no ārpuses parasti ir nepieciešami tikai porti 22, 80 un 443. Šeit uzzināsiet, kā redzēt, kas klausās un uz kādas adreses, un kā pārbaudīt, ko redz pārējais internets.
Kā redzēt, kas klausās
Palaidiet savā VPS:
sudo ss -tulpn
Opcijas nozīmē: TCP (-t), UDP (-u), tikai klausošie (-l), kura programma (-p) un skaitļi nosaukumu vietā (-n). Piemērs:
tcp LISTEN 0.0.0.0:22 users:(("sshd",...))
tcp LISTEN 0.0.0.0:443 users:(("nginx",...))
tcp LISTEN 127.0.0.1:3306 users:(("mariadbd",...))
tcp LISTEN 0.0.0.0:6379 users:(("redis-server",...))
tcp LISTEN [::]:22 users:(("sshd",...))
Svarīga ir kolonna Local Address, proti, adrese, uz kuras programma klausās:
| Adrese | Nozīme |
|---|---|
0.0.0.0 | Visas IPv4 adreses, tātad arī Jūsu publiskā adrese: pieejama no ārpuses, ja vien to neaptur ugunsmūris |
[::] | Visas IPv6 adreses: tas pats attiecībā uz IPv6 |
127.0.0.1 vai [::1] | Tikai pats serveris (loopback): no ārpuses nekad nav pieejams |
127.0.0.53 vai 127.0.0.54 | Arī loopback: systemd-resolved lokālais DNS palīgs |
Piemērā MariaDB ir kārtībā: tai var piekļūt tikai programmas pašā serverī. Redis klausās uz visām adresēm, un tieši tā ir kļūda, par kuru ir runa.
Aizvēršana pašā pakalpojumā
Datubāzei, kešatmiņai vai pārvaldības panelim gandrīz nekad nevajadzētu būt pieejamam no ārpuses. Labākais pirmais solis ir panākt, lai pakalpojums klausītos tikai uz loopback. Debian un Ubuntu sistēmās:
| Programma | Iestatījums | Fails |
|---|---|---|
| MariaDB vai MySQL | bind-address = 127.0.0.1 | /etc/mysql/mariadb.conf.d/50-server.cnf |
| PostgreSQL | listen_addresses = 'localhost' | /etc/postgresql/<versija>/main/postgresql.conf |
| Redis | bind 127.0.0.1 -::1 un protected-mode yes | /etc/redis/redis.conf |
Pēc tam restartējiet pakalpojumu (skatiet Pakalpojumu pārvaldība ar systemctl Jūsu VPS) un vēlreiz pārbaudiet ar ss -tulpn. Ja vēlaties piekļūt datubāzei no sava klēpjdatora, izmantojiet SSH tuneli atvērta porta vietā, skatiet SSH konfigurācija: pieteikšanās ar īsu nosaukumu.
Ugunsmūris kā otrais slānis
Ugunsmūris aptur to, kas tomēr nejauši klausās uz visām adresēm. Kā iestatīt ufw, ir aprakstīts rakstā Ugunsmūris ar ufw (vai nftables). Nepaļaujieties tikai uz vienu slāni: ugunsmūris var būt izslēgts vai kāds noteikums var būt pārāk plašs.
ports:), apiet ufw. Datubāze ar "3306:3306" tad ir pieejama no ārpuses, pat ja ufw norāda, ka ports ir aizvērts. Pievienojiet priekšā 127.0.0.1: vai nepublicējiet portu vispār. Skatiet Docker un ugunsmūris: droša portu publicēšana.Pārbaude no ārpuses
ss parāda, kas klausās serverī, bet ne to, ko laiž cauri Jūsu ugunsmūris. Īsto pārbaudi veiciet no cita datora, nevis no paša servera. Ar nc (netcat) Mac vai Linux datorā:
nc -vz -w 3 203.0.113.10 6379 nc -6 -vz -w 3 2001:db8::10 6379
Windows vidē PowerShell to pašu dara ar Test-NetConnection 203.0.113.10 -Port 6379. Ievadiet savu IPv4 un IPv6 adresi; tās ir redzamas VPS ekrānā. Rezultātu lasiet šādi:
- Atvērts (succeeded): kaut kas klausās, un tas ir pieejams no ārpuses.
- Aizvērts (Connection refused): nekas neklausās, vai arī ugunsmūris aktīvi atsaka savienojumu.
- Filtrēts (time-out): ugunsmūris klusi atmet datplūsmu.
Datubāzei gan aizvērts, gan filtrēts ports ir labs rezultāts. Pārbaudiet arī IPv6: bieža kļūda ir ugunsmūris tikai ar IPv4 noteikumiem, kamēr pakalpojums klausās arī uz [::]. Portu skeneris, piemēram, nmap, pārbauda vairākus portus vienlaikus; izmantojiet šādu skeneri tikai savam serverim.
Jūsu VPS ir pilnībā pašpārvaldīts: kuri pakalpojumi klausās un kā iestatīts Jūsu ugunsmūris, to nosakāt Jūs. Mēs palīdzam ar WebOké daļu, piemēram, VPS ekrānu, tīklu un momentuzņēmumiem.
Vēlaties uzzināt vairāk? Apgūstiet bezmaksas kursu VPS un Linux serveru pārvaldība, nodarbību 5.1 Porti un klausošie pakalpojumi vai nodarbību 5.2 Ugunsmūris ar ufw un nftables.
