Mitkä palvelut kuuntelevat VPS:lläsi, ja mihin pääsee käsiksi ulkopuolelta?
Jokainen yhteyksiä vastaanottava ohjelma kuuntelee jotakin porttia: SSH porttia 22, verkkopalvelin portteja 80 ja 443, MariaDB porttia 3306. Jokainen ulkoa tavoitettava portti on ovi palvelimellesi. Verkkosivusto tarvitsee ulkoa yleensä vain portit 22, 80 ja 443. Tässä artikkelissa näet, mikä kuuntelee ja missä osoitteessa, ja miten tarkistat, mitä muu internet näkee.
Katso, mikä kuuntelee
Aja VPS:lläsi:
sudo ss -tulpn
Valitsimet tarkoittavat: TCP (-t), UDP (-u), vain kuuntelevat (-l), mikä ohjelma (-p) ja numerot nimien sijaan (-n). Esimerkki:
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",...))
Tärkein on sarake Local Address, eli osoite, jossa ohjelma kuuntelee:
| Osoite | Merkitys |
|---|---|
0.0.0.0 | Kaikki IPv4-osoitteet, siis myös julkinen osoitteesi: tavoitettavissa ulkoa, ellei palomuuri estä |
[::] | Kaikki IPv6-osoitteet: sama IPv6:lle |
127.0.0.1 tai [::1] | Vain palvelin itse (loopback): ei koskaan tavoitettavissa ulkoa |
127.0.0.53 tai 127.0.0.54 | Myös loopback: systemd-resolvedin paikallinen DNS-apu |
Esimerkissä MariaDB on kunnossa: siihen pääsevät vain palvelimella itsellään olevat ohjelmat. Redis kuuntelee kaikissa osoitteissa, ja juuri siitä virheestä tässä on kyse.
Sulje portti itse palvelussa
Tietokannan, välimuistin tai hallintanäkymän ei pitäisi juuri koskaan olla tavoitettavissa ulkoa. Paras ensimmäinen askel on, että palvelu kuuntelee vain loopbackissa. Debianissa ja Ubuntussa:
| Ohjelma | Asetus | Tiedosto |
|---|---|---|
| MariaDB tai MySQL | bind-address = 127.0.0.1 | /etc/mysql/mariadb.conf.d/50-server.cnf |
| PostgreSQL | listen_addresses = 'localhost' | /etc/postgresql/<versio>/main/postgresql.conf |
| Redis | bind 127.0.0.1 -::1 ja protected-mode yes | /etc/redis/redis.conf |
Käynnistä palvelu sen jälkeen uudelleen (katso Palveluiden hallinta systemctl:llä VPS:lläsi) ja tarkista uudelleen komennolla ss -tulpn. Jos haluat itse käyttää tietokantaa läppäriltäsi, käytä avoimen portin sijaan SSH-tunnelia, katso SSH-config: kirjaudu sisään lyhyellä nimellä.
Palomuuri toisena suojakerroksena
Palomuuri pysäyttää sen, mikä vahingossa kuitenkin kuuntelee kaikissa osoitteissa. Ufw:n määrittäminen on kerrottu artikkelissa Palomuuri ufw:llä (tai nftablesilla). Älä luota yhteen kerrokseen: palomuuri voi olla pois päältä tai sääntö liian salliva.
ports:) ohittavat ufw:n. Tietokanta, jolla on "3306:3306", on silloin tavoitettavissa ulkoa, vaikka ufw kertoisi portin olevan kiinni. Lisää eteen 127.0.0.1: tai jätä portti julkaisematta. Katso Docker ja palomuuri: porttien turvallinen julkaiseminen.Tarkista ulkopuolelta
ss näyttää, mikä palvelimella kuuntelee, mutta ei sitä, mitä palomuurisi päästää läpi. Varsinainen tarkistus tehdään toiselta tietokoneelta, ei palvelimelta itseltään. Macilla tai Linuxilla nc:llä (netcat):
nc -vz -w 3 203.0.113.10 6379 nc -6 -vz -w 3 2001:db8::10 6379
Windowsissa PowerShell tekee saman komennolla Test-NetConnection 203.0.113.10 -Port 6379. Käytä omaa IPv4- ja IPv6-osoitettasi; ne löytyvät VPS-näkymästä. Tulos luetaan näin:
- Avoin (succeeded): jokin kuuntelee ja on tavoitettavissa ulkoa.
- Suljettu (Connection refused): mikään ei kuuntele, tai palomuuri hylkää yhteyden aktiivisesti.
- Suodatettu (time-out): palomuuri pudottaa liikenteen hiljaisesti.
Tietokannalle sekä suljettu että suodatettu ovat hyviä tuloksia. Testaa myös IPv6: yleinen virhe on palomuuri, jossa on vain IPv4-säännöt, vaikka palvelu kuuntelee myös osoitteessa [::]. Porttiskanneri, kuten nmap, tarkistaa useita portteja kerralla; käytä sellaista vain omalla palvelimellasi.
VPS:si on täysin itsehallinnoitu: päätät itse, mitkä palvelut kuuntelevat ja miten palomuurisi on määritetty. Me autamme WebOkén osuudessa, kuten VPS-näkymässä, verkossa ja snapshoteissa.
Haluatko oppia lisää? Käy ilmainen kurssi VPS ja Linux-palvelimen ylläpito, oppitunti 5.1 Portit ja kuuntelevat palvelut tai oppitunti 5.2 Palomuuri ufw:llä ja nftablesilla.
