Alguém poderia dar alguns passos simples com exemplo de configuração de como configurar um firewall simples no Ubuntu (usando apenas o console)? Apenas o acesso ssh, http e https deve ser permitido.
Sudo ufw padrão negar
Sudo ufw permitir http
Sudo ufw permitir https
Sudo ufw permitir ssh
Sudo ufw enable
Use este script.
Apenas decida se deseja permitir a entrada de ICMP (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
Conforme observado em comentários a outra resposta, você não quer perder sua conexão antes de permitir a porta ssh. Na página de manual:
"GESTÃO REMOTA
Ao executar o ufw enable ou iniciar o ufw por meio de seu initscript, o ufw irá liberar suas correntes. Isso é necessário para que o ufw possa manter um estado consistente, mas pode eliminar as conexões existentes (por exemplo, ssh). ufw suporta a adição de regras antes de habilitar o firewall, então os administradores podem fazer:
ufw allow proto tcp from any to any port 22
antes de executar 'ufw enable'. As regras ainda serão liberadas, mas a porta ssh será aberta após a ativação do firewall. Por favor, note que uma vez que ufw é 'habilitado', ufw não irá liberar as cadeias ao adicionar ou remover regras (mas irá ao modificar uma regra ou alterar a política padrão). "
Portanto, aqui está uma abordagem que usa um script para defini-lo. Você será desconectado quando executar este script, mas depois de executá-lo, você poderá fazer o login novamente por meio de 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 torná-lo executável e executá-lo fazendo
$ chmod + x start-firewall.sh
$ Sudo ./start-firewall.sh
Para saber mais, leia o página man .
Se você se familiarizar com scripts iptables
, terá controle total sobre todos os recursos do firewall. Ele está longe de ser tão amigável quanto o Firestarter, mas pode ser feito no console com os editores nano
/vi
. Confira este tutorial voltado para o Ubuntu.
Quicktables me ajudou 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 ver os comandos associados gerados pelas perguntas que ele fez a você. É um ótimo recurso de aprendizagem.
Infelizmente, ele não é mais mantido.
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 de fazer seu /etc/firehol/firehol.conf parecer assim.
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 firehol é o comando 'try'. Você pode ajustar seu arquivo de configuração e fazer uma 'tentativa de firehol', se você estava conectado via ssh, e algo sobre o que você alterou matou seu acesso à rede, então o firehol reverterá as alterações. Para que as mudanças realmente entrem em vigor, você deve dizer commit.
Eu preferiria Shorewall . É fácil de configurar, mas flexível ao mesmo tempo.
Talvez você deva dar uma olhada em http://iptables-tutorial.frozentux.net/iptables-tutorial.html . Além disso, você pode encontrar mais informações em lartc.org