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

0

Como posso usar o Parallels Virtuozzo utilitário de firewall ( chamado psa-firewallsob o capô, aparentemente, realmente psa-firewallparece ser uma interface Plesk separado - de qualquer forma, é basicamente uma interface de usuário para gerenciamento de iptables limitada) para VPSs para configurar uma regra simples que nega o acesso a uma porta para todas as conexões diferentes de determinados endereços IP?


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, pelo endereço IP xx.xx.xx.xx e pela porta 22, depois por 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 dela seria atingida.

Mas não funcionou assim . No início, funcionou exatamente como planejado, mas ~ 20 minutos depois eu estava me vendo excluído do SSH e a única maneira de poder voltar era excluir a regra Rejeitar e adicionar uma regra (Permitir tudo à porta 22) (redundante) para o topo da lista.

Com mais testes, parece que a ordem das regras na interface do usuário do Firewall VZ não determina a ordem na configuração resultante. Por exemplo, estou descobrindo que ter uma regra Permitir Todos aos 22 no topo da lista e Rejeitar Tudo a 22 na parte inferior parece bloquear todas as conexões, assim como acontece exatamente o mesmo 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 tudo sempre supera qualquer regra de aceitação, independentemente da posição da lista ou da ordem em que são adicionadas.

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 eu quero que os administradores possam atualizar as regras e adicionar endereços IP na lista de permissões sem o risco de que permaneçam bloqueados permanentemente. É útil poder administrar o acesso SSH usando uma ferramenta que não depende de si mesmo e requer acesso SSH.


ps É muito difícil encontrar informações de qualidade sobre o utilitário de firewall VZ. Em todos os lugares que eu olho, me leva 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.

user568458
fonte
Se esta é uma questão serverfault.com sinta-se livre para migrá-lo, mas a impressão que tenho é que esses caras chamam qualquer dúvida sobre qualquer coisa com uma interface do usuário.
user568458

Respostas:

0

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

  • Em 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 (mais 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 ser capaz de se comportar 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.

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


Edit: Isso claramente não é tudo que existe para ele ... De repente, o utilitário de firewall VZ começou a não ter nenhum efeito sobre as regras subjacentes do iptables , e usando iptables -n -L INPUT|grep dpt:22para listar todas as regras do iptables que especificam o port dport 22, vejo lotes de antigas regras de lixo eletrônico que foram removidas e que não são removidas na reinicialização, mesmo após a limpeza do iptables e a reinicialização do serviço. A leitura do http://www.webhostingtalk.com/showthread.php?t=1166215 sugere que o firewall VZ também tem 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 para acessar este banco de dados.

Edit 2: Parece que algo causou que o iptables e o firewall Virtuozzo iniciassem simplesmente a leitura do arquivo, em /etc/sysconfig/iptablesvez de regenerá-lo corretamente. A solução que encontrei para isso foi essencialmente, renomear os arquivos /etc/sysconfig/iptablese /etc/sysconfig/iptables.savebackups, usar o VZ Firewall Setup para redefinir os firewalls completamente, o que gerava iptablesarquivos vazios , depois reiniciei o serviço iptables - depois de fazer tudo isso, configurações no firewall VZ utilidade começou a ter seus efeitos previstos.

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

user568458
fonte