13 Dicas de segurança e endurecimento do servidor da Web Apache

13 Dicas de segurança e endurecimento do servidor da Web Apache

Todos nós estamos muito familiarizados com Apache servidor da web, é um servidor da web muito popular para hospedar seus arquivos da web ou seu site na web. Aqui estão alguns links que podem ajudá -lo a configurar o Apache Web Server em sua caixa Linux.

Dicas de segurança e endurecimento do Apache
  1. Instale o Apache Web Server
  2. Configure seu site em sua caixa Linux

Aqui neste tutorial, abordarei algumas dicas principais para proteger seu servidor da web. Antes de aplicar essas alterações em seu servidor da web, você deve ter alguns princípios básicos do servidor Apache.

  1. Documentar o diretório raiz: /var/www/html ou /var/www
  2. Arquivo de configuração principal: /etc/httpd/conf/httpd.conf (RHEL/CENTOS/FEDORA) e /etc/apache2/apache2.conf (Debian/Ubuntu).
  3. Porta HTTP padrão: 80 TCP
  4. Porta HTTPS padrão: 443 TCP
  5. Teste as configurações e a sintaxe do arquivo de configuração: httpd -t
  6. Acesse arquivos de log do servidor da web: /var/log/httpd/access_log
  7. Arquivos de log de erro do servidor da web: /var/log/httpd/error_log

1. Como ocultar a versão do Apache e a identidade dos erros

Quando você instala Apache com fonte ou qualquer outro instalador de pacotes como yum, ele exibe o Versão do seu Apache servidor da web instalado em seu servidor com o Nome do sistema operacional do seu servidor em Erros. Ele também mostra as informações sobre Módulos Apache instalados em seu servidor.

Mostre a versão do Apache

Na imagem acima, você pode ver que Apache está mostrando seu versão com o OS instalado em seu servidor. Essa pode ser uma grande ameaça à segurança para o seu servidor da web, bem como sua caixa Linux também. Prevenir Apache Para não exibir essas informações para o mundo, precisamos fazer algumas alterações no arquivo de configuração principal do Apache.

Abra o arquivo de configuração com o editor Vim e pesquise “ServidorSignature“, É por padrão em. Precisamos Desligado essas assinaturas do servidor e a segunda linha “Servertokens Prod”Diz a Apache para retornar apenas o Apache como produto no cabeçalho da resposta do servidor em todas as solicitações de página, ele suprime o sistema operacional, as informações da versão principal e menor.

# vim/etc/httpd/conf/httpd.conf (rhel/centos/fedora) # vim/etc/apache2/apache2.conf (Debian/Ubuntu)
ServidorSignature Off Servertokens Prod
# serviço httpd reinicialização (rhel/centos/fedora) # serviço apache2 reiniciar (debian/ubuntu)
Ocultar a versão do Apache

2. Desativar a lista de diretórios

Por padrão, a lista de Apache todos os contente do diretório raiz do documento na ausência de arquivo de índice. Por favor, veja a imagem abaixo.

Listagem do diretório Apache

Pudermos desligar Listagem de diretórios usando Diretiva de opções no arquivo de configuração para um diretório específico. Para isso, precisamos fazer uma entrada em httpd.conf ou Apache2.conf arquivo.

 Opções -Indexes 
Ocultar a lista do diretório Apache

3. Continue atualizando o Apache regularmente

A comunidade de desenvolvedores da Apache está trabalhando continuamente problemas de segurança e liberando seu versão atualizada com novo opções de segurança. Portanto, é sempre recomendado usar o última versão de Apache Como seu servidor da web.

Checar Versão apache: Você pode verificar sua versão atual com httpd -v comando.

# httpd -v servidor versão: apache/2.2.15 (UNIX) servidor construído: 13 de agosto de 2013 17:29:28

Você pode atualizar sua versão com o seguinte comando.

# yum update httpd # apt-get install apache2

Também é recomendado manter seu Núcleo e OS Atualizado para as mais recentes lançamentos estáveis ​​se você não estiver executando nenhum aplicativo específico que funcione apenas em sistema operacional ou kernel específico.

4. Desative módulos desnecessários

É sempre bom para menores as chances de ser vítima de qualquer Ataque na web. Portanto, é recomendável desativar todos aqueles módulos que não estão em uso atualmente. Você pode listar todos os módulos compilados do servidor da web, usando o seguinte comando.

# grep loadmodule/etc/httpd/conf/httpd.conf # tem que colocar linhas de 'loadmodule' correspondentes neste local para que os módulos # loadmodule foo_module.Então LoadModule auth_basic_module módulos/mod_auth_basic.Então LoadModule auth_digest_module módulos/mod_auth_digest.Então LoadModule authn_file_module módulos/mod_authn_file.Então LoadModule authn_alias_module módulos/mod_authn_alias.Então LoadModule authn_anon_module módulos/mod_authn_anon.Então LoadModule authn_dbm_module módulos/mod_authn_dbm.Então LoadModule authn_default_module módulos/mod_authn_default.Então LoadModule authz_host_module módulos/mod_authz_host.Então LoadModule authz_user_module módulos/mod_authz_user.Então LoadModule authz_owner_module módulos/mod_authz_owner.Então LoadModule authz_groupfile_module módulos/mod_authz_groupfile.Então LoadModule authz_dbm_module módulos/mod_authz_dbm.Então LoadModule authz_default_module módulos/mod_authz_default.Então LoadModule ldap_module módulos/mod_ldap.Então LoadModule authnz_ldap_module módulos/mod_authnz_ldap.Então LoadModule inclui módulos.Então LoadModule log_config_module módulos/mod_log_config.Então LoadModule logio_module módulos/mod_logio.Então LoadModule Env_module módulos/mod_env.SO LOADMODULE EXT_FILTER_MODULES MODULES/MOD_EXT_FILTER.então… 

Acima está a lista de módulos ativados por padrão, mas muitas vezes não é necessário: mod_iMap, mod_include, mod_info, mod_userdir, mod_autoIndex. Para desativar o módulo específico, você pode inserir um “#”No início dessa linha e reinicie o serviço.

5. Execute o Apache como usuário e grupo separados

Com uma instalação padrão Apache executa seu processo com o usuário ninguém ou Daemon. Por razões de segurança, é recomendável correr Apache por conta própria não privilegiado conta. Por exemplo: http-web.

Crie usuário e grupo Apache
# groupadd http -web # useradd -d/var/www/-g http -web -s/bin/nologin http -web

Agora você precisa contar Apache Para executar com este novo usuário e fazer isso, precisamos fazer uma entrada em /etc/httpd/conf/httpd.conf e reiniciar o serviço.

Abrir /etc/httpd/conf/httpd.conf com o editor do VIM e procure palavras -chave “Do utilizador" e "Grupo”E lá você precisará especificar o nome de usuário e nome do grupo usar.

Usuário HTTP-Web Group HTTP-Web

6. Usar permitir e negar para restringir o acesso a diretórios

Podemos restringir o acesso a diretórios com “Permitir" e "Negar”Opções em httpd.conf arquivo. Aqui neste exemplo, estaremos protegendo diretório raiz, para isso definindo o seguinte no httpd.conf arquivo.

 Opções nenhuma ordem negar, permitir negar de todos 
  1. Opções “Nenhum” - Esta opção não permitirá aos usuários ativar quaisquer recursos opcionais.
  2. Ordem negar, permitir - Esta é a ordem em que o “Negar" e "Permitir”As diretivas serão processadas. Aqui vai “vai“negar"Primeiro e"permitir" próximo.
  3. Negar de todos - Isso negará o pedido de todos para o diretório raiz, Ninguém será capaz de acessar o diretório raiz.

7. Use Mod_Security e Mod_evasive Módulos para proteger o Apache

Esses dois módulos “mod_security" e "mod_evasive”São módulos muito populares do Apache em termos de segurança.

Mod_security

Onde mod_security funciona como um firewall para nossos aplicativos da web e nos permite Monitore o tráfego em tempo real. Também nos ajuda a proteger nossos sites ou servidores da web de ataques de força bruta. Você pode simplesmente instalar mod_security em seu servidor com a ajuda dos instaladores de pacote padrão.

Instale mod_security no ubuntu/debian
$ sudo apt-get install libapache2-modsecurity $ sudo a2enmod mod-security $ sudo /etc /init.D/APACHE2-RELODADE
Instale mod_security em rhel/centos/fedora/
# yum install mod_security # /etc /init.reiniciar d/httpd
Mod_evasive

mod_evasive Funciona com muita eficiência, é preciso um pedido para processar e processa muito bem. Previne Ataques de DDoS de causar tanto dano. Esse recurso de mod_evasive permite lidar com o Força bruta http e Dos ou DDoS ataque. Este módulo detecta ataques com três métodos.

  1. Se tantos pedidos chegarem à mesma página em algumas vezes por segundo.
  2. Se algum processo infantil tentando fazer mais do que 50 solicitações simultâneas.
  3. Caso existam IP ainda tentando fazer novos pedidos quando estiver temporariamente Lista negra.

mod_evasive pode ser instalado diretamente a partir da fonte. Aqui, temos um guia de instalação e instalação desses módulos que ajudarão você a configurar esses módulos Apache em sua caixa Linux.

  1. Proteja o Apache usando mod_security e mod_evasive

8. Desative o seguinte Apache dos links simbólicos

Por padrão Apache segue Symblinks, pudermos desligar esse recurso com Segue -se links com Diretiva de opções. E para fazer isso, precisamos fazer a seguinte entrada no arquivo de configuração principal.

Opções -FOLLSYMLINKS

E, se houver em particular do utilizador ou local na rede Internet precisar Segue -se links Ativar, podemos simplesmente escrever uma regra em “.htaccess”Arquivo desse site.

# Ativar opções de links simbólicos +SigasymLinks

Observação: Para habilitar as regras de reescrita dentro “.htaccess" arquivo "Allowoverride tudo”Deve estar presente na configuração principal globalmente.

9. Desligar o lado do servidor Inclui e a execução do CGI

Pudermos desligar O lado do servidor inclui (mod_include) e CGI execução se não for necessário e, para isso, precisamos modificar o arquivo de configuração principal.

Opções -incluídas opções -execcgi

Podemos fazer isso para um diretório específico também com tag de diretório. Aqui neste exemplo, somos desligando Inclui e execuções de arquivos CGI para “/var/www/html/web1”Diretório.

 Opções -incluídas -execcgi 

Aqui estão alguns outros valores com podem ser ligadas ou desligado com diretiva de opções.

  1. Opções tudo - Para ativar todas as opções de uma só vez. Este é o valor padrão, se você não deseja especificar valores explicitamente no arquivo Apache conf .htaccess.
  2. As opções incluem não - Esta opção permite que o lado do servidor inclua sem a permissão de execução para um comando ou arquivos CGI.
  3. Opções multiviews - Permite o conteúdo negociado multiviews com o módulo MOD_NEGOTIATION.
  4. Opções SymlinksifowowrMatch - É semelhante ao SollofSymLinks. Mas isso seguirá apenas quando o proprietário for o mesmo entre o link e o diretório original ao qual está vinculado.

10. Tamanho da solicitação limite

Por padrão Apache não tem limite para o tamanho total da solicitação http i.e. ilimitado e quando você permitir grandes solicitações em um servidor da web, é possível que você possa ser vítima de Ataques de negação de serviço. Podemos limitar o tamanho das solicitações de uma diretiva Apache “LimitRequestbody”Com a tag de diretório.

Você pode definir o valor em bytes de 0 (ilimitado) para 2147483647 (2 GB) que são permitidos em um corpo de solicitação. Você pode definir esse limite de acordo com as necessidades do seu site, suponha que você tenha um site onde permite uploads e deseja limitar o tamanho do upload para um diretório específico.

Aqui neste exemplo, user_uploads é um diretório que contém arquivos enviados pelos usuários. Estamos colocando um limite de 500k por esta.

 LimitRequestbody 512000 

11. Proteger ataques de DDoS e endurecer

Bem, é verdade que você não pode proteger completamente seu site de Ataques de DDoS. Aqui estão algumas diretivas que podem ajudá -lo a ter um controle sobre isso.

  1. Tempo esgotado : Esta diretiva permite que você defina a quantidade de tempo em que o servidor aguardará a conclusão de determinados eventos antes de falhar. Seu valor padrão é 300 segundos. É bom manter esse valor baixo nos sites que estão sujeitos a Ataques de DDoS. Este valor depende totalmente do tipo de solicitação que você está recebendo no seu site. Observação: Poderia apresentar problemas com venha CGI scripts.
  2. Maxclients : Esta diretiva permite definir o limite de conexões que serão servidas simultaneamente. Cada nova conexão será na fila após esse limite. Está disponível com Pré -esquecer e Trabalhador ambos Mpm. O valor padrão é 256.
  3. KeepAliveTimeout : É a quantidade de tempo em que o servidor aguardará uma solicitação subsequente antes de fechar a conexão. O valor padrão é 5 segundos.
  4. LimitRequestFields : Isso nos ajuda a definir um limite para o número de campos de cabeçalho da solicitação HTTP que serão aceitos dos clientes. Seu valor padrão é 100. É recomendado diminuir esse valor se Ataques de DDoS estão ocorrendo como resultado de tantos cabeçalhos de solicitação HTTP.
  5. LimiteRequestFieldsize : Ajuda -nos a definir um limite de tamanho no cabeçalho da solicitação HTTP.

12. Habilite o log do Apache

Apache permite que você registre independentemente do seu Registro do sistema operacional. É aconselhável ativar o registro do Apache, porque fornece mais informações, como os comandos inseridos por usuários que interagiram com seu servidor da web.

Para fazer isso, você precisa incluir o mod_log_config módulo. Existem três diretivas principais relacionadas ao log disponível com o Apache.

  1. TransferLog: Criando um arquivo de log.
  2. LogFormat : Especificando um formato personalizado.
  3. CustomLog : Criando e formatando um arquivo de log.

Você também pode usá -los para um site específico que você está fazendo Hospedagem virtual E para isso você precisa especificá -lo na seção de host virtual. Por exemplo, aqui está a configuração do meu host virtual do meu site com o registro habilitado.

 Documentroot/var/www/html/exemplo.com/ servername www.exemplo.Índice de DiretoryIndex.Índice HTM.Índice HTML.Exemplo PHP Serveralias.com Errordocument 404 /História.PHP ErrorLog /var/log/httpd/exemplo.com_error_log CustomLog /var/log/httpd/exemplo.com_access_log combinado 

13. Protegendo o Apache com certificados SSL

Por último mas não menos importante Certificados SSL, Você pode proteger toda a sua comunicação de maneira criptografada pela Internet com o certificado SSL. Suponha que você tenha um site no qual as pessoas fazem login, provando suas credenciais de login ou um site de comércio eletrônico, onde as pessoas fornecem seus detalhes bancários ou Débito/Crédito Detalhes do cartão para comprar produtos, por padrão, seu servidor da web envia esses detalhes em formato de texto simples, mas quando você usa Certificados SSL para seus sites, Apache envia todas essas informações em texto criptografado.

Você pode Compre certificados SSL de tantos provedores SSL diferentes como Namecheap.com. Se você está administrando um negócio muito pequeno da web e não está disposto a Compre um certificado SSL você ainda pode atribuir um Certificado auto -assinado para o seu site. Apache usa o mod_ssl módulo para apoiar Certificado SSL.

# OpenSSL Genrsa -Des3 -Out Exemplo.com.Chave 1024 # OpenSSL Req -New -Key Exemplo.com.Chave -Out exmaple.CSR # OpenSSL X509 -Req -Days 365 -N EM EXEMPLO.com.com.Exemplo de CSR -SignKey.com.com.Chave -Exemplo.com.com.Crt

Depois que seu certificado for criado e assinado. Agora você precisa adicionar isso na configuração do Apache. Abra o arquivo de configuração principal com o VIM Editor, adicione as seguintes linhas e reinicie o serviço.

 Sslengine no sslCertificatefile/etc/pki/tls/certs/exemplo.com.CRT SSLCERtificateKeyFile/etc/pki/tls/certs/exemplo.com.chave sslCertificateChainFile/etc/pki/tls/certs/sf_bundle.CRT ServerAdmin [Email Protected] ServerName Exemplo.com documentroot/var/www/html/exemplo/errorLog/var/log/httpd/exemplo.com-error_log customLog/var/log/httpd/exemplo.COM-ACCESS_LOG Comum 

Abra seu navegador, digite https: // Exemplo.com, E você poderá ver o novo Certificado autoassinado.

Estas são poucas dicas de segurança que você pode usar para Prenda seu servidor da Web Apache instalação. Para obter dicas e idéias de segurança mais úteis, consulte a documentação on -line oficial do servidor Apache HTTP.