Когато става въпрос за управление на системи от бази данни, един от решаващите аспекти е сигурността на базата данни. Неуспехът да се положи добра основа за сигурност за която и да е система от база данни може да доведе до пробив на данни, при което натрапник от трета страна ще има неоторизиран достъп до тях. Следователно събития като това могат да доведат до увреждане на репутацията на марката, глоби и санкции за неспазване, компрометиране на интелектуална собственост или дори до закриване на бизнеса.
MongoDB – най-популярната NoSQL база данни – предоставя набор от инструменти, контроли и мерки, формулирани, за да осигурят основа за трите стълба на информационната сигурност – поверителността, целостта и наличността. Сигурността на данните най-често е компрометирана на ниво поверителност поради по-голяма използваемост и достъп.
Какви типове данни трябва да защитавате
Както други бази данни, MongoDB включва два типа данни:
- Данни в покой — Това са данни, съхранявани на диска на файловата система.
- Транзитни данни — Това включва преместване на данни през мрежа, например между базата данни и приложение.
За да защитите вашите данни във всяка база данни, вашите мерки за сигурност трябва да са насочени към:
- Данни във файловете на базата данни.
- Приложения, свързани с базата данни.
- Изчислителната и мрежовата инфраструктура, използвани за достъп до базата данни.
- Физическият сървър на база данни и основният хардуер.
Контролен списък за сигурност на MongoDB
Преди да настроите своето производствено внедряване на MongoDB, има минимален стандарт за сигурност, който трябва да имате предвид, за да гарантирате, че внедряването ви ще бъде сигурно. Вижте следния контролен списък за сигурност на MongoDB за
-
Посочете механизма за удостоверяване, като активирате контрола на достъпа . Преди да разрешите достъп до базата данни, е важно да проверите самоличността на потребителя. MongoDB поддържа два механизма в този случай:първият е Salted Challenge Response Authentication Mechanism (SCRAM), който е механизмът за удостоверяване по подразбиране в MongoDB. Той проверява предоставените идентификационни данни (потребителско име и парола) спрямо базата данни за удостоверяване, а удостоверяването на сертификата X.509 се използва както за удостоверяване на клиента, така и за вътрешно удостоверяване на членове на набор от реплики и разчленени клъстери.
-
Установете базиран на роли контрол на достъпа . Всяко приложение или лице с достъп до базата данни трябва да има уникална самоличност, създадена от администратора на потребителя. Дефинирайте роли с точни права за достъп и ги присвоете на потребители, които трябва да изпълняват операциите.
-
Комуникацията между mongod, mongos, приложения и MongoDB трябва да бъде криптирана . Шифроването се постига чрез TLS/SSL конфигурация.
-
Защита на данните . Ако използвате механизма за съхранение на WiredTiger за данни в покой, можете да шифровате данните с помощта на криптиране в покой. Ако използвате различен механизъм за съхранение, шифровайте данните с помощта на файловата система, физическото криптиране или криптирането на устройството и добавете разрешенията за файловата система. Освен това можете да шифровате полета в документи с криптирането на ниво клиентско поле, преди да предадете данни от сървъра.
-
Сигурна мрежа за работа . MongoDB трябва да работи в надеждна мрежова среда, така че само доверени клиенти да имат достъп до мрежовия интерфейс и портове. Можете да постигнете това, като деактивирате директния SSH root достъп и конфигурирате настройката с групи за защита за входящ и изходящ трафик към екземплярите на MongoDB.
-
Дейности на системата за одит . Проследяването на дейностите за достъп на потребителите до базата данни е много важно. Одитът позволява на администраторите да упражняват подходящ контрол и да позволяват правилен криминалистичен анализ. Някои средства за одит като MongoDB Enterprise предоставят филтри за конкретни събития, като например събития за удостоверяване, за да намалят данните, които трябва да бъдат анализирани.
-
Активиране на опциите за защитена конфигурация при стартиране на MongoDB . Препоръчително е да ограничите използването на JavaScript код, поддържан от MongoDB, като mapReduce, $where и $function. Можете напълно да деактивирате тези опции, като използвате опцията --noscripting. Проверете полетата за въвеждане с помощта на модули като mongoose. Освен това можете да използвате net.writeObjectCheck, за да се уверите, че всички документи, съхранявани от екземпляра mongod, са валидни BSON.
-
Изпълнете MongoDB със специален потребител . Не си струва да стартирате MongoDB на операционна система, която може да бъде достъпна от множество потребители. За да бъдете в безопасност, MongoDB трябва да се управлява от специален системен потребителски акаунт, който има разрешения за достъп до данни, но не и ненужни разрешения, които могат да компрометират целостта на данните.
Лоши практики за сигурност на MongoDB, които трябва да се избягват
Напоследък се наблюдава увеличение на инцидентите с хакване на бази данни, особено на MongoDB. Това не е така, защото MongoDB не отговаря на стандартите за справяне с опасенията за сигурността, а по-скоро поради провала на разработчиците да следват най-добрите практики за сигурност.
MongoDB е СУБД с отворен код, което означава, че някои разработчици може да знаят подробностите повече от други. Това не винаги означава, че вашата база данни е изложена на риск от външно проникване, освен ако не попаднете в някоя от следните грешки:
-
Използване на портовете по подразбиране . Няма нищо лошо в използването на портовете по подразбиране (27017 и 27018), но понякога може да забравите да зададете групите за сигурност, отговорни за управлението на трафика във вашата система. Хакерите винаги ще се опитват първо да получат достъп до базата данни с портове по подразбиране, преди да опитат нещо друго. Можете да стартирате MongoDB на различен порт с опцията за порт, т.е. $mongo –port 23456. Препоръчителният начин обаче е да промените конфигурацията във файла /etc/mongod.conf, като редактирате реда по-долу с предпочитания от вас номер на порт:
net: port:27017
MongoDB по подразбиране работи без удостоверяване, което често е било проблем за новите внедрявания, които влизат в производството. Неуспешното активиране на удостоверяване означава, че всеки може да има достъп до базата данни с лекота. Винаги създавайте потребител с разрешения за достъп, базирани на роли, за да взаимодействате с базата данни MongoDB. -
Неправилно съхранение на потребителски идентификационни данни . Някои разработчици кодират твърдо идентификационните данни за потребителско име и парола в проекта и когато ги направят публични, всеки може да има достъп до тях, което прави базата данни уязвима.
-
Неуспешно ограничаване на достъпа до база данни до известни мрежови устройства . В този случай човек винаги трябва да ограничава достъпа до база данни само до познати приложения и балансьори на натоварване чрез бял списък. Това ограничава достъпността на базата данни до неизвестни мрежи, които биха могли да представляват заплаха за сигурността.
-
Избягване на използването на SSL . SSL удостоверяването е много важно, за да се гарантира, че само доверени връзки стигат до базата данни.
-
Неуспешно използване на LDAP за ротация на пароли . LDAP свързва потребителите с корпоративна директория, така че когато ролята им се промени или те напуснат компанията, промените автоматично се прилагат към групата на базата данни. Това гарантира, че достъпът им до данни ще бъде ограничен до ролята, на която са били преназначени, или напълно ограничен, ако напуснат компанията.
Укрепване на мрежовата инфраструктура
Много пъти заплахите за сигурността започват от нивото на излагане на мрежата, защото това е най-лесно достъпната част за повечето хакери. Освен че гарантирате, че само доверени хостове имат достъп до MongoDB, можете да подобрите сигурността чрез втвърдяване на мрежата. Укрепването на мрежата включва две процедури по отношение на MongoDB:
-
Защитни стени . Защитните стени се използват за ограничаване на входящия трафик от недоверени хостове, които иначе биха изложили базата данни MongoDB на външно проникване. За операционни системи Windows интерфейсът на командния ред netsh осигурява достъп до защитната стена на Windows. В Linux системите интерфейсът iptables осигурява достъп до основната защитна стена на netfilter. Защитната стена ще филтрира ненадеждни хостове и ще гарантира, че само трафикът от доверени източници може да достигне до mongod &mongos, освен да създаде връзка с доверените изходи.
-
Виртуални частни мрежи (VPN) . VPN мрежите позволяват на две мрежи да се свързват през криптирана надеждна мрежа с ограничен достъп. Те правят това, като осигуряват валидиране на сертификат и избор на протоколи за криптиране, които може да изискват строго ниво на удостоверяване и идентификация на всички клиенти. VPN осигуряват защитен тунел; следователно връзките, създадени към екземпляра на MongoDB с помощта на VPN, могат да предотвратят подправяне и атаки „човек в средата“.
Приключване
Както при всички бази данни с отворен код, сигурността трябва да бъде основен приоритет за вашата MongoDB инфраструктура. Разгръщането на вашата база данни MongoDB с настройки по подразбиране е ясен път към катастрофа в сигурността. Ето защо е изключително важно да разберете напълно как работи сигурността в MongoDB и да следвате всички най-добри практики, за да осигурите максимална сигурност. Най-важното е, че одитирането на потребителски дейности, като удостоверяване, предоставя прозорец за идентифициране на вратички и планиране за бъдещето, преди да настъпи бедствие.
Инструменти като ClusterControl ви помагат да премахнете догадките от сигурността на базата данни и да гарантирате, че внедряванията ви на MongoDB винаги ще следват съответния модел на защита. С ClusterControl можете лесно да конфигурирате вашите бази данни, контроли за достъп и криптиране за данни в състояние на покой и по време на пренос. Ако все още не сте го направили, изтеглете ClusterControl днес и започнете безплатната си 30-дневна пробна версия, за да видите как ClusterControl може да ви помогне да управлявате и подобрите сигурността на вашата база данни MongoDB.