Como permitir o acesso apenas a IPs específicos com o firewall integrado do Parallels VZ?

0

Como posso usar o utilitário de firewall interno do Parallels Virtuozzo ( chamado psa-firewall aparentemente na verdade psa-firewall parece ser uma interface separada do Plesk - de qualquer forma, é basicamente uma interface do usuário para gerenciamento limitado de iptables) para os VPSs configurarem uma regra simples que nega acesso a uma porta para todas as conexões que não sejam certos endereços IP especificados?

Eu tive a idéia de que regras de firewall VZ - como as regras iptables que (acredito) são traduzidas - foram executadas em ordem, de cima para baixo, e que eu poderia bloquear todos os endereços IP especificados acessando minha porta ( neste caso, SSH na porta 22) por ter regras de permissão limitadas na lista, por endereço IP xx.xx.xx.xx e porta 22, então uma regra Rejeitar no final para qualquer endereço IP e porta 22.

A ideia era que, para solicitações dos endereços IP nomeados, a regra Permitir seria atingida, portanto, a regra de rejeição nunca seria alcançada. Para todo o resto, a regra Permitir seria ignorada, e a regra de rejeição abaixo seria alcançada.

Mas não funcionou assim . No início, funcionou exatamente como planejado, mas ~ 20 minutos depois eu estava me achando excluído do SSH e a única maneira de poder voltar era apagando a regra de Rejeição e adicionando uma (redundante ) Permitir que todos portem a regra 22 para o topo da lista.

Com mais testes, parece que a ordem das regras na UI do firewall do VZ não não determina a ordem na configuração resultante. por exemplo. Estou descobrindo que ter uma regra Permitir Tudo para 22 no topo da lista e Rejeitar Tudo para 22 na parte inferior parece bloquear todas as conexões, assim como acontece exatamente com a ordem invertida.

Eu tinha uma teoria de que o utilitário anexa regras recém-ativadas à lista, mas parece que ter uma regra de rejeitar todos sempre prevalece sobre qualquer regra de aceitação, independentemente da posição da lista ou da ordem em que são adicionados.

Não consigo descobrir o padrão e não consigo encontrar recursos relevantes nesse utilitário que o expliquem. Eu também não consigo encontrar outras abordagens.

O motivo pelo qual estou usando o utilitário de firewall VZ, em vez de usar apenas o iptables diretamente , é que quero que os administradores atualizem as regras e adicionem endereços IP na lista de permissões sem qualquer perigo permanentemente bloqueando-se. É útil poder administrar o acesso SSH usando uma ferramenta que não depende de si mesmo e que requer acesso SSH.

p.s. É muito difícil encontrar informações de qualidade sobre o utilitário de firewall VZ. Onde quer que eu olhe, leva-me a recursos de estilo lamentavelmente incompletos, ou a informações sobre a configuração direta do iptables. Não consigo encontrar nada sobre como as configurações da interface do usuário são interpretadas nos bastidores ou como elas se relacionam com as configurações existentes do iptables. Quaisquer indicações gerais sobre informações detalhadas de qualidade sobre o que está acontecendo nos bastidores do utilitário de firewall VZ também serão apreciadas.

    
por user568458 07.04.2013 / 19:27

1 resposta

0

Esta é simplesmente a minha melhor teoria longe de testar. Parece que:

  • Nas alterações, o utilitário de firewall VZ executa uma pesquisa pela regra existente, remove-a e adiciona uma nova regra, em vez de redefinir as regras. Parece que isso pode não ser 100% confiável e que é possível editar regras e acabar com uma 'regra fantasma' que permanece até que o IPtables seja redefinido.
  • Parece que o utilitário libera e executa periodicamente as regras (além de qualquer código em / etc / firewall / include).
  • Parece que as regras configuradas usando a interface do usuário do utilitário estão incluídas na ordem e se comportam como eu esperava - a menos que haja uma dessas "regras fantasmas" nos bastidores.

Se isso for verdade, se alguém se encontrar na situação em que eu estava, você deve conseguir que o firewall do VZ se comporte racionalmente novamente usando o VZ para reiniciar o 'serviço' do iptables em 'Serviços do sistema' . Adicione uma regra de permissão temprorary ao topo da cadeia se ela disser que não é capaz de reiniciar o serviço.

( seja cauteloso de usar iptables -F para liberar as regras do iptables, pois isso libera tudo, incluindo as regras que concedem acesso apropriado aos utilitários VZ. A ferramenta de reinicialização do sistema atualiza o iptables com tudo, incluindo o VZ configuração sob o capô, a configuração do seu host, regras configuradas no utilitário e regras personalizadas em /etc/firewall/include . iptables -F não. Se estiver configurado para rejeitar ou descartar por padrão, você pode se bloquear completamente)

Editar: Isso claramente não é tudo o que existe ... De repente, o utilitário de firewall VZ começou a não ter nenhum efeito nas regras subjacentes do iptables e usando iptables -n -L INPUT|grep dpt:22 para listar todas as regras do iptables que especificam o port dport 22, vejo muitas regras de lixo antigas que foram removidas e que não são removidas na reinicialização, mesmo após a limpeza do iptables e reinicialização do serviço. A leitura do link sugere que o firewall VZ também possui um banco de dados de regras que podem ficar fora de sincronia com o código e a interface do usuário ... mas não oferece nenhuma pista sobre como acessar esse banco de dados.

Editar 2: Parece que algo causou que o iptables e o firewall Virtuozzo iniciassem simplesmente a leitura do arquivo /etc/sysconfig/iptables ao invés de regenerar corretamente. A correção que encontrei para isso foi essencialmente, renomear os arquivos /etc/sysconfig/iptables e /etc/sysconfig/iptables.save como backups, então usar o VZ Firewall Setup para redefinir os firewalls completamente, o que gerou arquivos iptables vazios, então reiniciei o serviço iptables - depois Fazendo tudo isso, as configurações no utilitário de firewall VZ começaram a ter seus efeitos previstos.

Curiosamente, depois de fazer o acima, as cadeias do iptables têm nomes como VZ_INPUT ao invés de INPUT, então para listar as regras do iptables para uma porta, eu preciso usar iptables -n -L|grep dpt:22 ou iptables -n -L VZ_INPUT|grep dpt:22 ao invés de iptables -n -L INPUT|grep dpt:22 . Ímpar.

Espero que, se alguém acabar preso a um mau serviço de firewall Virtuozzo, algo aqui ajude.

    
por 13.04.2013 / 22:23