Changelog: Firewall completamente organizado com sistema de logs e bloqueio 100% funcionais!
1. TODAS as políticas em DROP.
2. Criada regra para liberação dos serviços externos bastando descomentar e/ou selecionar as portas.
3. CHAINS organizadas para evitar uso excessivo da máquina em caso de flood.
4. Adicionada regra para colocar a porta do torrent, evitando assim falsos positivos nos logs.
5. Aparência feita para melhor compreensão das regras e controle do usuário.
Obrigado a todos que usaram, testaram e comentaram sobre estes scripts que sempre visaram possibilitar o máximo de segurança com o menor trabalho/intervenção do usuário possível.
Este foi o último fw desta série, acredito que neste script meu trabalho ficou bem feito!
Espero comentários e até a próxima meus amigos.
Changelog: 1. Script remodelado, todas as políticas em DROP.
2. Adicionado limite de pacotes syn salvos pelo log.
3. Adicionado proteção mais "efetiva" contra scans.
4. Totalmente comentado, ajudando assim o usuário a se adaptar ao firewall e modificar o mesmo ao seu gosto!
Changelog: Alterada novamente a lógica do firewall:
1. Adicionadas regras do kernel (/proc).
2. Adicionado descarte de IPs persistentes.
3. Adicionada área para configuração local da rede.
4. Adicionado descarte de pacotes inválidos ou suspeitos.
5. Revisado o sistema de loging e descarte de pacotes.
[2] Comentário enviado por px em 06/05/2013 - 23:35h
então criei este script como base para um usuário comum do sistema
Bom, "infelizmente" nem todos precisam/querem um firewall super robusto em um micro "caseiro", e acredito q para um usuário comum é uma boa base para ir se aprofundando, mas obg pela sua resposta, mesmo pq ñ afirmo q criei um firewall e sim um script base para usuário comum.
[4] Comentário enviado por px em 17/07/2013 - 13:11h
Tem pessoas oliver que não gostam muito da ideia Open soucer e criam contas fake para difamar em sites e em fórum, acho muito triste isso, se ao menos se justifica-se a critica seria construtiva, argumentos vagos tem aos montes por ai até na politica! isso sendo o iptables o firewall implementado diretamente no kernel do linux (netfilter) ele é nativo e muito mais seguro do que programas de terceiros cheios de bugs e backdoors por ai... você também pode usar (deve!) sistemas IDS (detecção de intrusão) como o Snort que possui uma ampla légua de detecção de ataques e scan, juntamente com o Guardian que bloqueia os ips dos malfeitores. Isso é só o basico que o linux pode oferecer, se não estiver satisfeito você pode programar (caso saiba, e queira) qualquer firewall ou ids, pode usar de base até os existentes na licença GNU.
[5] Comentário enviado por messiah em 29/07/2013 - 22:14h
Obrigado pelo Script!
Desculpe as perguntas ignorantes mas, é o seguinte;
1-Notei que o tal FOWARD foi setado como DROP, o caso e que eu utilizo o notebook também na universidade, e para utilizar a rede da mesma eu preciso configurar meu sistema para passar através do proxy e porta fornecidos. Dropar todos os pacotes cancelaria minha conexão?
2-No arquivo o iplocal e setado manualmente, mas existe algum comando que busque meu ip, pois como disse acima utilizo notebook, e sempre estou conectado em redes distintas : universidade e casa.
3 - Também gostaria de saber sobre a configuração da placa, pois como as vezes eu acesso a ethernet, e a maioria das vezes o wifi(wlan0) essa mudança manual seria um pouco trabalhosa.
Estava procurando algo assim mesmo: simples. Os iniciantes agradecem {COMENTARIO}
[6] Comentário enviado por px em 31/07/2013 - 19:56h
1- Esta configuração é feita por iptables? se sim talvez possa dar alguma perda de pacotes... mas ai é só você testar se funcionar bem... se ñ passe para ACCEPT ou deixe igual oq você usa atualmente.
2/3- Entendo... este script foi feito + pensando em estações fixas de trabalho, mas pode ser facilmente adaptada para portáteis tbm, comente aquelas regras referentes ao iplocal e placa de rede, assim:
##### -------- CONFIGURAÇÃO DA REDE LOCAL -------- #####
#Adicione seu ip da rede interna aqui
#iplocal=192.168.1.13
#Adicione sua rede interna (subrede)
#redelocal=192.168.1.0/24
#Adicione o ip de seu gateway aqui (modem,roteador)
#gateway=192.168.1.1
#Adicione o nome da sua placa de rede aqui
#placa=eth0
[7] Comentário enviado por px em 31/07/2013 - 20:18h
Vou te explicar um pouco sobre este script, ele basicamente te permite conectar em qualquer ip a qualquer porta, somente se você solicitar a conexão! a menos que você abra mais portas em "Abrindo algumas portas"... e também loga e descarta conexões não iniciadas por você ou sem permissão para se estabelecerem, descarta também as conexões inválidas e bloqueia os ips insistentes que as origina, depois de determinadas tentativas.
Ativa os syncookies e descarta vários tipos de pacotes "maliciosos" e duvidosos da rede como os "icmp broadcasts" que são usados mais para o mal que para o bem...
[8] Comentário enviado por messiah em 02/08/2013 - 09:21h
Obrigado @px, estou tentando não sobrecarregar ninguém de perguntas, mas eu tenho outra dúvida:
para acessar a internet na minha universidade eu adicionei o seguinte no script
iptables -A OUTPUT -s [ip-proxy] -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -s [ip-proxy] -p tcp --dport 3128 -j ACCEPT
Por exemplo com a adição desta regra eu acesso o proxy da universidade, mas devido a política DROP que você colocou, o netfilter dropara todos os outros pacotes que não venham da maquina firewall?(Isto é, supondo outro pc que também utiliza este proxy o mesmo não podera enviar pacotes para meu sistema)
Uma outra dúvida teórica se relaciona com o "coração do firewall"
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Esta regra só adiciona o INPUT, mas você disse que " este script, ele basicamente te permite conectar em qualquer ip a qualquer porta, somente se você solicitar a conexão!" isto quer dizer que após solicitar a conexão a porta aberta libera também os OUTPUT?
[9] Comentário enviado por px em 03/08/2013 - 13:48h
1- Todos que não forem da porta 3128 (cuja mesma foi aberta por você) serão descartados, ips da mesma rede não iram te ver pois a politica de entrada (INPUT) está em DROP.
Existe sua rede local tipo 192.168.1.1 e ips da internet 189.103.0.5. Se você se comunicar com o local (proxy)
iptables -A INPUT -s 192.168.1.1 -p tcp --dport 3128 -j ACCEPT
ele lhe dará um ip de acesso a internet 189.103.0.5 todos que usarem o proxy usaram o ip externo e não o ip interno, por isso não faz diferença, a menos que você libere o acesso para estes ips, oq não é o casso por ser um pc pessoal e não um servidor... mas poderia ser feito também mas são outros 500...
2- Não! como você iria se comunicar se a OUTPUT estivesse fechada? como iria acessar o DNS e os ips? a OUTPUT (politica de saida de pacotes) é aberta nesse firewall ou seja, você pode se conectar a todos os ips, mas somente os ips que você se conectar terão permissão de INPUT (entrada de pacotes) no seu micro.
De uma olhada nos logs do iptables lá se encontram os pacotes que são dropados pelo netfilter, os logs ficam na pasta /var/log da sua distro, provavelmente o arquivo do iptables está em iptables.log ou messages.log talvez tenha que configurar seu sistema de loggin para armazenar as mensagens, verifique no site da sua distribuição linux.
3- Nada... qualquer dúvida tamos ai!
4- Faça testes como outros pcs caso a duvida permaneça, mas antes verifique o sistema de log esta funcionando na sua distro, pois as versões de linux são diferentes. Utilize um programa sniffer para saber quais ips se conectam na sua máquina (desligue o navegador e outros programas que usam a rede antes, para se ter uma precisão melhor) , sugiro o wireshark ou tcpdump para tarefa.
edit: sua regra de OUTPUT é desnecessária tendo em vista que à saída de pacotes é permitida por padrão neste tipo de firewall.
[10] Comentário enviado por px em 13/09/2013 - 00:46h
Só para frisar aqui, agora da pra usar o script em estações moveis sem problemas! tá bem organizado e fácil de editar qualquer coisa que queira. Bom uso para vocês pessoal, qualquer dúvida ou sugestão poste ai que julgarei com você os problemas, abç.