Como habilitar HTTP/2 com nginx

Como habilitar HTTP/2 com nginx

Nginx com http/2

O HTTP/2 torna nossas aplicações web mais rápidas, simples e robustas. O http2 abre uma série de novas oportunidades para otimizar nossas aplicações e melhorar o desempenho.

O principal objetivo do http/2 é reduzir a latência permitindo a multiplexação total de solicitações e respostas, minimizando a sobrecarga de protocolos por meio de compactação eficiente do http header, além de adicionar suporte para a priorização de solicitações e envio de dados aos servidores. Existem ainda um grande suporte de outros aprimoramentos de protocolo, como novos mecanismos de controle de fluxo, tratamento de erros e atualização, mas os recursos descritos acima são os mais importantes .

 

Mãos a obra

Notas – Antes de começar:

  • Certifique-se que você tenha instalado em seu domínio um certificado ssl válido. http/2 somente funciona com HTTPS
  • Este passo a passo foi escrito utilizando um servidor com Painel CWP Pro (CentOS Web Panel) e CentOS 6, porém, já foi testado no CentOS 7, com ou sem Painel de controle   (foram necessárias apenas algumas adaptações lógicas).

– Acesse o SSH de seu servidor como root

Atualizando os packs do OS para a última versão


yum clean all
yum -y update

Atualizando Autoconf:


cd /usr/local/src
rm -rf autoconf-*
wget https://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
tar zxvf autoconf-latest.tar.gz
cd autoconf-*
./configure --prefix=/usr
make && make install

Atualizando Openssl:


cd /usr/local/src
rm -rf openssl-*
wget https://www.openssl.org/source/openssl-1.0.2q.tar.gz
tar zxvf openssl-1.0.2q.tar.gz
cd openssl-*
./config --prefix=/usr --openssldir=/usr/lib64 shared
make && make install

Instalando Nghttp2:


cd /usr/local/src
rm -rf nghttp2-* yum install libtool -y wget https://github.com/nghttp2/nghttp2/releases/download/v1.35.1/nghttp2-1.35.1.tar.gz tar zxvf nghttp2-1.35.1.tar.gz cd nghttp2-* ./configure --prefix=/usr make && make install

Acesse o diretório de configuração do nginx


cd /etc/nginx/conf.d/vhosts/

Edite o arquivo “seudodominio_ssl.conf”


nano seudodominio_ssl.conf

Localize:


server {
listen xxx.xx.xxx.xx:443;

xxx é apenas um exemplo. não altere o ip

Adicione após “:443” ssl http2


server {
listen xxx.xx.xxx.xx:443 ssl http2;

Salve e saia do editor nano ( “ctrl+x “ e “y” )

Reiniciei o nginx


service nginx restart

Agora, vamos verificar se está tudo certo, acesse https://tools.keycdn.com/http2-test
digite a url de seu site para verificar se o HTTP/2 está ativo

 

 

 

 

 

Como usar o comando tar para compactar/descompactar com Gzip e Bzip2

O comando tar (tape archive) é usado frequentemente no Linux para adicionar vários arquivos e pastas a um único arquivo. Os Arquivos tar são frequentemente compactados após serem criados, dando-lhes a extensão tar.gz(Gzip) ou tar.bz2(bzip2) principalmente. O comando tar possui um grande número de opções, mas precisamos lembrar apenas de algumas letras para criar ou extrair arquivos.

Abaixo, segue uma lista com os parâmetros mais importantes para o uso diário do tar ao compactar e descompactar arquivos:

  • -x (eXtract) Extrai os dados do arquivo .tar.gz
  • -c (Create) Cria um arquivo tar
  • -z (gZip) Utilizado para manipular o arquivo .tar.gz ou .tgz.
  • -j (Bzip2) Utilizado para manipular o arquivo .tar.bz2, .tar.bz ou .tbz.
  • -v (Verbose) Mostra na tela os arquivos que estão sendo comprimidos ou manipulados, um a um. Se não deseja ver os arquivos que estão sendo manipulados, você pode ignorar este parâmetro.
  • -f (File) Define que estamos trabalhando com arquivos.

Compactando um arquivo tar.gz

Por exemplo, se você possui um diretório /home/pedro e deseja compactar com tar.gz e nome backup-do-pedro.tar.gz utilize:

tar -czvf backup-do-pedro.tar.gz /home/pedro

Para compactar múltiplos diretórios utilize:

tar -czvf backup-geral.tar.gz /home/pedro /home/maria /home/jose

Descompactando um arquivo tar.gz

Para descompactar um arquivo tar.gz , utilize :

tar -xzvf nomedoarquivo.tar.gz

Embora a compactação gzip seja utilizada com mais frequência para criar arquivos .tar.gz ou .tgz o tar também suporta compactação bzip2. Isso nos permite criar arquivos compactados com bzip2, denominados arquivos .tar.bz2, .tar.bz ou .tbz.

O Gzip é mais rápido, mas geralmente comprime um pouco menos, criando o arquivo um pouco maior. O Bzip2 é mais lento, mas comprime um pouco mais, criando o arquivo um pouco menor.

Para utilizar a compactação com bzip2, basta substituir o -z para gzip nos comandos por um -j para bzip2.

Compactando um arquivo tar.bz2

tar -cjvf backup-do-pedro.tar.bz2 /home/pedro

Descompactando um arquivo tar.bz2

tar -xjvf nomedoarquivo.tar.bz2

Como desabilitar funções perigosas do PHP

O PHP é uma linguagem de script rica em recursos, mas quando utilizada de forma incorreta , intencionalmente ou não, pode comprometer grande parte do servidor web ou seus dados.

Através do arquivo php.ini em disable_functions, vamos criar uma lista de funções que devem ser desabilitadas por motivos de segurança.

Localizando o arquivo php.ini correto no servidor.

O primeiro passo é encontrar o arquivo php.ini correto no servidor. Existem vários cenários em um servidor web em que são criados vários arquivos php.ini . Por exemplo, se utilizamos o php-fpm com múltiplas versões do php instaladas em nosso servidor, haverá um php.ini para cada versão… Neste caso você deverá procurar o php.ini responsável por cada versão. O local correto irá variar dependendo de sua Distribuição Linux, se utiliza algum Painel de controle ou não , etc.

A forma mais simples de localizar o php.ini correto em nosso servidor é executando um arquivo php que nos traga através de “phpinfo()” todas as configurações de nosso php.

Crie um arquivo info.php em alguma url ativa em seu servidor web e insira

<?php
phpinfo();
?>

Acesse através de seu navegador web o arquivo info.php. Serão exibidas várias informações úteis sobre o php ativo nessa URL.

Localize: “Loaded Configuration File” . Este é o caminho correto para o php.ini que desejamos . Copie o caminho para php.ini , nós vamos utilizá-lo a seguir para informar em disable_functions as funções que desejamos desabilitar.

PHP Info Loaded Configuration

Acesse seu servidor linux utilizado o ssh e edite o arquivo php.ini

nano /caminhodeseuphp.ini/php.ini

Localize “disable_functions =” e modifique para :

disable_functions =  exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Em tempo, recomendo que por motivos de segurança desabilite allow_url_fopen e allow_url_include:

allow_url_fopen=Off
allow_url_include=Off

Salve (Ctrl+o) e saia do nano (Ctrl+x)

Reinicie o httpd server

  • Se utiliza o Apache e não possui o php-fpm:

Para CentOS/RedHat:

systemctl restart httpd 

ou

service httpd restart

Para Debian/Ubuntu:

service apache2 restart
  • Se utiliza o PHP-FPM

O PHP-FPM (FastCGI Process Manager ), é um manipulador do PHP que funciona a parte, como um serviço e não um módulo. A forma correta de reiniciar irá variar dependendo de como foi instalado em seu servidor .

Para simplificar, acesse seu arquivo info.php criado anteriormente e note que em ” Loaded Configuration File” haverá um nome parecido com “php-fpmxxx” esse será o nome do processo que você deverá reiniciar .

phpinfo php-fpm
Nome do processo php-fpm .Exemplo php-fpm72

Com as informações acima reinicie o serviço substituindo “php-fpmxxx” pelo nome encontrado em seu servidor. :

Para CentOS/RedHat:

systemctl restart php-fpmxxx 

ou

service php-fpmxxx restart

Para Debian/Ubuntu:

service php-fpmxxx restart

Para se certificar que as configurações foram atualizadas, acesse novamente seu arquivo info.php e verifique em disable_functions se a lista de funções estão sendo exibidas.

Nota Final: Para informação, utilizando o php-fpm existem ainda outras formas de desabilitar as funções que não foram abordadas neste post.

Como Configurar Pure-FTPd para aceitar encriptação TLS/SSL no CentOS

Pure-FTPd com TLS

FTP ou File Transfer Protocol é o protocolo de rede padrão da camada de aplicação usado para transferir o arquivo do cliente para o servidor.

O FTP simples é um protocolo inseguro porque todas as senhas e dados são transferidos em texto não criptografado. Ao usar o TLS, toda a comunicação será criptografada, tornando o FTP muito mais seguro.

O Pure-FTPd é um servidor FTP gratuito, com forte foco na segurança do software. É uma excelente opção, se deseja fornecer um serviço de FTP rápido, seguro e leve com muitos recursos .

Neste tutorial vamos abordar como habilitar o TLS no Pure-FTPd e criar um certificado SSL para ser utilzado pelo Pure-FTPd.

Primeiro Passo – Instalar OpenSSL

O OpenSSL é necessário para que TLS funcione. Para instalar utilize:

yum -y install openssl

Segundo Passo – Configurando Pure-FTPd

Edite o arquivo de configuração

nano /etc/pure-ftpd/pure-ftpd.conf

Para permitir sessões FTP e TLS, descomente removendo # e altere TLS para 1

TLS     1

Descomente as linhas abaixo removendo “#”

TLSCipherSuite           HIGH
CertFile                 /etc/ssl/private/pure-ftpd.pem

salve e saia do nano ( CTRL+o , Ctrl+x)

Terceiro Passo – Criar o Certificado SSL para o TLS

Para utilizar o TLS, precisamos criar um certificado SSL. O primeiro passo é criar o local onde será armazenado nosso certificado.

mkdir -p /etc/ssl/private/

Agora, vamos gerar o certificar SSL com o comando :

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Serão solicitadas algumas informações

Country Name (2 letter code) [XX]: <-- Digite a sigla do seu País (exemplo "BR").
State or Province Name (full name) []:<-- Digite seu estado ( exemplo : Minas Gerais)
Locality Name (eg, city) [Default City]:<-- Digite sua cidade
Organization Name (eg, company) [Default Company Ltd]: < -- Digite o nome de sua empresa ou organização.
Organizational Unit Name (eg, section) []:<-- Digite o setor responsável. (exemplo: Departamento de TI)
Common Name (eg, your name or your server's hostname) []:<-- Digite o nome de seu hostname 
Email Address []:<-- Digite o e-mail de contato

Altere as permissões do arquivo SSL

chmod 600 /etc/ssl/private/pure-ftpd.pem

Reinicie o Pure-FTP

systemctl restart pure-ftpd.service

Feito ! Agora , você poderá se conectar utilizando seu programa de FTP configurando para utilizar TLS . Quando conectar será exibido informações sobre o certificado do Servidor com as informações que digitou anteriormente.