Regras UFW para permitir um comportamento específico

1

Sou novo no UFW. Um dos nossos servidores foi comprometido e eu tive que imediatamente:

  • Negar todas as entradas.
  • Negar todo o envio.
  • Permitir todo o SSH.
  • Permitir DNS de saída.
  • Permitir que o Git clone, empurre, puxe, etc.
  • Permitir somente HTTP / S de entrada (80 e 8081, 443). Os HTTP / S de saída originados do servidor devem ser bloqueados.
  • Permitir que o MySQL se conecte apenas a 127.0.0.1 ou localhost e bloqueie todo o MySQL recebido.

Eu percebo que algumas dessas regras são estranhas, mas é o que me pediram para fazer. Eu percebi que não tenho certeza de como fazer algumas delas no UFW.

Veja o que eu tenho:

# Deny all outgoing.
ufw default deny incoming

# Deny all outgoing.
ufw default deny outgoing

# Allow outgoing DNS.
ufw allow out 53

# Allow SSH.
ufw allow 22

# Allow outbound Git (I need to be able to clone, pull, push, etc).
ufw allow out 9418/tcp

# Allow only incoming HTTP on port 80 and 8081 without outbound.
# Allow only incoming HTTPS on port 443 without outbound.
ufw allow in to any port 80 proto tcp

# Allow MySQL to connect to localhost only.
ufw allow from 127.0.0.1 to 127.0.0.1 port 3306 proto tcp

Depois de executar o acima, posso:

  1. use curl --request GET 'http://foo.bar' para enviar uma solicitação HTTP para outro site. Eu preciso negar solicitações HTTP que se originam de dentro do servidor.
  2. NÃO clone com o Git. Apenas trava.

Ainda não testei o MySQL, mas ele não deve se conectar a nada, exceto 127.0.0.1 e localhost .

O que preciso mudar para que ela se comporte como eu quero?

    
por Housni 29.01.2016 / 18:56

1 resposta

1

Você precisa permitir a entrada das portas que você abriu, não apenas de saída. Caso contrário, o servidor de destino não poderá enviar uma resposta. Se você notar, seu ssh funciona porque você está permitindo entrada e saída. O GIT não funciona porque você está bloqueando a resposta do servidor remoto. O DNS provavelmente está quebrado também.

MySQL: por padrão seu my.cnf não deve permitir conexões remotas; você geralmente tem que explicitamente permitir isso no endereço de ligação.

    
por 29.01.2016 / 19:42

Tags