Dicas de segurança de endurecimento do PHP para servidores Linux

Dicas de segurança de endurecimento do PHP para servidores Linux

Não é mais cérebro que Php é uma das linguagens de programação de script de servidor mais usadas. Faz sentido para um invasor encontrar várias maneiras pelas quais ele pode manipular o PHP como é frequentemente emparelhado com Mysql e ativar o acesso aos dados particulares de seus usuários.

Por qualquer meio, não estamos reivindicando Php é vulnerável ou tem alguns problemas sérios por padrão, mas temos que garantir que ajustemos Php de tal maneira que pode ser mais robusto do que nunca.

1. Remova módulos de PHP desnecessários

Por padrão, você recebe um conjunto de Php Módulos que podem ser úteis em várias tarefas, mas alguns módulos desnecessários podem não ser úteis para cada projeto. Para listar disponível Php Módulos, utilize o comando dado:

$ php -m 
Liste módulos PHP

Os módulos estão localizados em /etc/php.d/ diretório e pode facilmente alterar nosso diretório atual para /etc/php.d/ Usando o seguinte comando CD.

CD /etc /php.d/ 

A razão pela qual estamos mudando o diretório para remover módulos é. Agora, liste os módulos disponíveis pelo comando fornecido:

$ ls 
Verifique os módulos PHP

Por exemplo, vamos remover o ondulação módulo utilizando o comando dado:

$ sudo rm -r 20 -CURL.ini 

2. Desativar a execução do código PHP remoto

Na maioria dos casos, as conexões remotas não podem ser confiáveis. Desativando o acesso a FOPEN invólucros, eles só podem acessar arquivos locais. Para desativar o FOPEN, precisamos abrir o arquivo de configuração do PHP, utilizando o comando fornecido:

$ sudo nano /etc /php.ini 

Agora usa CRTL + W e tipo allow_url_fopen que nos deixarão em linhas específicas de onde desativaremos essas opções.

allow_url_fopen = off allow_url_include = off 
Desativar a execução do código PHP remoto

Depois de terminar com as alterações, salve o arquivo de configuração por Ctrl + o e acertar Digitar.

3. Desativar vazamento de informações do PHP

Quando não está desativado, o mundo pode identificar facilmente qual versão de Php atualmente é usado pelo nosso servidor da web. Isso pode não parecer um grande negócio, mas informar o invasor que a versão exata pode ser perigosa.

$ sudo nano /etc /php.ini 

Agora, mude os padrões para "Desligado".

expose_php = off 
Desativar vazamento de informações do PHP

4. Desativar logs de erro PHP

Por padrão, cada erro do nosso servidor da web é visível para nossos visitantes, incluindo atacantes. Para garantir que nenhum dos erros seja visível para ninguém, temos que fazer alterações em nosso arquivo de configuração PHP.

$ sudo nano /etc /php.ini 

E altere a configuração padrão da exibição de logs de erros para "Desligado".

display_errors = of 
Desativar logs de erro PHP

Mas e se você é um desenvolvedor e precisar ter logs de erros para superar problemas de desenvolvimento? Não se preocupe, existe uma maneira de obter seus arquivos de log apenas fazendo uma pequena alteração no mesmo arquivo de configuração.

Nós apenas temos que ativar log_errors e dar um caminho para error_log onde nossos arquivos de log serão armazenados.

log_errors = em error_log =/var/log/httpd/php_scripts_error.registro 
Ativar logs de erro no php

5. Controle de Recursos PHP

Segundo nós, o gerenciamento de recursos é a parte mais crucial ao garantir Php. Aqui, alocaremos uma quantidade fixa de tempo de execução, tempo de entrada e limite de memória; portanto, se de alguma forma nosso script for comprometido, a execução será interrompida após um certo tempo.

Nós escolhemos 25 segundos para execução e tempo de entrada e tempo 30 MB do limite de memória. Claro que você pode personalizá -lo de acordo com suas necessidades.

max_execution_time = 25 max_input_time = 25 memória_limit = 30m 
Controle de Recursos PHP

6. Restringir o acesso ao arquivo PHP

Para restringir o acesso a arquivos, vamos habilitar open_basedir que garantirão que o PHP possa incluir apenas arquivos de nossos diretórios listados.

Importante: Isso será lançado em bloqueio de todos os outros diretórios e exige que adicionamos diretórios importantes manualmente, o que também inclui a adição de arquivos temporários e diretórios de sessão.

open_basedir = "/home/sagar/public_html:/var/lib/php/tmp_upload:/var/lib/php/session" 
Controle o acesso ao arquivo php

7. Configurar uploads de arquivo php

Se o seu aplicativo não exigir o upload de arquivos do final do usuário, ele sempre é aconselhado a desativar o uploads de arquivos. Isso impede que os atacantes enviem scripts perigosos que podem acabar danificando todo o aplicativo no final.

file_uploads = OFF 

Mas e se o seu aplicativo for projetado para obter arquivos do final do usuário? Nesse caso, você deve ativar o uploads de arquivos, mas tente reduzir o espaço máximo e reduzir o número de arquivos máximos que podem ser carregados de uma única solicitação.

file_uploads = no upload_max_filesize = 1m max_file_uploads = 1 
Controlar uploads de arquivo php

No PHP, por padrão, os arquivos temporários são colocados em um diretório que todos os usuários do sistema podem escrever. O local padrão deve ser alterado para um local mais seguro e verifique se não está localizado na raiz da web.

Como utilizamos open_basedir, Estaremos usando o mesmo local que já listamos na lista de permissões.

upload_tmp_dir =/var/lib/php/tmp_upload 

8. Desativar funções PHP perigosas

O PHP possui várias funções ativadas por padrão e pode ser útil para fins de desenvolvimento. Mas muitas funções podem ser usadas pelos hackers para explorar nosso servidor da web e desativá -los adicionarão uma camada de segurança.

Temos um conjunto de funções para deficientes e verifique-as cruzá-los antes de fazer alterações no arquivo de configuração.

Disable_functions = Exec, Passthru, Shell_exec, System, Proc_open, Popen, Curl_exec, Curl_multi_exec, parse_ini_file, show_source 
Desativar funções PHP indesejadas

9. Alterar o diretório de cache de sabão

À medida que mudamos o diretório e sessão de temperatura padrão, o mesmo se aplica ao SABÃO cache, pois não deve ser salvo no diretório padrão. Verifique se está salvo para um lugar seguro.

sabão.wsdl_cache_dir =/var/lib/php/SOAP_CACH 
Alterar o diretório de cache de sabão

10. Controle o tamanho da postagem do PHP

Controlando PUBLICAR Tamanho, podemos proteger nosso servidor de um hacker tentando coagular os recursos do servidor enviando arquivos enormes. Isso nos salva de falhas de servidor indesejadas e tempo de resposta lenta.

post_max_size = 4m 
Limite o tamanho da postagem do PHP

11. Proteger as configurações do PHP

Ao remover arquivos desnecessários, geralmente removemos alguns arquivos cruciais ou até diretórios. Portanto, devemos ajustar as configurações de tal maneira que até os usuários root não podem excluí -los. Para fazer arquivos e diretórios, estaremos utilizando chattr com bandeiras diferentes.

Depois de usar o comando fornecido, você não pode mais modificar um arquivo específico ou removê -lo.

$ sudo chattr +i /etc /php.ini 

Ao tentar remover um arquivo imutável, ele mostrará um erro dizendo “operação não permitida”.

$ sudo rm -r /etc /php.ini 
Operação não permitida erro

Mas e se você quiser continuar escrevendo esses arquivos enquanto os torna imutáveis? Você pode conseguir facilmente usando o +a bandeira em vez de +eu.

$ sudo chattr +a /etc /php.ini 

Pode haver alguns casos em que você não precisa mais do arquivo de configuração antigo e, nesse caso, temos que desmembrar atributos.

$ sudo chattr -i /etc /php.ini 

Da mesma forma, se você for com +a Atributos No processo de tornar os arquivos imutáveis, você pode revertê -lo utilizando o comando fornecido:

$ sudo chattr -a /etc /php.ini 

12. Use certificados SSL para HTTPS

Atualmente, cada navegador moderno, como Google Chrome, Firefox, Opera e outros, recomenda o uso Https para servidores da web. Como Https Fornece um canal de acesso seguro e criptografado para sites não confiáveis, podemos fornecer uma experiência confiável aos nossos usuários.

Adicionando Https, Podemos ser protegidos contra XSS Ataques, incluindo a prevenção dos hackers a ler dados transportados usando códigos.

Para ativar HTTPs, vamos instalar e usar o grátis Vamos criptografar o certificado SSL no servidor.

$ sudo dnf install hemel-lançamento $ sudo dnf install certbot python3-certbot-apache mod_ssl $ sudo certbot --pache -d domínio.com [para Apache] $ sudo certbot -nginx -d domínio.com [para Nginx] 

13. Atualize o PHP regularmente

Como é um idioma de código aberto, ele é corrigido quase dia a dia. Pode não parecer um passo importante, mas pode salvá -lo da grande vulnerabilidade. Portanto, mantenha seus pacotes PHP atualizados, que o salvarão de muitas vulnerabilidades possíveis.

# yum update & yum upgrade [em sistemas baseados em RHEL] # APT UPDATE && apt upgrade [em sistemas baseados no Debian] 

Esta foi a nossa opinião sobre como você pode melhorar facilmente a segurança de Php em sistemas Linux. Ao longo deste tutorial, tentamos simplificar as coisas e se você ainda tiver alguma dúvida, informe -nos nos comentários.