Squid no Linux CentOS 7

Olá amigos.

O Squid é um servidor proxy que suporta HTTP, HTTPS, FTP e outros. Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições frequentes de páginas web numa rede de computadores. Ele pode também ser usado como um proxy reverso.

Hoje vamos ver como instalar e configurar o Squid no Centos 7. Em muitas das situações que me deparei referente a chamados de liberação de site em nosso firewall de produção a mais eficiente solução foi instalar um proxy em uma maquina virtual e apontar a aplicação ou site com problemas de acesso dentro da nossa rede para monitorar as conexões.Sei que não é o adequado mas o Squid te da uma visualização fácil dos logs de requisição que estão chegando no servidor, com isso conseguimos fazer as liberações no Firewall de produção de maneira adequada.

Vamos começar pelo SO:

  • Atualizando seu sistema

É importante sempre manter o sistema atualizado.

yum -y update
  • Instalando o Repositório Epel

Em seguida instalamos o repositório Epel para termos uma efetividade melhor na busca de pacotes no sistema do CentOS.

yum -y install epel-release
  • Desativando o Selinux e o FirewallD

Para desativar o SELinux no CentOS 7, digite:

sed -i 's/enforcing/disabled/g' /etc/selinux/config /etc/selinux/config

O próximo passo é desativar o FirewallD.

systemctl disable firewalld.service

Vamos aproveitar e dar um “stop” no serviço do FirewallD que está em execução.

systemctl stop firewalld.service
  • Instale o SQUID

Para realizar a instalação do squid é muito simples. Buscamos o pacote direto dos repositórios.

yum -y install squid
  • Configurando o SQUID

Agora vamos efetuar as configurações do SQUID no ambiente Linux CentOS. O primeiro passo a fazer é um backup do arquivo squid.conf.

cp -Rfa /etc/squid/squid.conf{,.bkp}

Agora vamos acessar o diretório de configuração do SQUID.

cd /etc/squid/

Vamos excluir o arquivo “squid.conf” para que possamos criar um arquivo novo e limpo.
Só não esqueça de efetuar o backup do arquivo original conforme explicado acima.

rm -rf squid.conf

Na sequência criamos um novo arquivo de configuração.

Você pode optar por criar o arquivo do modo mais tradicional, utilizando o comando “touch”, ou simplesmente criar um arquivo novo diretamente com o “vi/vim”.
Prefiro utilizar o “vim”.

vim squid.conf

Obs.: Lembrando que estamos no diretório de configuração do squid “/etc/squid/”.

Abaixo segue o conteúdo do “squid.conf”

## DEFINE A PORTA DE CONEXAO DO SQUID
http_port 3128
 
## DEFINE O TAMANHO MAXIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE ##
maximum_object_size 4096 KB
 
## DEFINE O TAMANHO MINIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE ## 
minimum_object_size 0 KB
 
## DEFINE O TAMANHO MAXIMO DE UM OBJETO PARA SER ARMAZENADO EM CACHE DE MEMORIA ## 
maximum_object_size_in_memory 64 KB
 
## DEFINE A QUANTIDADE DE MEMORIA RAM A SER ALOCADA PARA CACHE ## 
cache_mem 512 MB
 
## AJUSTA A PERFORMANCE EM CONEXOES PIPELINE ##
pipeline_prefetch on
 
## CACHE DE FQDN ##
fqdncache_size 1024
 
## OPCOES DE REFRESH PATTERN ##
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
 
## DEFINE A PORCENTAGEM DO USO DO CACHE ## 
cache_swap_low 90
cache_swap_high 95
 
## ARQUIVO DE LOGS DO SQUID ## 
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
 
## DEFINE O LOCAL DO CACHE ##
cache_dir ufs /var/spool/squid 1600 16 256
 
## CONTROLE DE ROTACAO DOS ARQUIVOS DE LOGS ##
logfile_rotate 10
 
## ARQUIVO ONDE CONTEM OS ENDERECOS LOCAIS DA REDE ##
hosts_file /etc/hosts
 
## ACLS - PORTAS PADROES LIBERADAS ##
acl SSL_ports port 80 #HTTP
acl SSL_ports port 443 #HTTPS
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # 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 CONNECT method CONNECT
 
### DEFININDO MODO DE AUTENTICACAO
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/usuarios
auth_param basic children 5
auth_param basic realm "DIGITE SEU USUARIO E SENHA PARA ACESSO A INTERNET:"
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
 
### ACL PARA GARANTIR A AUTENTICACAO DO USUARIO NOS SITES ###
acl autenticados proxy_auth REQUIRED
 
## BLOQUEIA O ACESSO UNSAFE PORTS ##
http_access deny !Safe_ports
 
## Deny CONNECT to other than secure SSL port ##
http_access deny CONNECT !SSL_ports
 
## SITES BLOQUEADOS PARA ACESSO ##
acl sites-bloqueados url_regex -i "/etc/squid/regras/sites_bloqueados"
 
## SITES LIBERADOS PARA ACESSO ##
acl sites-liberados url_regex -i "/etc/squid/regras/sites_liberados"
 
## DEFININDO A ORDEM DAS REGRAS - ACLS ##
http_access deny sites-bloqueados
http_access allow sites-liberados
http_access allow autenticados
http_access deny all
http_reply_access allow all
icp_access allow all
miss_access allow all
 
## NOME QUE IRA APARECER NA TELA DE ERRO OU BLOQUEIO DO SQUID ##
visible_hostname proxy.techpoli.info
 
## DIRETORIO DAS PAGINAS DE ERROS ##
error_directory /usr/share/squid/errors/pt-br
 
## OUTRAS OPCOES DE CACHE ##
cache_effective_user squid
coredump_dir /var/spool/squid

Após salvar o arquivo (Se você utilizou o vi/vim para salvar e sair do arquivo utilize: ESC + as teclas :wq)

O próximo passo é criar um diretório para armazenar as regras, ou seja, as ACL’s do nosso squid.

 mkdir /etc/squid/regras

Se você leu o “squid.conf” notou que temos duas ACL’s prontas na configuração.

ACL para sites bloqueados => /etc/squid/regras/sites_bloqueados
ACL para sites liberados => /etc/squid/regras/sites_liberados

Vamos criar esses arquivos dentro do diretório de regras.

touch /etc/squid/regras/sites_bloqueados
touch /etc/squid/regras/sites_liberados

Vamos colocar alguns sites na lista de bloqueados.

echo ".techpoli." >> /etc/squid/regras/sites_liberados
echo ".uol." >> /etc/squid/regras/sites_liberados
echo ".terra." >> /etc/squid/regras/sites_liberados

Veja o conteúdo do arquivo:

cat sites_liberados 

O mesmo procedimento vamos estar efetuando para os sites_bloqueados.

echo ".globo." >> /etc/squid/regras/sites_bloqueados
echo ".facebook." >> /etc/squid/regras/sites_bloqueados
echo ".web.whatsapp.com." >> /etc/squid/regras/sites_bloqueados

Veja o conteúdo do arquivo de sites bloqueados.

cat sites_bloqueados 

Note que utilizei o formato “.site.” o ponto antes da palavra pega qualquer sub-domínio do site, e o mesmo após o domínio pega qualquer sub-página por exemplo.

Vamos ajustar a permissão na pasta “regras” para o squid.

chown -Rf squid:squid /etc/squid/regras/
  • Configurando a Autenticação Local

No squid teremos a autenticação local, ou seja, teremos um arquivo responsável por armazenar os logins e senhas dos usuários.

Para criar esse arquivo vamos precisar instalar o Apache2 no CentOS, vamos utilizar um complemento do Apache2 chamado “htpasswd”.

yum -y install httpd

Não é necessário nem iniciar o serviço do Apache, vamos criar o arquivo de logins e senhas.

Criando os usuários com o comando “htpasswd”

Utilize o comando abaixo, somente pela primeira vez, para criar o arquivo:

O parâmetro “-c” na linha abaixo indica que o comando crie o arquivo e em seguida o usuário informado.

htpasswd -c /etc/squid/usuarios geraldo

Para os demais usuários utilize:

htpasswd /etc/squid/usuarios geraldo.poli

Analisando o arquivo criado:

cat /etc/squid/usuarios 
geraldo:$apr1$bkV/Ho2E$lTFiX31f.GUPnXHbOUuqd.
geraldo.poli:$apr1$wuTx5YlN$EbVodnSgzKdrFpYANo7I21
  • Iniciando o SQUID

Agora vamos criar o diretório de cache do squid.

squid -z

Em seguida iniciamos o serviço do Squid.

systemctl start squid

Verificando o Status do sistema:

 systemctl status squid
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-06-19 13:29:19 EDT; 19h ago
  Process: 5229 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, status=0/SUCCESS)
  Process: 5218 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
 Main PID: 5243 (squid)
   CGroup: /system.slice/squid.service
           ├─5243 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─5245 (squid-1) -f /etc/squid/squid.conf
           └─5274 (unlinkd)

Jun 19 13:29:19 bra01squid01.local systemd[1]: Starting Squid caching proxy...
Jun 19 13:29:19 bra01squid01.local squid[5243]: Squid Parent: will start 1 kids
Jun 19 13:29:19 bra01squid01.local systemd[1]: Started Squid caching proxy.
Jun 19 13:29:19 bra01squid01.local squid[5243]: Squid Parent: (squid-1) proce...d
Hint: Some lines were ellipsized, use -l to show in full.

Vamos deixar o squid configurado para iniciar junto ao boot do sistema linux.

systemctl enable squid
  • Testando o funcionamento do SQUID

Para testar o servidor Squid insira o IP e porta nas configurações de proxy do navegador.

Visite um site na lista de bloqueados, globo.com por exemplo, veja o resultado abaixo:

Digite o login e senha de acesso criado nos passos anteriores:

Acessando o site globo.com que está na lista de bloqueados.

Acompanhe os logs de acessos.

tail -f /var/log/squid/access.log 

1561035035.315      0 192.168.0.209 TCP_DENIED/403 4157 GET http://g1.globo.com/favicon.ico - HIER_NONE/- text/html
1561035035.318      0 192.168.0.209 TCP_DENIED/403 4157 GET http://g1.globo.com/favicon.ico - HIER_NONE/- text/html

Veja nos logs que o acesso foi negado pelo SQUID, TCP_DENIED/403 no domínio na lista de proibidos.

A configuração do SQUID é em cima de ACL, sabendo o funcionamento e a ordem de como utilizar as ACL no SQUID é possível bloquear downloads, liberar ou bloquear usuários ou endereços IPs e muito mais.

Dúvidas, comentário e sugestões só avisar.
Valeu! e até a próxima!

Continue Reading

FLISoL 2019 – Blumenau

Olá amigos.

Este ano tive a oportunidade de palestrar na FLISoL 2019.

A comunidade do Hackerspace Blumenau é muito bacana, além de ter apresentado conteúdos muito interessantes.

Este ano conversamos sobre Zabbix e como automatizar atividades rotineiras, além da redução de Down time nos serviços. A interação do pessoal no evento foi muito boa além da troca de conhecimentos.

Abaixo uma foto do evento:

Estou deixando abaixo o link para download da apresentação que realizei esse ano sobre Zabbix.

Qualquer duvida me coloco a disposição. Abraços

Continue Reading

IBM Systems Technical University 2019

Olá amigos, no ultimo mês tive oportunidade de participar do IBM TechU que me surpreendeu muito com as novas tecnologias. Vou listar abaixo algumas pontos que chamaram a atenção. 


* RedHat e as novas apostas no futuro OpenSource

* Utilização de BlockChain alinhado ao negocio. 

* IA . IBM Whatson 


Em todo o evento os assuntos mais comentados foram estes.
Algumas considerações:


* RedHat e as novas apostas no futuro OpenSourceA IBM comentou sobre sua aquisição da RedHat . Precisavam de um sistema de alta disponibilidade com segurança e resiliência . O RedHat está a nível de atender essas demandas.Em alguns exemplos aonde o processador da IBM comparado com outras marcas tiveram performance 40% maior. Realmente essa diferença deve ser levada em considereçao no momento de aquisição de novas maquinas para Datacenter. Pois você pode investir em um hardware com menos processadores físicos, mas que o processador tenha um numero maior de Ghz e cache na qual traga mais performance para o ambiente alem de redução de licenciamentos que são vinculados a quantidade de processadores.


* Utilização de BlockChain alinhado ao negocio. Outro ponto interessante foi como a IBM junto com varias empresas estão utilizando o BlockChain como “Livro registro”. O exemplo mais utilizado foi o seguinte, imagine uma grande rede de mercado querendo comprovar a procedência dos seus alimentos, nesta situação o produtor registraria as seguintes informações no BlockChain ”data colheita + data do envio + analise da qualidade + foto”após lançado no BlockChain esse registro não pode mais ser apagado, porem a ideia é que ele seja alimentado para gerar todo um histórico sobre o produto. Dando continuidade no exemplo , agora o caminhoneiro recebe o produto registra as seguintes informações ” Origen + Destino + Temperatura de Transporte” . Isso tudo vai auxiliar que o processo seja mais controlado alem de trazer maior segurança para o consumidor.


* IA . IBM Whatson O que falar sobre IA, o IBM Whatson ? Na minha opinião o futuro de IA.Nas situações do evento muitos exemplos foram feitos com IA analisando imagens de pessoas com Câncer de pele ou sem câncer de pele, alem de mostrarem como é feito o treinamento dos algoritmos.A eficiência hoje é muito grande , alem de você por exemplo tirar um raio x, você pode sair com o resultado em minutos sem a intervenção de um medico. Claro que tudo isso tem que ser muito treinado e acompanhado. Mas claro que mostra como o futuro está caminhando para coisas incríveis.


Essas são minhas observações que gostaria de compartilhar com vocês e qualquer duvida estou disponível para conversarmos mais.
Abraços.

Continue Reading

Erro na instalação do Vmware Vspher no IBM System X3650 M2

Olá amigos.

Recentemente me deparei com um erro na instalação do Vmware Vspher em um servidor IBM X3650 M2, conforme imagem abaixo durante o processo de instalação do Vmware acabava ocorrendo um erro e o processo ficava travado em uma tela preta :

Fiz vários testes removendo as placas adicionais do servidor, discos, memórias e revisando processadores. Porem o erro prosseguia.

Porem a solução está na BIOS, é necessário efetuar o procedimento abaixo:

1 – Acessar a BIOS na inicialização do servidor e abrir o menu “System Settings”

2 – Novamente entrar no menu “Legacy Support”

3 – Por ultimo desabilitar a opção : “Force Legacy on Boot”

4 – Agora basta somente salvar as configurações e reiniciar o servidor.

O processo de instalação deve funcionar sem problemas.

Qualquer duvida estou a disposição, abraços.


Continue Reading

Instalando Zabbix Agent no CentOS/RHEL 6 e 7

Olá amigos.

O agente Zabbix concentra as informações locais sobre o dispositivo monitorado para posterior envio ao servidor ou proxy Zabbix (dependendo da configuração). Em caso de falhas (como um disco cheio ou a interrupção de um processo) o servidor Zabbix pode alertar .

Existe inúmeros agentes como (FreeBSD, OpenBSD, Windows, Centos, Debian, openSUSE, Ubuntu, Ipmi, Jmx e SNMP).

Abaixo vamos realizar a simples instalação do Zabbix Agente .

Adicionar repositórios
Vamos executar os comandos abaixo conforme o seu SO para adicionar o Zabbix agente ao repositório

CentOS 6 execute o comando abaixo:

rpm -Uvh http://repo.zabbix.com/zabbix/4.0/rhel/6/x86_64/zabbix-release-4.0-1.el6.noarch.rpm

CentOS 7 execute o comando abaixo:

rpm -Uvh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

Instalando o Zabbix Agente

yum install zabbix-agent

Definindo o arquivo de configuração
Minha sugestão é deletar o arquivo original de configuração e criar um arquivo novo somente com as informações necessárias :

rm /etc/zabbix/zabbix_agentd.conf

Agora vamos criar o novo arquivo e informar as configurações necessarias:

vim /etc/zabbix/zabbix_agentd.conf

Adicione as linhas abaixo, lembrando de substituir o endereço do servidor zabbix e o nome do servidor monitorado:

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
DebugLevel=3
Server=IP DO SERVIDOR ZABBIX
StartAgents=5
ServerActive=IP DO SERVIDOR ZABBIX
Hostname=HOSTNAME DA MAQUINA MONITORADA
Timeout=3
Include=/etc/zabbix/zabbix_agentd.d/*.conf

Iniciando o serviço do Zabbix Agent

CentOS 6 execute o comando abaixo para habilitar a inicialização e subir o serviço:

# service zabbix-agent start
# chkconfig zabbix-agent on

CentOS 7 execute o comando abaixo para habilitar a inicialização e subir o serviço:

# systemctl start zabbix-agent
# systemctl enable zabbix-agent

Liberando as portas no iptables

Caso o firewall do servidor esteja habilitado é necessário executar o comando abaixo para liberação da porta de comunicação:

iptables -A INPUT -p tcp -s 192.168.1.100 --dport 10050 -m state --state NEW,ESTABLISHED -j ACCEPT

Lembrando que é necessario subistituir o ip do comando pelo o ip do seu server Zabbix.

Validando a Execução do Agente

Execute o comando abaixo para validar a execução do Zabbix Agent :

systemctl status zabbix-agent

Conforme a imagem abaixo você pode ver que o serviço do Zabbix está rodando.

Bom pessoal o procedimento é simples e qualquer duvida estou a disposição.

Abraços

Continue Reading