Iptables: meu script (e algumas dúvidas)
Bom galera gostaria que vcs criticassem meu script de firewall. Vou explicar o que eu quis fazer: Nesse servidor roda qmail(+acessorios)+apache+squid. Quis fazê-lo o mais restritivo possível e ir liberando somente o necessário (25, 110, 80 para entrantes e mascarar somente algumas para a rede) Segue o script: INICIO DO SCRIPT # POLICY ## Tabela filteriptables -t filter -P INPUT DROPiptables -t filter -P OUTPUT ACCEPTiptables -t filter -P FORWARD DROP# Tabela natiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P OUTPUT ACCEPTiptables -t nat -P POSTROUTING ACCEPT # Ativamos o redirecionamento de pacotes (requerido para NAT) #echo "1" /proc/sys/net/ipv4/ip_forward # Abaixar o limite de conexoes simultaneasecho "2048" /proc/sys/net/ipv4/ip_conntrack_max Tabela filter # Chain INPUT ## Criamos um chain que será usado para tratar o tráfego vindo da Internet iptables -N int-input# Aceita todo o tráfego vindo do loopback e indo pro loopbackiptables -A INPUT -i lo -j ACCEPT# Todo tráfego vindo da rede interna também é aceitoiptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT# Conexões vindas da interface eth1 são tratadas pelo chain int-inputiptables -A INPUT -i eth1 -j int-input # Outras conex sao bloqueadasiptables -A INPUT -j DROP # Chain FORWARD # Permite redirecionamento de conexões entre as interfaces locais# especificadas abaixo. Qualquer tráfego vindo/indo para outras# interfaces será bloqueado neste passo. iptables -A FORWARD -d 192.168.0.0/24 -i eth1 -o eth0 -j ACCEPTiptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o eth1 -j ACCEPTiptables -A FORWARD -j DROP # Chain int-input # Aceitamos todas as mensagens icmp vindas de eth1 com certa limitação# O tráfego de pacotes icmp que superar este limite será bloqueado# pela regra "...! ESTABLISHED,RELATED -j DROP" no final do # chain int-inputiptables -A int-input -p icmp -j ACCEPT # Primeiro aceitamos o tráfego vindo da Internet para as portas 80, 110, 25iptables -A int-input -p tcp --dport 80 -j ACCEPTiptables -A int-input -p tcp --dport 110 -j ACCEPTiptables -A int-input -p tcp --dport 25 -j ACCEPT # Bloqueia qualquer tentativa de nova conexão de fora para esta máquinaiptables -A int-input -m state --state ! ESTABLISHED,RELATED -j DROP # Aceita outros tipos de trafegoiptables -A int-input -j ACCEPT Tabela nat # Redir do SQUIDiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 # Ativando mascaramento para determinadas portas iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p icmp -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 110 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 25 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 80 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 3128 -j ACCEPTiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p udp --dport 53 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p udp --dport 53 -j ACCEPTiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport https -j MASQUERADE -- FIM DO SCRIPT Minhas dúvidas: 1)A policy [iptables -t nat -P POSTROUTING ACCEPT ] deixa o firewall muito peneira? tentei deixar em DROPe liberar somente algumas coisas mas parecia que dava conflitos de regras. 2) Por que, se eu liberei somente algumas portas para masquerade, o msn continua funcionando? (pensei que talvez o maldito funcione em porta 80, caso nao encontre sua porta específica) 3) O firewall está realmente restritivo? Ou está uma merda? hehe Não tenho muita experiência em segurança, mas li muito a respeito pra tentar fazer o melhor possível (guia foca - iptables, google com vários exemplos de scripts) porém, precisava da opinião de vocês e de uma ajuda pra dar uma melhorada já que muitos têm uma experiência grande nisso. Obrigado!!
RES: Iptables: meu script (e algumas dúvidas)
cara, nao manjo muito de firewall nao, mas eu droparia todas as conexões saintes e iria liberando conforme a necessidade ... Andre N.R.S. LeiteDepto. de TI - Embalatec[EMAIL PROTECTED]11 5534.0017***Atenção*Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o. Agradecemos sua cooperação.This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation -Mensagem original-De: master_ [mailto:[EMAIL PROTECTED]Enviada em: sexta-feira, 3 de fevereiro de 2006 09:19Para: debian-user-portuguese@lists.debian.orgAssunto: Iptables: meu script (e algumas dúvidas) Bom galera gostaria que vcs criticassem meu script de firewall. Vou explicar o que eu quis fazer: Nesse servidor roda qmail(+acessorios)+apache+squid. Quis fazê-lo o mais restritivo possível e ir liberando somente o necessário (25, 110, 80 para entrantes e mascarar somente algumas para a rede) Segue o script: INICIO DO SCRIPT # POLICY ## Tabela filteriptables -t filter -P INPUT DROPiptables -t filter -P OUTPUT ACCEPTiptables -t filter -P FORWARD DROP# Tabela natiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P OUTPUT ACCEPTiptables -t nat -P POSTROUTING ACCEPT # Ativamos o redirecionamento de pacotes (requerido para NAT) #echo "1" /proc/sys/net/ipv4/ip_forward # Abaixar o limite de conexoes simultaneasecho "2048" /proc/sys/net/ipv4/ip_conntrack_max Tabela filter # Chain INPUT ## Criamos um chain que será usado para tratar o tráfego vindo da Internet iptables -N int-input# Aceita todo o tráfego vindo do loopback e indo pro loopbackiptables -A INPUT -i lo -j ACCEPT# Todo tráfego vindo da rede interna também é aceitoiptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT# Conexões vindas da interface eth1 são tratadas pelo chain int-inputiptables -A INPUT -i eth1 -j int-input # Outras conex sao bloqueadasiptables -A INPUT -j DROP # Chain FORWARD # Permite redirecionamento de conexões entre as interfaces locais# especificadas abaixo. Qualquer tráfego vindo/indo para outras# interfaces será bloqueado neste passo. iptables -A FORWARD -d 192.168.0.0/24 -i eth1 -o eth0 -j ACCEPTiptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o eth1 -j ACCEPTiptables -A FORWARD -j DROP # Chain int-input # Aceitamos todas as mensagens icmp vindas de eth1 com certa limitação# O tráfego de pacotes icmp que superar este limite será bloqueado# pela regra "...! ESTABLISHED,RELATED -j DROP" no final do # chain int-inputiptables -A int-input -p icmp -j ACCEPT # Primeiro aceitamos o tráfego vindo da Internet para as portas 80, 110, 25iptables -A int-input -p tcp --dport 80 -j ACCEPTiptables -A int-input -p tcp --dport 110 -j ACCEPTiptables -A int-input -p tcp --dport 25 -j ACCEPT # Bloqueia qualquer tentativa de nova conexão de fora para esta máquinaiptables -A int-input -m state --state ! ESTABLISHED,RELATED -j DROP # Aceita outros tipos de trafegoiptables -A int-input -j ACCEPT Tabela nat # Redir do SQUIDiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 # Ativando mascaramento para determinadas portas iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p icmp -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 110 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 25 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 80 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 3128 -j ACCEPTiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p udp --dport 53 -j MASQUERADEiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p udp --dport 53 -j ACCEPTiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport https -j MASQUERADE --
RES: RES: Iptables: meu script (e algumas dúvidas)
foi mals ... ja instalei um client de email só pra lista agora nao vou chatear mais . -Mensagem original-De: Alan Hoffmeister [mailto:[EMAIL PROTECTED]Enviada em: sexta-feira, 3 de fevereiro de 2006 09:33Para: debian-user-portuguese@lists.debian.orgCc: debian-user-portuguese@lists.debian.orgAssunto: Re: RES: Iptables: meu script (e algumas dúvidas)É assim que funciona aqui na empresa.. A liberação dos IP's necessários é aos poucos conforme a real nessecidade de acesso.. Isso funciona muito legal..E Andre, cara, no reals não tem pq tu fica mandando mensagens com direitos.. Isso me da coceira. ainda mais em uma lista publica ^.-André Novelli - TI Embalatec escreveu: cara, nao manjo muito de firewall nao, mas eu droparia todas as conexões saintes e iria liberando conforme a necessidade ... Andre N.R.S. LeiteDepto. de TI - Embalatec[EMAIL PROTECTED]11 5534.0017***Atenção*Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o. Agradecemos sua cooperação.This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. Thank you for your cooperation -Mensagem original-De: master_ [mailto:[EMAIL PROTECTED]]Enviada em: sexta-feira, 3 de fevereiro de 2006 09:19Para: debian-user-portuguese@lists.debian.orgAssunto: Iptables: meu script (e algumas dúvidas) Bom galera gostaria que vcs criticassem meu script de firewall. Vou explicar o que eu quis fazer: Nesse servidor roda qmail(+acessorios)+apache+squid. Quis fazê-lo o mais restritivo possível e ir liberando somente o necessário (25, 110, 80 para entrantes e mascarar somente algumas para a rede) Segue o script: INICIO DO SCRIPT # POLICY ## Tabela filteriptables -t filter -P INPUT DROPiptables -t filter -P OUTPUT ACCEPTiptables -t filter -P FORWARD DROP# Tabela natiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P OUTPUT ACCEPTiptables -t nat -P POSTROUTING ACCEPT # Ativamos o redirecionamento de pacotes (requerido para NAT) #echo "1" /proc/sys/net/ipv4/ip_forward # Abaixar o limite de conexoes simultaneasecho "2048" /proc/sys/net/ipv4/ip_conntrack_max Tabela filter # Chain INPUT ## Criamos um chain que será usado para tratar o tráfego vindo da Internet iptables -N int-input# Aceita todo o tráfego vindo do loopback e indo pro loopbackiptables -A INPUT -i lo -j ACCEPT# Todo tráfego vindo da rede interna também é aceitoiptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT# Conexões vindas da interface eth1 são tratadas pelo chain int-inputiptables -A INPUT -i eth1 -j int-input # Outras conex sao bloqueadasiptables -A INPUT -j DROP # Chain FORWARD # Permite redirecionamento de conexões entre as interfaces locais# especificadas abaixo. Qualquer tráfego vindo/indo para outras# interfaces será bloqueado neste passo. iptables -A FORWARD -d 192.168.0.0/24 -i eth1 -o eth0 -j ACCEPTiptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o eth1 -j ACCEPTiptables -A FORWARD -j DROP # Chain int-input # Aceitamos todas as mensagens icmp vindas de eth1 com certa limitação# O tráfego de pacotes icmp que superar este limite será bloqueado# pela regra "...! ESTABLISHED,RELATED -j DROP" no final do # chain int-inputiptables -A int-input -p icmp -j ACCEPT # Primeiro aceitamos o tráfego vindo da Internet para as portas 80, 110, 25iptables -A int-input -p tcp --dport 80 -j ACCEPTiptables -A int-input -p tcp --dport 110 -j ACCEPTiptables -A int-input -p tcp --dport 25 -j ACCEPT # Bloqueia qualquer tentativa de nova conexão de fora para esta máquinaiptables -A int-input -m state --state ! ESTABLISHED,RELATED -j DROP # Aceita outros tipos de
Re: Iptables: meu script (e algumas dúvidas)
2) Por que, se eu liberei somente algumas portas para masquerade, o msn continua funcionando? (pensei que talvez o maldito funcione em porta 80, caso nao encontre sua porta específica) Eu manjo menos que vc ainda. Mas eu ouvi dizer uma coisa mais interessante sobre os IMs. ao invés de tentar barrar uma porta, já que vários deles ficam tentando várias portas até conseguir, tente barrar o servidor de login deles. Parece que é a solućão que funciona melhor. -- Paulo Marcondes = PU1/PU2PIX -22.915 -42.229 = GG87vc (http://www.amsat.org/cgi-bin/gridconv) Debian GNU/Linux = http://rj.debianbrasil.org = http://www.debian.org
Re: Iptables: meu script (e algumas dúvidas)
master_ escreveu: Bom galera gostaria que vcs criticassem meu script de firewall. Vou explicar o que eu quis fazer: Nesse servidor roda qmail(+acessorios)+apache+squid. Quis fazê-lo o mais restritivo possível e ir liberando somente o necessário (25, 110, 80 para entrantes e mascarar somente algumas para a rede) Segue o script: INICIO DO SCRIPT # POLICY # # Tabela filter iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT ACCEPT iptables -t filter -P FORWARD DROP # Tabela nat iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t nat -P POSTROUTING ACCEPT # Ativamos o redirecionamento de pacotes (requerido para NAT) # echo 1 /proc/sys/net/ipv4/ip_forward # Abaixar o limite de conexoes simultaneas echo 2048 /proc/sys/net/ipv4/ip_conntrack_max ### # Tabela filter # ### # Chain INPUT # # Criamos um chain que será usado para tratar o tráfego vindo da Internet iptables -N int-input # Aceita todo o tráfego vindo do loopback e indo pro loopback iptables -A INPUT -i lo -j ACCEPT # Todo tráfego vindo da rede interna também é aceito iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT # Conexões vindas da interface eth1 são tratadas pelo chain int-input iptables -A INPUT -i eth1 -j int-input # Outras conex sao bloqueadas iptables -A INPUT -j DROP # Chain FORWARD # Permite redirecionamento de conexões entre as interfaces locais # especificadas abaixo. Qualquer tráfego vindo/indo para outras # interfaces será bloqueado neste passo. iptables -A FORWARD -d 192.168.0.0/24 -i eth1 -o eth0 -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -o eth1 -j ACCEPT iptables -A FORWARD -j DROP # Chain int-input # Aceitamos todas as mensagens icmp vindas de eth1 com certa limitação # O tráfego de pacotes icmp que superar este limite será bloqueado # pela regra ...! ESTABLISHED,RELATED -j DROP no final do # chain int-input iptables -A int-input -p icmp -j ACCEPT # Primeiro aceitamos o tráfego vindo da Internet para as portas 80, 110, 25 iptables -A int-input -p tcp --dport 80 -j ACCEPT iptables -A int-input -p tcp --dport 110 -j ACCEPT iptables -A int-input -p tcp --dport 25 -j ACCEPT # Bloqueia qualquer tentativa de nova conexão de fora para esta máquina iptables -A int-input -m state --state ! ESTABLISHED,RELATED -j DROP # Aceita outros tipos de trafego iptables -A int-input -j ACCEPT ### # Tabela nat# ### # Redir do SQUID iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 # Ativando mascaramento para determinadas portas iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p icmp -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 110 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 25 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 80 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport 3128 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p udp --dport 53 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p udp --dport 53 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0/0 -p tcp --dport https -j MASQUERADE -- FIM DO SCRIPT Minhas dúvidas: 1) A policy [iptables -t nat -P POSTROUTING ACCEPT ] deixa o firewall muito peneira? tentei deixar em DROP e liberar somente algumas coisas mas parecia que dava conflitos de regras. 2) Por que, se eu liberei somente algumas portas para masquerade, o msn continua funcionando? (pensei que talvez o maldito funcione em porta 80, caso nao encontre sua porta específica) 3) O firewall está realmente restritivo? Ou está uma merda? hehe Não tenho muita experiência em segurança, mas li muito a respeito pra tentar fazer o melhor possível (guia foca - iptables, google com vários exemplos de scripts) porém, precisava da opinião de vocês e de uma ajuda pra dar uma melhorada já que muitos têm uma experiência grande nisso. Obrigado!! Cara aqui no Ministério onde trabalho conseguimos barrar o MSN com regras do iptables: /sbin/iptables -A FORWARD -p tcp --dport 1863 -j DROP /sbin/iptables -A FORWARD -s sua_rede/16 -d 12.130.60.4 -j DROP /sbin/iptables -A FORWARD -s sua_rede/16 -d 64.14.123.138 -j DROP /sbin/iptables -A FORWARD -s sua_rede/16 -d 65.54.194.118 -j DROP /sbin/iptables -A FORWARD -s sua_rede/16 -d 207.46.216.61 -j DROP /sbin/iptables -A FORWARD -s sua_rede/16 -d 212.187.244.16 -j DROP /sbin/iptables -A FORWARD -s sua_rede/16 -d 65.54.239.0/24 -j DROP /sbin/iptables
Re: Iptables: meu script (e algumas dúvidas)
master_ escreveu: Bom galera gostaria que vcs criticassem meu script de firewall. Vou explicar o que eu quis fazer: Nesse servidor roda qmail(+acessorios)+apache+squid. Quis fazê-lo o mais restritivo possível e ir liberando somente o necessário (25, 110, 80 para entrantes e mascarar somente algumas para a rede) Segue o script: Desculpem, esqueci de escrever no outro e-mail, o MSN funciona sim na porta 80 e ainda na 443, fazendo requisição de login, nestes ip's que eu enviei anteriormente, assim foi o unico jeito que achamos de bloqueá-lo relamente, outra maneira seria utilizando o patch: patch-o-matic, que faz o iptables funcionar com strings, estamos testando ele, assim que obtiver resultados eu faço um post aqui, um exemplo de regra com essa solução seria: iptables -A INPUT -p tcp -m string --string x-msn-messenger -j DROP Um outro detalhe, é que as regras de iptables do e-mail anterior não bloqueiam o uso de web-messenger, pois, os mesmos utilizam outros métodos de login, portanto o squid, também deve estar muito bem configurado. -- Atenciosamente, / *Allan Ichikawa Rodrigues Fróes** * Administrador de Redes CGMI - Coordenação Geral de Modernização e Informática Ministério das Cidades Tel: (61) 2108-1510 email:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] / -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]