O ambiente em que estou operando é uma operação de hospedagem na web em larga escala (várias centenas de servidores sob gerenciamento, endereçamento quase público etc.); portanto, é improvável que tudo que fale sobre o gerenciamento de links ADSL funcione bem e nós ' estamos procurando algo que seja confortável para gerenciar o conjunto de regras principal (cerca de 12.000 entradas no iptables na contagem atual) e os conjuntos de regras baseados em host que gerenciamos para os clientes. Nosso conjunto de regras do roteador principal muda algumas vezes por dia e os conjuntos de regras baseados em host podem ser alterados talvez 50 vezes por mês (em todos os servidores, portanto, talvez uma alteração a cada cinco servidores por mês).
Atualmente, estamos usando o filtergen (que geralmente é bolas e super bolas na nossa escala de operação), e eu usei shorewall no passado em outros trabalhos (o que seria preferível ao filtergen, mas acho que é preciso ser algo melhor do que isso).
Os "mostos" que criamos para qualquer sistema de substituição são:
- É necessário gerar um conjunto de regras rapidamente (uma execução de filtro no nosso conjunto de regras leva de 15 a 20 minutos; isso é insano) - isso está relacionado ao próximo ponto:
- Deve gerar um arquivo de estilo iptables-restore e carregá-lo em uma ocorrência, não chamar iptables para cada inserção de regra
- Não é necessário desativar o firewall por um longo período enquanto o conjunto de regras é recarregado (novamente, isso é uma consequência do ponto acima)
- Deve suportar o IPv6 (não estamos implantando nada de novo que não seja compatível com IPv6)
- Deve ser livre de DFSG
- É necessário usar arquivos de configuração de texto sem formatação (já que executamos tudo por meio do controle de revisão e o uso de ferramentas padrão de manipulação de texto Unix é o nosso SOP)
- Deve suportar o RedHat e o Debian (preferencialmente empacotado, mas pelo menos não deve ser abertamente hostil aos padrões das duas distribuições)
- Deve suportar a capacidade de executar comandos arbitrários do iptables para suportar recursos que não fazem parte do "idioma nativo" do sistema
Qualquer coisa que não atenda a todos esses critérios não será considerada. A seguir estão os nossos "agradáveis":
- Deverá suportar "fragmentos" do arquivo de configuração (ou seja, você pode soltar uma pilha de arquivos em um diretório e dizer ao firewall "inclua tudo nesse diretório no conjunto de regras"; usamos extensivamente o gerenciamento de configuração e gostaria de usar esse recurso para fornecer regras específicas de serviço automaticamente)
- Deve suportar tabelas brutas
- Deve permitir que você especifique o ICMP específico nos pacotes recebidos e nas regras REJECT
- Deverá suportar graciosamente nomes de host que resolvam mais de um endereço IP (fomos pegos por esse algumas vezes com filtergen; é uma dor bastante real)
- Quanto mais recursos opcionais / estranhos do iptables forem suportados pela ferramenta (de forma nativa ou via plugins existentes ou de fácil gravação), melhor. Usamos recursos estranhos do iptables de vez em quando, e quanto mais aqueles que "simplesmente funcionam", melhor para todos.