Iptables (Firewall.sh)

Firewall do Iptables simples que pode ser utilizado em servidor ou maquina pessoal

Categoria: Init

Software: Iptables

[ Hits: 49.412 ]

Por: Tacio de Jesus Andrade


Este Script de configuração do IPtables foi criado com base em diversos artigos do Viva o Linux e da leitura do livro: Servidores Linux - Guia Pratico do Morimoto.

Ele foi criado como um Daemon para poder ser adicionado como um serviço, bastando edita-lo da forma que preferir e depois jogar na pasta correspondente, no caso de distros Debian-Like (/etc/init.d/) e coloca-la para iniciar com o sistema.

Quando fizer alguma modificação nele para melhora-lo coloco aqui novamente.


#! /bin/bash
###############################################################################
# Autor: Tácio de Jesus Andrade
# Criação: 11/04/2011
# Modificação: 02/05/2011
# Função: Arquivo de Configuração Padrão do Firewall IpTables
# Utilização: Mova-o para o diretório /etc/init.d/ (em distros Debian-Like)
#             e adicione o serviço para iniciar com o Sistema (pode-se utilizar 
#             o rcconf ou o comando de carregamento do serviço de sua distro)
###############################################################################

case "$1" in
start)

    ###############
    # TITULO ABRE #
    ###############
    echo "Iniciando a Configuração do Firewall"

    ########################
    # Zera todas as Regras #
    ########################
    echo "Regras Zeradas"
      iptables -F

    ########################################
    # Bloqueia tudo, nada entra e nada sai #
    ########################################
    echo "Fechando tudo"
      iptables -P INPUT DROP
      iptables -P FORWARD DROP
      iptables -P OUTPUT DROP

    ############################################################################
    # Impede ataques DoS a maquina limitando a quantidade de respostas do ping #
    ############################################################################
    #echo "Previne ataques DoS"
    #  iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

    #################################
    # Bloqieia completamente o ping #
    #################################
    echo "Bloqueia o pings"
      iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

    ##########################
    # Politicas de segurança #
    ##########################
    echo "Implementação de politicas de segurança"
      echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route # Impede falsear pacote
      echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects # Perigo de descobrimento de rotas de roteamento (desativar em roteador)
      echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Risco de DoS
      echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Só inicia a conexão quando recebe a confirmação, diminuindo a banda gasta
      echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter # Faz o firewall responder apenas a placa de rede que recebeu o pacote
      iptables -A INPUT -m state --state INVALID -j DROP # Elimina os pacotes invalidos

    #################################
    # Libera conexoes estabelecidas #
    #################################
    echo "Liberando conexões estabelecidas"
      iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
      iptables -A FORWARD -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
      iptables -A OUTPUT -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
      iptables -A INPUT -i lo -j ACCEPT

    #######################################################################################
    # Libera o acesso via SSH e Limita o número de tentativas de acesso a 4 a cada minuto #
    #######################################################################################
    #echo "Liberando o SSH"
    #  iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
    #  iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    #  iptables -A INPUT -p udp --dport 22 -j ACCEPT

    ##################
    # Libera o Samba #
    ##################
    #echo "Liberando o Samba"
    #  iptables -A INPUT -p tcp --dport 137:139 -j ACCEPT
    #  iptables -A INPUT -p udp --dport 137:139 -j ACCEPT

    ###################
    # Libera o Apache #
    ###################
    #echo "Liberando o Apache"
    #  iptables -A INPUT -p tcp --dport 80 -j ACCEPT

    ################
    # TITULO FECHA #
    ################
    echo "Configuração do Firewall Concluida."

;;

stop)
     echo "Finalizando o Firewall"
     rm -rf /var/lock/subsys/firewall

     # -----------------------------------------------------------------
     # Remove todas as regras existentes
     # -----------------------------------------------------------------
       iptables -F
       iptables -X
       iptables -t mangle -F
     # -----------------------------------------------------------------
     # Reseta as politicas padrões, aceitar tudo
     # -----------------------------------------------------------------
       iptables -P INPUT   ACCEPT
       iptables -P OUTPUT  ACCEPT
       iptables -P FORWARD ACCEPT

;;

restart|reload)
       $0 stop
       $0 start
     ;;

*)
   echo "Selecione uma opção valida {start|stop|status|restart|reload}"
   exit 1

esac

exit 0
  


Comentários
[1] Comentário enviado por gurudefestas em 11/05/2011 - 17:25h

firewall =firewall
hackers
o
/
firewall





[2] Comentário enviado por BraveDOG em 14/05/2011 - 09:55h

Olá, na parte de liberação do SSH, a eth0 citada é a placa da rede local ou da internet (no caso da maquina ter duas placas de rede) ??

[3] Comentário enviado por Tacioandrade em 14/05/2011 - 22:11h

No meu caso, a maquina tem apenas 1 placa de rede (a de rede local). Caso você tenha 2 placas, é so colocar a placa que deseja librar na regra (que geralmente é eth0 interna e eth1 externa.

[4] Comentário enviado por BraveDOG em 15/05/2011 - 08:09h

Salve Tacio, obrigado pelo esclarecimento !!

Vou abusar mais um pouco .. rss..

Esse script é apropriado para uma rede ou só é válido para uma maquina ? E caso ele rode em rede como seria, por exemplo, dar acesso a porta 3070 a uma estação dessa rede que não seja o servidor ?

Abraços

[5] Comentário enviado por Tacioandrade em 15/05/2011 - 22:37h

Pode perguntar sem problemas. =D

Olha você pode utiliza-lo tanto em sua maquina local como em um servidor interno, como por exemplo um servidor de arquivos, apache local, etc, sem modificar quase nada, apenas descomentar as linhas referentes aos serviços que irá utilizar em seu computador/servidor.

Para liberar o acesso a porta 3070, adicione as seguintes regras de firewall no arquivo:

##################
# Libera a porta 3070 #
##################
echo "Liberando a porta 3070"
iptables -A INPUT -p tcp --dport 3070 -j ACCEPT
iptables -A INPUT -p udp --dport 3070 -j ACCEPT


Porem seria mais seguro para você, saber se o serviço que vai utilizar nesta porta utiliza apanas TCP ou apenas UDP e liberar apenas o que você for usar, apenas por segurança mesmo.

Espero ter ajudado.

[6] Comentário enviado por MatheusMassa em 10/06/2011 - 11:27h

Olá Tacio, muito bom seu script. Como sou iniciante tenho uma pergunta. Para liberar as portas para eu usar o torrent uso as mesmas regras do comentario acima ou tem algo diferente à fazer ?

[7] Comentário enviado por Tacioandrade em 10/06/2011 - 15:03h

Abra alguma porta no se script acima de 45000 (pois os scans geralmente so olham as portas mais baixas, como na seguinte regra:

############
# Libera Torrent #
############
echo "Liberando o torrent na porta 4111"
iptables -A INPUT -p tcp --dport 4111-j ACCEPT
iptables -A INPUT -p udp --dport 4111 -j ACCEPT

Depois disso vá no seu programa de torrent, como o transmission e faça com que ele use esta porta que está aberta para acesso do torrent.


Espero ter ajudado. =D


[8] Comentário enviado por t31x31r4-onl em 29/06/2011 - 10:23h

muito bom o script.
como eu faço para redirecionar uma porta para um outro endereço IP ? tipo um PortForward.

[9] Comentário enviado por removido em 29/12/2011 - 20:03h

Ola amigo, sem querer ser chato já sendo :D teria um script como esse para usar em uma empresa com duas placas de rede Interna e Externa . Ficaria grato.

[10] Comentário enviado por Tacioandrade em 29/12/2011 - 20:27h

Amigo, pronto não tenho, mais é bem simples você modificar este dai. Para a modificação recomendo adicionar no início:

INTERNA="eth0"
EXTERNA="eth1"

Depois modifique todas as regras acicionando -i INTERNA ou -i EXTERNA, mais ou menos assim:

iptables -A INPUT -p tcp -i INTERNA --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -i EXTERNA --dport 80 -j ACCEPT

Espero ter ajudado.

[11] Comentário enviado por franklincsilva em 18/04/2012 - 16:05h

fazendo uso da pargunta do t31x... como faço para redirecionar a porta 3389 para um outro micro da rede.

vamos supor a porta 3389 é o ts do windows ate ae normal:

sendo que tenho duas maquinas que quero liberar acesso ts, cada uma com seu ip diferente como faço isso:

tipo assim:

tenho que permitir entrar por portas diferentes e entregar na porta 3389 tem como?

[12] Comentário enviado por tacioandrade em 18/04/2012 - 17:38h

Para fazer isso seria a mesma coisa. A regra de bloqueio fecha todas as portas que não foram bloqueadas, então é só liberar da seguinte forma:

iptables -A FORWARD -p tcp -d 192.168.x.x --dport 3389 -j ACCEPT

Caso você queira colocar por exemplo o servidor TS (protegido pelo firewall), para ser acessado via net, faça o seguinte:

iptables -t nat -A PREROUTING -d ip-servidor -p tcp -m tcp --dport 3389 -j DNAT --to-destination ip-ts:3389

Boa sorte ai. =)

[13] Comentário enviado por ragnar1720 em 27/12/2016 - 10:31h

Parabens e Obrigado pela contribuição, estou abrindo um Servidor Debian, e usarei alguma dessas regras, e adicionarei algumas minhas !

[14] Comentário enviado por Tacioandrade em 27/12/2016 - 16:36h


[13] Comentário enviado por ragnar1720 em 27/12/2016 - 10:31h

Parabens e Obrigado pela contribuição, estou abrindo um Servidor Debian, e usarei alguma dessas regras, e adicionarei algumas minhas !


Por nada, fico feliz em ter ajudado. =) Essas dai são boas para se usar como modelo, tanto que até hoje uso esse script quando esqueço que parâmetro usar, etc. rsrsrs


Att. Tácio Andrade.

[15] Comentário enviado por dommaster em 07/05/2017 - 19:46h

0

[16] Comentário enviado por Tacioandrade em 07/05/2017 - 23:50h


[15] Comentário enviado por dommaster em 07/05/2017 - 19:46h


Eu tenho um jogo online as vezes os play loga o mesmo jogo 2 ou 3 contas usando o mesmo IP, A pergunta é como permitir á entrada somente de um IP assim evitando do jogador abrir varias contas ao mesmo tempo.
E lembrando que uso acesso interno na maquina não podendo bloquear como faixas de IP local. a duvida é somente para IP externo de qualquer tipo seja dentro do brasil ou fora do brasil.
iptables diretamente do ubuntu server 64 bit.
ALGUÉM PODE ME AJUDAR OBRIGADO.


Nos dias de hoje isso dai é muito complicado, pois esses vários usuários podem ser pessoas usando apenas o mesmo provedor, por exemplo o pessoal que utiliza provedores de internet menores muitas vezes compartilham o mesmo IP atrás de um NAT (em um provedor que trabalhei um bairro inteiro utilizava apenas 1 IP válido), então esse tipo de bloqueio não é viável. =/

[17] Comentário enviado por dommaster em 08/05/2017 - 00:06h

sim intendi seu ponto de vista, mais consegue definir esse bloqueio ? pelo iptables e firewall

[18] Comentário enviado por Tacioandrade em 08/05/2017 - 02:28h


[17] Comentário enviado por dommaster em 08/05/2017 - 00:06h

sim intendi seu ponto de vista, mais consegue definir esse bloqueio ? pelo iptables e firewall


Se a aplicação jogar em algum lugar (log) o IP do cara que logou na aplicação sim, porém não é algo automático, você terá que montar um script que guarda os IPs logados, ve se é na mesma conta, caso não seja, bloqueia o IP, porém terá que montar tudo e eu não sei como fará isso.

[19] Comentário enviado por richardic em 19/02/2020 - 21:32h

Esse script funfa no ubuntu 16.04 ?
Segui um tuto e fiz este anexo, a placa rede interna está enviando internet, o laptop navega, mas o squid não está bloqueando nada.... Será o que não fiz?
Outra coisa é que ao reiniciar a máquina, o script não roda sozinho...


#Aula-01-IPTABLES básico Cavalcante Treinamentos
#Script de configuração básica IPTABLES
#ARQUIVO NOME firewall.sh
#no terminal:
#Definir as interfaces de rede

INTERNA=eth1
EXTERNA=eth0

#Definir as redes
REDE_IP_INTERNA=172.16.0.0/24
REDE_IP_EXTERNA=192.168.25.0/24

#Habilitar roteamento
echo 1 > /proc/sys/net/ipv4/ip_forward

#Habilitar TCP SynCookie
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#Habilitar proteção ip spoofing
for i in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $i
done

#LIMPAR AS TABELAS
iptables -t filter -F
iptables -t filter -X
iptables -t filter -Z

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

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

# Definir política padrão
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT

#Realizar NAT
iptables -t nat -A POSTROUTING -s $REDE_IP_INTERNA -o $EXTERNA -j MASQUERADE

# Bloquear pacotes inválidos
iptables -t filter -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -t filter -A FORWARD -m conntrack --ctstate INVALID -j DROP

# Bloquear algumas tentativas de scanner
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -j DROP

#Permitir a máquina com IP 172.17.0.2 realizar ping para a interface do firewall
iptables -t filter -A INPUT -s 172.16.0.2/32 -d 172.16.0.1 -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT
iptables -t filter -A INPUT -s 172.16.0.2/32 -d 172.16.0.1 -p icmp --icmp-type echo-request -j REJECT

# Permitir tráfego na interface de loopback
iptables -t filter -A INPUT -i lo -j ACCEPT

#Permitir acesso ao facebook para o MAC
iptables -t filter -A FORWARD -d www.facebook.com -m mac --mac-source 08:00:27:E7:6F:26 -j ACCEPT

# Bloquear facebook para todos
iptables -t filter -A FORWARD -d www.facebook.com -j LOG --log-prefix "Bloqueio-Facebook"

iptables -t filter -A FORWARD -d www.facebook.com -j DROP

#Bloquear download de arquivos .exe
iptables -t filter -A FORWARD -p tcp -m multiport --dport 20,21,80,443 -m string --string ".exe" --algo bm -j LOG --log-prefix "Download arquivo executável"

iptables -t filter -I FORWARD -m string --string "facebook" --algo bm -j DROP

#Permitir a rede interna acessar os serviços DNS, ftp, http e https
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -m multiport --dport 20,21,80,443 -j ACCEPT

#Permitir a rede interna realizar ping para Internet
iptables -t filter -A FORWARD -s $REDE_IP_INTERNA -p icmp --icmp-type echo-request -j ACCEPT

#Permitir pacotes relacionados
iptables -t filter -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#permissão no Terminal
#chmod 770 /etc/init.d/firewall.sh
#executar
#/etc/init.d/firewall.sh
#saber se deu erro
#iptables -nvL

#sempre ficar salvo
#terminal: update-rc.d firewall.sh defaults
------------

Squid
#configuração da placa de rede
#eth0 DHCP
#eth1
#172.16.0.1

#Configuração Básica
http_port 172.16.0.1:3128
visible_hostname Servidor-Proxy-ColegioSuperIncentivo
error_directory /usr/share/squid/errors/pt-br

cache_log /var/log/squid/cache.log
access_log daemon:/var/log/squid/acess.log squid

#Definições de cache do proxy
cache_mem 512 MB
maximum_object_size_in_memory 128 KB
cache_dir ufs /var/spool/squid 1000 16 256
maximum_object_size 1024 KB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95

#Autenticação - necessario apache2-utils para gerar credenciais dos usuários
auth_param basic realm Servidor-Proxy-ColegioSuprIncentivo (Digite usuário | Senha)
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/usuarios.txt
auth_param basic children 5
authenticate_ttl 1 hour

# Lista de controle de acesso, ainda não está permitindo ou bloqueando
acl SSL_ports port 443
acl Safe_ports port 80 21 443
acl purge method PURGE
acl connect method CONNECT
acl redelocal src 172.16.0.0/24 #esse IP tem que ser o mesmo em todos os roteadores? o que seria /24?

# Lista de controle personalizada
acl redes_sociais1 dstdomain .linkedin.com .instagram.com .facebook.com
acl redes_sociais2 url_regex -i "/etc/squid/redes_sociais2.txt"
acl downloads_proibidos url_regex -i "/etc/squid/extensoes_proibidas.txt"
acl equipe_suporte src 172.16.0.2
acl recreio1 time MTWHFAS 10:15-10:30
acl recreio2 time MTWHFAS 15:15-15:30
acl autenticados proxy_auth REQUERID
acl professor proxy_auth professor

# Controle de acesso Customizado - Permissões - Sempre Permitir antes que Bloquear 1:03 video
http_access allow professor
http_access allow equipe_suporte downloads_proibidos
http_access allow redes_sociais1 recreio1
http_access allow redes_sociais2 recreio1
http_access allow redes_sociais1 recreio2
http_access allow redes_sociais2 recreio2


# Controle de acesso Customizado - Bloqueios#42:04 DO VIDEO
http_access deny redes_sociais1
http_access deny redes_sociais2
http_access deny downloads_proibidos
http_access allow autenticados


# Controle de acesso padrão
http_access allow localhost manager
http_access deny manager
http_access allow localhost purge
http_access deny purge
http_access deny !Safe_ports
http_access deny connect !SSL_ports
http_access allow redelocal

http_access deny all


[20] Comentário enviado por Tacioandrade em 19/02/2020 - 23:30h


[19] Comentário enviado por richardic em 19/02/2020 - 21:32h

Esse script funfa no ubuntu 16.04 ?
Segui um tuto e fiz este anexo, a placa rede interna está enviando internet, o laptop navega, mas o squid não está bloqueando nada.... Será o que não fiz?
Outra coisa é que ao reiniciar a máquina, o script não roda sozinho...


#Aula-01-IPTABLES básico Cavalcante Treinamentos
#Script de configuração básica IPTABLES
#ARQUIVO NOME firewall.sh
#no terminal:
#Definir as interfaces de rede

INTERNA=eth1
EXTERNA=eth0

#Definir as redes
REDE_IP_INTERNA=172.16.0.0/24
REDE_IP_EXTERNA=192.168.25.0/24

#Habilitar roteamento
echo 1 > /proc/sys/net/ipv4/ip_forward

#Habilitar TCP SynCookie
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#Habilitar proteção ip spoofing
for i in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $i
done

#LIMPAR AS TABELAS
iptables -t filter -F
iptables -t filter -X
iptables -t filter -Z

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

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

# Definir política padrão
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT

#Realizar NAT
iptables -t nat -A POSTROUTING -s $REDE_IP_INTERNA -o $EXTERNA -j MASQUERADE

# Bloquear pacotes inválidos
iptables -t filter -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -t filter -A FORWARD -m conntrack --ctstate INVALID -j DROP

# Bloquear algumas tentativas de scanner
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -j DROP

#Permitir a máquina com IP 172.17.0.2 realizar ping para a interface do firewall
iptables -t filter -A INPUT -s 172.16.0.2/32 -d 172.16.0.1 -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT
iptables -t filter -A INPUT -s 172.16.0.2/32 -d 172.16.0.1 -p icmp --icmp-type echo-request -j REJECT

# Permitir tráfego na interface de loopback
iptables -t filter -A INPUT -i lo -j ACCEPT

#Permitir acesso ao facebook para o MAC
iptables -t filter -A FORWARD -d www.facebook.com -m mac --mac-source 08:00:27:E7:6F:26 -j ACCEPT

# Bloquear facebook para todos
iptables -t filter -A FORWARD -d www.facebook.com -j LOG --log-prefix "Bloqueio-Facebook"

iptables -t filter -A FORWARD -d www.facebook.com -j DROP

#Bloquear download de arquivos .exe
iptables -t filter -A FORWARD -p tcp -m multiport --dport 20,21,80,443 -m string --string ".exe" --algo bm -j LOG --log-prefix "Download arquivo executável"

iptables -t filter -I FORWARD -m string --string "facebook" --algo bm -j DROP

#Permitir a rede interna acessar os serviços DNS, ftp, http e https
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -m multiport --dport 20,21,80,443 -j ACCEPT

#Permitir a rede interna realizar ping para Internet
iptables -t filter -A FORWARD -s $REDE_IP_INTERNA -p icmp --icmp-type echo-request -j ACCEPT

#Permitir pacotes relacionados
iptables -t filter -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#permissão no Terminal
#chmod 770 /etc/init.d/firewall.sh
#executar
#/etc/init.d/firewall.sh
#saber se deu erro
#iptables -nvL

#sempre ficar salvo
#terminal: update-rc.d firewall.sh defaults
------------

Squid
#configuração da placa de rede
#eth0 DHCP
#eth1
#172.16.0.1

#Configuração Básica
http_port 172.16.0.1:3128
visible_hostname Servidor-Proxy-ColegioSuperIncentivo
error_directory /usr/share/squid/errors/pt-br

cache_log /var/log/squid/cache.log
access_log daemon:/var/log/squid/acess.log squid

#Definições de cache do proxy
cache_mem 512 MB
maximum_object_size_in_memory 128 KB
cache_dir ufs /var/spool/squid 1000 16 256
maximum_object_size 1024 KB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95

#Autenticação - necessario apache2-utils para gerar credenciais dos usuários
auth_param basic realm Servidor-Proxy-ColegioSuprIncentivo (Digite usuário | Senha)
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/usuarios.txt
auth_param basic children 5
authenticate_ttl 1 hour

# Lista de controle de acesso, ainda não está permitindo ou bloqueando
acl SSL_ports port 443
acl Safe_ports port 80 21 443
acl purge method PURGE
acl connect method CONNECT
acl redelocal src 172.16.0.0/24 #esse IP tem que ser o mesmo em todos os roteadores? o que seria /24?

# Lista de controle personalizada
acl redes_sociais1 dstdomain .linkedin.com .instagram.com .facebook.com
acl redes_sociais2 url_regex -i "/etc/squid/redes_sociais2.txt"
acl downloads_proibidos url_regex -i "/etc/squid/extensoes_proibidas.txt"
acl equipe_suporte src 172.16.0.2
acl recreio1 time MTWHFAS 10:15-10:30
acl recreio2 time MTWHFAS 15:15-15:30
acl autenticados proxy_auth REQUERID
acl professor proxy_auth professor

# Controle de acesso Customizado - Permissões - Sempre Permitir antes que Bloquear 1:03 video
http_access allow professor
http_access allow equipe_suporte downloads_proibidos
http_access allow redes_sociais1 recreio1
http_access allow redes_sociais2 recreio1
http_access allow redes_sociais1 recreio2
http_access allow redes_sociais2 recreio2


# Controle de acesso Customizado - Bloqueios#42:04 DO VIDEO
http_access deny redes_sociais1
http_access deny redes_sociais2
http_access deny downloads_proibidos
http_access allow autenticados


# Controle de acesso padrão
http_access allow localhost manager
http_access deny manager
http_access allow localhost purge
http_access deny purge
http_access deny !Safe_ports
http_access deny connect !SSL_ports
http_access allow redelocal

http_access deny all




Amigo não vou mentir no seu caso que tem squid no meio recomendaria migrar pra o pfSense (o que uso e recomendo hoje) ou até o Endian Firewall, pois com ele terá acesso a um firewall simplificado de debugar (as regras são melhores organizadas) e o squid nele é mais fácil de manter......

Esse script que coloquei aqui só uso mesmo para servidores Linux principalmente em nuvem para barrar acessos indesejados em serviços como mysql, etc, onde apenas 1 servidor deve ter acesso, para gateway de rede não acho viável linux em modo texto, manter acaba sendo um saco quando se trabalha com múltiplos clientes.

[21] Comentário enviado por Tacioandrade em 19/02/2020 - 23:33h

Sobre o seu squid acredito que é por não ter configurado a regra de redirecioanr as conexões da porta 80 para a porta do squid para ele filtrar ou então barrar as portas 80 e 443 de saída e depois colocar o proxy no navegador para usar o não transparente.

Att. Tácio Andrade.


Contribuir com comentário

  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts