Dicas de segurança de endurecimento do PHP para servidores Linux
- 2943
- 840
- Mr. Mitchell Hansen
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 -mListe 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:
$ lsVerifique 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 = offDesativar 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 = offDesativar 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 = ofDesativar 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.registroAtivar 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 = 30mControle 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 = 1Controlar 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_sourceDesativar 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_CACHAlterar 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 = 4mLimite 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.iniOperaçã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.
- « 20 Recursos de segurança úteis e ferramentas para administradores do Linux
- Um guia detalhado sobre como trabalhar com documentos no NextCloud »