2017-01-19 2 views
0

Я только что недавно играл с MongoDB на одном из моих серверов Dev, не делая ничего слишком серьезного и, несмотря на то, что лучше знаю, я разрешил удаленные подключения с любого IP-адреса. Через несколько дней база данных была «взломана» с попыткой выкупа. Я пожал плечами и решил пойти дальше и привязать IP к моему персональному публичному IP и локальному серверу, думая, что он отключит нарушение.Доступ к MongoDB несанкционированному IP

Nope. База данных снова была скомпрометирована, поэтому я решил взглянуть на журнал, и это ясно, поскольку день показывает, что соединение было завершено с IP-адреса, который не был включен в мою конфигурацию. Как это могло произойти?

Кроме того, я выполнил service mongodb restart после внесения изменений ipbind.

Вот интерфейс раздела сети моей конфигурации

# network interfaces 
net: 
    port: 27017 
    bindIp: [127.0.0.1,90.207.xxx.xxx,76.94.xxx.xxx,23.23.xxx.xxx] 
+1

Задайте этот вопрос на http://security.stackexchange.com/, вы можете найти ответы –

+1

Doh! Хороший момент, извините. –

+0

вы можете разрешить доступ только к этим ограниченным IP-серверам с вашей базы данных. Я думаю, вы могли бы установить их в 0.0.0.0 прямо сейчас. –

ответ

0

bindIp setting - это список IP-адресов вашего сервера MongoDB прослушивает, а не брандмауэр для ограничения удаленного доступа. Если ваш сервер имеет закрытый и общедоступный IP-адрес, список bindIp должен содержать не более трех записей: 127.0.0.1 (localhost), частный IP-адрес и общедоступный IP-адрес.

В идеале вы должны ограничить развертывание MongoDB только для прослушивания локального хоста или частного IP-адреса и удаленного подключения через SSH или VPN.

Глубокая охрана требует нескольких мер, как указано в MongoDB security checklist.

Например, в дополнение к коррекции вашего bindIp установки вы должны:

+0

Я закончил, просто следуя контрольным перечням безопасности, и с тех пор у меня не было проблем. Отметьте это как правильный ответ. –

0

попробовать

netstat -tulpn | grep mongod 

тогда вы узнаете, на котором IP-адреса служба Монго является переплетена ...

0

I нашел проблему. [xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx] не должен быть правильным синтаксисом для привязки IP-адресов. Для тестирования я изменил IP привязку назад

# network interfaces 
net: 
    port: 27017 
    bindIp: 127.0.0.1 

Что же Infact блокировать попытки мое соединение, так что я тогда попытался

# network interfaces 
net: 
    port: 27017 
    bindIp: [127.0.0.1,1.1.1.1] 

который является явно неправильно IP и это позволяло мне не подключать без всяких вопросов. Я скопировал этот синтаксис с предыдущего вопроса о стеке. Теперь мне просто нужно найти подходящий способ сделать это.

+0

Неверный. Дело не в том, чтобы найти подходящий способ сделать это. bindIp не является межсетевым экраном. Он определяет только список IP-адресов, к которым привязывается mongodb. Вы можете поместить только IP-адреса машины M, в которой в настоящее время размещен сервер mongodb. Чтобы разрешить удаленный доступ, вы включили бы общедоступный IP-адрес M. Чтобы разрешить подключения к локальной сети, вы должны поместить локальный частный IP-адрес M и, наконец, разрешить только соединения с того же компьютера, на котором в настоящее время находится сервер mongodb, вы должны написать 127.0. 0.1 (будьте осторожны, что синтаксис для нескольких IP-адресов меняется). – valenz