Ograniczanie dostępu do MongoDB w środowisku chmury
Napisał: Patryk Krawaczyński
23/12/2013 w Administracja, Bezpieczeństwo Brak komentarzy. (artykuł nr 428, ilość słów: 273)
A
ktualnie baza MongoDB (v2.4.8) nie posiada możliwości ograniczenia dostępu do wybranych adresów IP na poziomie warstwy aplikacji. Mechanizmem, który można szybko do tego wykorzystać jest netfilter. Daje się on szybko dostosować szczególnie w środowisku wirtualizacji, w którym maszyna wirtualna posiada zmienny, wewnętrzny adres IP na interfejsie eth0
– a jej zewnętrzny adres przechodzi przez mechanizm NAT.
Jest wiele skryptów z udziałem iptables, które pobierają aktualny adres IP z interfejsu eth0
i stosują odpowiednie reguły – jednak najlepszym rozwiązaniem jest takie, które nie jest zależne od zmiennych warunków sieciowych – dlatego, jeśli nasza baza ma posiadać możliwość łączenia się sama do siebie przez interfejs eth0
blokując tym samym resztę (+ oprócz wybranych) zewnętrznych adresów IP wystarczy zastosować markowanie pakietów:
iptables -t mangle -A OUTPUT -p tcp --dport 27017 -j MARK --set-mark 12345 iptables -A INPUT -i eth0 -p tcp --dport 27017 -m mark --mark 0x3039 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 27017 -s 1.2.3.4/32 -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 27017 -s 0.0.0.0/0 -j REJECT
Pierwsza reguła markuje (dec) wszystkie lokalne pakiety wychodzące z naszej maszyny, których docelowym portem jest tcp 27017. Druga wpuszcza pakiety, które są oznaczone 12345 (tutaj hex). Trzecia zezwala na łączenie się innej zewnętrznej maszyny (może to być np. slave Mongo). Czwarta blokuje wszystkie inne adresy.
Więcej informacji: MongoDB Security Access Control