LAMP Endurecimento, proxy transparente com iptables

2

Estou executando um servidor LAMP com FTP (S) e vários usuários. Os usuários têm acesso apenas ao upload de arquivos PHP e outros conteúdos da web. Alguns estão executando Drupal e Wordpress, mas também algumas coisas feitas em casa. Eu já desabilitei todas as tentativas de acesso ao shell do php. Mas, a fim de me proteger completamente, meu servidor e meus usuários de tempo de inatividade, script kiddies e outras coisas desagradáveis que eu quero impedir RFI . Na verdade, não quero permitir que nenhum tráfego (TCP e UDP) saia do servidor e não permita. Para esta tarefa eu quero fazer um proxy transparente que recupere todos os pacotes antes que eles sejam enviados, tomando decisões se os pacotes devem ser permitidos ou não. Eu quero usar o Python para a tarefa de tomar as decisões, pois é fácil buscar URLs permitidas a partir do banco de dados local. Como se eu quisesse permitir certas fontes da API / OAuth.

Como eu configuro o iptables para enviar todos os dados (incluindo ip e porta de destino) para o meu aplicativo python? Ou há alguma maneira melhor de fazer isso?

Meu pensamento é que, se eu puder desativar o acesso ao shell e o tráfego de rede não autorizado, poderei dormir à noite. Então ninguém pode usar meu servidor como um bot em uma botnet. E eles não podem enviar spam por email. O que você acha?

Eu não quero depender do Suhosin, já que estou usando o PHP 5.4 e posterior.

    
por Markus 06.08.2013 / 20:01

1 resposta

0

No que diz respeito ao iptables:

## default policy for OUTPUT
iptables -P OUTPUT DROP

## allow related/established traffic, e.g. for incoming connections
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

## whitelist some APIs (here 10.0.0.1)
## or package repositories, or your DNS (here 8.8.8.8), ...
iptables -A OUTPUT -p udp --dport 53 -d 8.8.8.8 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -d 8.8.8.8 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -d 10.0.0.1 -j ACCEPT

## other TCP packages go to your script (probably not needed anyway)
iptables -t nat -A OUTPUT -p tcp -j DNAT --to-destination 127.0.0.1:8001

Você também pode dar uma olhada no apparmor para filtrar o tráfego de saída do PHP em vez de escrever um script de proxy você mesmo.

    
por 20.08.2014 / 10:18