lunes, 29 de julio de 2013

Servidor de dominio en ubuntu server 12.04.2 con samba 4


Servidor de dominio en ubuntu server 12.04.2 con samba 4

Os dejo un tuto sobre como montar un servidor de dominio con samba 4.

A continuación voy a explicar 2 métodos de como hacerlo, mediante apt y compilar el código fuente, personalmente prefiero el segundo método, pero de todas formas hay lo dejo:

Para montar el servidor de dominio en ubuntu 12.04.2, para este ejemplo, necesitaremos el anteriormente mencionado samba 4, bind9 y kerberos aplicable a la siguiente topología:

topologia

Primera opción(compilar fuente).

- Configuración inicial:

sudo su

echo "# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.103
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
dns-nameserves 192.168.1.103 192.168.1.1
dns-search servidorlocal.test.local
# Secundary network interface
auto eth1
iface eth1 inet dhcp" >> /etc/network/interfaces

echo "servidorlocal" > /etc/hostname

echo "127.0.0.1 localhost
192.168.1.103 servidorlocal servidorlocal.test.local" >/etc/hosts

- Actualizamos nuestro servidor e instalamos los paquetes necesarios:

apt-get update && apt-get dist-upgrade

apt-get install build-essential libacl1-dev python-dev libldap2-dev pkg-config gdb libgnutls-dev libblkid-dev libreadline-dev libattr1-dev python-dnspython libpopt-dev libbsd-dev attr docbook-xsl libcups2-dev git
reboot

- Descargamos samba 4 y lo dejamos en la ruta /usr/src/samba4: 
 git clone git://git.samba.org/samba.git /usr/src/samba4/ 
 - Antes de compilar, se prepara el paquete conforme a nuestras necesidades: 
 cd /usr/src/samba4/  
 ./configure --enable-debug 
 - Se compila el paquete, en este punto paciencia, porque dependiendo de los recursos del equipo, puede tardar más o menos: 
 make 
- Una vez compilado, procedemos al instalar samba 4: 
    make install 
     
     - Añadimos al path la ruta de los ejecutables de samba 4 para lo cual, editamos/creamos el archivo .bashrc e introducimos la siguiente linea:
     
    export PATH="/usr/local/samba/sbin:/usr/local/samba/bin:$PATH"


    - Creamos el dominio:

    samba-tool domain provision --realm test.local --domain TEST --adminpass P$ssword --server-role=dc --use-ntvfs

    - Probamos que samba funciona correctamente: 

    root@servidorlocal:/home/antonio#smbclient -L localhost -U%
      Domain=[TEST] OS=[Unix] Server=[Samba 4.2.0pre1-GIT-44429f9]

      Sharename Type Comment
      --------- ---- -------
      netlogon Disk
      sysvol Disk
      IPC$ IPC IPC Service
      Domain=[TEST] OS=[Unix] Server=[Samba 4.2.0pre1-GIT-44429f9]

      Server Comment
      --------- -------

      Workgroup Master
      --------- -------

      root@servidorlocal:/home/antonio# /usr/local/samba/bin/smbclient //localhost/netlogon -U 'administrator'
        Enter administrator's password:
        Domain=[TEST] OS=[Unix] Server=[Samba 4.2.0pre1-GIT-44429f9]
      - Antes de probar que los DNS funcionan correctamente listar el archivo /usr/local/samba/etc/smb.conf, debiendo quedar:

      # Global parameters
      [global]
      workgroup = TEST
      realm = test.local
      netbios name = SERVIDORLOCAL
      server role = active directory domain controller
      dns forwarder = 192.168.1.1
      allow dns updates = nonsecure and secure
      server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, dns, smb
      dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvc
      [netlogon]
      path = /usr/local/samba/var/locks/sysvol/test.local/scripts
      read only = No
      [sysvol]
      path = /usr/local/samba/var/locks/sysvol
      read only = No

      - Tambien listaremos el contenido del fichero /etc/resolv.conf, donde la salida que obtendremos será al parecido a esto:

        # Dynamic resolv.conf(5) file for glibc resolver(3) generated by r
        esolvconf(8)
        # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
        nameserver 192.168.1.103
        search test.local
      * Si modificamos/introducimos algún parámetro, sera conveniente reiniciar.

      - - Para comprobar que nuestro servidor DNS funciona, podemos ejecutar:

      r root@servidorlocal:/home/antonio# netstat -tunpe | grep ":53"

            tcp 0 0 127.0.0.1:53699 127.0.0.1:953 TIME_WAIT 0 0

      root@servidorlocal:/home/antonio# host -t SRV _ldap._tcp.test.local.

      _ldap._tcp.test.local has SRV record 0 100 389 servidorlocal.test.local.

      root@servidorlocal:/home/antonio# host -t SRV _kerberos._udp.test.local.

             _kerberos._udp.test.local has SRV record 0 100 88 servidorlocal.test.local.

      root@servidorlocal:/home/antonio# host -t servidorlocal.test.local. 
          
               servidorlocal.test.local has address 192.168.1.103 

       - Para hacer que nuestros clientes modifique sus DNS cuando el servidor los modifica, editamos el archivo /etc/bind/named.conf e introducimos la siguiente linea: 

              tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
       
      - Instalamos kerberos: 

      apt-get install krb5-user 

      root@servidorlocal:/home/antonio# kinit administrator@TEST.LOCAL 
        Password for administrator@TEST.LOCAL:
        Warning: Your password will expire in 41 days on Fri Aug 30 15:06:12 2013 
         
        * En caso de nos devuelva una fallo, editar fichero /usr/local/samba/share/setup/krb5.conf:
      [libdefaults]
      default_realm = TEST.LOCAL
      dns_lookup_realm = true
      dns_lookup_kdc = true

      root@servidorlocal:/home/antonio# klist -e
        Ticket cache: FILE:/tmp/krb5cc_0
        Default principal: administrator@TEST.LOCAL
        Valid starting Expires Service principal
        20/07/2013 01:30 20/07/2013 11:30 krbtgt/TEST.LOCAL@TEST.LOCAL
        renew until 21/07/2013 01:30
      -Para hacer que samba 4 se ejecute al inicio, creamos el archivo /etc/init.d/samba4 con el siguiente contenido:

      #! /bin/sh
      ### BEGIN INIT INFO
      # Provides: samba
      # Required-Start: $network $local_fs $remote_fs
      # Required-Stop: $network $local_fs $remote_fs
      # Default-Start: 2 3 4 5
      # Default-Stop: 0 1 6
      # Short-Description: start Samba daemons
      ### END INIT INFO
      #
      # Start/stops the Samba daemon (samba).
      # Adapted from the Samba 3 packages.
      #

      SAMBAPID=/var/run/samba/samba.pid

      # clear conflicting settings from the environment
      unset TMPDIR
      # See if the daemon and the config file are there
      test -x /usr/local/samba/sbin -a -r /usr/local/samba/etc/ || exit 0

      . /lib/lsb/init-functions

      case "$1" in
      start)
      log_daemon_msg "Starting Samba 4 daemon" "samba"
      if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/samba -- -D; then
      log_end_msg 1
      exit 1
      fi

      log_end_msg 0
      ;;
      stop)
      log_daemon_msg "Stopping Samba 4 daemon" "samba"

      start-stop-daemon --stop --quiet --name samba $SAMBAPID
      # Wait a little and remove stale PID file
      sleep 1
      if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
      then
      # Stale PID file (samba was succesfully stopped),
      # remove it (should be removed by samba itself IMHO.)
      rm -f $SAMBAPID
      fi

      log_end_msg 0
      ;;
      restart|force-reload)
      $0 stop
      sleep 1
      $0 start
      ;;
      *)
      echo "Usage: /etc/init.d/samba {start|stop|restart|force-reload}"
      exit 1
      ;;
      esac

      exit 0

      chmod 755 /etc/init.d/samba4

      update-rc.d samba4 defaults


      Segunda opción

      - Primero vamos a configurar nuestro servidor:

      sudo su



      echo "# The primary network interface

      auto eth0

      iface eth0 inet static

      address 192.168.1.103

      netmask 255.255.255.0

      gateway 192.168.1.1

      network 192.168.1.0

      dns-nameserves 192.168.1.103 192.168.1.1

      dns-search servidorlocal.test.local

      # Secundary network interface

      auto eth1

      iface eth1 inet dhcp" >> /etc/network/interfaces



      echo "servidorlocal" > /etc/hostname



      echo "127.0.0.1 localhost
      192.168.1.103 servidorlocal servidorlocal.test.local" > /etc/hosts

      - En segundo lugar actualizamos nuestro servidor:

      apt-get update && apt-get dist-upgrade

      reboot

      - Instalamos samba 4:
      apt-get install samba4
          * En este momento es posible que nos devuelva un error que nos dice algo asi como que samba 4 no se pudo configurar, bien, tendremos que editar el archivo /var/lib/dpkg/status y en el paquete samba4 modificar status: install ok half-configured por install ok installed. Si más tarde necesitamos desinstalar samba 4:
        • Borraremos el archivo/var/lib/dpkg/status.
        • Renombraremos el archivo var/lib/dpkg/status-old a var/lib/dpkg/status-old.bak.
        • Y por último renombramos el archivo var/lib/dpkg/status-old.bak a var/lib/dpkg/status-old.
         - Creamos el dominio:
          
        /usr/share/samba/setup/provision --realm=test.local --domain=TEST --adminpass='P$ssword' --server-role=dc 

        - Donde deberemos obtener la información relacionada con el nuevo dominio creado:

        Server Role: domain controller

        Hostname: servidorlocal

        NetBIOS Domain: TEST

        DNS Domain: test.local

        DOMAIN SID: S-1-5-21-41787111-135949663-3539000777


        - Para comprobar que todos los parámetros del archivo de configuración de samba son correctos:
          
        root@servidorlocal:/home/antonio# testparm

        [global]

        workgroup = TEST

        realm = TEST.LOCAL

        passdb backend = samba4

        idmap config * : backend = tdb



        [netlogon]

        path = /var/lib/samba/sysvol/test.local/scripts

        read only = No



        [sysvol]

        path = /var/lib/samba/sysvol

        read only = No

        - Si todo a ido bien, podemos inciar samba y comprobar que nuestro servidor de dominio funciona correctamente:

        initctl start samba4



        apt-get installsamba4-clients

        root@servidorlocal:/home/antonio#smbclient -L localhost -U%
        Sharename Type Comment

        --------- ---- -------

        netlogon Disk

        sysvol Disk

        IPC$ IPC IPC Service

        - Si obtenemos una salida parecida a la anterior, procedemos a instalar y configurar el servidor DNS:
          apt-get install bind9

          nano /etc/bind/named.conf
        include "/var/lib/samba/private/named.conf"
          nano /etc/apparmor.d/usr.sbin.named

        /var/lib/samba/private/** rkw,
        /var/lib/samba/private/dns/** rkw,
        /usr/lib/x86_64-linux-gnu/samba/bind9/** rm,
        /usr/lib/x86_64-linux-gnu/samba/gensec/** rm,
        /usr/lib/x86_64-linux-gnu/ldb/modules/ldb/** rm,
        /usr/lib/x86_64-linux-gnu/samba/ldb/** rm,

        service bind9 restart
          service apparmor reload
            - Para comprobar que nuestro servidor DNS funciona, podemos ejecutar: 
            root@servidorlocal:/home/antonio#netstat -tunpe | grep ":53" 
             
            tcp 0 0 127.0.0.1:53 699 127.0.0.1:953 TIME_WAIT 0 0
            - Comprobamos que samba 4 y bind9 funcionancorrectamente:

            root@servidorlocal:/home/antonio# host -t SRV _ldap._tcp.test.local. 
             
            _ldap._tcp.test.local has SRV record 0 100 389 servidorlocal.test.local.


            root@servidorlocal:/home/antonio# host -t SRV _kerberos._tcp.test.local. 
             
            _kerberos._tcp.test.local has SRV record 0 100 88 servidorlocal.test.local. 

            root@servidorlocal:/home/antonio# host -t A servidorlocal.test.local.

                            servidorlocal.test.local has address 192.168.1.103



            - Para hacer que nuestros clientes modifique sus DNS cuando el servidor los modifica, editamos el archivo /etc/bind/named.conf e introducimos la siguiente linea:
              tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
            - Instalamos kerberos:
            apt-get install krb5-user

            root@servidorlocal:/home/antonio# kinit administrator@TEST.LOCAL 
             
            Password for administrator@TEST.LOCAL:
            Warning: Your password will expire in 41 days on Fri Aug 30 15:06:12 2013

            root@servidorlocal:/home/antonio# klist -e

            Ticket cache: FILE:/tmp/krb5cc_0
            Default principal: administrator@TEST.LOCAL
            Valid starting Expires Service principal
            20/07/2013 01:30 20/07/2013 11:30 krbtgt/TEST.LOCAL@TEST.LOCAL
            renew until 21/07/2013 01:30
             

            Opciones comunes

            - Para probar que todo esto realmente funciona vamos a configurar, a modo de prueba, un cliente, en este caso windows xp:
            1. Entramos en la configuración IP y establecemos los parámetros correctos.
            1. Por último modificamos el nombre del equipo, para que se una al dominio.

              joined

            - Crear recurso compartido, a modo de ejemplo se creara una carpeta:

            mkdir /home/compartido



            nano /usr/local/samba/etc/smb.conf

            [compatido] path = /home/compartido
            comment = Carpeta comun
            read only = yes
            - Para crear nuevos usuarios:

            samba-tool user add “user”


            Conclusión: A titulo personal pienso que este proyecto, si bien tiene muy buena pinta,
            de momento no lo pondría en producción, ya que intuyo que el proyecto esta todavía en pañales,
            aunque a mi no me ha dado ningún pete, pero como dicen en mi tierra, el miedo es libre.
             
            Este tuto no es ni mucho menos un todo, pero si creo que es un buen punto de partida para
            empezar con samba 4.
             
            Para la confeción del este tuto se ha consultado diferentes recursos:
             
            http://www.jadota.com/2013/01/installing-samba4-on-ubuntu-12-04/

            http://www.matrix44.net/cms/notes/gnulinux/samba-4-ad-domain-with-ubuntu-12-04
             
            http://www.darklab.co.uk/2013/01/15/creating-a-samba-4-active-directory-primary-domain-controller-on-ubuntu-12-04-1-server/




            lunes, 15 de julio de 2013

            Realizar una auditoria de segutidad en ubuntu server con la herramienta lynis


            Como hacer una auditoria de seguridad en ubuntu server

            Ha llegado a mis manos una herramienta que nos permitira hacer una auditroria completa de nuestro servidor y asi poder detectar coln facilidad las vuneravilidades que nuestro equipo/servidor pueda tener y asi poder corregirlas.

            Lynis escanea, por ejemplo, cosas como los certificados SSL, sofware obsoleto, tambien realizara una audotoria de nuestro firewwal, auditara servicios, usuarios y grupos, intrerfaces de red, sistema de red como samba o SSH, proxy, bases de datos, y un largo etc …

            Para instalarlo, primero nos bajamos la ultima version de lynis, actualmente version 1.3.0, descomprimirla y ejecutarla, no requiere de inslacion alguna

            wget http://www.rootkit.nl/files/lynis-1.3.0.tar.gz


            tar xvf lynis-1.3.0.tar.gz

            cd lynis-1.3.0/

            Y hacemos una primera auditoria completa

            sudo ./lynis --check-all -Q

            Para este minitutorial se han utilizado dos opciones

            --check-all, obvio, verdad.

            --check-update, solamente auditara las actualizaciones.

            -Q, realiza un escaneo rapido

            -q, realizara un escaneo silencioso.

            --no-log, por defecto lynis nos crea un archivo con el resultado de la audotoria, con esta opcion no lo creara. Personalmente yo no creo que la utilice, ya que una vez terminada la auditoria puedes listar el ficxhero con la informacion que el escano nos da, por ejemplo

            cat /var/log/lynis.log 1 grep Warning

            cat /var/log/lynis.log 1 grep Suggestion

            Existen mas opciones pero estas son las que considero mas interesantes

            lunes, 1 de julio de 2013

            Servidor FTP con SSL en ubuntu

            servidor ftp con SSL en ubuntu

            Anteriormente confeccione un tuto de como instalar y configurar un servidor ftp usando el demonio vsftpd. Ahora vamos a crearle un certificado SSL.

            sudo su

            apt-get update && apt-get upgrade

            -Lo primero será instalar el demonio FTP

            apt-get install vsftpd

            - Bien, ya tenemos totalmente operativo nuestro servidor FTP y podemos conectarnos por medio de cualquier cliente FTP:
            • Se crea el certificado SSL que se ubicara en la ruta /etc/vsftpd y que tendrá una duración de 365 días:
            - Se crea el directorio que albergara el certificado:

            mkdir /etc/vsftpd-ssl

            cd /etc/vsftpd-ssl
              - Se crea el certificado:
            openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem

            Ahora editamos el arch
            ivo de configuración de vsftp para su correcta configuración:


            nano /etc/vsftpd
            • Primero definimos la carpeta compartida:
            anon_root=/home/antonio/ftp
            • Para que el servidor se inicie con el sistema:
            Listen=YES
            • Para no permitir usuarios anónimos, cambiamos la linea:
            anonymous_enable=YES 
            • En caso de que esta variable la hubierais puesto a NO:
            1. Crear usuario/s:
            adduser –home /home/antonio/ftp –no-create-home –shell /bin/bash user1
            1. Asignar user1 al grupo ftp:
            addgroup user1 ftp
            • Para permitir al usuario que acceda al servidor FTP escribir en el directorio compartido, siempre y cuando tenga permisos en la carpeta compartida:
            write_enable=YES.
            • Para permitir acceder al sistema usuarios
              locales.

              local_enable=YES.
            • Esta linea permite o no el acceso de usuarios locales a sus respectivas carpetas privadas
            chroot_local_user=YES, para permitir acceso
            chroot_local_user=NO, para denegar  acceso
            1. En en caso de que esta opcion este a YES:
            chroot_list_file=/etc/vsftpd/chroot_list
            1. nano /etc/vsftpd/chroot_list, donde haremos una lista con los usuarios locales.
            • Establecemos los permisos por defecto de los nuevos archivos que suban los usuarios.
            local_umask=022.
            1. Instalar/configurar SSL:
            • Instalamos el modulo SSL para vsft:
            apt-get install ftp-ssl
            • Configurar certificado SSL:

               nano /etc/vsftpd
            # # # Allow anonymous users to use secured SSL connections 
            allow_anon_ssl=YES
             # 
            # All non-anonymous logins are forced to use a secure SSL connection in order to 
            # send and receive data on data connections. 
            force_local_data_ssl=YES 
            # All non-anonymous logins are forced to use a secure SSL connection in order to send the password. 
            force_local_logins_ssl=YES 
            # Permit TLS v1 protocol connections. TLS v1 connections are preferred 
            ssl_tlsv1=YES 
            # Permit SSL v2 protocol connections. TLS v1 connections are preferred 
            ssl_sslv2=NO 
            # permit SSL v3 protocol connections. TLS v1 connections are preferred 
            ssl_sslv3=NO 
            # This option specifies the location of the RSA certificate to use for SSL 
            # encrypted connections. 
            rsa_cert_file=/etc/vsftpd/vsftpd.pem
            - Tras lo que iniciaremos el demonio para que el servidor FTP tome los cambios:

            service vsftpd start

            Ahora el servidor quedaría totalmente operativo:

            ftp-ssl "ip del servidor"