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

Configurando Bonding no CentOS 7 e Red Hat 7

Olá amigos.

Feliz 2019 a todos, e que possamos compartilhar muitas experiências neste ano.

O Bonding é módulo do Kernel Linux e que permite usar várias interfaces de rede em uma única interface lógica. Sua implementação é simples, e por sinal bem documentado.

Tipos de Bonding:

ModePoliticaComo FuncionaTolerância a falhaBalanceamento de carga
0Round RobinOs pacotes são transmitidos / recebidos sequencialmente através de cada interface, um por um.NoYes
1Active BackupUma NIC ativa enquanto outra NIC estiver adormecida. Se a NIC ativa cair, outra NIC se tornará ativa. Suportado apenas em ambientes x86.YesNo
2XOR [exclusive OR] Neste modo, o endereço MAC do NIC escravo é comparado com o MAC do pedido recebido, uma vez estabelecida esta conexão, o mesmo NIC é usado para transmitir / receber para o MAC de destino.
YesYes
3BroadcastTodas as transmissões são enviadas em todos os escravos.YesNo
4Dynamic Link AggregationNICs agregadas atuam como uma NIC que resulta em um rendimento mais alto, mas também fornece failover no caso de falha de uma NIC. Agregação dinâmica de links requer um switch que suporte IEEE 802.3adYesYes
5Transmit Load Balancing (TLB)O tráfego de saída é distribuído dependendo da carga atual em cada interface escrava. O tráfego de entrada é recebido pelo escravo atual. Se o escravo receptor falhar, outro escravo assumirá o endereço MAC do escravo com falha.YesYes
6Adaptive Load Balancing (ALB)Ao contrário da Agregação de Link Dinâmico, o Balanceamento de Carga Adaptável não requer nenhuma configuração de switch específica. O balanceamento de carga adaptável é suportado apenas em ambientes x86. Os pacotes de recebimento são balanceados por carga através da negociação ARP.YesYes

O laboratório vai ser executado no Centos 7, porem a configuração é compatível com o RedHat 7

Requisitos:

Caso o modulo do Bonding, não esteja ativo o comando abaixo faz a ativação:

modprobe bonding

Para listar as informações do módulo de Bonding , use o seguinte comando.

modinfo bonding

1ª Etapa : Criar arquivo de interface Bond

Crie um arquivo de interface Bound (ifcfg-bond0) na pasta “/ etc / sysconfig / network-scripts /”

DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.21.90
NETMASK=255.255.255.0
GATEWAY=192.168.20.1
BONDING_OPTS="mode=5 miimon=100"

Especifique o endereço IP, a máscara de rede e os modos de ligação conforme sua necessidade. No meu exemplo eu estou usando o modo = 5, que é usado para fornecer tolerância a falhas e balanceamento de carga.

2ª Etapa : Edite os arquivos das interfaces de rede

Abaixo vou deixar o exemplo de como deixo as duas placas de rede configuradas:

Placa 1- ifcfg-ens32

TYPE=Ethernet
BOOTPROTO=none
MASTER=bond0
NAME=ens32
UUID=4eb18706-42cf-48fb-bb66-fd48f360fe58
DEVICE=ens32
ONBOOT=yes
SLAVE=yes

Placa 2- ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=none
MASTER=bond0
NAME=ens33
UUID=5689a159-eeeb-4003-a4fe-73a7e6fada39
DEVICE=ens33
ONBOOT=yes
SLAVE=yes

3ª Etapa : Reiniciando serviço de rede e testando

O comando abaixo irá reiniciar o serviço de rede e assim aplicar as alterações feitas.

systemctl restart network.service

Vamos utilizar o comando “ifconfig” para validar as configurações, podem notar que temos o bond0 criado e com o IP setado.

O comando abaixo mostra informações detalhadas do Bond e as interfaces secundárias.

cat /proc/net/bonding/bond0

Teste de tolerância a falhas

Para testar a tolerância a falhas, podemos desativar uma interface e verificar se conseguimos ainda comunicar na rede.

Fica claro que mesmo com uma das interfaces que é a ens32 down o host continuo comunicando com a interface ens33.

Qualquer duvida me avisem. Abraços

Continue Reading

Adicionando php-pecl-apcu no CentOS 7 para ownCloud 8 ou superior

Olá amigos, satisfação em escrever novamente para vocês.

Recentemente estava realizando o setup de um servidor para nuvem utilizando o Owncloud, e na pagina de administração é informado alguns alertas na qual o administrador precisa verificar para que o sistema funcione em perfeito estado.

A página de administração do ownCloud informa que não há cahce de memória habilitado. Um pequeno trabalho precisa ser feito para deixar todo o sistema operando sem nenhum alerta. As instruções gerais podem ser encontradas na documentação do ownCloud.

O APCu está disponível apenas no PHP 5.5 ou superior. A documentação do ownCloud possui instruções para instalar uma solução diferente se você estiver executando o PHP 5.4.

Supondo que você realizou a instalação no PHP 5.5 ou superior, verá que a ativação  é bem simples com os comandos abaixo.

Dependendo de como você habilita o repo, a instalação é tão simples quanto executar um comando yum install.

yum install php-pecl-apcu

Se você precisar habilitar o repositório manualmente, você pode adicionar o comando –enablerepo = remi-php56 (ou 55) ao yum.

Uma vez instalado, reinicie o Apache

systemctl restart httpd

Agora você basicamente atualiza sua configuração do ownCloud para fazer uso da função.

vim /var/www/html/owncloud/config/config.php

Adicione isto à configuração.

'memcache.local' => '\OC\Memcache\APCu',

Da próxima vez que você for ao painel de controle do administrador, o aviso do memcache será removido.

Qualquer duvida estou a disposição.

Continue Reading

Como instalar o Cacti no Centos7/RedHat7

Olá amigos, satisfação em escrever novamente para vocês.

Hoje veremos sobre o Cacti  que é uma ferramenta software livre administrativa de rede, que recolhe e exibe informações sobre o estado de uma rede de computadores através de gráficos, permitindo o monitoramento e gerenciamento de redes simples até redes complexas, com centenas de dispositivos. Foi desenvolvido para ser flexível de modo a se adaptar facilmente a diversas necessidades, bem como ser robusto e adicionando a isto uma interface Web intuitiva e fácil de usar. Monitora o estado de elementos de rede e programas bem como largura de banda utilizada e uso de CPU.

Instalando Apache

yum install httpd httpd-devel

Instalando MariaDB

yum install mariadb-server -y

Instalando PHP

yum install php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli

Instalando PHP-SNMP

yum install php-snmp

Instalando NET-SNMP

yum install net-snmp-utils net-snmp-libs

Instalando RRDTool

yum install rrdtool

Iniciando Apache, MySQL e SNMP Services

systemctl start httpd.service
systemctl start mariadb.service
systemctl start snmpd.service

Configurando a inicialização com Sistema

systemctl enable httpd.service
systemctl enable mariadb.service
systemctl enable snmpd.service

Repositório + Nginx

yum install epel-release
yum install nginx

Instalando Cacti

yum install cacti

Definindo senha MYSQL

mysqladmin -u root password flisol2018

Acessar MYSQL:

mysql -u root -p

Rodar a Query

create database cacti;
GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'flisol';
GRANT ALL PRIVILEGES ON * . * TO 'cacti'@'localhost';
FLUSH privileges;
quit;

Criando tabelas

rpm -ql cacti | grep cacti.sql
mysql -u cacti -p cacti < /usr/share/doc/cacti-1.1.36/cacti.sql

Configurar conexão banco:

vim /etc/cacti/db.php

$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "your-password-here";
$database_port = "3306";
$database_ssl = false;

Liberações Firewall

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

Configurando o Apache para aceitar as conexões

vim /etc/httpd/conf.d/cacti.conf

# httpd 2.4
Require all granted
# httpd 2.2
Order deny,allow
Deny from all
Allow from all

Reiniciar Apache

systemctl restart httpd.service
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Configurar Timezone no PHP

vim /ete/php.ini

date.timezone = "America/Sao_Paulo"

Habilitar a coleta dos graficos

sudo -u cacti /usr/bin/php /usr/share/cacti/poller.php

Acessando Aplicação:

Você deve abrir no navegador o endereço de ip apontando para o cacti, exemplo:

http://IP/cacti/

Algumas confirmações serão necessárias na interface web para concluir a instalação, após concluir a configuração da instalação  a interface web será aberta:

Pronto, sua instalação está realizada.

Estaremos criando um próximo artigo aonde mostra a configuração dos relatórios e equipamento para iniciar a analise com o Cacti.

 

Qualquer duvida estou a disposição.

Abraços

 

 

 

Continue Reading

How to Stop and Start Firewalld on Centos 7 and Red Hat 7

Default installations of the CentOS 7 Linux operating system have the firewalld firewall installed and enabled by default as a security measure, but how can we disable it?

Disable Firewalld:
To disable firewalld, run the command as root:

systemctl disable firewalld

Stop Firewalld
To stop firewalld:

systemctl stop firewalld

Check the Status of Firewalld
And finally, to check the status of firewall:

systemctl status firewalld

Enable Firewalld
To enable firewalld, run the following command as root:

systemctl enable firewalld

Start Firewalld
To start firewalld, run the following command as root:

systemctl start firewalld

Check the Status of Firewalld

To check the status of firewalld, run the following command as root:

systemctl status firewalld

Continue Reading