15 melhores dicas de segurança para pilha de lâmpadas

15 melhores dicas de segurança para pilha de lâmpadas

Muitos novos administradores de sistema esqueceram de aplicar a segurança ao configurar um ambiente de hospedagem na web para uso da produção com Apache, MySQL e PHP. Estou tentando incluir todas as dicas de segurança que devemos ser consideradas ao preparar um novo sistema para uso da produção ou qualquer configuração de lâmpada existente.

Todas as alterações de configuração usadas neste artigo serão atualizadas nos seguintes arquivos de configuração, conforme seus sistemas operacionais. Em alguns casos, o caminho dos arquivos de configuração pode mudar. Portanto, faça a alteração arquivos inadequados. Depois de fazer as alterações reiniciar os serviços relacionados à mudança, entre em vigor.

Para Ubuntu, Debian & Linuxmint:
  • Apache2: /etc/apache2/apache2.conf
  • PHP: /etc/php/[versão]/apache2/php.ini
  • Mysql: /etc/mysql/meu.cnf ou/etc/mysql/mysql.conf.d/mysqld.CNF
Para Centos, Redhat & Fedora:
  • Apache: /etc/httpd/conf/httpd.conf
  • PHP: /etc/php.ini
  • Mysql: /etc/meu.CNF

#1. Hiding Version e OS Identity (Apache)

O Servertokens A diretiva controla se o campo de cabeçalho de resposta ao servidor, que é enviado de volta aos clientes. A Assinatura do Servers. Edite o arquivo de configuração do Apache e atualize as seguintes diretivas da seguinte maneira.

  • ServerSignature - mostra a versão do apache
     Servertokens Prod 
  • Servertokens - fornece versões do sistema operacional junto com outros detalhes do servidor confidencial.
     ServerSignature off 

#2. Desativar a Listagem de diretórios (Apache)

Se a listagem do diretório estiver ativada no Apache. Em seguida, todos os arquivos e lista de diretórios serão mostrados na página da web se não houver documento padrão. Adicione a configuração seguinte no Apache para desativar o servidor de listagem de diretórios.

 Opções -Indexes   

Depois disso, você pode ativar uma base de listagem por diretório, se necessário.

#3. Restringindo o arquivo e acesso do diretório (Apache)

Restringindo o acesso com base no diretório, arquive o local no Apache.

Diretório restrito

Para restringir o acesso de diretórios e arquivos dos usuários, ele só permitirá que os IPs sejam definidos com permissão de.

 Ordem negar, permitir negar de todos permitir de 192.168.1.0/24 Permitir de .exemplo.com  

Arquivo restrito

Também podemos restringir o arquivo específico usando a diretiva de arquivo, como abaixo.

 Ordem negar, permitir negar de todos  

Restringir a localização

A diretiva de localização limita o escopo das diretivas fechadas por URL.

 Ordem negar, permitir negar de todos permitir de 192.168.1.0/24 Permitir de .exemplo.com  

#4. Desativar o lado do servidor Inclui e CGI (Apache)

Podemos simplesmente desativar o lado do servidor Inclui e a execução do CGI definindo a tag de diretório. Adicionar abaixo no arquivo de configuração do host virtual Apache.

 Opções -incluídas -execcgi  

#5. Restringir o vazamento de informações do PHP (PHP)

Por padrão, a instalação do PHP expõe ao mundo que o PHP está instalado no servidor, que inclui a versão PHP no cabeçalho HTTP (por exemplo: X-Powered-By: PHP/5.4.20). consulte Mais informação

Para ocultar esses valores do cabeçalho Editar PHP.ini e atualizar abaixo a diretiva para desligar

expose_php = off 

#6. Desativar a execução do código remoto (PHP)

Se allow_url_fopen está ativado na sua configuração, ele permite funções como file_get_contents () e a inclusão e requer declarações que possam recuperar dados de locais remotos HTTP ou FTP e executar seu código.

allow_url_fopen = off allow_url_include = off 

#7. Desativar funções PHP perigosas (PHP)

Podemos desativar qualquer função PHP usando a Diretiva Disable_functions no arquivo de configuração do PHP. Desative todas as funções que podem ser prejudiciais e não usadas em aplicativos.

desabille_functions = Exec, shell_exec, passthru, sistema, Popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, proc_open, pcntl_exec 

#8. Limite o acesso do PHP ao sistema de arquivos (PHP)

A Diretiva Open_basedir define os diretórios dos quais o PHP pode acessar arquivos

open_basedir = "/home/user/public_html" 

#9. Desativar módulos PHP não utilizados (PHP)

O PHP suporta "extensões dinâmicas" para carregar no ambiente PHP. Podemos desativar qualquer módulo não utilizado para carregar no sistema alterando o nome do arquivo de configuração.

CD /etc /php.d/ mV oci8.ini oci8.ini.desativar 

#10. Ativar limites no PHP (PHP)

Para permitir que os usuários enviem arquivos de tamanho máximo, atualize o valor da configuração seguinte.

 upload_max_filesize = 2m #Maximum 2MB do arquivo de arquivo pode fazer upload 

Tempo máximo de execução de cada script

 max_execution_time = 30 # segundos 

Quantidade máxima de tempo que cada script pode gastar dados de solicitação de análise

max_input_time = 60 # segundos 

#11. Restringir o acesso remoto MySQL (MySQL)

Se o seu ambiente de aplicativo não precisar de acessar o banco de dados remotamente, desative todas as conexões remotas para o servidor de banco de dados. A maneira mais fácil de fazer isso forçar o servidor MySQL a ouvir apenas em 127.0.0.1 (localhost).

Edite o arquivo de configuração do MySQL e atualize o seguinte valor.

Address de ligação = 127.0.0.1 

#12. Desativar o uso de infilos locais (MySQL)

A ativação do infile local pode ser perigoso para a segurança do seu sistema. Se o Infile local estiver ativado no servidor, um usuário poderá carregar qualquer arquivo (como /etc /passwd, /etc /Shadow) em uma tabela facilmente.

Para desativar este arquivo de configuração MySQL Editar e adicionar o seguinte valor na seção [MySQLD].

[mySqld] Local-Infile = 0 

#13. Crie um usuário específico do aplicativo no MySQL (MySQL)

Não use o usuário do MySQL 'root' para acessar o banco de dados através do aplicativo. Pode ser perigoso para o seu sistema. Portanto, certifique-se de criar e usar um usuário específico do aplicativo com acesso limitado ao banco de dados de aplicativos apenas. Para criar uma conta MySQL, use o seguinte comando.

[Email Protected]: ~# mysql -u root -p mysql> crie usuário 'myusr'@'localhost' identificado por 'senha'; MySQL> Grant Select, Insert, Atualize, Exclua no MyDB.* Para 'myusr'@'localhost' identificado por 'senha'; mysql> privilégios de descarga; 

#14. Melhore a segurança com mysql_secure_installation (MySQL)

Depois de instalar o comando mysql mysql_secure_installation é muito útil para proteger o servidor MySQL. Este comando também permitirá a proteção de senha no usuário root.

[Email Protected]: ~# mysql_secure_installation "Somente a saída necessária é mostrada abaixo. Na realidade, você verá mais saída na tela "Altere a senha raiz? [S/n] y Nova senha: ********** Reentro nova senha: ********** Remova usuários anônimos? [Y/n] y desaprovante o login de raiz remotamente? [S/n] y remova o banco de dados de teste e acesso a ele? [S/N] Y RELOAD TABELAS DE PRIVILEGAMENTE AGORA? [Y/n] y 

#15. Escreva arquivos de configuração Protect (apache/mysql/php)

Nesta seção, estamos protegendo todos os nossos arquivos de configuração do servidor usados ​​na pilha de lâmpadas, para que ninguém possa alterar esses arquivos.

chattr +ai /etc /php.Ini chattr +ai /etc /php.d/* chattr +ai/etc/my.CNF chattr +ai/etc/httpd/conf/httpd.conf 

Lembre -se de que depois de ativar a proteção de gravação, nenhum usuário, incluindo root, pode atualizar esses arquivos. Caso você precise atualizar qualquer um dos arquivos desative a proteção de gravação primeiro usando o seguinte comando.

Chattr -ai FileName 

Continuaremos atualizando dicas úteis de segurança da lâmpada para este artigo. Também solicitamos que você sugira dicas adicionando -as nos comentários.