CentOS7 - Deploy an Apache Web Server on CentOS 6

8 Pages • 2,398 Words • PDF • 154.7 KB
Uploaded at 2021-09-24 13:23

This document was submitted by our user and they confirm that they have the consent to share it. Assuming that you are writer or own the copyright of this document, report to us by using this DMCA report button.


Implante um servidor da Web Apache no CentOS 6 visão global Este tutorial irá guiá-lo através da implantação de um servidor web Apache no CentOS 6. Com a segurança como prioridade máxima para servidores web voltados para o público, mostrarei como fazer a configuração com o SELinux ativado, usando políticas personalizadas para garantir que estamos protegidos todas as vezes. O pensamento do SELinux assusta você? Se assim for, ficará surpreso com a facilidade de uso, quando feito corretamente. O escopo deste tutorial será apenas no Apache e no PHP. Bancos de dados não serão cobertos, já que é esperado que o serviço seja hospedado em outro servidor. Esse servidor será ideal para aplicativos simples ou farms da web de carga balanceada.

Objetivos Instalar e configurar o Apache Instalar e configurar o PHP Use diretórios da Web Apache não padrão Crie Políticas do SELinux para Aplicativo da Web

Configuração do Servidor O servidor de laboratório usado tem a seguinte configuração, para aqueles que seguem junto. É usado apenas para fins de exemplo. Como cada aplicativo tem seus próprios requisitos, você deve dimensionar seu servidor de acordo.

Configuração de hardware Processador

2 núcleos

Servidor web

Apache 2.2.15

RAM

1 GB

Servidor de banco de dados

MySQL Server 5.1

Disco rígido

1 x 48 GB

Servidor web

Apache 2.2.15

Interfaces de Rede

1

Aplicação Web

WordPress

Configuração de Armazenamento Ponto de

Sistema Tamanho Notas

montagem de arquivo MBR - Partições Padrão

/ boot

EXT2

200 MB

A imagem de inicialização é pequena e não precisa da sobrecarga adicionada pelo registro no diário do EXT4. Além de minimizar a complexidade do sistema de arquivos usado pelo / boot, há muito poucos benefícios em colocá-lo em sua própria partição com uma grande maioria das distribuições Linux atuais.

Ponto de montagem Grupo de volume Nome do volume Sistema de arquivo Tamanho LVM - Volumes Lógicos /

vg01

lv_root

EXT4

10 GB

/casa

vg01

lv_home

EXT4

1 GB

/ var / log

vg01

lv_logs

EXT4

5,5 GB

/ srv / webapps

vg01

lv_webapps

EXT4

5,5 GB

vg01

lv_swap

TROCA

1,5 GB

Pontos de montagem Nós temos nossos pontos moint definidos, mas precisamos configurá-los em / etc / fstab com a segurança em mente para alguns deles. . Abra fstab em um editor de texto, como o VIM, por exemplo.vim /etc/fstab . Seguindo com o layout do disco acima, encontre as seguintes linhas no fstab e adicione as opções realçadas.

/ dev / mapper / vg01-lv_home / home padrões do ext4, nosuid , nodev , noexe / dev / mapper / vg01-lv_logs / var / log padrões do ext4, nosuid , nodev / dev / mapper / vg01-lv_webapps / srv / webapps padrões ext4, nodev , noexe

nodev

Impede que arquivos de dispositivos existam no sistema de arquivos do ponto de montagem. A menos que você tenha alguns requisitos especiais, os arquivos de dispositivo devem existir apenas em / dev.

Impede que arquivos executáveis sejam executados no sistema de arquivos de pontos de montagem. Neste tutorial, nós o definimos para nossa montagem de noexec webapp. Se o seu aplicativo da web exigir cgi, isso quebrará o aplicativo e você não deverá adicioná-lo.

. Salve o arquivo fstab modificado e saia do editor de texto. . Reinicialize o servidor ou desmonte e remonte os pontos de montagem modificados para aplicar as alterações.

Prepare o servidor As etapas a seguir são projetadas para ajudá-lo a preparar o servidor antes do servidor para o Apache e seus aplicativos da web.

Criando Usuários e Grupos Após a conclusão da implantação, ninguém deve usar a conta raiz, a menos que seja absolutamente necessário. Precisamos criar duas contas de usuário e dois grupos, um para a manutenção diária dos aplicativos da Web e outro para a administração do sistema. Depois de criarmos nossos usuários e grupos, protegeremos o SSH para permitir acesso remoto apenas às nossas contas não administrativas. Essa separação adiciona outra camada de segurança para ajudar a impedir que os hackers obtenham controle total, se eles estiverem fazendo login remotamente com a conta de alguém. . . . . . . .

Crie sua conta de usuário do dia-a-dia.useradd jsmith Defina sua senha para esta contapasswd jsmith Crie sua conta de administrador do servidor.useradd jsmith-admin Defina a senha da sua conta de administradorpasswd jsmith-admin Crie seu grupo de webadmins.groupadd webadmins Crie seu grupo de administradores do sistema.groupadd sysadmins Crie um grupo de administração remota para o qual concederemos acesso SSH.groupadd remoteadmins

. Adicione sua conta do dia-a-dia ao grupo webadmins.usermod -G webadmins -a jsmith . Adicione sua conta de administrador do servidor ao grupo de administradores do sistema.usermod -G sysadmins -a jsmith-admin

. Adicione a conta do Apache ao grupo webadmins para conceder acesso ao nosso diretório / webapps, que será necessário após protegê-lo abaixo.usermod -G webadmins -a apache . Como queremos que o jsmith, sendo nós, tenha acesso remoto ao nosso servidor web, precisamos adicionar a conta ao grupo remoteadmins.usermod -G remoateadmins -a jsmith

Concedendo Direitos de Administração do Sistema Agora vamos designar contas que precisam de direitos de administração do sistema para nosso grupo sysadmins. Por meio do sudo , o grupo sysadmins terá direitos administrativos completos. Raiz será então dada uma senha muito complexa para protegê-lo contra o uso indevido. . Abra o editor de arquivos sudoersvisudo . Navegue até o final do arquivo e adicione a seguinte linha:

% sysadmins ALL = (ALL) TODOS

. Para salvar nossas configurações, pressione ESC e, em seguida, digite dois pontos (:) e 'w'. . Digite dois pontos (:) e 'q' para sair do editor. . Definir uma senha complexa para a conta raiz. Quanto mais longo, mais complexo, melhor.

Bloqueando o acesso SSH O SSH é uma ótima ferramenta para administração remota de seus servidores Linux; no entanto, deixado desprotegido usando configurações padrão é muito arriscado. O uso de força bruta em qualquer servidor é um processo de duas etapas: encontrar uma conta de usuário e descobrir a senha da conta do usuário. E qual conta é conhecida em todos os servidores Linux? Raiz. Por esse motivo, é recomendável impedir que o Root tenha acesso remoto ao servidor. Outra preocupação é "quem tem direitos de acesso ao servidor?" Por padrão, o SSH concederá acesso a todas as contas. Como nem todo usuário deve ter a capacidade de usar SSH no servidor, queremos garantir que apenas usuários autorizados possam fazê-lo. Para fazer isso, vamos configurar o SSH para permitir que apenas usuários na permissão do grupo remoteadmins acessem remotamente o servidor. . Abra o arquivo de configuração do SSH Server em um editor de texto, como o VIM.vim /etc/ssh/sshd_config

. Encontre a linha que permite o logon da raiz. #PermitRootLogin yesRemova a linha de hash '#' e substitua 'yes' por 'no'. Nota: apesar de esta opção ter sido comentada, por padrão, o SSH concede permissões de logon raiz. É por isso que é importante descomentar a opção e defini-la explicitamente como 'não'.PermitRootLogin no . Agora só queremos que usuários autorizados acessem nosso servidor por meio do SSH. Adicione a opção "AllowGroup" ao arquivo de configuração e anexe os grupos aos quais queremos permitir acesso.AllowGroups remoteadmins . Salve o arquivo de configuração e saia do editor. . Reinicie o daemon SSH para aplicar nossas alterações.service sshd restart Para adicionar proteção de segurança addtional ao SSH, use chaves em vez de senhas. Aprenda como ler Logons SSH sem Senha no CentOS 6 usando as Chaves de Autenticação RSA .

Preparar a estrutura de diretório Webapps O local padrão para um site Apache nos servidores CentOS é / var / www / html. Isso é bom se você não espera adicionar aplicativos web adicionais usando os hosts virtuais do Apache. Caso contrário, é melhor criar sua própria estrutura de diretórios. Antes de instalarmos o Apache e começarmos a definir sites, precisamos preparar nosso diretório de aplicativos web. Dentro do diretório / sv / webapps, vamos criar diretórios separados para cada um dos nossos aplicativos e seus logs (veja o exemplo abaixo), começando com o que chamaremos de App1.

/ srv | --- / webapps | --- / app1 | --- / public_html | --- / logs

. Criar diretório de aplicativosmkdir -p /srv/webapps/app1/public_html . Criar diretório de log do aplicativomkdir -p /srv/webapps/app1/logs . Altere a propriedade do grupo / webapps para nossos webadmins.chgrp -Rv webadmins /srv/webapps

. Configure o bit do guia recursivamente para o diretório webapps para assegurar que todos os novos arquivos e diretórios sejam de propriedade do grupo webadmins. Além disso, concederemos acesso de leitura / gravação ao grupo de administradores e proprietários de arquivos da webadmins, e nenhum acesso a mais ninguém.chmod 2770 -Rv /srv/webapps . Com o diretório public_html, concederemos acesso de leitura a todos.chmod 2775 -Rv /srv/webapps/app1/public_html

Criando Políticas do SELinux Instalar Pacotes Necessários Antes de podermos criar nossas próprias políticas, precisamos garantir que o SEMANAGE esteja instalado. Este aplicativo nos permite navegar pelas políticas de contexto padrão existentes e criar as nossas próprias. . Abra um console com privilégios de root . Instale o pacote policycoreutils-python , que contém o SEMANAGE . yum install -y policycoreutils-python

. Para solucionar problemas do SELinux, baixe o pacote setroubleshooting . Este passo é realmente opcional, mas você será grato por ele poder diagnosticar rapidamente os problemas do SELinux com ele. yum install -y setroubleshooting

Tipos de Contexto Apache Antes de começarmos a criar nossas próprias políticas para aplicar os tipos de contexto do Apache, precisamos entender quais estão disponíveis para nós fora da caixa. A tabela a seguir mostra aqueles em que estamos mais interessados, no entanto, existem vários outros disponíveis. httpd_sys_content_t

Diretórios e arquivos somente leitura usados pelo Apache

httpd_sys_rw_content_t Diretórios e arquivos legíveis e graváveis usados pelo Apache. Atribua isso a diretórios nos quais os arquivos podem ser criados ou modificados pelo aplicativo ou atribua-os ao

diretório de arquivos para permitir que o aplicativo os modifique. httpd_log_t

Usado pelo Apache para gerar e anexar aos arquivos de log do aplicativo da web.

httpd_cache_t

Atribuir a um diretório usado pelo Apache para o cache, se você estiver usando mod_cache.

Crie as políticas . Crie uma política para atribuir o contexto httpd_sys_content_t ao diretório / webapps e a todos os diretórios e arquivos secundários. semanage fcontext -a http_sys_content_t "/srv/webapps(/.*)?"

. Crie uma política para atribuir o contexto httpd_log_t aos diretórios de registro.

semanage fcontext -a httpd_log_t "/srv/webapps/logs(/.*)?"

Atribuir políticas ao diretório de aplicativos Com as políticas definidas, é hora de atribuí-las aos nossos diretórios de aplicativos da web. Para fazer isso, usamos o comando restorecon no diretório pai de nosso webapp. . Aplique as políticas do SELinux restorecon -Rv /srv/webapps

É isso aí! Foram realizadas. Aposto que foi muito mais fácil do que você esperava. Muitos tutoriais desativam o SELinux, porque todos parecem estar com medo. Embora complicado embaixo das capas, é realmente muito simplista administrar.

Instalando e configurando o Apache Instalando o Apache . Instalar o Apache 2yum install httpd

Configurar o Apache . Abra o arquivo de configuração do Apache em um editor de texto, como o VIM.vim /etc/httpd/conf/httpd.conf

. Evite que o Apache anuncie sua versão, desativando a assinatura do servidor. Para fazer isso, localize a linha a seguir ServerSignature On e substitua-a porServerSignature Off . Evite que o Apache divulgue informações do sistema operacional. Para fazer isso, localize a linha a seguir ServerTokens OS e substitua-a porServerTokens Prod . Altere a localização do diretório raiz de aplicativos da Web de / var / www para o novo local. Encontre a seguinte linha e substitua-a por

. Evite que os diretórios exibam seu conteúdo em um navegador da Web, removendo a opção Índices. Para fazer isso, encontre o seguinte, localizado logo abaixo da linha que modificamos acima. Options Indexes FollowSymLinkse substitua-o porOptions FollowSymLinks . Altere a localização do log de erros localizando a linha a seguir ErrorLog logs/error_loge substitua-a porErrorLog /srv/webapps/app1/logs/error_log . Altere a localização do log de acesso localizando a linha a seguir CustomLog logs/access_log combinede substitua-a porCustomLog /srv/webapps/app1/logs/access_log combined . Salve as alterações e saia do editor de texto. . Adicione a conta de usuário do Apache ao nosso grupo webadmins, para conceder direitos do Apache aos nossos diretórios de aplicativos. usermod -G webadmins -a apache

. Inicie o daemon do Apache.service httpd start . Configure o daemon do Apache para iniciar automaticamente após a inicialização.chkconfig httpd on

Instalando e configurando o PHP Instalando o PHP Embora o MySQL não esteja sendo instalado neste servidor, se seu aplicativo requer conectividade com o banco de dados, precisamos instalar o php-mysql. . Instale PHP5 e extensões para o MySQL.yum install php php-mysql

Configurar PHP . Abra o arquivo de configuração do PHP em um editor de texto, como o VIM.vim /etc/php.ini . Existem algumas funções que devem ser desativadas por motivos de segurança, a menos que você tenha certeza de que seu aplicativo da Web as exige. Encontre a seguinte linha. disable_functions =e substitua-o por

disable_functions = exec, passthru, shell_exec, sistema, proc_open, popen, c

. Encontre a linha que contém a opção display_errors e verifique se ela está definida como 'off'.display_errors = Off . Encontre a linha que contém a opção register_globals e verifique se ela está definida como 'off'.register_globals = Off . Encontre a linha que contém a opção magic_quotes_gpc e verifique se ela está definida como 'off'.magic_quotes_gpc = Off . Salve suas alterações e saia do editor de texto. . Reinicie o Apache para aplicar as novas configurações do PHP.service httpd restart

Abra o Firewall Antes que os usuários possam acessar nosso aplicativo da web por meio de uma porta do navegador da web, será necessário abrir a porta 80. Por padrão, o IPtables - um serviço de firewall do Linux - bloqueia essa porta. . Execute o seguinte comando para configurar o IPTables através de uma interface básica semelhante à GUI.system-config-firewall-tui . Assegure-se de que o firewall esteja ativado. . Pressione Tab para navegar até Personalizar e pressione Enter. . Role a lista de serviços confiáveis até ver WWW (HTTP). . Ative o acesso a ele pressionando a barra de espaço. . Pressione Tab para navegar até o botão Fechar e pressione Enter. . Pressione Tab para navegar até o botão OK e pressione Enter.

Conclusão Agora temos um servidor da Web protegido e específico para funções. Sua próxima etapa será implantar um servidor de banco de dados para seu aplicativo. O benefício de usar servidores específicos de função é que eles são mais seguros e muito mais fáceis de dimensionar.
CentOS7 - Deploy an Apache Web Server on CentOS 6

Related documents

8 Pages • 2,147 Words • PDF • 151.3 KB

8 Pages • 2,398 Words • PDF • 154.7 KB

3,160 Pages • 427,236 Words • PDF • 7.4 MB

7 Pages • 1,672 Words • PDF • 157 KB

181 Pages • 42,569 Words • PDF • 5.9 MB

24 Pages • 604 Words • PDF • 151.5 KB

6 Pages • 995 Words • PDF • 574.2 KB

48 Pages • 1,289 Words • PDF • 2.1 MB

27 Pages • 1,710 Words • PDF • 2.5 MB

11 Pages • 7,180 Words • PDF • 3.3 MB

459 Pages • 188,146 Words • PDF • 8.6 MB