+ Responder ao Tópico



  1. #1

    Padrão Como salvar uma regra ou script pra não perder na hora de reiniciar?

    boa tarde a todos, galera gostaria de uma dica de vocês sou iniciante linux gostaria de saber como faça pra salvar essa regra pra todas vez que o pc ligar ela carregar junto...

    "@root: iptalbes -A FORWARD -d www.facebook.com -j DROP"

    quando dou este comando pelo terminar funciona tranquilo mais todas as vezes que reinicio ele tem tenho que fazer de novo alguém poderia me dar uma dica?

  2. #2

    Padrão Re: Como salvar uma regra ou script pra não perder na hora de reiniciar?

    Citação Postado originalmente por Arthur Bernardes Ver Post
    Se você usa um conjunto de regras, pode criar um serviço de firewall, colocando-o em "/etc/init.d/" e colocando para iniciar durante o boot usando o "update-rc.d firewall defaults", ou então pode colocar esse comando para executar pelo "/etc/rc.local".
    obrigado pela resposta amigo mais já fiz isso e não foi possa estar fazendo algo errado pois sou iniciante em linux, estou usando o proxy transparente, por isso queria fazer essa regra pra bloquear o facebook já que o proxy transparente até onde eu li não faz.

  3. #3

    Padrão Re: Como salvar uma regra ou script pra não perder na hora de reiniciar?

    Citação Postado originalmente por Arthur Bernardes Ver Post
    O Proxy transparente não trata as requisições em HTTPS, somente HTTP!

    Uma boa tática é bloquear o Facebook pelo nome, usando o "dstdom_regex" e "url_regex", qual distro está usando?

    Produza um serviço de firewall, veja como está o meu aqui.

    Código :
    #!/bin/bash
     
    echo "Produzido por Arthur Bernardes (17)99199-1157"
     
     
    echo "Declarando variáveis"
     
     
    # Interface da Internet:
    ifinternet="eth1"
     
     
    # IP da Internet
    ip_internet="192.168.1.2"
     
     
    # Interface da rede local
    iflocal="eth0"
     
     
    # IP da Rede Local
    rede_local="172.16.0.0/24"
     
     
    # Portas à serem liberadas
    portas_liberadas="21,23,25,53,110,143,22,80,443,3128,3306,3389,5432,5900,9091"
     
     
    echo "Variáveis declaradas"
     
     
    #### Função "start" ####
     
     
    iniciar(){
     
     
    echo "Carregando módulos"
     
     
    modprobe ip_tables
    modprobe iptable_mangle
    modprobe iptable_nat
     
     
    echo "Módulos carregados"
     
     
    echo "Limpando regras"
     
     
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
    iptables -Z
    iptables -t nat -Z
    iptables -t mangle -Z
     
     
    echo "Regras limpas"
     
     
    echo "Definindo política padrão"
     
     
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
     
     
    echo "Política padrão definida"
     
     
    echo "Habilitando roteamento"
     
     
    echo 1 > /proc/sys/net/ipv4/ip_forward
     
     
    echo "Roteamento ativado"
     
     
    echo "Compartilhando internet"
     
     
    iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
     
     
    echo "Internet compartilhada"
     
     
    echo "Bloqueando IP's indesejados na rede"
     
     
    #iptables -A INPUT -i $iflocal -s 10.0.0.2 -j DROP
    #iptables -A FORWARD -i $iflocal -s 10.0.0.2 -j DROP
     
     
    echo "IP's indesejados bloqueados"
     
     
    echo "Manter conexões establecidas"
     
     
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
     
     
    echo "Negando pacotes inválidos"
     
     
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A FORWARD -m state --state INVALID -j DROP
     
     
    echo "Liberando portas"
     
     
    iptables -A INPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
    iptables -A FORWARD -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
    iptables -A OUTPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
    iptables -A INPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
    iptables -A FORWARD -m multiport -p udp --dport $portas_liberadas -j ACCEPT
    iptables -A OUTPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
     
     
    echo "Liberando tráfego"
     
     
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -i $iflocal -j ACCEPT
    iptables -A FORWARD -i lo -j ACCEPT
    iptables -A FORWARD -i $iflocal -j ACCEPT
     
     
    echo "Tráfego liberado"
     
     
    echo "Tráfego redirecionado"
     
     
    echo "Redirecionando tráfego para proxy transparente"
     
     
    #iptables -t nat -A PREROUTING -i $iflocal -p tcp --dport 80 -j REDIRECT --to-port 3128
    #iptables -t nat -A PREROUTING -i $iflocal -p udp --dport 80 -j REDIRECT --to-port 3128
     
     
    echo "Tráfego redirecionado para proxy transparente"
     
     
    }
     
     
    parar(){
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
    iptables -Z
    iptables -t nat -Z
    iptables -t mangle -Z
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    }
     
     
    status(){
    iptables -L -v -n
    }
     
     
    case "$1" in
    "start") iniciar ;;
    "stop") parar ;;
    "restart") parar; iniciar ;;
    "status") status;;
    *) echo "Use os parâmetros start ou stop"
    esac

    E veja meu "squid.conf":

    Código :
    http_port 3128visible_hostname Arthur
    cache_mem 350 MB
    cache_access_log /var/log/squid3/access.log
     
     
    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 22 # ssh
    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 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 Safe_ports port 1025-65535 # portas altas
    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
     
     
    auth_param basic realm Arthur
    auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/squid_passwd
    acl autenticados proxy_auth REQUIRED
     
     
    acl bloqueados dstdomain redtube.com
    http_access deny bloqueados
     
     
    acl palavrasproibidas dstdom_regex "/etc/squid3/palavrasproibidas"
    http_access deny palavrasproibidas
     
     
    acl url url_regex -i "/etc/squid3/palavrasproibidas"
    http_access deny url
     
     
    http_access allow autenticados
     
     
    acl redelocal src 10.0.0.0/23
    http_access allow localhost
    http_access allow redelocal
    http_access deny !redelocal
     
     
    http_access deny all

    Obs: Tenho um arquivo com as palavras proibidas, dentre elas o Facebook!
    obrigado mais uma vez por me responder estou usando o debian7, e como eu faço pra implementar esta regra de bloqueio por palavras nome aqui o usando proxy transparente pois tenho varios celulares tbm que usan skype watshapp etc....?

    - - - Atualizado - - -

    o meu esta com o squid o seu é squid3 né?

  4. #4

    Padrão Re: Como salvar uma regra ou script pra não perder na hora de reiniciar?

    Veja só como eu fiz, instalei o squid3 no meu debian7 fiz um arquivo firewall.sh dentro da pasta /etc/squid3/ ai dentro deste arquivo coloquei isso:
    #!/bin/bash

    echo "Produzido por Arthur Bernardes (17)99199-1157"


    echo "Declarando variáveis"


    # Interface da Internet:
    ifinternet="eth0"


    # IP da Internet
    ip_internet="192.168.100.249"


    # Interface da rede local
    iflocal="eth1"


    # IP da Rede Local
    rede_local="10.1.1.0/24"


    # Portas à serem liberadas
    portas_liberadas="21,23,25,53,110,143,22,80,443,3128,3306,3389,5432,5900,9091"


    echo "Variáveis declaradas"


    #### Função "start" ####


    iniciar(){


    echo "Carregando módulos"


    modprobe ip_tables
    modprobe iptable_mangle
    modprobe iptable_nat


    echo "Módulos carregados"


    echo "Limpando regras"


    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
    iptables -Z
    iptables -t nat -Z
    iptables -t mangle -Z


    echo "Regras limpas"


    echo "Definindo política padrão"


    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT


    echo "Política padrão definida"


    echo "Habilitando roteamento"


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


    echo "Roteamento ativado"


    echo "Compartilhando internet"


    iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter


    echo "Internet compartilhada"


    echo "Bloqueando IP's indesejados na rede"


    #iptables -A INPUT -i $iflocal -s 10.0.0.2 -j DROP
    #iptables -A FORWARD -i $iflocal -s 10.0.0.2 -j DROP


    echo "IP's indesejados bloqueados"


    echo "Manter conexões establecidas"


    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


    echo "Negando pacotes inválidos"


    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A FORWARD -m state --state INVALID -j DROP


    echo "Liberando portas"


    iptables -A INPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
    iptables -A FORWARD -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
    iptables -A OUTPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
    iptables -A INPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
    iptables -A FORWARD -m multiport -p udp --dport $portas_liberadas -j ACCEPT
    iptables -A OUTPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT


    echo "Liberando tráfego"


    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -i $iflocal -j ACCEPT
    iptables -A FORWARD -i lo -j ACCEPT
    iptables -A FORWARD -i $iflocal -j ACCEPT


    echo "Tráfego liberado"


    echo "Tráfego redirecionado"


    echo "Redirecionando tráfego para proxy transparente"


    #iptables -t nat -A PREROUTING -i $iflocal -p tcp --dport 80 -j REDIRECT --to-port 3128
    #iptables -t nat -A PREROUTING -i $iflocal -p udp --dport 80 -j REDIRECT --to-port 3128


    echo "Tráfego redirecionado para proxy transparente"


    }


    parar(){
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
    iptables -Z
    iptables -t nat -Z
    iptables -t mangle -Z
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    }


    status(){
    iptables -L -v -n
    }


    case "$1" in
    "start") iniciar ;;
    "stop") parar ;;
    "restart") parar; iniciar ;;
    "status") status;;
    *) echo "Use os parâmetros start ou stop"
    esac
    meu arquivo squid.conf esta assim:
    http_port 3128visible_hostname Arthur
    cache_mem 350 MB
    cache_access_log /var/log/squid3/access.log

    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 22 # ssh
    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 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 Safe_ports port 1025-65535 # portas altas
    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
    auth_param basic realm Arthur
    auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/squid_passwd
    acl autenticados proxy_auth REQUIRED


    acl bloqueados dstdomain redtube.com
    http_access deny bloqueados

    acl palavrasproibidas dstdom_regex "/etc/squid3/palavrasproibidas"
    http_access deny palavrasproibidas

    acl url url_regex -i "/etc/squid3/palavrasproibidas"
    http_access deny url


    http_access allow autenticados


    acl redelocal src 10.1.1.0/24
    http_access allow localhost
    http_access allow redelocal
    http_access deny !redelocal
    http_access deny all
    ai dentro de vim /etc/rc.local
    coloquei assim:
    sh /etc/squid3/firewall.sh
    pra chamar ele quando ligar


    e dentro de /etc/squid3/ criei um arquivo com o nome: palavrasproibidas e dentro dele coloquei facebook
    Orkut
    Youtube
    Mais ainda não esta bloqueando e nem mostra mensagem der pagina bloqueada o que tá falatando?