lunes, 23 de mayo de 2011

Mini "HowTo" TLS/SSL en Fedora 14

Hola a todos este es un mini manual explicando tls en fedora, cabe recordar que sirve para los protocolos que requieran cifrado en este caso sera web "httpd".

  • Lo primero que vamos hacer es descargar los paquetes que necesitamos.
-Con el gestor de paquetes yum, copiamos yum install -y httpd vsftpd y para el dns existe dos formas bind-chroot o instalando la interfaz grafica del dns que seria system-config-bind. En todo caso seria "yum install -y httpd vsftpd system-config-bind".

system-config-bind: Esta es una interfaz gráfica que se invento para los perezosos como yo, muy fácil de manejar y con un manual incluido, inventado por desabolladores de fedora.

Como se usa?
  • Abrimos la consola de comando y escribimos system-config-bind.
  • Debe salir una interfaz, damos click derecho en zone, aceptamos la opción que haga busquedas hacia internet, y buscamos la "iprevers v4".
  • Cambiamos las opciones que necesitemos tales como el administrador, el correo del administrador y la zona inversa que se encuentra al final con la ip.
  • Damos click derecho la ip que establecimos y creamos el registro PTR.
  • Aceptamos y como vemos se ha creado la zona directa con el nombre que especificamos en el registro PTR.
  • Por ahora podemos guardar.

system-config-bind: dns
vsftpd: ftp
httpd: web

Para que queremos estos paquetes necesitamos el dns para que haga una resolución de nombres en este caso nuestro dominio.
El ftp para que nuestro certificado sea visto para que las entidades certificadoras y si se requieren sea firmado.
Por ultimo el web para que nuestra pagina web entre de modo seguro.
  • Entramos al archivo de configuración del dns. Que en este caso seria "vim /etc/named.conf".
  • Vemos el primer archivo que debemos especificarle la dirección ip por la cual va escuchar y  declarar las zonas de este archivo es recomendable.
Options {
               listen-on port 53 { 192.168.1.65; }; Cabe recordar que la ip es la que ustedes le coloquen.

  • Ahora vamos a escribir nuestras zonas para que nuestro dns haga sus búsquedas para su previas resoluciones, estas se encuentran en el siguiente ruta "cd /var/named/" ahi se encuentran la zonas tanto la inversa y directa como las hayas especificado.
  • De este modo podemos realizar nuestra zona directa.
$TTL 1M 
@                SOA         ca.wilinton.com.             root.ca.wilinton.com. ( 2
                                                                                        3H
                                                                                        1H
                                                                                        1W
                                                                                        1H  )
                  NS           ca.wilinton.com.
ca                A            192.168.1.65
www         CNAME   ca.wilinton.com.
ftp             CNAME   ca.wilinton.com.  

    • De este modo la inversa.
    $TTL 1H 
    @               SOA          ca.wilinton.com.                   root.ca.wilinton.com. ( 2
                                                                                                   3H
                                                                                                   1H
                                                                                                   1W
                                                                                                   1H  )
                      NS            ca.wilinton.com.
    65               IN            1H          PTR          ca.wilinton.com. 
    • Por ultimo el archivo resolv.conf que es importante configurar lo por que nos ayuda a resolver los nombres que se encuentran en internet.
    domain wilinton.com
    search  wilinton.comnameserver 192.168.1.65  

    • Listo reiniciamos.
    "/etc/init.d/named restart" 
    • Probemos.
    #nslookup
    >ca.wilinton.com
    server:               192.168.1.65
    Address:            192.168.1.65#53

    Y lo mismo seria para el ftp y web.   

    Ahora lo que vamos hacer es crear el certificado para nuestra pagina y para que nuestro servidor ftp la almacene a quien necesitas que la firme.
    •  Instalamos el openssl con "yum install -y openssl"
    • Con los rpm podemos aparte también de ver que archivos son configurales como por ejemplo ssl "rpm -ql openssl".
    • Bueno empecemos al instalar el openssl el por defecto crea una "CA:Entidad Certificadora", lo primero que debemos es borrar la CA con rm -rf CA, tienen que estar parados en "/etc/pki".
    • Vamos a "/etc/pki/tls/misc/CA", que es donde se encuentran los scripts de ejecución para la creación de la entidad certificadora.
    Agregamos estas lineas "en algunos fedoras de versiones anteriores y otras distribuciones tales como CentOS"

    $REQ -new -keyout...==>Para ubicarlos donde debe colocare debajo de esta linea.
    $CA -extensions v3_ca -out ${...==> Linea que deben colocar.

    • Buenos ahora lo que vamos hacer es especificar en que directorios van ha estar tanto el certificado como las llaves publicas y privadas, para esto debemos ir a " cd /etc/pki/tls" y ahí se encuentra "openssl.cnf".
    dir                                        =/etc/pki/CA
    certs                                     =$dir/cert
    ...                                              ...
    certificate                            =$dir/cacert.pem
    ...                                              ...
    private_key                          =$dir/private 

    • El siguiente paso es crear la CA para ello tenemos que ir a la siguiente ruta "/etc/ki/tls/misc"
    • ./CA -newca (Crear la CA)
    • Enter PEM: ... "Contraseña"
            ...                    "Contraseña"

       [GB]:CO
           :Antioquia
           :Medellin 

    [My Comapany ltd]:Sena
    Section                   :Redes
     hostaname []:ca.wilinton
    Email address[]:admin@redes.com
    Password []: Enter
    Company name []: Enter

    Enter pass--/cakey.pem:"contraseña".

    • Generaremos la petición a la CA con el comando openssl.
    #openssl req -new -nodes -keyout /etc/httpd/httpd-key.pem -out httpd-req.pem -days 365

    En mi caso llenamos casi los mismos requerimientos que al crear la CA solo que cambia el hostname por la pagina que quiero cifrar.
    • Bueno ahora lo que vamos a hacer es decirles a la CA que firme nuestra petición. 
    Seguimos con el comando openssl
    #openssl ca -out /etc/httpd/httpd-cert.pem -infiles httpd-req.pem
         Enter Pass...           cakey.pem:"contraseña"
            [Y/n]:y
                    :y
    • Lo que haremos ahora es una copia de seguridad "por si las moscas".
    #cd /etc/pki/CA
    #cp cacert.pem /etc/httpd/ -R
    #cd /etc/httpd/
    • Renombramos el cacert "si queremos"
    #mv cacert.pem ca.wilinton.pem
    • Le damos los permisos necesarios.
    #chmod 644 httpd-cert.pem
    #chmod 644 ca.wilinton.pem
    #chmod 400 httpd-key.pem
    • Instalamos un modulo que nos falta.
    #yum install -y mod_ssl
    #cd /etc/httpd/conf.d/
    #nano o vim ssl.conf

         ==>SSLCertificateFile /etc/httpd/httpd-cert.pem
         ==>SSlCerticateKeyFile /etc/httpd/httpd-key.pem

    Estas lineas nos indica done se encuentra el certificado y la llave privada.
    • El ultimo paso es importar el certificado el el browser de la CA
    *En firefoz es en editar-preferencias-avanzado
    *cifrado-ver certificados-Importar el de nosotros

    /etc/httpd/ca.wilinton.pem ABRIR

    Mas o menos nos debe hacer esta pregunta ¿Quieres confiar en "ca.wilinton" paralos siguientes propositos? 

     *chuleamos las opciones y listo.


    • Para hacer nuestra pagina es solo iniciandola con "/etc/init.d/httpd restart" y si la quieres modificar o algo existe el directorio "/var/www/html/" donde puedes hacer tus modificaciones.

    Por ultimo haremos la configuracion del ftp enjaulado,ha!!!! como asi que enjaulado? .Esto quiere decir que un usuario determinado no se puede mover mas alla de su directorios donde se encuentran sus archivos.

    • Nos iremos al archivo "/etc/vsftpd/vsftpd.conf" y hacemos lo siguiente
    Anonymous_enable=NO==>acesso anonimo no
    ...==>seguimos bajando
    chroot_list_file=/etc/vsftpd/chroot_list.==> La lista donde se encontran los usuarios que manejaran el archivo.
    • Creamos el usuario o los usuarios en sistema con "useradd "usuario" " y le damos su repectiva contraseña "passwd "usuario" ".
    • Reiniciamos y verificamos en el browser. "/etc/init.d/vasftpd restart"==>Reiniciiar y ftp://ftp."como lo hayas llamado.com".
    • Nos debe de salir un login y password estos son del usuario que creaste.
    • Por ultimo para que la gente vea tu certificado en tu ftp tienes que ir a donde se encuentra "cd /etc/httpd/httpd-cert.pem"
    • Para fimar se hace con el mismo comando de qie hicimos que firmara la petcion que hicimos a la CA que creamos solo que cambia el lugar de ca y la preticion que vas a firmar.
    Bueno ahora vamos a probarlo con un cliente que el entremos via web sin que hay ningun problema,hagamos estos sencillos pasos:
    1. En cliente creamos un directorio llamado en ClientCertConf, vendría siendo así, mkdir /etc/httpd/ClientCertConf.
    2. Creamos una solicitud de certificado del siguiente modo "openssl req -new -nodes -keyout  /etc/httpd/ClientCertConf/httpdClient-key.pem -out  httpdClient-req.pem -days 365"
    3. Copiamos los requerimientos pero cuando estes en el paso de "hostname" copia como quiereas llamar la solicitud y el correo de quien lo va administrar.
    4. Vamos a decirle a esa CA que nos firme esa solicitud o petición que con el siguiente comando "openssl ca -out /etc/httpd/CertClientConf/httpdClient-cert.pem -infiles httpdClient-req.pem"
    5. Ahora hacemos una copia del cacert de la CA a la carpeta que creamos que ne este caso en CertClientConf "cp /etc/pki/CA/cacert.pem /etc/httpdCertClientConf/"
    6. Damos los permisos pertinentes "parados en CertClientConf" asi : 
    • chmod 644 cacert.pem
    • chmod 644 httpdClient-cert.pem
    • chmod 400 httpdClient-key.pem.
       7. Para probar el certificado del cliente tenemos que cambiarlo a formato pkcs12, tenemos que estar parados en CertClientConf y lo vamos a editar para que cambie de formato con el siguiente comando "openssl pkcs12 -export -in httpdClient-cert.pem httpdClient-key.pem -certfile cacert.pem -name "Certificado cliente" -out httpdClient-cert.p12", luego copias cualquier contraseña que deses.
     8.Subimos el certifcado al ftp como quieras una puede ser dese consola donde estar parado copiar ftp ftp.tu ftp.com; copias el usuario y contraseña que hayas colocado en tu ftp y con el comando put subimos el ftp" ftp> put httpdClient-cert.p12
    9.Por ultimo importamos el certificado desde el browser del mismo modo como explico arriba.
      Espero les haya sido de ayuda,comentar no es pecado ni se ten van ha caer las manos estoy aprendiendo cada dia y si tuve un error o alguna sugerencia, de pronto quieran tambien felicitarme bienvenido sea el comentario. SALU2




      Publicar un comentario