Otevřené databázové porty: MySQL, PostgreSQL, MongoDB, Redis a Elasticsearch
Databázový port je otevřený, když se k němu může připojit kdokoli z internetu. Vaše aplikace se k databázi připojit potřebuje, náhodný počítač v jiné zemi ne. Přesto stačí jediné pravidlo firewallu, změněný řádek konfigurace nebo výchozí nastavení cloudu a MySQL, PostgreSQL, MongoDB, Redis či Elasticsearch odpovídá celému internetu.
Otevřený port ještě neznamená únik dat. Pokud je ověřování silné a software aktuální, útočník ho musí nejprve překonat. Otevřený port ale znamená, že vaši databázi může kdokoli zkoumat, zkoušet na ni hesla a testovat známé zranitelnosti. Když ho uzavřete, odpadne celá kategorie rizik.
V článku najdete výchozí porty, postup, jak je zkontrolovat zvenčí, a vysvětlení, jak je správně uzavřít.
Výchozí porty, které byste měli znát
Toto jsou výchozí porty podle dokumentace jednotlivých výrobců:
- MySQL: 3306 pro klasický protokol, 33060 pro X Protocol.
- PostgreSQL: 5432.
- MongoDB: 27017 pro
mongodamongos. - Redis: 6379, jak je nastaveno ve výchozím
redis.conf. - Elasticsearch: HTTP API na prvním volném portu v rozsahu 9200 až 9300, obvykle 9200, a transportní vrstva na 9300 až 9400.
Služby mohou běžet i na jiných portech, berte proto tento seznam jako začátek, ne jako úplný sken.
Jak se databáze dostanou do internetu
Většina těchto produktů je ve výchozím nastavení bezpečnější než dřív:
listen_addressesv PostgreSQL má výchozí hodnotulocalhost.- MongoDB se ve výchozím stavu váže na localhost.
- Redis od verze 3.2.0 přejde do chráněného režimu, když naslouchá na všech rozhraních bez hesla, a pak odpovídá jen lokálním klientům.
- Elasticsearch od verze 8.0 zapíná zabezpečení automaticky při prvním spuštění.
Databáze se tedy obvykle otevře úmyslnou změnou, která měla být jen dočasná:
- někdo nastavil
bind-address = 0.0.0.0,listen_addresses = '*'nebobindIpAll, aby se vývojář mohl připojit z domova, - někdo vypnul chráněný režim nebo zabezpečení, „aby to fungovalo“,
- cloudová security group nebo pravidlo firewallu povoluje port z
0.0.0.0/0, - Docker s
-p 6379:6379publikuje port na všech rozhraních hostitele, - starý testovací nebo staging server s vlastní databází nikdo nevypnul.
Dokumentace Redisu o riziku mluví otevřeně: Redis je navržený pro důvěryhodné klienty v důvěryhodném prostředí a otevřená instance může jediným příkazem FLUSHALL přijít o všechna data.
Jak to zkontrolovat zvenčí
Kontrolu musíte spustit mimo vaši síť, jinak otestujete jen přístup zevnitř. Použijte počítač na jiném připojení (cloudový virtuální server, hotspot z telefonu) a testujte jen IP adresy, které vlastníte:
for port in 3306 5432 27017 6379 9200 9300; do
nc -z -w 3 203.0.113.10 $port && echo "$port open" || echo "$port closed"
done
Přímo na serveru zjistíte, na jakých adresách jednotlivé služby naslouchají:
sudo ss -tlnp | grep -E ':(3306|5432|27017|6379|9200|9300)\b'
Chcete vidět 127.0.0.1:5432 nebo privátní adresu. 0.0.0.0:5432 nebo [::]:5432 znamená, že služba naslouchá na všech rozhraních a mezi ní a internetem stojí už jen firewall.
Internetové skenery navíc evidují otevřené porty u každé veřejné IP adresy. Co mají zaznamenáno k některé z vašich adres, rychle zjistíte ve vyhledávání Shodanu na https://internetdb.shodan.io/<your-ip>.
Jak port správně uzavřít
Použijte 2 vrstvy, aby databázi znovu neotevřela jediná chyba:
- Naslouchání jen na privátním rozhraní.
bind-address = 127.0.0.1(MySQL),listen_addresses = 'localhost'nebo privátní IP (PostgreSQL),net.bindIp(MongoDB),bind 127.0.0.1sprotected-mode yes(Redis),network.hostna privátní adrese (Elasticsearch). - Omezení na úrovni sítě. Firewall nebo cloudová security group smí databázový port povolit jen z vašich aplikačních serverů.
- Vzdálený přístup přes tunel. Vývojáři se připojují přes SSH tunel nebo VPN, nikdy přes otevřený port.
- Ověřování všude, i ve vnitřních sítích: uživatelé jen s nezbytnými oprávněními, dlouhá hesla a TLS pro spojení, která vedou mimo daný server.
- Aktuální software, aby za omylem otevřeným portem neběžela verze se známými zranitelnostmi.
Pokud byla databáze otevřená se slabým ověřováním nebo úplně bez něj, počítejte s tím, že data mohl někdo zkopírovat: změňte přístupové údaje, projděte logy a posuďte své povinnosti hlásit incident.
Krátký kontrolní seznam
- Sepište všechny veřejné IP adresy, které vaše firma používá, včetně starých serverů.
- Otestujte běžné databázové porty zvenčí.
- Ujistěte se, že každá databáze naslouchá jen na localhostu nebo privátní adrese.
- Ve firewallu povolte databázové porty jen z aplikačních serverů.
- Kontrolu zopakujte po každé migraci, novém serveru nebo změně v Dockeru.
Otevřené služby se málokdy vyskytují osamoceně. Často běží na stejných zapomenutých staging serverech, ze kterých unikají i soubory .env a zálohy.
Jak pomáhá Datahorses
Datahorses hlídá vaši firmu zvenčí každý den a ukazuje, které služby útočník na vašich veřejných adresách vidí: databázové porty, vzdálený přístup jako RDP nebo SSH i známé zranitelnosti verzí, které tyto služby prozrazují. Do vašich systémů nevstupujeme a žádné přístupy nepotřebujeme. Každé zjištění přichází s přesným postupem pro vašeho vývojáře, jak popisujeme v části co se stane, když něco najdeme. Jak takový report vypadá, ukazuje ukázkový dashboard.
Další články
Monitoring útočné plochy vs. EDR a XDR: doplněk, ne konkurence
EDR a XDR se dívají dovnitř: na zařízení, přihlášení a procesy. Monitoring vnější útočné plochy se na firmu dívá z internetu. Proč potřebujete oba pohledy.
Požadavky Gmailu a Yahoo na odesílatele: co se změnilo v roce 2024 a co zkontrolovat
Od února 2024 chtějí Gmail a Yahoo po hromadných odesílatelích ověřenou a zarovnanou poštu a snadné odhlášení. Co pravidla říkají a jak zkontrolovat vlastní doménu.
PHP2Shell: které verze PHP jsou opravené a jak ověřit tu svou
Projekt PHP 21. října 2026 opravil 2 kritické chyby. Přinášíme přehled verzí s opravou, návod, jak zjistit, co hlásí váš server, a otázky pro poskytovatele hostingu.