+ Responder ao Tópico



  1. #1

    Padrão Dúvidas com Squid + iptables

    Olá,

    estou configurando um servidor com firewall, gateway e proxy 2.6, com Debian Etch 4.0 no seguinte esquema:

    a conexão é por rádio, q é recebida por um modem e sai pro switch, o servidor, com duas placas de rede, está configurado para fazer o roteamento, a configuração do meu squid.conf é essa:

    ----------------------------------
    http_port 3128 transparent
    visible_hostname debiangate

    # Configuração do cache
    cache_mem 32 MB
    maximum_object_size_in_memory 64 KB
    maximum_object_size 512 MB
    minimum_object_size 0 KB
    cache_swap_low 90
    cache_swap_high 95
    cache_dir ufs /var/spool/squid 2048 16 256

    # Localização do log de acessos do Squid
    cache_access_log /var/log/squid/access.log

    refresh_pattern ^ftp: 15 20% 2280
    refresh_pattern ^gopher: 15 0% 2280
    refresh_pattern . 15 20% 2280

    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl Safe_ports port 901 # SWAT
    acl purge method PURGE
    acl CONNECT method CONNECT

    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports

    # Filtros por palavras e por dominios
    acl proibidos dstdom_regex "/etc/squid/proibidos"
    http_access deny proibidos
    acl bloqueados dstdomain orkut.com orkut - Login playboy.abril.com.br
    http_access deny bloqueados

    # Libera para a rede local
    acl redelocal src 192.168.0.0/24
    http_access allow localhost
    http_access allow redelocal

    # Bloqueia acessos externos
    http_access deny all

    -----------------------------------

    e do meu firewall, essa:

    -----------------------------------
    #!/bin/bash
    iniciar(){
    # Compartilha a conexão
    modprobe iptable_nat
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
    echo "Compartilhamento ativado"
    # Proxy transparente
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    #iptables -A -t nat PREROUTING -p tcp -s 192.168.0.0/24 --dport 80 -j REDIRECT --to-port 3128
    echo "Proxy transparente ativado"
    # As regras de firewall que vimos há pouco:
    iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
    echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
    ------>iptables -A FORWARD -m unclean -j DROP<----------------
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -p tcp --syn -j DROP
    }
    parar(){
    iptables -F
    iptables -t nat -F
    echo "Regras de firewall e compartilhamento desativados"
    }
    case "$1" in
    "start") iniciar ;;
    "stop") parar ;;
    "restart") parar; iniciar ;;
    *) echo "Use os parâmetros start ou stop"
    esac
    -------------------------------------------------------

    1º - O proxy apesar de ser transparente, as vezes bloqueia e as vezes não, seja dominios ou palavras q estejão no arquivo proibidos, tem alguma coisa errada?

    2º - no firewall, quando vou starta-lo, acusa erro na linha acima destacada, não lembro a mensagem de erro, pois estou em casa, e outra, quando utilizo o nmap em vez de retornar:

    # nmap -sS -v 192.168.0.4
    Starting nmap 3.50 ( Nmap - Free Security Scanner For Network Exploration & Security Audits. ) at 2004-04-03 10:12 BRT
    Host 192.168.0.4 appears to be down, skipping it.
    Note: Host seems down. If it is really up, but blocking our ping probes, try -P0
    Nmap run completed -- 1 IP address (0 hosts up) scanned in 12.053 seconds

    ele retorna são as portas q estão abertas, pq?

    Obrigado

  2. #2

    Padrão

    Opa blz, vamos por partes ...

    se vc quer bloquer por palavras vc usa assim:

    acl block_redelocal url_regex -i "/etc/squid/bloqueados/block.txt"

    se for domínio:

    acl sites_liberados dstdomain "/etc/squid/bloqueados/dominios_liberados.txt"

    no seu firewall:

    vc usa :

    /sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

    ou

    /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    ou

    /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

    os três dizem " praticamente a mesma coisa ".

    qualquer duvida posta ai ...

    Falow ...

  3. #3

    Padrão

    Oi, rootmaster,

    Primeiramente obrigado pela rápida ajuda, sobre o proxy vou testar amanhã, no firewall a linha q tá acusando erro quando vou startar o serviço é:

    iptables -A FORWARD -m unclean -j DROP

    mas como falei, não lembro bem a mensagem de erro, mas é como se a sintaxe estivesse errada ou faltando alguma coisa!!

    Obrigado

  4. #4

    Padrão Unclean

    Então fajo, dei uma pequena pesquisada na net e ví uma resposta de um fórum onde o amigo com a mesma dúvida que a sua dizia que parece que no kernel 2.6 o unclean foi retirado. Então, não tem unclean nos kernels 2.6 para frente.

  5. #5

    Padrão

    Citação Postado originalmente por woclandiner Ver Post
    Então fajo, dei uma pequena pesquisada na net e ví uma resposta de um fórum onde o amigo com a mesma dúvida que a sua dizia que parece que no kernel 2.6 o unclean foi retirado. Então, não tem unclean nos kernels 2.6 para frente.
    Bom, até onde sei, essa linha com o unclean, serve para proteger contra todos os pacotes danificados e ou suspeitos, se foi retirado no kernel 2.6, será q não tem um substituto?

  6. #6

    Wink Unclean

    Então fajo, realmente o unclean foi retirado do kernel 2.6. Não sou tão bom assim em inglês mas pelo que eu pude entender os desenvolvedores acharam que os usuários estavam usando essa funcionalidade sem entender realmente as implicações, incluindo as adversas. Dá uma olhada nesses links que vou postar. No primeiro, Harald Welte explica que retirou o unclean e por que o fez no kernel 2.6, e como eu não sabia as credenciais dele, fiz uma busca na internet e parece que ele é desenvolvedor do kernel e trabalha com o projeto netfilter/iptables, o que você poderá ver no segundo link. Não sei se há substituto para o unclean. Em um fórum, ví um cara dizer que não há mais essa necessidade no k2.6. Mas não posso afirmar com certeza por que não sei o por quê. Vê o que consegue entender no post do Harald Welte. Espero ter contribuído um pouco. Até mais.

    Post do Harald:
    https://lists.netfilter.org/pipermai...st/012199.html

    Quem é Harald:
    Harald Welte - Wikipedia, the free encyclopedia

  7. #7

  8. #8

    Smile

    Que bom que ajudei, precisando estamos aí. Olha, acabei de encontrar aqui mesmo no fórum algo que deve ser bem interessante a respeito do unclean, acho que o PSY já sabia do que te falei e parece que mostra uma alternativa.

    https://under-linux.org/forums/proxy...d-unclean.html

    Qualquer coisa estamos aí !!! Até mais !!!

  9. #9

    Padrão

    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 443 563 # https, snews
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl Safe_ports port 901 # SWAT
    acl purge method PURGE
    acl CONNECT method CONNECT
    acl redelocal src 192.168.0.0/24
    acl sites_proibidos dstdomain "/etc/squid/sites"
    acl palavras_proibidas url_regex -i "/etc/squid/palavras"

    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow redelocal
    http_access deny proibidos
    http_access deny bloqueados
    http_access allow localhost
    http_access deny all

    #!/bin/bash
    iniciar(){

    #Carregando modulos necessarios
    modprobe iptable_nat

    #Ativa Roteamento via kernel
    echo 1 > /proc/sys/net/ipv4/ip_forward

    # Zerando as chains existentes
    iptables -F
    iptables -X
    iptables -F -t nat
    iptables -X -t nat

    # Definindo política padrão
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT

    # Permissões de acesso ao firewall
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Abrindo algumas portas
    iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

    # Compartilha a conexao
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    #Redirecionando algumas portas
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

    #Bloqueando POrtScanners
    iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
    iptables -A FORWARD -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
    iptables -A FORWARD -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
    iptables -A FORWARD -p tcp --tcp-flags ALL ALL -j DROP
    iptables -A FORWARD -p tcp --tcp-flags ALL FIN -j DROP
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
    iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
    iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP

    # Fechando o resto
    iptables -A INPUT -j DROP
    iptables -A FORWARD -j DROP

    }
    parar(){
    iptables -F
    iptables -t nat -F
    echo "Regras de firewall e compartilhamento desativados"
    }
    case "$1" in
    "start") iniciar ;;
    "stop") parar ;;
    "restart") parar; iniciar ;;
    *) echo "Use os parâmetros start ou stop"
    esac


    Mais seguro e mais organizado.


    Abraçao

  10. #10

    Padrão

    O que você deve fazer tambem e adicionar http_port iporta e criar uma regra no iptables dizendo que tudo que vem de 0/0(internet) com destino a porta 3128 a politica sera DROP. Em relação ao bloqueio de sites e palavras e como o amigo acima citou, ja escrevi um artigo sobre isso como bloquear sites e palavras com squid, acho que tem aqui no site tambem.

    Usando assim vc ainda consegue acrescentar um pouco mais de segurança, evita de terceiros usarem o seu proxy, evita o acesso do mundo esterno, evita que os port scanner da vida funcionem, e nao libera pra ninguem pingar o seu servidor !!!


    Abração