Como habilitar o open_basedir com suPHP no CWP – Centos WebPanel

A proteção open_basedir do PHP impede que os usuários acessem arquivos fora de seu diretório home através de scripts php e acessem arquivos do sistema ou de outros usuários. O mais importante é impedir que scripts maliciosos acessem informações importantes.

O CentOS WebPanel usa o suPHP por padrão, portanto, o open_basedir não pode ser habilitado por meio do apache vhost ou pelo arquivo .htaccess com as opções: php_admin_value open_basedir.

Primeira opção – Habilitar open_basedir de forma global para todos as contas de usuários no CentOS WebPanel.

touch /usr/local/php/php.d/openbasedir.ini
echo "open_basedir = /home:/tmp:/var/tmp:/usr/local/lib/php/" > /usr/local/php/php.d/openbasedir.ini
service httpd restart

Segunda opção – Habilitar open_basedir por usuário

  • Crie o arquivo php.ini em public_html do usuário e insira
open_basedir = /home/username:/tmp:/var/tmp:/usr/local/lib/php/

**Substitua username pelo nome do usuário (Ver em List Accounts em seu Painel).

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:

Segurança do phpMyAdmin contra ataque de Brute Force

phpMyAdmin com reCAPTCHA

Como padrão a página de login do phpMyAdmin apresenta apenas os campos Usuário e Senha, permitindo qualquer um com o nome de um usuário e senha de banco de dados válidos em seu servidor acessar e fazer alterações no banco de dados.

Um cracker poderia se utilizar de algum script de Brute Force para executar um “ataque de dicionário” a fim de encontrar sua senha com combinações de palavras, letras e símbolos.

Neste tutorial vamos adicionar uma camada extra de segurança ao phpMyAdmin a fim de impedir este tipo de ataque. Para isso, vamos utilizar o que considero ser a melhor solução até a data deste post, o Google Recaptcha . Antes de qualquer login será preciso resolver o captcha, impedindo qualquer tipo de ataque de Brute Force ao phpMyAdmin.

Mãos a obra!

Nota – Antes de começar:
Este passo a passo foi escrito utilizando um servidor com Painel CWP Pro (CentOS Web Panel) e CentOS 6, porém já testado em servidores com CentOS, Ubuntu, com ou sem Painel de controle (foram necessárias apenas algumas adaptações lógicas).


Passo 1:

Acesse a página do Google Recaptcha , em “Register a new site” :

Configurando reCAPTCHA do Google
  • Label : utilize seu dominio ou o hostname do servidor.
  • Marque reCAPTCHA v2
  • Domains: informe o IP e o nome de seu hostname
  • Clique em Register. Na tela a seguir copie o código de
    site key e secrect key . Vamos utilizá-los a seguir.

Passo 2:

Nota: os passos abaixo se referem a um servidor com o Painel CentOS Web Panel. Se não utiliza este Painel, localize o local de instalação do seu phpMyAdmin e siga os passos…

  • Acesse o local de instalação do phpMyAdmin
cd /usr/local/cwpsrv/var/services/pma/
  • Edite o arquivo de configuração
nano config.inc.php
  • Adicione as Linhas abaixo, substituindo
    Site key e Secret key pelos valores gerados no passo 1.
$cfg[‘CaptchaLoginPublicKey’] = ‘Site key’;
$cfg[‘CaptchaLoginPrivateKey’] = ‘Secret key’; 
  • Salve e saia do editor nano ( “ctrl+x “ e “y” )

Pronto, isso é tudo! Agora acesse seu phpMyAdmin. A partir de agora, você terá uma camada a mais de segurança no login :

Please follow and like us: