Existe um servidor sem qualquer defesa do iptables :ACCEPT all..
Pode haver aplicativos personalizados neste servidor.
Se precisarmos proteger esse servidor (negar tudo e deixar apenas o que é necessário pelos aplicativos) com regras estritas do iptables, teremos que descobrir manualmente qual aplicativo usa qual dst/src
port/protocol
e depois temos que escrever as regras do iptables para eles..
A pergunta : existem scripts que podem ajudar a coletar essas informações de uma máquina em execução? (dos logs?) - E gerando automaticamente as regras do iptables?
Como se estivesse audit2allow
ligado SELinux
. Apenas por iptables
!
A máquina não pode ter nenhuma interrupção!
Ex .: o script "MAGIC" deve rodar uma semana / mês na máquina, coletando informações e, depois de uma semana / mês, o script poderá produzir um arquivo de regras do iptables que podemos usar.
Muitas pessoas podem entrar nessa situação (como proteger um servidor em relação ao iptables). E seria ótimo se houvesse um script / solução que possa fazer isso: \
Respostas:
Faça manualmente
ou
Explicação:
fonte
Funcione
tcpdump
na máquina por uma semana ou mais para capturar o tráfego médio. Em seguida, você pode navegar no tráfego usando o wireshark posteriormente para ver quais portas estão sendo usadas.O comando para isso seria
tcpdump -i <interface> -s 65535 -w <some-file>
Você pode mapear isso de volta usando
netstat -tuanp
para ver quais PIDs / aplicativos estão usando quais portas.Teoricamente, isso poderia ser roteirizado.
fonte
Você pode começar com um modelo muito básico, como https://gist.github.com/jirutka/3742890 , que permite apenas ssh e ping, e adicionar qualquer outra coisa manualmente.
um script rápido para gerar regras do iptables para seu aplicativo escutando na interface pública (0.0.0.0) / tcp
você também pode usar o
iptables -I INPUT <number>
para injetar as regras em um local específico, que você pode listar comiptables -nvL --line-numbers INPUT
fonte
Infelizmente, não existe um script que eu já tenha visto que possa ser executado no modo de aprendizado ou no modo passivo registrando todo o uso da rede, obtendo seus resultados e gerando um firewall real usando
iptables
seus logs.Sua melhor aposta será começar de maneira simples e continuar adicionando várias peças à medida que você começa a entender completamente quais serviços seu sistema está fornecendo. Você precisará usar ferramentas como
netstat
para ver quais portas estão em uso para os vários serviços que você hospeda, bem como quais endereços IP estão acessando.NOTA: No exemplo acima, você pode ver quais serviços eu tenho executando em um servidor que está aceitando conexões TCP, ou seja, eles estão "ouvindo" conexões em várias portas.
É muito fácil começar com coisas como SSH (porta 22) e HTTP (porta 80), se forem típicas do seu sistema, então eu faria esses tipos de serviços em massa de uma só vez. Para outros serviços, como LDAP ou NIS, você pode executá-los de maneira mais controlada, certificando-se de que as coisas não quebrem ao apresentá-los.
Ferramentas como FireHOL , Firewall Builder (fwbuilder) e eztables podem ser úteis ao atacar este projeto, pois fornecem uma boa camada de abstração por ter que criar
FireHOLiptable
regras personalizadas manualmente, o que pode ser complicado.exemplo
fwbuilderexemplo
Usando Fail2Ban
Com um
excertoiptables
firewall rudimentar instalado, você provavelmente desejará complementá-lo usando uma ferramenta como o Fail2Ban .O uso de ferramentas como essa ajudará a limitar a exposição que seu sistema terá de suportar à medida que você continuar a fortalecê-lo. Mesmo depois de estar convencido de que seu sistema foi reforçado, você ainda pode continuar usando o Fail2Ban como parte de suas medidas de segurança.
Referências
fonte
Use as regras do iptable para registrar as novas conexões, que também registrarão o udp.
Você pode especificar diferente
--log-level
para ter os logs em outro arquivo além de / var / log / messages (você precisará configurar o daemon syslog).Eu acho que você deve ler os logs principais do aplicativo, pois alguns servidores têm uma atividade muito periódica, como meio-dia, fim de semana, fim de mês (trimestre, ano), para que você não perca uma importante atividade de rede do servidor.
Como o servidor é crítico, torna a matriz de fluxo de rede do servidor em uma boa planilha (origem IP, destino IP, protocolo, porta, aplicativo) que o ajudará a criar as regras.
fonte
Eu sei que isso não é um script e não é uma resposta para a pergunta do OP, mas é uma ideia minha que eu quero compartilhar com o OP.
Eu tenho todas as portas de escuta com:
Talvez isso possa te ajudar a escrever seu próprio script. :)
fonte
Você pode começar com algo assim:
e depois siga com
ou
O que a primeira linha faz é usar o netstat para listar os processos de atendimento e suas portas. Em seguida, ele gera linhas "iptables" para permitir cada uma dessas conexões de entrada. A pequena substituição do regex sed foi personalizada para a saída netstat no meu servidor, por isso pode exigir alguns ajustes para você. Quando funciona, você deve terminar com algo parecido com:
Duas coisas importantes a serem observadas:
1) Essas regras não fazem nada para você até você colocar uma linha DROP ou REJECT no final ou tornar essa a política padrão para pacotes incomparáveis. Essas regras permitem pacotes, o que é discutível, se a política padrão permitir algo que não corresponda.
2) Essas regras são ambivalentes sobre o IP de origem . A partir do seu post original, parece que você deseja permitir que todos os seus clientes para usar o servidor, então, examinar os logs para obter fonte IP de ir com os portos de destino. Como não conheço uma ferramenta para fazer isso, esse script só impedirá as pessoas de criar novos serviços no servidor que escutam em outras portas ... o que é algo .
fonte