¡Esta es una revisión vieja del documento!


Apache: Servidor de WWW

Descripción

Servidor HTTP mas popular de todos

Prerequistos

- Apache2
- php4, 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. Tambien garantice que los modulos de php y perl estan 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 esten 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

https://unix.stackexchange.com/questions/336925/apache-multiple-domains-and-multiple-ssl-to-same-ip-and-folder#343164 

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 cache

https://taylor.callsen.me/creating-a-caching-proxy-server-with-apache/

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

Descripción

Servidor HTTP mas popular de todos

Prerequistos

- Apache2
- php4, 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. Tambien garantice que los modulos de php y perl estan 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 esten 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

https://unix.stackexchange.com/questions/336925/apache-multiple-domains-and-multiple-ssl-to-same-ip-and-folder#343164 

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/

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

Volver arriba