Powered By Blogger

Translate

quinta-feira, 31 de agosto de 2017

SQUID - SERVIDOR PROXY CACHE DEBIAN 8.4


Squid  é um servidor proxy de cache para WEB que suporta os protocolos HTTP, HTTPS, FTP entre outros, reduz a largura de banda e melhora os tempos de resposta ao colocar em cache e reutilizar as páginas da Web frequentemente solicitadas. Possui extensos controles de acessos a internet.


Pacotes Necessários.
  • SQUID3
INSTALAÇÃO

# apt-get install squid3


Apos a Instalação do Squid, vamos efetuar um backup do arquivo de configuração squid.conf , o squid.conf esta localizado no diretorio /etc/squid3.

root@squid3:/etc/squid3# cp squid.conf squid.conf.dist
Apos o backup crie um novo arquivo com o nome squid.conf


root@squid3:/etc/squid3# touch squid.conf

Edite o arquivo com o comando abaixo 

root@squid3:/etc/squid3# vi squid.conf

 Cole as linhas abaixo no arquivo de configuração do Squid.


#       WELCOME TO SQUID 3.4.8
#       ----------------------------
# should be allowed

error_directory /usr/share/squid-langpack/pt-br/
acl localnet src 172.16.100.0/24

# ACL Portas
acl SSL_ports port 443 563 448
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 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 Safe_ports port 81 # tcp host to host
acl Safe_ports port 82 # estapar
acl Safe_ports port 7071 # Zimbra
acl Safe_ports port 403
acl safe_ports port 448
acl CONNECT method CONNECT

acl sites_sem_proxy dstdomain "/etc/squid3/sites.ssl"
always_direct allow sites_sem_proxy

acl nocache url_regex -i "/etc/squid3/nocache"
acl sitesliberados dstdom_regex -i "/etc/squid3/sites.allow"
acl ipsfull src "/etc/squid3/ips.allow"
acl palavraspermitidas url_regex -i "/etc/squid3/palavras.allow"
acl skype_domain dstdom_regex skype.com
acl sitesbloqueados dstdom_regex -i "/etc/squid3/sites.deny"
acl palavrasbloqueadas url_regex -i "/etc/squid3/palavras.deny"
acl downloadsblock urlpath_regex -i "/etc/squid3/downloads.deny"
acl mailblocks url_regex -i "/etc/squid3/mail.deny
acl ipsblock src "/etc/squid3/ips.deny"

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow nocache
http_access allow skype_domain
http_access allow sitesliberados
http_access allow ipsfull
http_access allow palavraspermitidas
http_access deny sitesbloqueados
http_access deny palavrasbloqueadas
http_access deny downloadsblock
http_access deny ipsblock
http_access deny mailblocks
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
#http_access allow localnet

http_port 3128

cache_mem 1724 MB
cache_swap_low 90
cache_swap_high 95

cache_dir diskd /var/spool/squid3 20480 64 256 Q1=64 Q2=72

coredump_dir /var/spool/squid3

maximum_object_size 16384 kb
maximum_object_size_in_memory 128 kb

# Tempo de vida para resultado bem sucedidos de resolução DNS
positive_dns_ttl 5 minutes
# Ganho de performance
pipeline_prefetch on

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


cache_mgr suporte@suporte.com.br # INFORME AQUI O SEU E-MAIL



dns_nameservers 8.8.8.8
dns_nameservers 8.8.4.4


Crie os arquivos abaixo no diretorio /etc/squid3  


ips.allow
ips.deny
nocache
palavras.allow
palavras.deny
sites.allow
sites.deny
downloads.deny
mail.deny
skype_domain

Obs: ao inserir algum site, ip etc.. utilize o comando abaixo para recarregar as regras no SQUID

# squid3 -k reconfigure


ESTRUTURA DOS AQUIVOS

IPS.ALLOW esse arquivo armazena os IPS que terão acesso Full a Internet sem nenhum bloqueio.

Edite o arquivo ips.allow e informe os Ips que terão acesso Total a Internet

# vi ips.allow

172.16.100.96/32  
172.16.100.145/32
172.16.100.95/32

IPS.DENY esse arquivo armazena os IPS que não terão acesso a Internet

Edite o arquivo ips.deny e informe os IPS que não terão acesso a Internet

# vi ips.deny

172.16.100.64/32                        # exemplo 
                                                    # se não for informar nenhum IP informe pelo menos
                                                    # um  e coloque um # comentário para não dar erro quando inciar o                                                       #squid 


NOCACHE esse arquivo armazena os sites para o Squid não armazenar em Cache, utilizado para sites de Bancos

Edite o arquivo nocache e informe os sites de bancos  

# vi nocache

.itau.com.br
.bradesco.com.br
.santander.com.br
.bb.com.br


PALAVRAS.ALLOW esse arquivo armazenas as palavras a serem liberadas, exemplo se informar a palavra puta no arquivo palavras.deny para ser bloqueada, todas as palavras relacionadas a este assunto serão bloqueadas ate mesmo a palavra computador, por isso que informei a palavra computador no arquivo abaixo, para o squid liberar o acesso

Edite o arquivo palavras.allow e informe as palavras as serem liberadas

# vi palavras.allow

computador    


PALAVRAS.DENY esse arquivo armazena as palavras a serem bloqueadas


Edito o arquivo palavras.deny e informe as palavras a serem bloqueadas.

# vi  palavras.deny

jogos
jogo
game
games
torrent


SITES.ALLOW esse arquivo armazena os sites para serem liberados caso haja algum bloqueio pelo Squid.  


Edito o arquivo sites.allow e informe os sites.

# vi sites.allow

.gnre.pe.gov.br


SITES.DENY esse arquivo armazena os sites para serem bloqueados, 

# vi sites.deny

.uol.com.br
.facebook.com
.4shared.com
.rocklaser.com.br
.uzgames.com.br
.unblocker.biz
 unipeak.com
 kproxy.com
.proxy420.com
.proxyweb.net
.webproxy.kaxy



DOWNLOADS.DENY - esse arquivo armazena as extensões que serão bloqueadas edite o arquivo downloads.deny e isira o que vai ser bloqueado

 #downloads proibidos
\.msi(\?.*)?$
\.msu(\?.*)?$
\.torrent(\?.*)?$
\.mp3(\?.*)?$
\.bat(\?.*)?$
\.zip(\?.*)?$
\.exe(\?.*)?$
\.iso(\?.*)?$
\.bat(\?.*)?$
\.zip(\?.*)?$
\.rar(\?.*)?$
\.iso(\?.*)?$
\.torrent(\?.*)?$
\.wcry(\?.*)?$


MAIL.DENY - Esse arquivo armazena os e-mails a serem bloqueados, edite o arquivo mail.deny e informe os endereços que vão ser bloqueados.

.hotmail.com
.live.com
.mail.yahoo.com.br
.email.bol.com.br
.email.r7.com
.zipmail.uol.com.br


SKYPE_DOMAIN - Esse arquivo armazena os ips que terão acesso ao SKYPE edite o arquivo skype_domain e informe o IP

172.16.100.223/32

FIREWALL

Vamos criar o arquivo abaixo para direcionar a saida da porta 80 para a porta do squid 3128

Crie o arquivo firewall.sh no diretorio /etc/init.d/

# touch  firewall.sh

# Firewall
#!/bin/sh
iptables -t nat -A PREROUTING -i eth0 -s 172.16.100.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -s 172.16.100.0/24 -p tcp --dport 443 -j REDIRECT --to-port 31443


salve o arquivo e mude a permissão desse arquivo para executável com o comando abaixo

/etc/init.d/# chmod 777 firewall.sh

Execute o script com o comando abaixo.

.# /firewall.sh


Criando o cache do SQUID

Execute o comando abaixo para criar os diretorios para armazenamento do cache

# squid3 -z

2017/05/09 17:27:34 kid1| Making directories in /var/spool/squid3/01
2017/05/09 17:27:34 kid1| Making directories in /var/spool/squid3/02
2017/05/09 17:27:34 kid1| Making directories in /var/spool/squid3/03
2017/05/09 17:27:34 kid1| Making directories in /var/spool/squid3/04
2017/05/09 17:27:34 kid1| Making directories in /var/spool/squid3/05
2017/05/09 17:27:34 kid1| Making directories in /var/spool/squid3/06
2017/05/09 17:27:34 kid1| Making directories in /var/spool/squid3/07
2017/05/09 17:27:35 kid1| Making directories in /var/spool/squid3/08
2017/05/09 17:27:35 kid1| Making directories in /var/spool/squid3/09
2017/05/09 17:27:35 kid1| Making directories in /var/spool/squid3/0A
2017/05/09 17:27:35 kid1| Making directories in /var/spool/squid3/0B
2017/05/09 17:27:35 kid1| Making directories in /var/spool/squid3/0C
2017/05/09 17:27:35 kid1| Making directories in /var/spool/squid3/0D
2017/05/09 17:27:35 kid1| Making directories in /var/spool/squid3/0E
2017/05/09 17:27:35 kid1| Making directories in /var/spool/squid3/0F

Apos criar o Cache inicie o serviço do Squid

#/etc/init.d/squid3 start


Diretorio onde a Pagina do Squid é armazenada 

/usr/share/squid-langpack/pt-br/








PERSONALIZANDO O LOGO NO SQUID3

Com seu editor favorito, edite o arquivo "/etc/squid3/errorpage.css". 

 vim errorpage.css 

Encontre no arquivo a tag #titles, troque o endereço pelo de sua imagem. 

#titles { margin-left: 15px; padding: 10px; padding-left: 100px; background: url(‘http://192.168.0.1/img.jpg’) no-repeat left; }

quarta-feira, 12 de abril de 2017

INSTALANDO E CONFIGURANDO UM SERVIDOR DNS

BIND

BIND (Berkeley Internet Name Domain ou, como chamado previamente, Berkeley Internet Name Daemon) é o servidor para o protocolo DNS mais utilizado na Internet, especialmente em sistemas do tipo Unix,


INICIANDO A INSTALAÇÃO DO BIND

Instale o Pacote bind9

# apt-get install bind9


CONFIGURANDO O BIND

Após ter instalado o pacote do BIND é hora de configurar um domínio (meudominio.com.br) 


O primeiro deles é o /etc/named.conf, caso esse arquivo já exista, faça um backup dele e crie um novo com o conteúdo abaixo. 

__________________________________________________
options {
        directory "/var/named";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        // query-source address * port 53;

        transfer-format many-answers;

};

controls {
        inet * port 953 allow { 127.0.0.1; }; // Para usar o rndc apenas em localhost
};


//
// a caching only nameserver config
//
zone "." IN {
        type hint;
        file "caching-example/named.ca";
};

zone "localhost" IN {
        type master;
        file "caching-example/localhost.zone";
        allow-update { none; };
};

zone "meudominio.com.br" IN {
        type master;
        file "meudominio.com.br.domain";
        allow-update { none; };

};

__________________________________________________

Agora vamos criar o /var/named/caching-example/named.ca. necessario a criação dos diretorios named e caching-example e tambem o arquivo named.ca


 __________________________________________________
;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC registration services
;       under anonymous FTP as
;           file                domain/named.root
;           on server           FTP.RS.INTERNIC.NET
;       -OR- under Gopher at    RS.INTERNIC.NET
;           under menu          InterNIC Registration Services (NSI)
;              submenu          InterNIC Registration Archives
;           file                named.root
;
;       last update:    Aug 22, 1997
;       related version of root zone:   1997082200
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
;
; formerly C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
;
; formerly TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
;
; formerly NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
;
; formerly NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
;
; formerly NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
;
; temporarily housed at ISI (IANA)
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
;
; housed in Japan, operated by WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
; End of File
__________________________________________________

Agora vamos criar o /var/named/caching-example/localhost.zone 

__________________________________________________

$TTL    86400
$ORIGIN localhost.
@          1D IN SOA       @ root (
                 42              ; serial (d. adams)
                 3H              ; refresh
                 15M             ; retry
                 1W              ; expiry
                 1D )            ; minimum

         1D IN NS        @
         1D IN A         127.0.0.1

__________________________________________________


Vamos criar o arquivo referente ao seu domínio /var/named/meudominio.com.br.domain: 


__________________________________________________
$TTL    86400
; Authoritative data for meudominio.com.br
;
@                IN       SOA localhost. root.meudominio.com.br. (
                                2004102897      ; Serial (yymmddxx)
                                10800           ; Refresh 3 hours
                                3600            ; Retry   1 hour
                                36000           ; Expire  10 hours
                                86400 )         ; Minimum 24 hours
                 IN       NS            ns1.meudominio.com.br.
                 IN       NS            ns2.meudominio.com.br.

;
;Recebimento de mensagens de mail
;

meudominio.com.br.        IN      MX      0       mx
meudominio.com.br.        IN      MX     10       mx

;
; Hosts
;

localhost     IN       A             127.0.0.1
              IN       HINFO         INTEL/110       LINUX
www           IN       A             192.168.0.17   ; o ip da sua maquina
ns1           IN       A               192.168.0.17   ; o ip da sua maquina
ns2           IN       A               192.168.0.17   ; o ip da sua maquina
maquina-1     IN       A             192.168.0.18 ; ip qualquer da rede
maquina-2     IN       A             192.168.0.19 ; ip qualquer da rede
__________________________________________________


Iniciando o Bind

Caso você não tenha o arquivo /etc/rc.d/rc.bind crie-o com o seguinte conteúdo:


#!/bin/sh
# Start/stop/restart the BIND name server daemon (named).

# Start bind. In the past it was more secure to run BIND
# as a non-root user (for example, with '-u daemon'), but
# the modern version of BIND knows how uses to use the
# kernel's capability mechanism to drop all root privileges
# except the ability to bind() to a privileged port and set
# process resource limits, so -u should not be needed. If
# you wish to use it anyway, chown the /var/run/named
# directory to the non-root user.
#
# You might also consider running BIND in a "chroot jail",
# a discussion of which may be found in
# /usr/doc/Linux-HOWTOs/Chroot-BIND-HOWTO.

bind_start() {
  if [ -x /usr/sbin/named ]; then
    echo "Starting BIND:  /usr/sbin/named"
    /usr/sbin/named
  fi
}

# Stop bind:
bind_stop() {
  killall named
}

# Restart bind:
bind_restart() {
  bind_stop
  sleep 1
  bind_start
}

case "$1" in
'start')
  bind_start
  ;;
'stop')
  bind_stop
  ;;
'restart')
;;
*)
  echo "usage $0 start|stop|restart"
esac


Depois de salvo o arquivo com o conteúdo acima e dê permissão ao arquivo: 

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

Para iniciar o BIND basta digitar o seguinte comando: 

# /etc/rc.d/rc.bind start 


INICIANDO O BIND AUTOMATICAMENTE

Coloque a linha abaixo dentro do /etc/rc.d/rc.local: 

/etc/rc.d/rc.bind start

Ou se preferir instale o pacote rcconf

# apt-get install rcconf


Digite no prompt de comando rcconf

# rcconf

Ira abrir a tela abaixo só marcar o serviço que ira iniciar 



CONFIGURANDO SEU SERVIDOR

Após tudo feito vamos colocar o nosso servidor para usar o seu próprio DNS para navegar. 

Edite o arquivo /etc/resolv.conf e coloque o seguinte conteúdo: 

search meudominio.com.br
nameserver 192.168.0.17

OBS: altere o 192.168.0.17 para o seu IP.


TESTANDO O SEU SERVIDOR DNS

Depois de tudo pronto e configurado vamos testar. 

Vamos efetuar um Ping no site do Google


Se a resposta for parecida com essa é por que esta funcionando perfeitamente

root@web:~# ping www.google.com.br
PING www.google.com.br (216.58.202.3) 56(84) bytes of data.
64 bytes from gru06s26-in-f3.1e100.net (216.58.202.3): icmp_seq=1 ttl=52 time=15.3 ms
64 bytes from gru06s26-in-f3.1e100.net (216.58.202.3): icmp_seq=2 ttl=52 time=11.6 ms
64 bytes from gru06s26-in-f3.1e100.net (216.58.202.3): icmp_seq=3 ttl=52 time=8.33 ms
^C