+ Responder ao Tópico



  1. #1

    Exclamation Ajuda com script firewall/squid - Rede sem restricao mas segura!

    aqui eu uso fedora 10, rodando:
    squid (Version 3.0.stable13) como proxy/webcache
    dhcp (MACxIP)

    tenho o seguinte cenario, uma rede onde nao posso barrar nada (skype, msn, hotmail, acesso a web, etc).
    mas tenho que encontrar um meio de aumentar a seguranca do servidor ou/e ate mesmo dos usuarios (ataques).

    esse eh o firewall atual que estou usando:
    ##############################################################################
    #Rede Interna= eth0
    #Internet= eth1

    ifup eth0
    ifup eth1
    service dhcpd restart
    service squid start
    echo "Iniciando Interfaces de Rede...............................[ OK ]"

    # # carregando modulos
    modprobe iptable_nat
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ipt_MASQUERADE
    modprobe ipt_MARK
    modprobe ipt_mark
    modprobe ipt_mac
    modprobe ipt_tos
    modprobe iptable_mangle

    # # limpando regras
    iptables -F
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle

    # # Determina a politica
    iptables -t filter -P INPUT ACCEPT
    iptables -t filter -P FORWARD ACCEPT
    iptables -t filter -P OUTPUT ACCEPT
    iptables -t nat -P PREROUTING ACCEPT
    iptables -t nat -P POSTROUTING ACCEPT
    iptables -t nat -P OUTPUT ACCEPT
    iptables -t mangle -P PREROUTING ACCEPT
    iptables -t mangle -P POSTROUTING ACCEPT
    iptables -t mangle -P OUTPUT ACCEPT
    iptables -t mangle -P INPUT ACCEPT
    iptables -t mangle -P FORWARD ACCEPT

    # # Aceita os pacotes que realmente devem entrar
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # # Aceita todo o trafego vndo do loopback e indo para o loopback
    iptables -t filter -A INPUT -i lo -j ACCEPT

    # # Protecoes # # # #
    # 1> Protecao contra IP spoofing
    # 2> Protege contra synflood
    # 3> Protecao contra icmp Broadcasting
    # 4> Bloqueia tracerout
    # 5> Protecao contra Dos
    # 6> Protecao diversa contra portscanners, ping of death, ataque DOS, etc.
    echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    iptables -A INPUT -p udp --dport 33435:33525 -j DROP
    iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
    iptables -A INPUT -m state --state INVALID -j DROP

    # Outras protecoes
    # Impedimos que um atacante possa maliciosamente alterar alguma rota, e
    # Impossibilita que o atacante determine o "caminho" que o pacote vai percorrer (roteadores) ate seu destino
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
    # # Fim Protecoes # # # #

    # # Proxy Transpatent
    iptables -t nat -A PREROUTING -s 172.167.0.0/24 -p tcp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i 172.167.0.0/24 -p udp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3128

    # # Ativa roteamento no kernel
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
    echo 1 > /proc/sys/net/ipv4/ip_dynaddr

    # #SSH
    iptables -A INPUT -p tcp --dport 2210 --syn -j ACCEPT

    # # Bandlimit
    bandlimit restart

    # # Fecha o resto
    #iptables -A INPUT -p tcp --syn -j DROP
    #iptables -A INPUT -j DROP
    #iptables -A FORWARD -j DROP
    ###############################################################################

    se eu altero as politicas padrao, e adiciono algum drop, minha rede nao navega
    se no final eu fecho a resto, minha rede tbm nao navega.

    1 questao >mas afinal, o que posso fazer para incrementar esse firewall, de modo que nao barre nada na navegacao da rede interna, mas tenha um pouco de seguranca referente a ataques ou acesso nao autorizado externo?


    Segue meu squid
    ###############################################################################
    http_port 192.168.70.1:3128 transparent
    icp_port 0
    htcp_port 0

    hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin \?
    no_cache deny QUERY

    cache_mem 256 MB
    cache_swap_low 80
    cache_swap_high 85
    maximum_object_size 64 MB
    minimum_object_size 0 KB
    maximum_object_size_in_memory 128 KB
    ipcache_size 3072
    ipcache_low 90
    ipcache_high 93

    cache_replacement_policy heap LFUDA
    memory_replacement_policy heap GDSF

    cache_dir ufs /var/spool/squid/cache1 2048 16 64
    cache_dir ufs /var/spool/squid/cache2 2048 16 64
    cache_dir ufs /var/spool/squid/cache3 2048 16 64
    cache_dir ufs /var/spool/squid/cache4 2048 16 64
    cache_dir ufs /var/spool/squid/cache5 2048 16 64

    cache_access_log /var/log/squid/access.log
    cache_log /var/log/squid/cache.log
    cache_store_log none

    dns_nameservers 201.10.128.2
    dns_nameservers 201.10.120.3

    auth_param basic children 5
    auth_param basic realm Squid proxy-caching web server
    auth_param basic credentialsttl 2 hours
    auth_param basic casesensitive off

    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern (cgi-bin|\?) 0 0% 0
    refresh_pattern . 0 20% 4320

    quick_abort_min 0 KB
    quick_abort_max 0 KB
    quick_abort_pct 100

    negative_ttl 3 minutes

    positive_dns_ttl 5 minutes
    half_closed_clients off

    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl to_localhost dst 127.0.0.0/8
    acl BADPORTS port 7 9 11 19 22 23 25 53 110 119 513 514 3128 8080
    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
    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 CONNECT method CONNECT

    # ---- Cache do Windows Update ----
    refresh_pattern au.download.windowsupdate.com/.*\.(cab|exe|msi) 10080 100% 43200 reload-into-ims
    refresh_pattern download.microsoft.com/.*\.(cab|exe|msi) 10080 100% 43200 reload-into-ims
    refresh_pattern msgruser.dlservice.microsoft.com/.*\.(cab|exe|msi) 10080 100% 43200 reload-into-ims
    refresh_pattern windowsupdate.com/.*\.(cab|exe|msi) 10080 100% 43200 reload-into-ims
    refresh_pattern www.microsoft.com/.*\.(cab|exe|msi) 10080 100% 43200 reload-into-ims

    ##nao esquecer de trocar a faixa de ip pela da sua rede
    acl rede src 192.168.70.0/255.255.255.0
    http_access allow localhost
    http_access allow rede

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

    http_access deny all
    #icp_access allow rede

    cache_effective_user squid
    cache_effective_group squid

    visible_hostname andrio.jasper
    memory_pools off
    forwarded_for off

    error_directory /usr/share/squid/errors/Portuguese
    strip_query_terms off
    coredump_dir none
    detect_broken_pconn on
    pipeline_prefetch on
    ################################################################################
    2 questao >nesse script, teria algo que poderia mudar?

    3 questao> outra coisa que pensei em implementar na rede, seria vlan para cada usuario, mas nao sei como faco isso, alguem ai poderia me ajudar?

  2. #2

    Padrão

    ao que diz respeito a segurança (ataques )
    voce pode instalar o snort

    a respeito da vlan...
    so se a sua estrutura de rede for grande mesmo...
    e acho que nem seria por motivos de segurança e sim desempenho.
    por favor, me corrijam se eu estiver errado.

    boa sorte...

  3. #3

    Padrão

    Tu usa criptografia?

    Pensa numa criptografia mas consistente como WPA2 + radius.

  4. #4

    Padrão

    IMHO, deixar as politicas todas como ACCEPT é pedir pra ter problemas. Eu normalmente deixo as politicas como DROP e depois faço ACCEPT apenas para as portas/serviços que realmente serão utilizadas.
    Isso (naturalmente) implica em que vc terá que procurar saber TODAS as portas/serviços fluindo na sua rede.

    bom divertimento

  5. #5

    Padrão

    se eu dou drop nas politicas la em cima, minha rede nao navega...
    se eu dou drop na ultima regra, minha rede nao navega...
    o que eu precisaria, eh uma regra que nao barre nada na rede, mas dificulta o acesso externo/nao autorizado, ataques e/ou ate mesmo trojans.
    o q poderia mudar nesse script iptables??
    poderia me ajudar?


    referente a vlan, a rede abrange 90 usuarios.
    queria saber como fazer a vlan para cada usuario...
    com a vlan, alem da questao de desempenho, tbm afetaria a seguranca dos usuarios (propriamente dizendo). ja que um usuario nao iria receber pacote de outro usuario (virus, etc).

    referente ao squid, o q acharam do config?
    Última edição por AndrioPJ; 09-03-2009 às 10:20.

  6. #6

    Padrão

    o fato da sua rede parar com a politica DROP indica que suas regras seguintes estão incorretas/inadequadas. Implica que vc tem que analizar QUAIS os serviços/protocolos tem que ser liberados (estou me repetindo, pelo visto, mas é que vc não entendeu ainda o conceito). Tenho várias redes funcionando desse modo, o conceito é:

    BLOQUEIA-SE TUDO
    libera-se portas e serviços que são necessários.

    alguns trechos de firewall que tenho funcionando:
    #!/bin/bash

    start(){
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    [...] até aqui vc vê que não estou mentindo pra vc

    ## Servidores Windows

    iptables -N Dmz

    iptables -A Dmz -p tcp -d 128.0.11.2 --dport 82 -j ACCEPT
    [...] observe que há um accept para maquina/porta

    ## Msn liberados
    iptables -N Libera-Msn
    iptables -A Libera-Msn -p tcp -s 128.0.1.1 -d 207.46.0.0/16 --dport 1863 \
    -j ACCEPT
    iptables -A Libera-Msn -p tcp -s 128.0.1.1 -d 65.52.0.0/14 --dport 443 \
    -j ACCEPT
    [...]
    nesses casos, foram criadas 'chains' especificas mas não é imprescindivel.

    sugiro analisar os vários exemplos que vc pode encontrar aqui mesmo no under e no VOL

  7. #7

    Padrão

    achei um script bem interessante no vol (ele dropa praticamente tudo, e libera trafego para a rede interna, pelo que eu entendi), mais tarde vou testa-lo e digo aqui se funcionou!

    e referente ao squid.conf, o que acharam?
    tem algo errado ou ta bom ele?

  8. #8

    Padrão

    consegui, agora meu firewal esta com drop (dei uma olhada em 3 outras regras, acrescentei algumas regras de seguranca, e fiz alguns comentarios) da uma olhada se ficou bom:

    ############################################################
    # Andrio Jasper #
    # Rede Interna= eth0 (172.167.0.0)
    # Internet= eth1

    # Garantimos que a placa de rede, dhcp e squid ira iniciar!
    ifup eth0
    ifup eth1
    service dhcpd restart
    service squid start
    echo "Iniciando Interfaces de Rede...............................[ OK ]"

    # # carregando modulos
    modprobe iptable_nat
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ipt_MASQUERADE
    modprobe ipt_MARK
    modprobe ipt_mark
    modprobe ipt_mac
    modprobe ipt_tos
    modprobe iptable_mangle
    echo "Carregando modulos.........................................[ OK ]"

    # # limpando regras
    iptables -F
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle
    echo "Limpando Regras............................................[ OK ]"

    # Definindo a Politica Default das Cadeias
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP
    echo "Alterando Politica Padrao..................................[ OK ]"

    # # Protecoes # # # #
    # 1> Protecao contra IP spoofing
    # 2> Protege contra synflood
    # 3> Protecao contra icmp Broadcasting
    # 4> Bloqueia tracerout
    # 5> Protecao contra Dos
    # 6> Protecao diversa contra portscanners, ping of death, ataque DOS, etc.
    echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    iptables -A INPUT -p udp --dport 33435:33525 -j DROP
    iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
    iptables -A INPUT -m state --state INVALID -j DROP

    # Bloquear Back Orifice:
    iptables -A INPUT -p tcp --dport 31337 -j DROP
    iptables -A INPUT -p udp --dport 31337 -j DROP

    # Bloquear NetBus:
    iptables -A INPUT -p tcp --dport 12345:12346 -j DROP
    iptables -A INPUT -p udp --dport 12345:12346 -j DROP

    # Outras protecoes
    # Impedimos que um atacante possa maliciosamente alterar alguma rota, e
    # Impossibilita que o atacante determine o "caminho" que o pacote vai percorrer (roteadores) ate seu destino
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
    # # Fim Protecoes # # # #
    echo "Carregando Protecoes de Seguranca..........................[ OK ]"

    # o computador com o seguinte ip nao passara pelo proxy squid
    #iptables -t nat -A PREROUTING -i eth1 -s 172.167.0.13 -p tcp -m tcp -j ACCEPT

    # Todo o trafego que nao seja para conectividade social, Redireciona a porta 80 para 3128 (squid)
    iptables -t nat -A PREROUTING -s 172.167.0.0/24 -p tcp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i 172.167.0.0/24 -p udp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3128

    #Habilitando o trafego IP Entre as Placas de Rede
    #Roteamento no Kernel
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
    echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
    echo 1 > /proc/sys/net/ipv4/ip_dynaddr
    echo "Ativando Roteamento........................................[ OK ]"

    # # Agora, Iremos definir o que pode passar e o que nao pode
    # Tabela de Entrada. Esta Tabela, so vale para o proprio host
    # Qualquer pacote IP que venha do localhost, Ok.
    iptables -A INPUT -i lo -j ACCEPT

    # REDE INTERNA LIBERADA
    iptables -A INPUT -i eth1 -j ACCEPT

    #SSH
    iptables -A INPUT -p tcp --dport 2210 --syn -j ACCEPT

    # No iptables, temos de dizer quais sockets sao validos em uma conexao
    iptables -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

    # # Tabela de Reenvio (FORWARD)
    # Primeiro, ativaremos o mascaramento (nat).
    iptables -t nat -F POSTROUTING
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

    # Agora dizemos quem e o que podem acessar externamente
    # No iptables, o controle do acesso a rede externa e feito na cadeia "FORWARD"
    # REDE INTERNA LIBERADA
    iptables -A FORWARD -i eth0 -j ACCEPT

    # No iptables, temos de dizer quais sockets sao validos em uma conexao
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    # # Bandlimit
    bandlimit restart
    echo "Iniciando Bandlimit........................................[ OK ]"

    # # Fecha o resto
    #iptables -A INPUT -p tcp --syn -j DROP
    #iptables -A INPUT -j DROP
    #iptables -A FORWARD -j DROP
    ############################################################

    e agora, como ficou? tem alguma coisa que precisa ser alterada?


    ainda tou atras para saber sobre a vlan, como implementar, alguem ai poderia ajudar?
    na rede tem 90 usuarios (cabeados, edificio), faixa da rede 172.167.0.0
    como faria para separa-los atraves da vlan???