====== 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 ====
- http:%%//%%www.yolinux.com/TUTORIALS/LinuxTutorialApacheAddingLoginSiteProtection.html --
===== 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 [[egw/egw_docroot/wiki/docs/apache2_ssl.html|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 .. [[egroupware/index.php?menuaction=wiki.wiki_ui.view&page=Apache2+mod_security|AQUI ->]]
==== 6. Multiples dominios con diferente certificado ====
https://unix.stackexchange.com/questions/336925/apache-multiple-domains-and-multiple-ssl-to-same-ip-and-folder#343164
==== 7. Pruebas de Stress ====
http://www.linuxjournal.com/article/6691 --
==== 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
=== 9.1 Error: Timeout ===
https://serverfault.com/questions/1014537/how-to-fix-apache2-proxy-httperror-ah01102-error-reading-status-line-from-re\\
https://serverfault.com/questions/821076/proxy-http-time-out-error
===== 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
==== 2. 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
\\
Order deny,allow\\
Deny from all\\
\\
Order deny,allow\\
Deny from all\\
\\
RewriteEngine on\\
RewriteLog /var/log/httpd/http_rewrite_log\\
RewriteLogLevel 1\\
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)\\
RewriteRule . .. .html - [F]\\
# redirect http to https\\
# If you don't try to access https, then redirect to https\\
\\
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]\\
# Aliases a directorios
\\
Alias /phpMyAdmin /var/www/html/phpMyAdmin\\
# Proxy inverso
\\
ProxyPass /monit/ http:%%//%%localhost:2812/\\
ProxyPassReverse /monit/ http:%%//%%localhost:2812/\\
#Autenticacion con archivo local
\\
\\
Order Deny,Allow\\
AuthType Basic\\
AuthName "Joomla Users"\\
AuthUserFile /etc/httpd/conf/users/admin\\
Require valid-user\\
#Autenticacion con LDAP
\\
\\
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\\
\\
\\
==============================================================\\
15-Marzo-2006 J.E.Gomez v1.0 Primera version wiki\\
24-Enero-2007 J.F.Saganome.0 Primera version wiki