lunes, 13 de abril de 2015

Instarlar y configura Apache en CentOS

Despues  de usar Ubuntu por mucho tiempo olvide practicamente como instalar y configurar apache pero esta vez para el sistema operativo Centos 


Para hacer frente a este tipo de situaciones esta vez voy a dejarlo aca para futuros proyectos y no tener que tropezar nuevamente con la misma piedra
 


Los servidores web utilizan HTTP por defecto, que es un protocolo de texto claro. Como su nombre indica, un protocolo de texto no cifrado que no aplica ningún tipo de encriptación de los datos. Mientras el servidor web basado en HTTP es muy fácil de configurar, tiene una desventaja importante en términos de seguridad. Exponerse a cualquier ataque "man-in-the-middle" capaz de ver el contenido de los paquetes en tránsito con analizadores de paquetes cuidadosamente colocados. En caso de una vulnerabilidad, un usuario malintencionado puede incluso configurar un servidor "impostor" en la ruta de tránsito, que a continuación, se hace pasar por el servidor web de destino. En este caso, los usuarios finales pueden comunicarse realmente con el servidor impostor en lugar del servidor de destino real. De esta manera, el usuario malintencionado puede engañar a los usuarios finales para que entreguen información confidencial, como nombre de usuario y las contraseñas a través de falsos formularios cuidadosamente elaborados.
Para hacer frente a este tipo de vulnerabilidades, la mayoría de los proveedores a menudo prefieren HTTPS en sus servidores web. Para los sitios donde los usuarios sólo leen el contenido y en realidad no introducen cualquier información, HTTP sigue siendo una opción viable. Sin embargo, para los sitios que mantienen la información y/o sitios donde se conectan usuarios donde obtienen servicios sensibles, HTTPS es una necesidad. HTTPS permite que una página proporcionae los siguientes servicios.
  • Asegura que todos los paquetes de tránsito hacia y desde los servidores están cifrados.
  • Establece la confianza con un certificado digital oficial, de manera que los servidores impostores no pueden pretender ser el servidor real.

La primera cosa necesaria para la creación de HTTPS es un certificado digital.

Los certificados digitales se pueden obtener de cualquiera de los métodos siguientes.

Los certificados autofirmados se recomiendan para fines de pruebas y proyectos personales. Los certificados autofirmados son aplicables también para los proveedores de servicios donde los usuarios del cliente son específicas y el círculo de la confianza es limitada. Los certificados autofirmados no cuestan dinero.
Los certificados se pueden obtener de proveedores de certificados basados en la comunidad, tales como StartSSL y CACert . Estos certificados no cuestan dinero tampoco, se recomiendan para proyectos personales.
Para proyectos comerciales donde se accede a los sitios web a nivel mundial, se recomienda comprar un certificado de una autoridad certificadora de confianza conocido. Estos certificados cuestan dinero, pero aumentan la credibilidad del proveedor de servicios web.
Preparación
En esta demostración, vamos a utilizar un certificado auto-firmado. Se supone que el servidor web Apache ya está instalado en CentOS. Para generar un certificado auto-firmado, se utiliza openssl. Si openssl no está instalado, se puede instalar para tal uso.
# yum install mod_ssl openssl

Generar un certificado autofirmado
Los siguientes comandos se pueden utilizar para generar un certificado auto-firmado.
En primer lugar, generar una clave privada con cifrado de 2048 bits.

# openssl genrsa -out ca.key 2048
Luego genere solicitud de firma de certificado (CSR).
# openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:es
State or Province Name (full name) []:Caceres
Locality Name (eg, city) [Default City]:Caceres
Organization Name (eg, company) [Default Company Ltd]:LinuxParty
Organizational Unit Name (eg, section) []:Prensa
Common Name (eg, your name or your server's hostname) []:LinuxParty
Email Address []:linux_party@yahoo.es

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:passworddeprueba
An optional company name []:ExtreHost
Por último, generar un certificado auto-firmado de tipo X 509, que tiene una validez de 365 keys.
# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Una vez creado el certificado, copia los archivos en los directorios necesarios.
# cp ca.crt /etc/pki/tls/certs/

# cp ca.key /etc/pki/tls/private/

# cp ca.csr /etc/pki/tls/private/
Configuración del servidor Web Apache
Ahora que el certificado está listo, es hora de verlo en funcionamiento.
En primer lugar, edite el archivo de configuración siguiente.
 
# vim /etc/httpd/conf.d/ssl.conf 
### overwrite the following parameters ###
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key

### The following parameter does not need to be modified in case of a self-signed certificate. ###
### If you are using a real certificate, you may receive a certificate bundle. The bundle is added 
using the following parameters ###
SSLCertificateChainFile /etc/pki/tls/certs/example.com.ca-bundle
A continuación, reinicie el servicio httpd para que los cambios surtan efecto.
# service httpd restart
El servidor web ya está listo para usar HTTPS.
Ajuste de máquinas virtuales
El Servidor web Apache se puede configurar para alojar múltiples sitios web. Estos sitios se declaran como hosts virtuales en el archivo de configuración httpd. Por ejemplo, supongamos que nuestro servidor web Apache tendrá 1un sitio "virtual-web.example.com", y todos los archivos del sitio se almacenan en el directorio /var/www/html/virtual-web
Para el host virtual, la configuración típica para HTTP se vería así.
# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin email@example.com
    DocumentRoot /var/www/html/virtual-web
    ServerName virtual-web.example.com
</VirtualHost>
Tenemos que crear una definición similar para HTTPS también.

# vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:443

<VirtualHost *:443>
 SSLEngine on
 SSLCertificateFile /etc/pki/tls/certs/ca.crt
 SSLCertificateKeyFile /etc/pki/tls/private/ca.key
 <Directory /var/www/html/virtual-web>
  AllowOverride All
 </Directory>
 ServerAdmin email@example.com
DocumentRoot /var/www/html/virtual-web
ServerName virtual-web.example.com
</VirtualHost>
Para cada host virtual, etiquetas similares deberían ser definidas. Después de agregar los hosts virtuales, el servicio web se reinicie.
# service httpd restart
Ahora las máquinas virtuales están listos para usar HTTPS también. Opcional: Forzar Apache Web Server a utilizar siempre HTTPS
Si, por alguna razón, usted decide utilizar siempre HTTPS en el servidor web, usted tendrá que redirigir todas las solicitudes HTTP entrantes (puerto 80) hacia el puerto HTTPS (puerto 443).
El Servidor web Apache puede ser fácilmente ajustado para hacer esto.
1. Forzar el Sitio principal solamente
Para forzar el sitio principal para usar siempre HTTPS, modificamos el fichero de configuración httpd.
# vim /etc/httpd/conf/httpd.conf
 
ServerName www.example.com:80
Redirect permanent / https://www.example.com
# service httpd restart
 
2. Forzar Hosts virtuales
Si desea forzar HTTPS en algún host virtual, así, la definición de HTTP se puede reescribir como sigue.

# vim /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
    ServerName virtual-web.example.com
    Redirect permanent / https://virtual-web.example.com/
</VirtualHost>

# Service httpd restart
En resumen, HTTPS siempre se recomienda para los sitios donde se conectan los usuarios. Esto mejora la seguridad tanto en el servidor y los usuarios que lo utilizan. Los certificados pueden ser obtenidos en diversos medios, como los auto-firmado, impulsado por la comunidad o incluso las autoridades comerciales. El administrador debe ser prudente al seleccionar el tipo de certificado que se utilizará.


y no olviden abril en el firewall el puerto 443 

No hay comentarios:

Publicar un comentario