Datahorses

Otevřené databázové porty: MySQL, PostgreSQL, MongoDB, Redis a Elasticsearch

Autor: · · 3 min čtení

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ů:

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:

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 = '*' nebo bindIpAll, 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:6379 publikuje 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:

  1. 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.1 s protected-mode yes (Redis), network.host na privátní adrese (Elasticsearch).
  2. Omezení na úrovni sítě. Firewall nebo cloudová security group smí databázový port povolit jen z vašich aplikačních serverů.
  3. 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.
  4. 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.
  5. 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

Všechny články