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
Please follow and like us:

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.

Please follow and like us:

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.

Please follow and like us:

Como instalar e configurar, Linux, Nginx, MySQL, PHP 7 no CentOS 7 (LEMP)

LEMP - Linux, Nginx, Mysql, PHP

LEMP é um grupo de Software Livre. A sigla LEMP significa Linux, Nginx (pronuncia-se Engine x), MySQL e PHP .

Nginx é um software de servidor Web de código aberto robusto, pequeno, de alto desempenho, servidor proxy reverso e também servidor proxy de E-mail.
Os dados do site serão armazenados em um banco de dados MySQL (usando MariaDB) e o conteúdo dinâmico será processado pelo PHP 7.

O Pré Requisito para continuar com esse tutorial é que você já tenha o Linux CentOS 7 instalado.

Primeiro passo – Instalar o Nginx

No CentOS o Nginx não está disponível no repositório padrão. Vamos adicionar o repositório EPEL para que possamos instalar o Nginx através do yum.

yum install epel-release

Com o repositório EPEL instalado no servidor, vamos instalar o nginx

yum install nginx

Vamos iniciar o nginx

systemctl start nginx

Nós já podemos acessar utilizando o IP de seu servidor, a página “default” do nginx e certificar que tudo está ok. Caso não saiba ou tenha certeza de qual é o IP utilize:


ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

ou

curl http://icanhazip.com

Se está utilizando o CentOS 7, provavelmente precisará de uma nova regra ao Firewall padrão (firewalld), para permitir tráfego na porta 80.




Adicionando nova regra ao Firewalld

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

ou

firewall-cmd --permanent --zone=public --add-port=80/tcp

Restart firewalld

systemctl restart firewalld.service

Abra seu Browser e acesse:


http://IP_do_Seu_Servidor

Você verá a página Default do NGINX, que é exibida para fins de informação e teste.

Página Default do NGINX
Página Default do NGINX

Segundo Passo – Instalar MySQL(MariaDB)

Agora que temos o servidor web NGINX instalado e configurado, vamos instalar o MariaDB, que irá armazenar e gerenciar os dados do site. O MariaDB é mantido pela comunidade de desenvolvedores originais do antigo e conhecido MySQL.

O MariaDB vem com repositórios padrão do CentOS, vamos utilizar o Yum para instalá-lo.

yum install mariadb-server mariadb

Vamos iniciar o MariaDB no servidor e habilitá-lo para iniciar automaticamente após o reboot.

systemctl start mariadb
systemctl enable mariadb

Com o MariaDB(MySQL) iniciado, precisamos executar um script de segurança que irá remover algumas configurações default e deixará nossa instalação mais segura.

mysql_secure_installation

A primeira opção irá perguntar qual é a senha do root para o MariaDB. Como acabamos de instalar o MariaDB, você deverá deixar esta opção em branco e pressionar enter para continuar. Na próxima questão será solicitado que digite uma senha para o root do MariaDB e confirme.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
 ... Success!

Para as outras questões digite Y.

Remove anonymous users? [Y/n] Y
...
Disallow root login remotely? [Y/n] Y
...
Remove test database and access to it? [Y/n] Y
...
Reload privilege tables now? [Y/n] Y

Teceiro Passo – Instalar o PHP 7


O PHP é o responsável em processar o código para exibir conteúdo dinâmico. Ele poderá executar scripts, conectar-se ao bancos de dados MySQL para obter informações e entregar o conteúdo processado ao seu servidor da Web para exibição.

O primeiro passo será instalar o repositório do CentOS que contém os pacotes de instalação do PHP 7.2

wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm

Habilitar o repositório do php72:

yum install yum-utils -y
yum-config-manager --enable remi-php72

Instalar pacotes do PHP:

yum --enablerepo=remi,remi-php71 install php-fpm php-common

Instalando módulos comuns:

yum --enablerepo=remi,remi-php71 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml

Configurando o processamento do PHP

Nós já temos agora, o php 7.2 e componentes instalados no servidor mas precisamos fazer algumas modificações para manter o servidor mais seguro.

Edite o arquivo principal de configuração do php:

nano /etc/php.ini

Vamos configurar o PHP para aceitar apenas URLs de arquivos que realmente existem no servidor. Isso atenua uma vulnerabilidade de segurança em que o interpretador PHP pode ser induzido a permitir a execução de código arbitrário se o arquivo .php solicitado não estiver presente no sistema de arquivos.

Localize cgi.fix_pathinfo altere para 0 , isso irá desabilitar essa função.Lembre-se de Remover o “;” antes do nome para descomentar essa função.

cgi.fix_pathinfo=0

Salve e saia do editor nano. ( ctrl+x , y)

Abra e edite o arquivo de configuração do php-fpm www.conf:

nano /etc/php-fpm.d/www.conf

Procure a linha “listen =” e modifique conforme abaixo:

listen = /var/run/php-fpm/php-fpm.sock

Localize listen.owner e listen.group . Descomente removendo o “;” antes das funções e altere para :

listen.owner = nginx
listen.group = nginx

Localize user e group. Altere os valores de apache para nginx

user = nginx
group = nginx

Salve e saia do editor nano. ( ctrl+x , y)

Agora, precisamos apenas iniciar nosso processador de PHP e habilitar para iniciar após o boot.

systemctl start php-fpm
systemctl enable php-fpm

Quarto Passo – Configurar Nginx para processar páginas PHP 7.2

Agora vamos criar um novo arquivo de configuração para o Nginx . Substitua em server_name “nome_dominio_ou_IP_do_Seu_Servidor” para o IP de seu servidor :

nano /etc/nginx/conf.d/default.conf

Insira o código abaixo:

server {
    listen       80;
    server_name  nome_dominio_ou_IP_do_Seu_Servidor;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Salve e saia do editor nano. ( ctrl+x , y)

Reinicie o nginx para que as modificações sejam carregadas.

systemctl restart nginx

Para Finalizar, vamos criar um arquivo de teste em php que trará informações sobre nosso servidor e php .

nano /usr/share/nginx/html/info.php

Insira o código:

phpinfo

Salve e saia do editor nano. ( ctrl+x , y) .

Agora acesse :

http://ip_do_seu_servidor/info.php
.

Será exibido uma página semelhante a :

PHP Info 7.2

Agora você tem o LEMP instalado e configurado em seu servidor da melhor forma possível. Com estas configurações você poderá hospedar em seu servidor os mais diversos sistemas, como por exemplo WordPress, Joomla, etc…

Espero que tenha gostado!

Please follow and like us: