+ Responder ao Tópico



  1. #1
    wellyngton
    Visitante

    Padrão IPTABLES e Squid

    Olá pessoal, sou novo por aqui, estou precisando de umas dicas pois confesso estou um pouco confuso..

    Configurei o firewall na empresa que tem 2 placas de rede eth0 link da Embratel 200.xxx.xxx.xxx IP FIXO e a eht1 192.168.0.0 para rede local.
    O Squid esta funcionando perfeitamente.
    porem ja tentei de tudo um pouco para liberar as portas 110 e 25 do outloock express e nada ou até mesmo a porta 143 do imap.
    Outra coisa todos que acessam o site da empresa www.empresa.com.br da uma pagina do squid dizendo acesso negado,o endereço da empresa aponta para o IP Fixo do servidor configurado pela fapesp, se u digitar o IP exemplo: 200.000.000.000 ou www.empresa.com.br fora da minha rede exemplo em casa vem a pagina de acesso negado do squid como faço para liberar isso no Iptables ou squid
    basicamente preciso liberar o webmin pra mim acessar de casa o site e baixar e-mail nas estações já tentei de tudo sempre da erro a distro que estou usando é RedHat 9.0, segue abaixo o script do firewall:
    se alguem puder me ajuda eu agradeço, muito.....

    Pessoal um grande abraço..

    Wellyngton Tharyck


    #!/bin/sh
    ./ etc/init.d/functions
    #Copy Right 2004

    start() {
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_tables
    modprobe ipt_state
    modprobe ipt_limit
    modprobe ipt_LOG
    modprobe ipt_REJECT

    IF=eth0 # Interface de saida

    echo -n "***** Iniciando Firewall *****"
    echo "1" > /proc/sys/net/ipv4/ip_forward

    # Limpa Regras - FLUSH
    iptables -t nat --flush
    iptables -t filter --flush

    # Estabelece Politica Padrao
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP

    # Ativa Filtro de Match Extensions
    iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Libera Loopback
    iptables -A FORWARD -s 0/0 -d 0/0 -j ACCEPT -i lo
    iptables -A INPUT -s 0/0 -d 0/0 -j ACCEPT -i lo

    # Libera Inputs para a Porta 22 - SSH / Samba
    iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT # Rede interna

    # Libera Inputs para as Portas SMTP, HTTP, HTTPS, POP, FTP e Proxy
    iptables -A INPUT -p tcp --dport 25 -j ACCEPT #SMTP - Tcp/Ip
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT #HTTP - Tcp/Ip
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT #HTTPS - Tcp/Ip
    iptables -A INPUT -p tcp --dport 110 -j ACCEPT #POP - Tcp/Ip
    iptables -A INPUT -p tcp --dport 53 -j ACCEPT #DNS - Tcp/Ip
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT #FTP - Tcp/Ip
    iptables -A INPUT -p tcp --dport 3128 -j ACCEPT #Proxy - Tcp/Ip

    # Libera acesso aos servicos SMTP, HTTP, HTTPS, POP, DNS, FTP e Proxy
    iptables -A FORWARD -p tcp --dport 25 -j ACCEPT #SMTP - Tcp/Ip
    iptables -A FORWARD -p tcp --dport 80 -j ACCEPT #HTTP - Tcp/Ip
    iptables -A FORWARD -p tcp --dport 443 -j ACCEPT #HTTPS - Tcp/Ip
    iptables -A FORWARD -p tcp --dport 110 -j ACCEPT #POP - Tcp/Ip
    iptables -A FORWARD -p tcp --dport 53 -j ACCEPT #DNS - Tcp/Ip
    iptables -A FORWARD -p tcp --dport 21 -j ACCEPT #FTP - Tcp/Ip
    iptables -A FORWARD -p tcp --dport 3128 -j ACCEPT #Proxy - Tcp/Ip

    # Nega acessos externos
    iptables -A INPUT -p udp --dport 69 -j DROP
    iptables -A INPUT -p udp --dport 161 -j DROP
    iptables -A INPUT -p udp --dport 1024 -j DROP
    iptables -A INPUT -p udp --dport 31337 -j DROP
    iptables -A FORWARD -p udp --dport 6000 -j DROP
    iptables -A FORWARD -p tcp --dport 6000 -j DROP

    # Estabelece NAT
    iptables -t nat -A POSTROUTING -s 0/0 -d 0/0 -o eth0 -j MASQUERADE # NAT na saida
    iptables -A FORWARD -s 0/0 -d 0/0 -j ACCEPT

    # Estabelece Proxy Transparente
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

    echo " [ ok ] "

    }

    stop () {
    echo -n "***** Parando Firewall *****"
    echo "1" > /proc/sys/net/ipv4/ip_forward

    iptables -t nat --flush
    iptables -t filter --flush
    iptables -t filter -P INPUT ACCEPT
    iptables -t filter -P OUTPUT ACCEPT
    iptables -t filter -P FORWARD ACCEPT

    echo " [ ok ] "
    }
    restart() {
    stop
    start
    }

    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart)
    restart
    ;;
    *)
    echo " Uso: firewall (start | stop | restart)"
    echo
    esac
    exit 0

  2. #2

    Padrão IPTABLES e Squid

    Caro well,
    nao sei se posso te ajudar,mas qto as portas 25 e 110, tente substituir suas regras por essas...e qto ao erro de acesso negado fico te devendo...

    iptables -A FORWARD -p TCP -s 192.168.0.0/24 --dport 25 -j ACCEPT
    iptables -A FORWARD -p TCP -s 192.168.0.0/24 --dport 110 -j ACCEPT
    iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
    iptables -A FORWARD -p tcp --sport 110 -j ACCEPT

    espero ter ajudado..
    []´s

  3. #3
    odbc
    Visitante

    Padrão IPTABLES e Squid

    IMPLEMENTANDO IPTABLES + OUTLOOK + SQUID
    por Márcio Oliveira (beastie)

    Introdução

    Bom pessoal, meu objetivo não é construir um firewall muito avançado, nem mostrar regras muito especificas, meu objetivo é implementar um firewall simples, que possibilite a navegação e uso de SQUID + OUTLOOK, para uma pequena ou grande rede, dependendo da necessidade.

    Neste caso , estamos assim:
    ip válido : 200.xxx.xxx.xxx
    ip da rede : 10.0.0.0/8
    ip do firewall na rede : 10.0.0.1
    eth1 interface da internet
    eth0 interface da rede local

    IPTABLES

    Vou usar IPTables, pois está muito estável e é uma boa "pedida" quando falamos em firewall, apesar de eu particularmente usar também ipchains em firewalls mais antigos e me divertir com ipmasqadm mfw e portfw... hehehe...

    Basico do básico, vamos começar a carregar os módulos:

    /sbin/modprobe ip_tables
    /sbin/modprobe iptable_filter
    /sbin/modprobe ip_conntrack
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe iptable_nat
    /sbin/modprobe ip_nat_ftp
    /sbin/modprobe ipt_LOG
    /sbin/modprobe ipt_state
    /sbin/modprobe ipt_MASQUERADE


    Beleza, carregados os módulos, vamos dar um "flushing" no firewall, para não termos problemas do tipo: Porque quando eu tiro o proxy do navegador ele continua a utilizar a internet?"...

    /usr/sbin/iptables -F
    /usr/sbin/iptables -Z
    /usr/sbin/iptables -X
    /usr/sbin/iptables -t nat -F
    /usr/sbin/iptables -P INPUT DROP
    /usr/sbin/iptables -P FORWARD DROP
    /usr/sbin/iptables -P OUTPUT ACCEPT

    Detalhes relevantes: nunca se esqueça de dar um flushing na tabela nat também, e pessoal, pensa bem, você tem que liberar o que É NECESSÁRIO, e não tudo, por isso o Policy padrão de input e do forward é DROP, porque se não ta nas regras, ou você esqueceu ou não é para estar liberado! Isso evita acidentes "comuns".

    Habilitando roteamento e demais cositas...

    echo "1" > /proc/sys/net/ipv4/ip_forward

    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

    No meu firewal nada de scan...

    INPUT

    Vamos liberar o INPUT para a interface de loopback, que só vai ser usada pelo servidor, mas com origem de qualquer ip, para não ter perigo de não manipular alguns pacotes:

    /usr/sbin/iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT
    /usr/sbin/iptables -A INPUT -p ALL -s 10.0.0.1 -i lo -j ACCEPT
    /usr/sbin/iptables -A INPUT -p ALL -s 200.xxx.xxx.xxx -i lo -j ACCEPT

    Agora uma regra que eu procuro colocar no começo, que na minha opinião melhora um "pouco" a performance do firewall já que a leitura das regras para os pacotes é linear. Ela diz que toda conexão estabilizada ou relacionada com o meu firewall deve ser mantida e não analizada pelas proximas regras:

    /usr/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

    Libera as respostas dos DNS para meu firewall

    /usr/sbin/iptables -A INPUT -p udp -s 200.204.0.10 --sport 53 -d 200.xxx.xxx.xxx -j ACCEPT
    /usr/sbin/iptables -A INPUT -p udp -s 200.204.0.138 --sport 53 -d 200.xxx.xxx.xxx -j ACCEPT

    Nada de pacote fragmentado no meu firewall! Se temos um programa criando pacotes despadronizados ou uma tentativa de ataque, o problema não é meu!

    /usr/sbin/iptables -A INPUT -i eth1 -f -j LOG --log-prefix "Pacote INPUT fragmentado: "
    /usr/sbin/iptables -A INPUT -i eth1 -f -j DROP

    (Não esquecendo de logar o pacote fragmentado para descobrir oquê ele é).

    Evitando Spoofing:

    /usr/sbin/iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
    /usr/sbin/iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
    /usr/sbin/iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
    /usr/sbin/iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP
    /usr/sbin/iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP

    Obs: as mascaras estão corretas.

    Regras para ping, aqui varia muito de admin para admin, eu só libero resposta de ping de outros ips, ping para minha rede interna e ping do servidor da minha empresa para o firewall do cliente, como ta na ultima linha:

    /usr/sbin/iptables -A INPUT -p icmp --icmp-type 8 -i eth0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -p icmp -s 200.20x.xxx.xxx -d 200.xxx.xxx.xxx -j ACCEPT

    Libero o acesso as squid para minha rede interna:

    /usr/sbin/iptables -A INPUT -p TCP -i eth0 -s 10.0.0.0/8 --dport 3128 -j ACCEPT

    Libero o acesso ao ssh:

    /usr/sbin/iptables -A INPUT -p TCP --dport 22 -j ACCEPT

    Libera resposta de servidores www para meu squid:

    /usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 80 -j ACCEPT
    /usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 443 -j ACCEPT
    /usr/sbin/iptables -A INPUT -p TCP -i eth1 --sport 20 -j ACCEPT
    /usr/sbin/iptables -A INPUT -p UDP -i eth1 --sport 21 -j ACCEPT

    Ora de mandar embora as porcarias, agora que ta tudo que eu preciso liberado:

    /usr/sbin/iptables -A INPUT -p tcp --dport 3128 -j REJECT --reject-with tcp-reset
    /usr/sbin/iptables -A INPUT -j LOG --log-prefix "Pacote input descartado: "
    /usr/sbin/iptables -A INPUT -j DROP

    Não esqueça de sempre logar o que você descarta, pois pode ser uma tentativa de ataque ou uma porta que deve ser liberada para um programa funcionar!

    FORWARD

    Já começamos com barra pesada no forward, descartando os pacotes inválidos, coisa que no ipchains deixa os admins de firewall loucos:

    /usr/sbin/iptables -A FORWARD -m state --state INVALID -j DROP

    Aceita as conexões estabilizada e recionadas com outras feitas nos pcs da minha rede interna:

    /usr/sbin/iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

    Opa, aqui está um dos segredos para o outlook funcionar, uma coisa que ninguém faz e todo mundo reclama que o teu outlook não funciona, é liberar a resposta e o acesso aos resolvedores de nome, para que o outlook transforme o nome que ele possui no servoidor smtp e pop em um ip:

    /usr/sbin/iptables -A FORWARD -p udp -s 10.0.0.0/8 -d 200.204.0.10 --dport 53 -j ACCEPT
    /usr/sbin/iptables -A FORWARD -p udp -s 10.0.0.0/8 -d 200.204.0.138 --dport 53 -j ACCEPT
    /usr/sbin/iptables -A FORWARD -p udp -s 200.204.0.10 --sport 53 -d 10.0.0.0/8 -j ACCEPT
    /usr/sbin/iptables -A FORWARD -p udp -s 200.204.0.138 --sport 53 -d 10.0.0.0/8 -j ACCEPT

    Feito isso, vamos liberar para a minha rede interna as portas que o outlook vai utilizar para acessar os servidores externos:

    /usr/sbin/iptables -A FORWARD -p TCP -s 10.0.0.0/8 --dport 25 -j ACCEPT
    /usr/sbin/iptables -A FORWARD -p TCP -s 10.0.0.0/8 --dport 110 -j ACCEPT
    /usr/sbin/iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
    /usr/sbin/iptables -A FORWARD -p tcp --sport 110 -j ACCEPT

    Pronto, o nosso objetivo do outlook funcionar está OK! Agora vamos dropar o resto, nunca se esquecendo de logar isso:

    /usr/sbin/iptables -A FORWARD -j LOG --log-prefix "Pacote forward descartado: "
    /usr/sbin/iptables -A FORWARD -j DROP

    No caso da rede que eu fiz isso, eram poucos pcs, uns 30, então em masquerei a conexão mesmo, mas nada te impede de usar SNAT:

    /usr/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE

    Entendendo o Funcionamento do Outlook:

    Bem pessoal, depois de tudo isso as regras estão ai, mas pode ser que não entendam o funcionamento do outlook, então vamos lá:

    * Foi liberado o acesso da minha rede interna aos resolvedores de nome (200.204.0.10 e 200.204.0.138) para que o outlook consiga transformar pop.domain.com.br em um ip.
    * Foi liberada requisição das estações nas portas 25 e 110 na rede externa e resposta da rede externa pelas portas 25 e 110.
    * Não esquecendo que as conexões da rede interna estão sendo mascaradas e toda conexão estabelecida ou relacionada por elas é aceita, não sofrendo novamente a verificação das regras do firewall subsequentes.
    * Não se esqueça do principal: a configuração da estação de trabalho deve ser a serguinte:
    gateway : 10.0.0.1 (no meu caso, este é o ip do firewall)
    dns primário : 200.204.0.10
    dns secundário : 200.204.0.138

    Sem essas configurações nas estações, nada funcionará.

    Pronto, as simples regras estão OK e o outlook funciona!!!

    Márcio Oliveira (beastie)
    Analista Linux
    Netkraft Tecnologia de Redes
    [email protected]

    Fontes de Pesquisa:

    Meu Dia-a-Dia.

  4. #4
    wellyngton
    Visitante

    Padrão Firewall

    OK...


    Mas uma dúvida com aquele meu firewall tem como liberar as portas mencionadas e acesso aos outro itens?


    Obrigado