O Iptables é um firewall em nível de pacotes, ou seja, toma as decisões baseadas nos parâmetros do pacote, como porta/endereço de origem/destino, estado da conexão, e outros parâmetros do pacote. Funciona através da comparação de regras para saber se um pacote tem ou não permissão para passar. O iptables tem inúmeras possibilidades de controle oferecidas pelos recursos de filtragem, flexibilidade na manipulação dando lugar à imaginação do administrador.
Passo 1. Atualizando o repositório do Linux
Acesse seu servidor via SSH(Se precisa veja o Tutorial: PuTTy – Acesso SSH a sua máquina) e atualize seu repositório com o seguinte comando:
apt-get update
Aguarde a conclusão do update.
Passo 2. Instalando o IPTables em seu servidor
.
Depois disso instale o IPTables em sua máquina com o comando:
apt-get install iptables
(Obs.: O programa pode solicitar que confirme a instalação. Faça isto digitando “S”).
Aguarde o fim da instalação.
Passo 3. Testando seu IPTables
Teste se seu IPTables está ativo digitando o comando:
iptables -L
O resultado deve estar semelhante a este:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Passo 4. Identificando sua placa de rede
Agora precisamos identificar a placa de rede do seu servidor para poder especificá-la nas regras iptables. A placa de rede terá uma nomenclatura que dependerá do hoster, como por exemplo: eth0, eth1, eth2 e etc. Para verificar sua placa digite o comando:
ifconfig
O resultado deverá ser semelhante a este:
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx inet addr:xxx.xx.xxx.xxx Bcast:xx.x.xxx.xxx Mask:255.255.255.0 inet6 addr: xxxx::xxx:xxxx:xxxx:xxxx/xx Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:38762400 errors:0 dropped:0 overruns:0 frame:0 TX packets:5214715 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2158074986 (2.1 GB) TX bytes:3150303160 (3.1 GB) Interrupt:10 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:78270 errors:0 dropped:0 overruns:0 frame:0 TX packets:78270 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:7520686 (7.5 MB) TX bytes:7520686 (7.5 MB)
No exemplo acima você pode perceber que nomenclatura de nossa placa de rede é eth0. Agora que temos nosso IPTables instalado e a nomenclatura da nossa placa, iremos configurar o nosso firewall.
Passo 1. Criando o arquivo firewall.sh
Utilizando seu editor preferido, caminhe até a pasta ‘/etc/init.d/’ e crie um arquivo chamado ‘firewall.sh’
nano /etc/init.d/firewall.sh
Passo 2. Colocando o script no firewall.sh
No Ubuntu, o diretório ‘/etc/init.d’ é utilizado para scripts que serão inicializados junto com o S.O. Copie e cole o seguinte script no arquivo:
## Firewall voltado ao OTServ ## Criado por: Thiago Nogueira - ADM Kira - www.brgos.net echo "Carregando o firewall..." #Limpa as regras do Firewall anteriores iptables -F iptables -X #Permitir trafego para sessoes estabelecidas: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #Libera conexoes de fora para dentro iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT #SSH iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT #WEB iptables -A INPUT -p tcp -i eth0 --dport 7171 -j ACCEPT #TIBIA iptables -A INPUT -p tcp -i eth0 --dport 7172 -j ACCEPT #TIBIA2 #Libera o loopback iptables -A INPUT -s 127.0.0.1 -j ACCEPT iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT iptables -A FORWARD -s 127.0.0.1 -j ACCEPT #Libera conexoes de dentro para fora iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT #WEB iptables -A OUTPUT -p tcp --dport 7171 -j ACCEPT #TIBIA iptables -A OUTPUT -p tcp --dport 7172 -j ACCEPT #TIBIA2 #Protecao contra "ping of death" iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT #Protecao contra ataques do tipo "Syn-flood, Dos e etc" iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT #Protecao contra IP Spoofing iptables -A INPUT -s 10.0.0.0/8 -i eth0 -j DROP iptables -A INPUT -s 172.16.0.0/16 -i eth0 -j DROP iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j DROP #Protecao contra port scanners ocultos iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p icmp -j DROP #Bloqueando traceroute iptables -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP #Bloqueia toda entrada com excessao das regras acima iptables -A INPUT -j DROP #Cria log dos bloqueios - Ativar somente se necessario #iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 echo "Firewall ativado!"
Passo 3. Salvando o arquivo firewall.sh
Salve seu arquivo, caso esteja utilizando o editor nano, pressione CTRL+O para salver e CTRL+X para fechar.
Passo 4. Dando permissão para o script firewall.sh
Agora iremos dar a permissão para a execução do arquivo ‘firewall.sh’ com o seguinte comando:
chmod +x /etc/init.d/firewall.sh
Passo 5. Inicializando o firewall
Para iniciar seu firewall digite o seguinte comando:
sh /etc/init.d/firewall.sh
O resultado deve ser igual a este:
Carregando o firewall...
Firewall ativado!
Antes de colocarmos o script para funcionar corretamente, é necessário testar as conexões de seu OTserv para ter certeza que nada necessário para o funcionamento tenha sido bloqueado. Caso algo tenha sido bloqueado, limpe as regras do firewall com o comando:
iptables -F
Caso tenha bloqueado sua conexão SSH por engano, basta reiniciar o servidor linux que as regras serão apagadas e você poderá corrigi-las.
ATENÇÃO: Somente execute o comando abaixo se tiver certeza que tudo esta funcionando corretamente. Caso bloqueie algo essencial, como a conexão SSH, será necessário formatar o computador.
Passo 6. Colocando o Firewall para iniciar junto com o S.O.
Digite o comando:
update-rc.d firewall.sh defaults
Prontinho! Agora seu servidor já esta protegido contra a maioria dos ataques feito em servidores de Tibia.
Créditos: Rafael Martins do Viva o Linux pela introdução.
Tnogueira do TibiaKing pelo tutorial.