Пришёл новый проект, начал вникать в имеющийся сетап, и… Просто ах!.. Удивляюсь.
По порядку.
Data Science проект, пачка MariaDB серверов, 11 штук, проверяю их. На каждом – от десяти до полутора сотен баз данных.
Заодно – включаю general log
, но на одном из серверов – вдруг нет баз вообще, кроме базы со странным именем PLEASE_READ
:
[simterm]
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | PLEASE_READ | | information_schema | | mysql | +--------------------+
[/simterm]
В базе – одна таблица – WARNING
:
[simterm]
MariaDB [(none)]> use PLEASE_READ; Database changed MariaDB [PLEASE_READ]> show tables; +-----------------------+ | Tables_in_PLEASE_READ | +-----------------------+ | WARNING | +-----------------------+
[/simterm]
Интересно… Может – какое-то предупреждение о специфике сервера/БД от предыдущих админов/девопсов/девелоперов?
Читаем её:
[simterm]
MariaDB [PLEASE_READ]> select * from WARNING; +----+-----------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+-------------------------+ | id | warning | Bitcoin_Address | Email | +----+-----------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+-------------------------+ | 1 | Send 0.5 BTC to this address and go to this site http://es7ocnlet5vyulh5.onion/ to recover your database! SQL dump will be available after payment! | 14UhC8s4hUUCmwT31RqVbDB7dgoBxT4oXg | [email protected] | +----+-----------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------+-------------------------+
[/simterm]
По указанному ящику “[email protected]” нагуглился такой вот пост:
https://www.guardicore.com/2017/02/0-2-btc-strikes-back-now-attacking-mysql-databases/
Но дальше – ещё веселее!
Оказалось, что:
- MySQL
root
без пароля root
имел права подключения с любого хоста –'root'@'%'
- Все EC2 инстансы в AWS имели Public (external) IP
- единая Security Group для всех серверов баз данных в AWS имела два правила – доступ к портам 22 и 3306, с доступом из сети 0.0.0.0…
[simterm]
MariaDB [mysql]> select host,password from user where user = 'root'; +-----------------------------+-----------+ | host | password | +-----------------------------+-----------+ | localhost | | | hostname.domain.com | | | 127.0.0.1 | | | % | | +-----------------------------+-----------+
[/simterm]
И доступ – абсолютно с любого хоста в Интернете:
[simterm]
$ mysql -u root -h 52.***.***.37 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 55560 Server version: 10.1.17-MariaDB-1~xenial mariadb.org binary distribution Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
[/simterm]
Ещё раз:
В результате – 4 из 11 серверов MariaDB – всё базы удалены.
На остальных – root
имел права доступа только с localhost
, это их и спасло.
Пожалуйста – не будьте как Петя…
На одном из затёртых серверов – успел увидеть попытку подключения до того, как сервера отключил от сети вообще:
[simterm]
... 43293 Connect Access denied for user 'root'@'182.255.63.166' (using password: NO)
[/simterm]
Китай, хоть это ни о чём и не говорит:
[simterm]
irt: IRT-CYHADCL-CN address: UNIT 04,7/F,BRIGHT WAY TOWER,NO. 33 MONG KOK ROAD,KOWLOON, hong kong hong kong e-mail: [email protected] abuse-mailbox: [email protected] admin-c: KHNT2-AP tech-c: KHNT2-AP auth: # Filtered mnt-by: MAINT-CYHADCL-CN
[/simterm]
Такой вот день был вчера.