Você está na página 1de 17

Apache 2.

4 no CentOS 7 Alta Performance


By: Alex Clemente
● Formação Acadêmica
Gestão Financeira – Universidade Ibirapuera – 2012 - Trancado

Tecnologia em Redes de Computadores – Faculdade Sumaré – 2015

IT Essentials - Cisco Networking Academy - Cisco

CCNA Exploration - Cisco Networking Academy - Cisco

Windows Server 2008/2012 – Microsoft Virtual Academy - MVA

Linux LPI 101/102 - Certificação Linux LPI - Nível 1 Exames 101 e 102

Linux LPI 201/202 - Certificação Linux LPI - Nível 2 Exames 201 e 202

RHCSA Red Hat Certified System Administrator - Virtual Training Company - VTC
● Experiencia Profissional
DEDIC GPTI - Técnico de Service Desk

todo! - Operador de Sala Técnica

Suporte Técnico - NOC

Analista de Suporte Linux

Universo Online (UOL) - Analista de Operações Linux/Unix


● Objetivos do curso
Escolha de SO e Arquitetura do sistema
VM x Server e Definição de layout de disco
Pós instalação do SO, tuning do servidor e segurança do sistema
Instalação do apache 2.4
Instalação do mod_ssl
Configuração e tuning de Virtual Host e Virtual Proxy
Configuração e tuning de Load Balancer com 10 backends NGINX e apache
Definição de segurança com ACL e autenticação
Mitigação de ataques com SELinux e iptables/firewall-cmd
Integração entre apache, mysql e php
● Sobre Apache (HTTP Server)
O servidor Apache (ou Servidor HTTP Apache, em inglês: Apache HTTP Server, ou simplesmente: Apache) é o
mais bem sucedido servidor web livre. Foi criado em 1995 por Rob McCool, então funcionário do NCSA (National
Center for Supercomputing Applications). Em uma pesquisa realizada em dezembro de 2007[1] , foi constatado
que a utilização do Apache representa cerca de 47.20% dos servidores ativos no mundo. Em maio de 2010 [2] , o
Apache serviu aproximadamente 54,68% de todos os sites e mais de 66% dos milhões de sites mais
movimentados. É a principal tecnologia da Apache Software Foundation, responsável por mais de uma dezena de
projetos envolvendo tecnologias de transmissão via web, processamento de dados e execução de aplicativos
distribuídos.
O servidor é compatível com o protocolo HTTP versão 1.1[3] . Suas funcionalidades são mantidas através de uma
estrutura de módulos, permitindo inclusive que o usuário escreva seus próprios módulos — utilizando a API do
software.
É disponibilizado em versões para os sistemas Windows, Novell Netware, OS/2 e diversos outros do padrão
POSIX (Unix, Linux, FreeBSD, etc.).
● Por que usar o Apache?
Segurança (mod_ssl)
Estabilidade
Compatibilidade
Fácil configuração e entendimento
Integração com mysql, java, php, ldap e etc
Possibilidade de escrita de módulos via API
Vários módulos disponíveis para necessidades diferentes
Motor de regras (mod_rewrite)
Controle de acesso via ACL
Controle de acesso via autenticação por usuário e senha (auth_basic_module)
Servidor de cache com Proxy Reverso (proxy_module)
Balanceamento de carga com Load Balancer (proxy_balancer_module)
● Virtual Host
O servidor tem um único endereço IP , e vários aliases ( CNAMES ) apontam para esta máquina no DNS. Você
quer executar um servidor web para www.example.com e www.example.org nesta máquina.

Criação e configuração de hosts virtuais em seu servidor Apache por DNS, precisa ter entradas DNS válidas
apontando para o site a ser criado. Você deve ter os nomes no DNS resolvendo para o seu endereço IP , ou
ninguém será capaz de acessar o seu web site. Você pode colocar as entradas no seu arquivo hosts para o teste
local, mas isso só funcionará a partir da máquina com as entradas dos hosts.
● Virtual Host Exemplo
Listen vhost1.linuxcorp.br:1027 https

<VirtualHost 192.168.249.167:1027>
ServerName vhost1.linuxcorp.br:1027
ServerAlias vhost1.linuxcorp.br 192.168.249.167
ServerAdmin alexbmw00@gmail.com
DocumentRoot /var/www/vhost1
DirectoryIndex info.php index.html
ErrorLog /var/log/httpd/vhost1.linuxcorp.br-error.log
CustomLog /var/log/httpd/vhost1.linuxcorp.br-access.log common
SSLEngine On
SSLProtocol All -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

<Location />
Require all denied
Require ip 127.0.0.1
</Location>
</VirtualHost>
● Virtual Proxy
O servidor tem um único endereço IP , e vários aliases ( CNAMES ) apontam para esta máquina no DNS. Você
quer executar um servidor web para www.example.com e www.example.org nesta máquina.

Criação e configuração de hosts virtuais em seu servidor Apache por DNS, precisa ter entradas DNS válidas
apontando para o site a ser criado. Você deve ter os nomes no DNS resolvendo para o seu endereço IP , ou
ninguém será capaz de acessar o seu web site. Você pode colocar as entradas no seu arquivo hosts para o teste
local, mas isso só funcionará a partir da máquina com as entradas dos hosts.

E necessário que o modulo proxy_module esteja ativo para que seja feito o forward (Repasse) de conexões,
URLs, complementos de URLs, etc para outros servidores definidos no ProxyPass, ProxyPassReverse e Redirect
Permance.
● Virtual Proxy Exemplo
Listen vproxy1.linuxcorp.br:1025 https
ProxyVia On

<VirtualHost 192.168.249.167:1025>
ServerName vproxy1.linuxcorp.br:1025
ServerAlias vproxy1.linuxcorp.br 192.168.249.167
ServerAdmin alexbmw00@gmail.com
ErrorLog /var/log/httpd/vproxy1.linuxcorp.br-error.log
CustomLog /var/log/httpd/vproxy1.linuxcorp.br-access.log common
SSLProxyEngine On
SSLEngine On
SSLProtocol All -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
ProxyPreserveHost On
ProxyRequests Off

<Proxy *>
Require all denied
Require ip 127.0.0.1
</Proxy>
ProxyPass / https://192.168.249.168/ connectiontimeout=5 timeout=30 max=50 retry=120 acquire=300 KeepAlive=On
ProxyPassReverse /s http:/192.168.249.168/
Redirect Permanent / http://192.168.249.168/

<Location />
Require all denied
Require ip 127.0.0.1
</Location>
</VirtualHost>
● Load Balancer
Atualmente existem três algoritmos de load balancer disponíveis para uso: Request Counting, Weighted Traffic
Counting and Pending Request Counting . Estes são controlados via o valor lbmethod da definição Balancer. Veja
a diretiva ProxyPass para mais informações , especialmente sobre como configurar o balanceador e
BalancerMembers .

O balanceador suporta stickyness . Quando uma solicitação é intermediada por proxy para alguns back-ends, em
seguida, todos os seguintes pedidos do mesmo usuário deve ser proxy para o mesmo back-end. Muitos
balanceadores de carga de implementar este recurso através de uma tabela que mapeia os endereços IP cliente
para back-ends . Esta abordagem é transparente para os clientes e back-ends , mas sofre de alguns problemas :
a distribuição de carga desigual se os clientes estão se “escondido” atrás de proxies , erros stickyness quando um
cliente usa um endereço IP dinâmico, que muda durante uma sessão e perda de stickyness , se o tabela de
mapeamento transborda .
● Load Balancer Exemplo
Listen loadbalancer.linuxcorp.br:1025 https
ProxyVia On

<VirtualHost 192.168.249.167:1025>
ServerName loadbalancer.linuxcorp.br:1025
ServerAlias loadbalancer.linuxcorp.br 192.168.249.167
ServerAdmin alexbmw00@gmail.com
ErrorLog /var/log/httpd/loadbalancer.linuxcorp.br-error.log
CustomLog /var/log/httpd/loadbalancer.linuxcorp.br-access.log common
SSLProxyEngine On
SSLEngine On
SSLProtocol All -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / balancer://mycluster/ nofailover=Off
ProxyPassReverse / balancer://mycluster
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

<Proxy balancer://mycluster>
BalancerMember http://192.168.249.200:1120 connectiontimeout=5 timeout=30 max=50 retry=120 loadfactor=1 acquire=300 KeepAlive=On
ProxySet lbmethod=byrequests stickysession=ROUTEID
</Proxy>

<Location />
Require all denied
Require ip 127.0.0.1
</Location>
</VirtualHost>
● Apache 2.4
<Location /balancer-manager>
SetHandler balancer-manager
AuthName "Acesso restrito"
AuthType Basic
AuthBasicProvider file
AuthUserFile "/etc/httpd/htpasswd"
Require valid-user
</Location>

● Apache 2.2
<Location /balancer-manager>
SetHandler balancer-manager
AuthType Basic
AuthName "Acesso restrito"
AuthUserFile "/etc/httpd/htpasswd"
Require valid-user
</Location>
● Apache 2.4
<Location />
Require all denied
Require ip 192.168.249.1
Require ip 127.0.0.1
</Location>

● Apache 2.2
<Location />
Order Deny,Allow
Deny from All
Allow from 127.0.0.1 192.168.249.0/24
</Location>
● ACL Apache 2.4
Permitir acesso a todos
Require all granted
Require not ip 10.252.46.165
Require not host example.com.br

Negar acesso a todos


Require all denied
Require host host.com.br
Require ip 10.252.46.165

RequireAll : Todos os requisitos de autorização no bloco deve ser cumprida para permitir o acesso .
RequireAny : Se algum dos requisitos de autorização neste bloco são cumpridos , este bloco é marcado como
satisfeito.
RequireNone : Se algum dos requisitos enumerados ter sucesso , a directiva irá falhar.
● Conjunto de regras
<RequireAny>
<RequireAll>
Require user root
Require ip 123.123.123.123
</RequireAll>
<RequireAll>
<RequireAny>
Require group sysadmins
Require group useraccounts
Require user anthony
</RequireAny>
<RequireNone>
Require group restrictedadmin
Require host bad.host.com
</RequireNone>
</RequireAll>
</RequireAny>
FIM

Você também pode gostar