+ Responder ao Tópico



  1. #1

    Talking Bloquear ping (ICMP echo) no iptables

    Gostaria de saber:

    Como faço para bloquear o ping(ICMP echo) no iptables?

  2. #2

    Padrão Re: Bloquear ping (ICMP echo) no iptables

    bem fera.. Sugiro que olhe o Firewall com IPTABLES - by Eriberto
    Ali vai te abri a cabeça... Tambem é bom olhar RFC: RFC 792 - Internet Control Message Protocol (RFC792)
    Na pagina 19. No sumário tu vai encontrar os tipos de ICMP..
    O que interessa é o 0 Echo Reply que é a resposta
    e o 8 que é o ICMP echo...

    então é só fazer um comando iptables... Num sabe como? Sabe aquela googlada??
    procurei por: icmp-type iptables no google e olha só
    segundo link: IPTables Example Config

    se der uma olhada ele faz pelo nome..
    mais da pra usar pelo código:


    iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j DROP

    Descrevendo:
    iptables - comando a ser executado(como root, não se esqueça)
    -A - adicionando regra
    INPUT - diz que a chain é de entrada do pacote
    -i eth0 - especifica a interface de entrada, no caso eth0, pode ser ppp0 tbm ou outra
    -p icmp - especifica o protocolo usado, no nosso caso icmp(Internet Control Message Protocol)
    --icmp-type 8 - o tipo do ICMP, no caso, 8 (ICMP Echo)
    -j DROP - manda descartar o pacote, para aceitar ACCEPT

    Resumindo: se entrar(INPUT) um pacote na eth0(-i) com ICMP(-p) echo(--icmp-type) (request), descarta ele(DROP)

    OBS: Não se bloqueia ICMP em rede viu? Nunca se enqueça isso, o que se pode é controlar como vc irá fazer.. Nada de bloquear tudo que é mensagem ICMP que tu vai zua a rede.. Pq? Exemplo: UDP usa ICMP para mensagens de erro..

    e outra.. estuda minino.. olha aquele link que te passei 4x, 5x.. até intende a coisa.. vale a pena.. sorte sua que eu to de bom humor.. num costumo explicar tão bem :P
    Gostou? Crica na estrelinha :P

    []'s

  3. #3

    Padrão Re: Bloquear ping (ICMP echo) no iptables

    Fiz esse comando no iptables e testei o Firewall, em um site que testa o Firewall e o comando não funcionou,ou seja ele não bloqueia o Ping(ICMP echo).

  4. #4

    Padrão Re: Bloquear ping (ICMP echo) no iptables

    Bloqueia sim pepe legal...
    Vc simplesmente colou o que eu escrevi??
    Le tudo que eu disse meu caro.. E olhe aquele documento que te mandei(link do Eriberto) antes de falar que nao funciona..
    Funcionar funciona.. É só fazer direito..

    1) O comando que te mandei é pra eth0, se tu usa outra para entrada não funciona.
    2) Se vc já tiver alguma regra antes dessa que diga ao contrário ou seja lá como estiver escrito teu firewall também pode não funcionar..
    3) Quer testar bem simples?? Na sua máquina linux faça ae:
    iptables -A INPUT -p icmp --icmp-type 8 -j DROP
    e tente pingar em localhost
    ping localhost
    4) Ainda ta com dificuldade? Poste seu iptables-save ae.. Não tenho bola de cristal para descobrir o que tem ou não tem ae.

  5. #5

    Padrão Re: Bloquear ping (ICMP echo) no iptables

    Esse meu script de iptables:

    #!/bin/bash
    #
    # Shell Script - Firewall
    # =======================
    # Autor:- CESAR AUGUSTUS SILVA
    # Email:- [email protected]
    #

    # IP da Rede
    NETWORK=201.67.244.142

    # Interface da Rede Local - LAN
    ILAN=eth0

    # Interface da Rede Externa - Internet
    INET=ppp0

    IPT=/sbin/iptables

    /sbin/modprobe iptable_filter
    /sbin/modprobe iptable_nat
    /sbin/modprobe iptable_mangle
    /sbin/modprobe ipt_LOG
    /sbin/modprobe ipt_REDIRECT
    /sbin/modprobe ipt_MASQUERADE

    INTERNET () {
    # Mascaramento
    $IPT -t nat -A POSTROUTING -o $INET -s $NETWORK -j MASQUERADE

    # Ativando o redirecionamento de pacotes
    echo 1 > /proc/sys/net/ipv4/ip_forward
    }

    LIMPAR () {
    # Removendo regras
    $IPT -F
    $IPT -t nat -F
    $IPT -t mangle -F

    # Apagando chains
    $IPT -X
    $IPT -t nat -X
    $IPT -t mangle -X

    # Zerando contadores
    $IPT -Z
    $IPT -t nat -Z
    $IPT -t mangle -Z
    }

    PARAR () {
    # Limpando regras
    LIMPAR

    # Política Padrão
    $IPT -P INPUT ACCEPT
    $IPT -P OUTPUT ACCEPT
    $IPT -P FORWARD ACCEPT

    # Compartilhando a Internet
    INTERNET
    }

    INICIAR () {
    # Limpando regras
    LIMPAR

    # Política Padrão
    $IPT -P INPUT ACCEPT
    $IPT -P OUTPUT ACCEPT
    $IPT -P FORWARD ACCEPT

    # Compartilhando a Internet
    INTERNET

    ################### ATRIBUINDO SEGURANÇA ####################

    # Proteção para SYN Flood
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies

    # Rejeitar requisição de ICMP Echo destinado a Broadcasts e Multicasts
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

    # Ignorar Mensagens Falsas de icmp_error_responses
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

    for i in /proc/sys/net/ipv4/conf/*; do
    # Não Redirecionar Mensagens ICMP
    echo 0 > $i/accept_redirects

    # Proteção a Ataques IP Spoofing
    echo 0 > $i/accept_source_route

    # Permitir que Pacotes Forjados sejam logados pelo próprio kernel
    echo 1 > $i/log_martians

    # Verificar Endereço de Origem do Pacote (Proteção a Ataques IP Spoofing)
    echo 1 > $i/rp_filter
    done

    ############### ADICIONANDO REGRAS P/ SERVIDORES ################

    # Apache - Servidor Web
    $IPT -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

    # Apache TomCat - Servidor Web
    $IPT -A INPUT -p tcp --dport 8080 -j ACCEPT

    # Bind9 - Servidor DNS
    $IPT -A INPUT -p udp --dport 53 -j ACCEPT

    # DanGuardian - Servidor Proxy
    $IPT -A INPUT -i $ILAN -p tcp --dport 8080 -j ACCEPT

    # DHCP - Servidor DHCP
    $IPT -A INPUT -i $ILAN -p udp --sport 68 --dport 67 -j ACCEPT

    # IPP - Protocolo de Impressão na Internet
    $IPT -A INPUT -i $ILAN -p tcp --dport 631 -j ACCEPT
    $IPT -A INPUT -i $ILAN -p udp -m multiport --dports 138,631 -j ACCEPT

    # NFS - Servidor NFS
    $IPT -A INPUT -p tcp -m multiport --dports 111,2049,51049 -j ACCEPT
    $IPT -A INPUT -p udp -m multiport --dports 111,49176 -j ACCEPT

    # ProFTP - Servidor FTP
    $IPT -A INPUT -i $ILAN -p tcp --dport 21 -j ACCEPT
    $IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 49152:49162 -j ACCEPT

    # Postfix - Servidor de E-mail
    $IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 25,110 -j ACCEPT
    $IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 465,995 -j ACCEPT

    # PostgreSQL - Servidor Postgresql
    $IPT -A INPUT -i $ILAN -p tcp --dport 5432 -j ACCEPT

    # Samba - Serviços de Diretório da Microsoft
    $IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 445,139 -j ACCEPT
    $IPT -A INPUT -i $ILAN -p udp -m multiport --dports 137,138 -j ACCEPT

    # Squid - Servidor Proxy
    $IPT -A INPUT -i $ILAN -p tcp --dport 3128 -j ACCEPT

    # SSH - Servidor SSH
    $IPT -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 10 -j DROP
    $IPT -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
    $IPT -A INPUT -p tcp --dport 22 -j ACCEPT

    # VNC - Servidor de Acesso Remoto
    $IPT -A INPUT -p tcp --dport 5900 -j ACCEPT

    # Webmin - Gerenciador Web de Servidor
    $IPT -A INPUT -i $ILAN -p tcp --dport 10000 -j ACCEPT

    ############### ADICIONANDO REGRAS P/ SERVIÇOS ##################

    # DNS - Serviço de Nomes de Dominios
    $IPT -A FORWARD -o $INET -p udp -m multiport --dports 53,5353 -j ACCEPT

    # FTP - Protocolo de Transferência de Arquivo
    $IPT -A FORWARD -o $INET -p tcp --dport 21 -j ACCEPT

    # HTTP - Protocolo de Transferência de Hypertext
    $IPT -A FORWARD -o $INET -p tcp -m multiport --dports 80,8080 -j ACCEPT

    # HTTPS - Protocolo de Transferência de Hypertext Seguro
    $IPT -A FORWARD -o $INET -p tcp --dport 443 -j ACCEPT

    # MSNMS - Serviço de Mensageiro de Rede da Microsoft
    $IPT -A FORWARD -o $INET -p tcp -m multiport --dports 1863,7001 -j ACCEPT
    $IPT -A FORWARD -o $INET -p udp --dport 7001 -j ACCEPT

    # NTP - Protocolo para sincronização dos relógios
    $IPT -A FORWARD -o $INET -p udp --dport 123 -j ACCEPT

    # Ping
    $IPT -A FORWARD -p icmp --icmp-type 8 -j DROP

    # POP3 - Protocolo de Correio
    $IPT -A FORWARD -o $INET -p tcp --dport 110 -j ACCEPT

    # POP3S - Protocolo de Correio Seguro
    $IPT -A FORWARD -o $INET -p tcp --dport 995 -j ACCEPT

    # RDP - Protocolo de Área de Trabalho Remota
    $IPT -A FORWARD -o $INET -p tcp --dport 3389 -j ACCEPT

    # SSDP - Protocolo para Descoberta de Serviços Simples
    $IPT -A INPUT -i $ILAN -p udp --dport 1900 -j ACCEPT

    # SSH - Shell Seguro
    $IPT -A FORWARD -o $INET -p tcp --dport 22 -j ACCEPT

    # SMTP - Protocolo Simples para Transferência de Correio
    $IPT -A FORWARD -o $INET -p tcp --dport 25 -j ACCEPT

    # SSMTP - Protocolo Simples para Transferência de Correio Seguro
    $IPT -A FORWARD -o $INET -p tcp --dport 465 -j ACCEPT

    # TELNET
    $IPT -A FORWARD -o $ILAN --dport 23 -j ACCEPT

    # VNC - Computação em Rede Virtual
    $IPT -A FORWARD -o $ILAN -p tcp --dport 5900 -j ACCEPT

    # XMPP - Protocolo de Presença e Mensagens Extensiva
    $IPT -A FORWARD -o $INET -p tcp --dport 5222 -j ACCEPT

    # Manter Conexões Estabelecidas
    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Liberando o Tráfego na Interface loopback
    $IPT -A INPUT -i lo -j ACCEPT
    # Libera portas 80 (HTTP),443 (HTTPS) e 53 (DNS)
    $IPT -t filter -A FORWARD -s 201.67.244.142 -p tcp --dport 80 -j ACCEPT
    $IPT -t filter -A FORWARD -s 201.67.244.142 -p tcp --dport 443 -j ACCEPT
    $IPT -t filter -A FORWARD -s 201.67.244.142 -p udp --dport 53 -j ACCEPT
    # Bloqueia qualquer acesso
    $IPT -t filter -A FORWARD -s 201.67.244.142 -o eth0 -j DROP


    #Protecoes contra ataques
    $IPT -A INPUT -m state --state INVALID -j DROP
    #Proteção contra IP Spoofing
    $IPT -A INPUT -s 201.67.244.142 -i ext_face -j DROP
    $IPT -A INPUT -s 201.67.244.142 -i ext_face -j DROP
    $IPT -A INPUT -s 201.67.244.142 -i ext_face -j DROP
    #Proteção contra Syn-floods
    $IPT -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
    ############## Brute Force ############
    $IPT -A INPUT -p tcp --syn --dport 3394 -m recent --name sshattack --set
    $IPT -A INPUT -p tcp --dport 3394 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j LOG --log-prefix 'SSH REJECT: '
    $IPT -A INPUT -p tcp --dport 3394 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j REJECT --reject-with tcp-reset
    $IPT -A FORWARD -p tcp --syn --dport 3394 -m recent --name sshattack --set
    $IPT -A FORWARD -p tcp --dport 3394 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j LOG --log-prefix 'SSH REJECT: '
    $IPT -A FORWARD -p tcp --dport 3394 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j REJECT --reject-with tcp-reset
    # Proteção contra ssh brute force - criar um "rejeite-e-logue-SSH-brute-force"
    $IPT -N REJECT-SSSSH
    $IPT -A REJECT-SSSSH -j DROP -m recent --rcheck --name SSSSH --seconds 60 --hitcount 10
    $IPT -A REJECT-SSSSH -j LOG --log-prefix SSH-Bruteforce:
    $IPT -A REJECT-SSSSH -j REJECT -p tcp --reject-with tcp-reset
    $IPT -A REJECT-SSSSH -j REJECT
    # Bloqueando traceroute.
    $IPT -A INPUT -p udp -s 0/0 -i $ENT --dport 33435:33525 -j DROP
    #Bloqueando Multicast
    $IPT -A INPUT -s 224.0.0.0/8 -d 0/0 -j DROP
    $IPT -A INPUT -s 0/0 -d 224.0.0.0/8 -j DROP
    ########################## LOG ##########################

    $IPT -A INPUT -p tcp -m multiport ! --dports 0:1056 -j DROP
    $IPT -A INPUT -p udp -j DROP
    $IPT -A INPUT -p icmp -j DROP
    $IPT -A INPUT -m limit --limit 3/m --limit-burst 3 -j LOG --log-prefix "LOG-FW: "


    }

    case "$1" in
    start)
    echo " * Starting Firewall iptables"
    INICIAR
    ;;
    stop)
    echo " * Stopping Firewall iptables"
    PARAR
    ;;
    restart|reload)
    echo " * Reloading Firewall iptables"
    INICIAR
    ;;
    *)
    echo " * Usage: $0 {start|stop|restart|reload}"
    exit 1
    esac

    exit 0

  6. #6

    Padrão Re: Bloquear ping (ICMP echo) no iptables

    Bem olhando seu firewall fica mais fácil saber:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    # Ignorar Mensagens Falsas de icmp_error_responses
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
    $IPT -A FORWARD -p icmp --icmp-type 8 -j DROP
    $IPT -A INPUT -p icmp -j DROP

    Essas ae são as linhas referentes ao icmp..
    Primeiro erro, vc ta bloqueando tudo que é ICMP de entrada, isso não se faz.. Já falei.. Vc perde o controle da rede.. Isso na linha: $IPT -A INPUT -p icmp -j DROP
    Outro erro(ou quase dependendo do que vc quer), vc ta bloqueando ping FORWARD, resumindo.. maquina da sua rede que passar pelo firewall(esse pc onde tem o iptables) não vai pinga pra fora.. MAS, nada implica de ping entre máquinas da rede local, pois elas não passam pelo servidor. Se é isso que é o seu problema.. Máquinas ainda fazem ping entre sí isso, vc só vai conseguir bloquear se fazer mascaramento das redes, isto é, fazendo uma rede para cada pc..
    Outro detalhe, de nada adianta vc encher teu firewall com um monte de ACCEPT se tua politica default também é ACCEPT.. Pare e pense...

    []'s