Configurar um firewall para Discourse

Se você estiver usando uma instalação padrão do Discourse baseada em Docker, as seguintes regras do Uncomplicated Firewall protegerão quaisquer serviços não-Docker em seu servidor:

ufw allow http
ufw allow https
ufw allow ssh
ufw enable

Isto é, permitir HTTP (porta 80), HTTPS (porta 443) e SSH (porta 22), e nada mais.

:warning: Nota: O Docker manipula o iptables diretamente e ignora as regras do ufw. Isso significa que o ufw não pode bloquear ou restringir o acesso às portas expostas pelos contêineres Docker (portas 80 e 443 em uma instalação padrão do Discourse). As regras do ufw acima protegerão apenas serviços não-Docker em execução no seu host.

Verifique o status atual do seu firewall com

ufw status verbose

Exemplo de saída:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
80                         ALLOW IN    Anywhere
443                        ALLOW IN    Anywhere
22                         ALLOW IN    Anywhere
80 (v6)                    ALLOW IN    Anywhere (v6)
443 (v6)                   ALLOW IN    Anywhere (v6)
22 (v6)                    ALLOW IN    Anywhere (v6)

E se você quiser desativá-lo

ufw disable

Uma instalação padrão do Docker do Discourse expõe apenas as portas 80 e 443, então um firewall de host não é estritamente necessário. Mas se você tiver outros serviços rodando no host que escutam em portas adicionais, adicionar um firewall fornece uma camada extra de segurança “cinto e suspensórios” para esses serviços.

33 curtidas

Pelo que entendi, o container Docker tem pouquíssimas portas abertas para o sistema host, então o Discourse está efetivamente isolado por firewall do servidor em que está rodando.

Claro, se houver outras coisas rodando no sistema host, o Capitão Óbvio diz que você precisa tomar precauções razoáveis.

Eu tive um servidor que ACHÁVAMOS que estava bem bloqueado ser invadido, não foi nada bonito.

1 curtida

O tópico não é totalmente preciso. Se o UFW for usado fora do docker, como “normalmente” em um VPS, ele não se aplica por si só ao Discourse. Posso desativar a porta 80 e ela ainda estará totalmente aberta para o Discourse/docker.

Claro, ele protege todo o resto, mas se não houver outros serviços escutando, é desnecessário.

Não sei como o UFW ou o iptables funcionam se usados após enter app ou se o firewall pode ser usado dessa forma.

Estou me referindo a este tópico:

3 curtidas

Eu definitivamente estaria interessado em ouvir essa história, talvez em um tópico separado :slight_smile:

Para sua informação, discussões sobre a relação entre Docker e ufw / firewalls são tão antigas quanto o próprio Docker, aqui está uma discussão de alto perfil com muitas informações interessantes

O próprio Docker melhorou nos últimos anos em relação à documentação dos detalhes relevantes; Packet filtering and firewalls | Docker Docs

Não quero lotar o tópico com links, mas se você estiver interessado no tópico de firewalls, estes parecem ser artigos realmente perspicazes para revisar, juntamente com uma pesquisa geral no Google para mais detalhes.

Com base em alguns desses sentimentos e no tópico super útil vinculado por @Jagster, parece que talvez a configuração padrão de instalação do Discourse pronta para uso com Docker seja suficiente por si só? Afinal, a minha se parece com isto;

$ docker ps
CONTAINER ID   IMAGE                 COMMAND        CREATED      STATUS        PORTS                                                                      NAMES
5dd4a572cd8e   local_discourse/app   \"/sbin/boot\"   6 days ago   Up 16 hours   0.0.0.0:80-\u003e80/tcp, :::80-\u003e80/tcp, 0.0.0.0:443-\u003e443/tcp, :::443-\u003e443/tcp   app

Portanto, a menos que eu esteja enganado, e a menos que haja alguma outra porta em uso por outro software no servidor, acho que o único tráfego que deveria estar se conectando de entrada seria nessas portas listadas 80 e 443

Se você quiser fazer uma verificação de sanidade, acho que você pode usar netstat para verificar as portas de escuta em seu servidor ( How to Install netstat on Ubuntu ; https://linuxize.com/post/check-listening-ports-linux/ )

netstat -tunlp

Para uma verificação de sanidade ainda mais forte, você pode considerar iniciar um segundo servidor Linux pequeno e tentar escanear as portas abertas do seu servidor Discourse; How To Use Nmap to Scan for Open Ports | DigitalOcean

# escaneia todas as portas ; insira seu endereço IP aqui
sudo nmap -n -PN -sT -sU -p- 1.2.3.4
  • verifique o link incluído para os documentos da DigitalOcean para mais comandos para escanear, etc.

Acho que se alguém estiver preocupado com a segurança do firewall do servidor para seu servidor Discourse, esses recursos e insights devem ser super úteis :slight_smile:

3 curtidas

Pequena coisa, mas este link parece estar inativo.

1 curtida

O ufw mais recente do Ubuntu LTS dá ALLOW e não ALLOW IN.

Isso tem sido irritante para o administrador do mail-reciever, recebendo falha na preparação da API em ./launcher logs mail-receiver mesmo com a porta 25 aberta no ufw.

Permitir todas as entradas e saídas e, em seguida, negar as portas desejadas tem sido uma solução.

Ainda não sei o suficiente sobre iptables para ajustar mais.