+ Responder ao Tópico



  1. #1
    chvt
    Visitante

    Padrão script para iptables

    As minhas regras que estão no diretório: /etc/rc.d/rc.local:

    /bin/echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
    iptables -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP
    iptables -A INPUT -p icmp -j DROP
    iptables -A INPUT -m unclean -j DROP
    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j DROP
    iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
    iptables -A INPUT -m state -p icmp --state INVALID -j REJECT
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A INPUT -p tcp ! --syn -m state --state NEW -j REJECT
    iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j DROP
    iptables -A INPUT -p tcp --dport 11 -j DROP
    iptables -A INPUT -p tcp --dport 13 -j DROP
    iptables -A INPUT -p tcp --dport 19 -j DROP
    iptables -A INPUT -p tcp --dport 22 -j DROP
    iptables -A INPUT -p tcp --dport 23 -j DROP
    iptables -A INPUT -p tcp --dport 37 -j DROP
    iptables -A INPUT -p tcp --dport 79 -j DROP
    iptables -A INPUT -p tcp --dport 107 -j DROP
    iptables -A INPUT -p tcp --dport 113 -j DROP
    iptables -A INPUT -p tcp --dport 389 -j DROP
    iptables -A INPUT -p tcp --dport 469 -j DROP
    iptables -A INPUT -p tcp --dport 513 -j DROP
    iptables -A INPUT -p tcp --dport 514 -j DROP
    iptables -A INPUT -p tcp --dport 517 -j DROP
    iptables -A INPUT -p tcp --dport 518 -j DROP
    iptables -A INPUT -p udp --dport 11 -j DROP
    iptables -A INPUT -p udp --dport 13 -j DROP
    iptables -A INPUT -p udp --dport 19 -j DROP
    iptables -A INPUT -p udp --dport 22 -j DROP
    iptables -A INPUT -p udp --dport 23 -j DROP
    iptables -A INPUT -p udp --dport 37 -j DROP
    iptables -A INPUT -p udp --dport 79 -j DROP
    iptables -A INPUT -p udp --dport 107 -j DROP
    iptables -A INPUT -p udp --dport 113 -j DROP
    iptables -A INPUT -p udp --dport 389 -j DROP
    iptables -A INPUT -p udp --dport 469 -j DROP
    iptables -A INPUT -p udp --dport 517 -j DROP
    iptables -A INPUT -p udp --dport 518 -j DROP

    Como eu nunca fiz um script, também nunca liguei para isso, agora eu estou querendo criar um script Estou querendo criar um rc.firewall no diretório: /etc/rc.d/ e depois torna-lo executável, mas para isso eu preciso de um script para o iptables. Então, a minha dúvida é a seguinte: Como ficaria um script com as regras que eu citei acima :?:

  2. #2
    wrochal
    Visitante

    Padrão script para iptables

    Caro CHVT,

    Exemplo de um script para seu firewall, localizado /etc/rc.d/rc.firewall

    Código :
    #!/bin/sh
    #
    # chkconfig: 2345 83 83 83 83
    # description: Firewall
    # para todos os terminais.
     
    iptables=/usr/sbin/iptables
     
    /bin/echo "1" > /proc/sys/net/ipv4/tcp_syncookies 
    /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all 
    $iptables -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP 
    $iptables -A INPUT -p icmp -j DROP 
    $iptables -A INPUT -m unclean -j DROP 
    $iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j DROP 
    $iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT 
    $iptables -A INPUT -m state -p icmp --state INVALID -j REJECT 
    $iptables -A INPUT -m state --state INVALID -j DROP 
    $iptables -A INPUT -p tcp ! --syn -m state --state NEW -j REJECT 
    $iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j DROP 
    $iptables -A INPUT -p tcp --dport 11 -j DROP 
    $iptables -A INPUT -p tcp --dport 13 -j DROP 
    $iptables -A INPUT -p tcp --dport 19 -j DROP 
    $iptables -A INPUT -p tcp --dport 22 -j DROP 
    $iptables -A INPUT -p tcp --dport 23 -j DROP 
    $iptables -A INPUT -p tcp --dport 37 -j DROP 
    $iptables -A INPUT -p tcp --dport 79 -j DROP 
    $iptables -A INPUT -p tcp --dport 107 -j DROP 
    $iptables -A INPUT -p tcp --dport 113 -j DROP 
    $iptables -A INPUT -p tcp --dport 389 -j DROP 
    $iptables -A INPUT -p tcp --dport 469 -j DROP 
    $iptables -A INPUT -p tcp --dport 513 -j DROP 
    $iptables -A INPUT -p tcp --dport 514 -j DROP 
    $iptables -A INPUT -p tcp --dport 517 -j DROP 
    $iptables -A INPUT -p tcp --dport 518 -j DROP 
    $iptables -A INPUT -p udp --dport 11 -j DROP 
    $iptables -A INPUT -p udp --dport 13 -j DROP 
    $iptables -A INPUT -p udp --dport 19 -j DROP 
    $iptables -A INPUT -p udp --dport 22 -j DROP 
    $iptables -A INPUT -p udp --dport 23 -j DROP 
    $iptables -A INPUT -p udp --dport 37 -j DROP 
    $iptables -A INPUT -p udp --dport 79 -j DROP 
    $iptables -A INPUT -p udp --dport 107 -j DROP 
    $iptables -A INPUT -p udp --dport 113 -j DROP 
    $iptables -A INPUT -p udp --dport 389 -j DROP 
    $iptables -A INPUT -p udp --dport 469 -j DROP 
    $iptables -A INPUT -p udp --dport 517 -j DROP 
    $iptables -A INPUT -p udp --dport 518 -j DROP

    O valor 83 foi usado por nenhum motivo importante, poderia ser um valor diferente. Digamos que esse valor define a prioridade de execução, quanto menor é o valor mais rápido esse será executado na inicialização do sistema.

    Listando todos os serviços
    # chkconfig --list

    Adicionando o serviço firewall
    # chkconfig --add firewall

    Excluindo o serviço firewall
    # chkconfig --del firewall

    Adicionando o serviço numlock com vários níveis de execução
    # chkconfig --level 2345 firewall on

    Agora dizem que você pode colocar o script no /etc/rc.d/rc.firewall

    # chmod +x /etc/rc.d/rc.firewall

    # initcfg

    e habilite.

    Falou, :!:

  3. #3
    chvt
    Visitante

    Padrão script para iptables

    Não é esse tipo de script que eu quero, quero um script que informe para que serve cada regra.

  4. #4

    Padrão script para iptables

    ick nao existe assim q eu sabia, o q vc pode fazer eh um usar um script q gere q talvez venha comentado. mas nao ajuda em muito afinal voce tem q entender o q eh cada regra...

    sigh

    man iptables

  5. #5
    chvt
    Visitante

    Padrão script para iptables

    mistymst,

    Além desse script que vou mostrar abaixo, quero que antes de cada regra, tenha uma descrição informando para que serve cada regra...

    #!/bin/bash
    #scipt bla bla bla....
    /bin/echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
    iptables -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP
    iptables -A INPUT -p icmp -j DROP
    iptables -A INPUT -m unclean -j DROP
    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j DROP
    iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
    iptables -A INPUT -m state -p icmp --state INVALID -j REJECT
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A INPUT -p tcp ! --syn -m state --state NEW -j REJECT
    iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j DROP
    iptables -A INPUT -p tcp --dport 11 -j DROP
    iptables -A INPUT -p tcp --dport 13 -j DROP
    iptables -A INPUT -p tcp --dport 19 -j DROP
    iptables -A INPUT -p tcp --dport 22 -j DROP
    iptables -A INPUT -p tcp --dport 23 -j DROP
    iptables -A INPUT -p tcp --dport 37 -j DROP
    iptables -A INPUT -p tcp --dport 79 -j DROP
    iptables -A INPUT -p tcp --dport 107 -j DROP
    iptables -A INPUT -p tcp --dport 113 -j DROP
    iptables -A INPUT -p tcp --dport 389 -j DROP
    iptables -A INPUT -p tcp --dport 469 -j DROP
    iptables -A INPUT -p tcp --dport 513 -j DROP
    iptables -A INPUT -p tcp --dport 514 -j DROP
    iptables -A INPUT -p tcp --dport 517 -j DROP
    iptables -A INPUT -p tcp --dport 518 -j DROP
    iptables -A INPUT -p udp --dport 11 -j DROP
    iptables -A INPUT -p udp --dport 13 -j DROP
    iptables -A INPUT -p udp --dport 19 -j DROP
    iptables -A INPUT -p udp --dport 22 -j DROP
    iptables -A INPUT -p udp --dport 23 -j DROP
    iptables -A INPUT -p udp --dport 37 -j DROP
    iptables -A INPUT -p udp --dport 79 -j DROP
    iptables -A INPUT -p udp --dport 107 -j DROP
    iptables -A INPUT -p udp --dport 113 -j DROP
    iptables -A INPUT -p udp --dport 389 -j DROP
    iptables -A INPUT -p udp --dport 469 -j DROP
    iptables -A INPUT -p udp --dport 517 -j DROP
    iptables -A INPUT -p udp --dport 518 -j DROP

  6. #6
    wrochal
    Visitante

    Padrão script para iptables

    Caro CHVT,

    Não entendi sua pergunta abaixo:

    Como eu nunca fiz um script, também nunca liguei para isso, agora eu estou querendo criar um script Estou querendo criar um rc.firewall no diretório: /etc/rc.d/ e depois torna-lo executável, mas para isso eu preciso de um script para o iptables. Então, a minha dúvida é a seguinte: Como ficaria um script com as regras que eu citei acima

    :?: :?: :?:

    Tem vários artigo que fala sobre as regras, sendo de bloqueio de portas, evitando resposta de icmp, e etc.....

    Na under tem artigos q tem todas as regras acima,

  7. #7
    chvt
    Visitante

    Padrão script para iptables

    Eu quero que meu script seja igual ao que vou colocar abaixo, mas em vez das regras do exemplo desse script, eu vou querer as minhas regras...

    #!/bin/sh
    # Modelo de configuração de firewall
    # Autor: Gleydson M. Silva
    # Data: 05/09/2001
    # Descrição: Produzido para ser distribuído livremente, acompanha o guia
    # Foca GNU/Linux. http://focalinux.cipsga.org.br
    #

    # É assumido um sistema usando kmod para carga automática dos módulos usados por
    # esta configuração do firewall:
    # ipt_filter
    # ipt_nat
    # ipt_conntrack
    # ipt_mangle
    # ipt_TOS
    # ipt_MASQUERADE
    # ipt_LOG

    # Se você tem um kernel modularizado que não utiliza o kmod, será necessário
    # carregar estes módulos via modprobe, insmod ou iptables --modprobe=modulo

    ##### Definição de Policiamento #####
    # 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 DROP
    # Tabela mangle
    iptables -t mangle -P PREROUTING ACCEPT
    iptables -t mangle -P OUTPUT ACCEPT


    ##### Proteção contra IP Spoofing #####
    for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 1 >$i
    done

    ##### Ativamos o redirecionamento de pacotes (requerido para NAT) #####
    echo "1" >/proc/sys/net/ipv4/ip_forward

    # O iptables define automaticamente o número máximo de conexões simultâneas
    # com base na memória do sistema. Para 32MB = 2048, 64MB = 4096, 128MB = 8192,
    # sendo que são usados 350 bytes de memória residente para controlar
    # cada conexão.
    # Quando este limite é excedido a seguinte mensagem é mostrada:
    # "ip_conntrack: maximum limit of XXX entries exceed"
    #
    # Como temos uma rede simples, vamos abaixar este limite. Por outro lado isto
    # criará uma certa limitação de tráfego para evitar a sobrecarga do servidor.
    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 e
    iptables -N ppp-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.1.0/24 -i eth0 -j ACCEPT

    # Conexões vindas da interface ppp0 são tratadas pelo chain ppp-input
    iptables -A INPUT -i ppp+ -j ppp-input

    # Qualquer outra conexão desconhecida é imediatamente registrada e derrubada
    iptables -A INPUT -j LOG --log-prefix "FIREWALL: INPUT "
    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.1.0/24 -i ppp+ -o eth0 -j ACCEPT
    iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -o ppp+ -j ACCEPT
    iptables -A FORWARD -j LOG --log-prefix "FIREWALL: FORWARD "
    iptables -A FORWARD -j DROP


    ##### Chain ppp-input ####
    # Aceitamos todas as mensagens icmp vindas de ppp0 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 ppp-input
    #
    iptables -A ppp-input -p icmp -m limit --limit 2/s -j ACCEPT

    # Primeiro aceitamos o tráfego vindo da Internet para o serviço www (porta 80)
    iptables -A ppp-input -p tcp --dport 80 -j ACCEPT

    # A tentativa de acesso externo a estes serviços serão registrados no syslog
    # do sistema e serão bloqueados pela última regra abaixo.
    iptables -A ppp-input -p tcp --dport 21 -j LOG --log-prefix "FIREWALL: ftp "
    iptables -A ppp-input -p tcp --dport 25 -j LOG --log-prefix "FIREWALL: smtp "
    iptables -A ppp-input -p udp --dport 53 -j LOG --log-prefix "FIREWALL: dns "
    iptables -A ppp-input -p tcp --dport 110 -j LOG --log-prefix "FIREWALL: pop3 "
    iptables -A ppp-input -p tcp --dport 113 -j LOG --log-prefix "FIREWALL: identd "
    iptables -A ppp-input -p udp --dport 111 -j LOG --log-prefix "FIREWALL: rpc"
    iptables -A ppp-input -p tcp --dport 111 -j LOG --log-prefix "FIREWALL: rpc"
    iptables -A ppp-input -p tcp --dport 137:139 -j LOG --log-prefix "FIREWALL: samba "
    iptables -A ppp-input -p udp --dport 137:139 -j LOG --log-prefix "FIREWALL: samba "
    # Bloqueia qualquer tentativa de nova conexão de fora para esta máquina
    iptables -A ppp-input -m state --state ! ESTABLISHED,RELATED -j LOG --log-prefix "FIREWALL: ppp-in "
    iptables -A ppp-input -m state --state ! ESTABLISHED,RELATED -j DROP
    # Qualquer outro tipo de tráfego é aceito
    iptables -A ppp-input -j ACCEPT


    #######################################################
    # Tabela nat #
    #######################################################

    ##### Chain POSTROUTING #####
    # Permite qualquer conexão vinda com destino a lo e rede local para eth0
    iptables -t nat -A POSTROUTING -o lo -j ACCEPT
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j ACCEPT

    # Não queremos que usuários tenham acesso direto a www e smtp da rede externa, o
    # squid e smtpd do firewall devem ser obrigatoriamente usados. Também registramos
    # as tentativas para monitorarmos qual máquina está tentando conectar-se diretamente.
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j LOG --log-prefix "FIREWALL: SNAT-www "
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j LOG --log-prefix "FIREWALL: SNAT-smtp "
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 25 -j DROP
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -p tcp --dport 80 -j DROP
    # É feito masquerading dos outros serviços da rede interna indo para a interface
    # ppp0
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -j MASQUERADE

    # Qualquer outra origem de tráfego desconhecida indo para eth0 (conexões vindas
    # de ppp+) são bloqueadas aqui
    iptables -t nat -A POSTROUTING -o eth0 -d 192.168.1.0/24 -j LOG --log-prefix "FIREWALL: SNAT unknown"
    iptables -t nat -A POSTROUTING -o eth0 -d 192.168.1.0/24 -j DROP
    # Quando iniciamos uma conexão ppp, obtermos um endereço classe A (10.x.x.x) e após
    # estabelecida a conexão real, este endereço é modificado. O tráfego indo para
    # a interface ppp não deverá ser bloqueado. Os bloqueios serão feitos no
    # chain INPUT da tabela filter
    iptables -t nat -A POSTROUTING -o ppp+ -j ACCEPT

    # Registra e bloqueia qualquer outro tipo de tráfego desconhecido
    iptables -t nat -A POSTROUTING -j LOG --log-prefix "FIREWALL: SNAT "
    iptables -t nat -A POSTROUTING -j DROP


    ###############################################
    # Tabela mangle #
    ###############################################

    ##### Chain OUTPUT #####
    # Define mínimo de espera para os serviços ftp, telnet, irc e DNS, isto
    # dará uma melhor sensação de conexão em tempo real e diminuirá o tempo
    # de espera para conexões que requerem resolução de nomes.
    iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 21 -j TOS --set-tos 0x10
    iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 23 -j TOS --set-tos 0x10
    iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 6665:6668 -j TOS --set-tos 0x10
    iptables -t mangle -A OUTPUT -o ppp+ -p udp --dport 53 -j TOS --set-tos 0x10

  8. #8

    Padrão script para iptables

    intao chvt, vc vai ter q ler cada regra do seu script e colocar o comentario acima de cada uma delas informando o que a mesma faz, depois é só dexa o script executavel e pronto.....mas pra que vc quer colocar os comentarios acima de cada linha?? só isso que eu ainda nao intendi... ops:

  9. #9
    chvt
    Visitante

    Padrão script para iptables

    É SDM, você tem razão, vou deixar o script sem comentários...

  10. #10
    wrochal
    Visitante

    Padrão script para iptables

    CHVT,

    Na boa, como vc coloca regras dessa sem saber o que é, ou vc sabe ou apenas queria deixar de forma mais fácil de analizar.?

    falou, :?: