Configure um firewall para Discourse

It’s unclear if Linux distributions really “need” a firewall – but we have found that the following Uncomplicated Firewall rules work fine with a standard Docker based Discourse install:

ufw allow http
ufw allow https
ufw allow ssh
ufw enable

That is, allow HTTP (port 80), HTTPS (port 443), and SSH (port 22), and nothing else.

Check the current status of your firewall with

ufw status verbose

Sample output:

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)

And if you ever want to turn it off

ufw disable

A firewall should not matter if you are using a default Docker install of Discourse, for the same reason almost no Linux distribution ships with a firewall enabled by default.

But if you have somehow installed extra services that talk to the outside world, adding a firewall gives you “belt and suspenders” security, if that is of interest to you.

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.