Como configurar o firewall simples no Ubuntu?

18

Alguém poderia dar alguns passos simples com o exemplo de configuração, como configurar um firewall simples no Ubuntu (usando apenas o console)? Somente o acesso ssh, http e https deve ser permitido.

klew
fonte
Você está falando de um firewall de rede ou apenas de um firewall do sistema?
23420 Brad Gilbert
O que você quer dizer com firewall de rede? É um firewall no roteador? Se sim, então eu estava falando sobre o firewall do sistema.
klew

Respostas:

20

sudo ufw padrão negar

sudo ufw permite http

sudo ufw permitir https

sudo ufw permitir ssh

sudo ufw enable

Nerdfest
fonte
Se eu chamar esses comandos em sequência via ssh, isso interromperá minha conexão?
klew
Eu não acredito, mas você deve verificar para ter certeza. Isso também mantém seu status entre as reinicializações, portanto, você só precisa fazer isso uma vez.
Nerdfest
Vou verificar isso quando eu vou estar perto de este computador ...
klew
Você pode colocá-lo em um script e executá-lo; mesmo se você for desconectado, poderá reconectar-se posteriormente. Veja minha resposta abaixo para o script.
Hamish Downer
2
O comentário anterior está correto. Basicamente, execute o primeiro comando no script acima por último.
Nerdfest
14

Use este script.

Apenas decida se você deseja permitir ICMP de entrada (ping) ou não.

# Clear any existing firewall stuff before we start
iptables --flush
iptables -t nat --flush
iptables -t mangle --flush

# As the default policies, drop all incoming traffic but allow all
# outgoing traffic.  This will allow us to make outgoing connections
# from any port, but will only allow incoming connections on the ports
# specified below.
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT

# Allow all incoming traffic if it is coming from the local loopback device
iptables -A INPUT -i lo -j ACCEPT

# Accept all incoming traffic associated with an established
# connection, or a "related" connection
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow incoming connections
# SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i eth0 --dport 80 -m state --state NEW -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp -i eth0 --dport 443 -m state --state NEW -j ACCEPT

# Allow icmp input so that people can ping us
iptables -A INPUT -p icmp -j ACCEPT

# Reject all other incoming packets
iptables -A INPUT -j REJECT
Mikeage
fonte
8

Conforme observado nos comentários de outra resposta, você não deseja perder sua conexão antes de permitir a porta ssh. Na página do manual:

"GERENCIAMENTO REMOTO

Ao executar o ufw enable ou iniciar o ufw através do seu initscript, o ufw liberará suas cadeias. Isso é necessário para que o ufw possa manter um estado consistente, mas pode eliminar as conexões existentes (por exemplo, ssh). O ufw suporta a adição de regras antes de ativar o firewall, para que os administradores possam:

ufw allow proto tcp from any to any port 22

antes de executar o 'ufw enable'. As regras ainda serão liberadas, mas a porta ssh será aberta após a ativação do firewall. Observe que quando o ufw for 'ativado', o ufw não liberará as cadeias ao adicionar ou remover regras (mas ao modificar uma regra ou alterar a política padrão). "

Então, aqui está uma abordagem que usa um script para defini-lo. Você será desconectado ao executar esse script, mas, após executá-lo, você poderá efetuar login novamente pelo ssh.

Coloque o seguinte em um script e chame-o de start-firewall.sh

#!/bin/sh
ufw allow ssh
ufw enable
ufw default deny
ufw allow http
ufw allow https

E então torne-o executável e execute-o fazendo

$ chmod + x start-firewall.sh
$ sudo ./start-firewall.sh

Para saber mais, leia a página de manual .

Hamish Downer
fonte
2

Se você se familiarizar com scripts iptables, terá controle total sobre todos os recursos do firewall. Não é nem de longe tão amigável quanto o Firestarter, mas pode ser feito no console com nano/ vieditors. Confira este tutorial voltado para o Ubuntu.

Spoulson
fonte
1

As tabelas rápidas me ajudaram a aprender as regras do iptables. Basta executar o script e ele irá gerar um script iptables para você ... então você pode abri-lo e visualizar os comandos associados gerados pelas perguntas que você fez. É um ótimo recurso de aprendizado.

Infelizmente, não é mais mantido.

http://qtables.radom.org/

JP Richardson
fonte
1

Eu realmente gosto de usar firehol ( pacote ).

Para criar regras de configuração que você deseja, você precisa editar o arquivo / etc / default / firehol e alterar START_FIREHOL = YES

E você gostaria que seu /etc/firehol/firehol.conf se parecesse com isso.

version 5

interface any IfAll
    client any AnyClient accept
    server "ssh http https" accept
    # Accept everything from trusted networks
    server anystateless AllInside accept src "10.3.27.0/24"

Uma das grandes coisas sobre o firehol é o comando 'try'. Você pode ajustar seu arquivo de configuração e fazer uma 'tentativa de incêndio', se estiver conectado via ssh, e algo sobre o que você alterou matou o acesso à sua rede, então o firehol reverterá as alterações. Para que as mudanças entrem em vigor, você deve dizer confirmar.

Zoredache
fonte
11
Firehol é brilhante para manipular regras do iptables. '$ firehol try' "Ativa o firewall, mas aguarda até o usuário digitar a palavra commit. Se essa palavra não for digitada em 30 segundos, o firewall anterior será restaurado."
Gareth
Então, você pode adicionar / editar / remover regras e testá-las. Se você estiver fazendo isso via SSH remotamente, isso não impedirá você de seu próprio servidor!
930 Gareth
1

Eu preferiria Shorewall . É fácil de configurar, mas flexível ao mesmo tempo.

Artyom Sokolov
fonte
-1

sudo apt-get install firestarter

Em seguida, procure no menu Sistema-> Administração.

Spoulson
fonte
questionador quer usar somente o console
Mikeage
Ah, meu erro. Alternativamente. o administrador ainda pode ssh -X no servidor e executar o firestarter remotamente.
Spoulson 30/04/09
11
Eu também precisaria instalar um servidor X para iniciar o ssh -X :).
klew
@klew, você não precisa instalar um servidor X completo para executar aplicativos X no ssh. Você precisa de várias bibliotecas, mas não precisa de tudo. Para o mínimo necessário, você só precisa de pacotes xauth e xbase-clients.
Zoredache