¡Esta es una revisión vieja del documento!
Apache: Servidor de WWW
Descripción
Servidor HTTP mas popular de todos
Prerequistos
- Apache2 - php, perl, python
Procedimiento
Instale los paquetes necesarios apache2 y sus plugins incluido ssl
A. Verifique que apache esta corriendo incluido https visitando desde un navegador
http://localhost – y https://localhost –
B. También garantice que los módulos de php y perl están arriba. Se necesitan para las aplicaciones.
Configuración
A. Cambio de las paginas por Default
Por defecto el sistema instala las páginas en /var/www/html (o /var/www en debians), pero no es lo adecuado porque requiere permisos de root. Por tal motivo se crea un usuario paginas del grupo users se redirecciona Apache para que las paginas por defecto estén alla:
- Adicionar al sistema un usuario asi:
#> adduser -g users -d /home/paginas -p paginas -s /bin/bash -c paginas paginas
-Crear un directorio public_html en el home del usuario y copie la paginas web de skina en ese directorio,
#> mkdir /home/paginas/public_html
- Cambiar la pagina por defecto de Apache. Edite el archivo /etc/httpd/conf/httpd.conf (/etc/apache2/sites-available/default en debians) que incluya
Document Root /home/paginas/public_html
y lo mismo en el archivo de configuracion de SSL
/etc/httpd/conf.d/41_mod_ssl.default-vhost.conf o /etc/httpd/conf.d/ssl.conf
Tambien es necesario cambiar los permisos del directorio /var/www/html .. y ponerselos a al directorio /home/paginas/public_html.
B. Directorio o URL protegido con contraseña
Otras Labores
1. SSL
1.1 en Debian
Apache 2.4
Ya lo hace por defecto. Basta poner el site-available y listo
Apache 2.2
.. En debian es necesario habilitar el modulo, crear un site-available y
generar las llaves
$> make-ssl-cert /usr/share/ssl-cert/ssleay.cnf apache.pem
y ponga en /etc/apache2/ports.conf que escuche por 443
- Reinicie el servicio y pruebe que funciona
$> /etc/init.d/httpd restart
visite http://localhost y https://localhost
Chequee la referencia apache2_ssl.htm l
1.2 SuSE
Igual que en debian es necesario habilitar el modulo, crear un site-available y
generar las llaves
$> gensslcert
y ponga en /etc/sysconfig/apache2 que use SSL
APACHE_SERVER_FLAGS=“SSL”
Genere el archivo de configuracion del host virtual. En /etc/apache2/vhosts.d
$> cp vhost-ssl.template ssl-skina.conf
- Reinicie el servicio y pruebe que funciona
$> /etc/init.d/apache2 restart
visite http://localhost y https://localhost
$********* revise con
https://www.sslshopper.com/ssl-checker.html
2. RedHat con paginas fuera del /var/www/html
.. en algunas familias de RH friega mucho las paginas en otro sitio que no sea en
/var/www/html/ .. entonces pues se puede colocar el home de paginas alla y se
le pone el home directory y los permisos del usuario paginas
3. Archivos sin extension
Quiero no poner la extension del archivo y que el servidor la escoja .. ejemplo en vez de poner webcam.html
yo pongo solo webcam y lo coge bien
Pinga la opcion de Multiviews en el directorio.
4. El apache de un CPANEL
Como usar el apache base de un cpanel !!. Eso esta en /usr/local/apache/htdocs y la condfiguracion esta /usr/local/apache/conf y se le puede incluir configuraciones en alguno de los archivos de /usr/local/apache/conf/includes.
5. Configurar un WAF (Modsecurity)
Hay un wiki de esto .. AQUI ->
6. Multiples dominios con diferente certificado
7. Pruebas de Stress
8. Hardening
https://geekflare.com/es/apache-web-server-hardening-security/
https://beaglesecurity.com/blog/article/apache-web-server-hardening.html
https://wiki.debian.org/Apache/Hardening Hay unas ideas cheveres para limitar las conexiones usando el firewall
https://www.tecmint.com/apache-security-tips/
9. Proxy inverso
Con balanceador de carga
https://wiki.logicaldoc.com/wiki/Configure_Apache_load_balancer_with_mod_proxy
Con cache a lo squid
https://taylor.callsen.me/creating-a-caching-proxy-server-with-apache/
Las bitacoras de los que estan atras debe ajustarse para reflejar las direcciones publicas
https://confluence.jaytaala.com/display/TKB/Logging+remote+ip+address+when+using+reverse+proxy
Problemas
1. Nuevas llaves para Centos (RedHat)
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Deployment_Guide-en-US/s1-httpd-secure-server.html
RRRarrisimo .. en Centos5 no esta disponible el genkey por ningun lado . Los binarios de Fedora 6 funcionan OK.
o a mano
http://www.ernestoperez.com/howtos_sobre_apache_php_ssl/instalando_un_certificado_ssl_para_apache_en_centos.html
NOTA: el “genkey” generera los certificados un un periodo de vencimiento de 30 dias, si necesita que le vencimiento dure mas adicione el parametro –days #de dias
7. No sube apache por nss
En error_log no sale nada pero genera nss_error_log y dice: Certificate not verified: 'Server-Cert' [error] SSL Library Error: -8181 Certificate has expired [error] Unable to verify certificate 'Server-Cert'. Add “NSSEnforceValidCerts off” to nss.conf so the server can start until the problem can be resolved.
Hay dos opciones; una es apagar el nss (en nss.conf ponerle off) o generar nuevamente los certificados
# gencert /etc/httpd/alias (o el directorio que este en el nss.conf)
reinicie apache y listo.
Advertencia
Este documento es privado y es de uso exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal.
FIN
==============================================================
Anexos
==============================================================
skina.conf
==============================================================
############### Reglas adicionales por SkinaTech
# Protecciones adicionales
<Directory /tmp>
Order deny,allow
Deny from all
</Directory>
<Directory /var/tmp>
Order deny,allow
Deny from all
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteLog /var/log/httpd/http_rewrite_log
RewriteLogLevel 1
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule . .. .html - [F]
</IfModule>
# redirect http to https
# If you don't try to access https, then redirect to https
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/phpldapadmin/(.*) https://%{SERVER_NAME}/phpldapadmin/$1 [L,R]
# esta regla siguiente redirege TODO
# RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
</IfModule>
# Aliases a directorios
<IfModule mod_alias.c>
Alias /phpMyAdmin /var/www/html/phpMyAdmin
</IfModule>
# Proxy inverso
<IfModule mod_proxy.c>
ProxyPass /monit/ http://localhost:2812/
ProxyPassReverse /monit/ http://localhost:2812/
</IfModule>
#Autenticacion con archivo local
<Location /joomla/index.php>
Order Deny,Allow
AuthType Basic
AuthName “Joomla Users”
AuthUserFile /etc/httpd/conf/users/admin
Require valid-user
</Location>
#Autenticacion con LDAP
<IfModule mod_authnz_ldap.c>
<Directory /var/www/html>
AuthType Basic
AuthName “SkinaTech Users”
AuthzLDAPAuthoritative Off
Authbasicprovider ldap
AuthLDAPURL “ldap://localhost:389/ou=People,dc=skinatech,dc=com?uid?sub?(objectClass=userSecurityInformation)“
Require valid-user
</Directory>
</IfModule>
==============================================================
15-Marzo-2006 J.E.Gomez v1.0 Primera version wiki
24-Enero-2007 J.F.Saganome.0 Primera version wiki