You are on page 1of 47

Configuracin de OpenSSH.

Introduccin.
Acerca de SSH.
SSH (Secure Shell) es un conjunto de estndares y protocolo de red que permite establecer
una comunicacin a travs de un canal seguro entre un cliente local y un servidor remoto.
Utiliza una llave pblica para autenticar el servidor remoto y de manera opcional
permitir al servidor remoto autenticar al usuario. SSH provee confidencialidad e integridad
en la transferencia de los datos utilizando criptografa y MAC (Message Authentication
Codes o Cdigos de Autenticacin de Mensaje). De modo predeterminado, escucha
peticiones a travs del puerto 22 por TCP.

Acerca de SFTP.
SFTP (SSH File Transfer Protocol) es un protocolo que provee funcionalidad de
transferencia y manipulacin de archivos a travs de un flujo confiable de datos.
Comnmente se utiliza con SSH para proveer a ste de transferencia segura de archivos.

Acerca de SCP.
SCP (Secure Copy o Copia Segura) es una protocolo seguro para transferir archivos entre
un anfitrin local y otro remoto, a travs de SSH. Bsicamente, es idntico a RCP (Remote
Copy o Copia Remota), con la diferencia de que los datos son cifrados durante la
transferencia para evitar la extraccin potencial de informacin a travs de programas de
captura de las tramas de red (packet sniffers). SCP slo implementa la transferencia de
archivos, pues la autenticacin requerida es realizada a travs de SSH.

Acerca de OpenSSH.
OpenSSH (Open Secure Shell) es una alternativa de cdigo fuente abierto, con licencia
BSD, hacia la implementacin propietaria y de cdigo cerrado SSH creada por Tatu
Ylnen. OpenSSH es un proyecto creado por el equipo de desarrollo de OpenBSD y
actualmente dirigido por Theo de Raadt. Se considera es ms segura que la versin
privativa Ylnen, gracias a la constante auditora que se realiza sobre el cdigo fuente por
parte de una enorme comunidad de desarrolladores, una ventaja que brinda el Software
Libre.
OpenSSH incluye servicio y clientes para los protocolos SSH, SFTP y SCP.
URL: http://www.openssh.org/.

Equipamiento lgico necesario.


En CentOS y Red Hat Enterprise Linux.
Si realiz una instalacin mnima, ejecute lo siguiente para instalar la paquetera necesaria:

yum -y install openssh openssh-server openssh-clients

En openSUSE y SUSE Linux Enterprise.


Si realiz una instalacin mnima, ejecute lo siguiente para instalar la paquetera necesaria:

yast -i openssh

Activar, desactivar, iniciar, detener y reiniciar el servicio


ssh.
De modo predeterminado el servicio est activo en todos los niveles de ejecucin.

En CentOS y Red Hat Enterprise Linux.


Ejecute lo siguiente para desactivar el servicio de todos los niveles de ejecucin ejecute:

chkconfig sshd off

Ejecute lo siguiente para iniciar por primera vez el servicio:

service sshd start

Ejecute lo siguiente para reiniciar el servicio y aplicar cambios en la configuracin::

service sshd restart

Ejecute lo siguiente para detener el servicio:

service sshd stop

En openSUSE y SUSE Linux Enterprise.


Ejecute lo siguiente para desactivar el servicio en todos los niveles de ejecucin:

insserv -r sshd

Ejecute lo siguiente para iniciar por primera vez el servicio:

rcsshd start

Ejecute lo siguiente para reiniciar el servicio y aplicar cambios en la configuracin::

rcsshd restart

Ejecute lo siguiente para detener el servicio:

service sshd stop

Modificaciones necesarias en el muro cortafuegos.


Es necesario abrir el puerto 22 por TCP (SSH) o bien el puerto que se haya seleccionado
para el servicio.

En CentOS y Red Hat Enterprise Linux.


Utilizando system-config-firewall.
Ejecute lo siguiente:

system-config-firewall-tui

Habilite la casilla de SSH y aplique los cambios.

Habilitando SSH en system-config-firewall-tui.


O bien utilice la herramienta grfica desde el escritorio.

Habilitando SSH en system-config-firewall.


Servicio iptables.
Ejecute lo siguiente:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

Guarde los cambios ejecutando lo siguiente:

service iptables save

O bien aada lo siguiente al archivo /etc/sysconfig/iptables:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

Y reinicie el servicio iptables:

service iptables restart

Shorewall.

Edite el archivo /etc/shorewall/rules:

vi /etc/shorewall/rules

Las regla correspondera a algo similar a lo siguiente:

#ACTION
#
ACCEPT

SOURCE

DEST

all

PORT
fw

tcp

PROTO
PORT(S)1
22

DEST

SOURCE

Si se decide ofuscar el puerto de SSH, puede utilizar la siguiente regla, donde en lugar del
puerto 22 de deber especificar el puerto que haya elegido 52341 en el ejemplo:

#ACTION
#
ACCEPT

SOURCE
all

DEST
PORT
fw

tcp

PROTO
PORT(S)1
52341

DEST

SOURCE

Reinicie el servicio ejecutando lo siguiente:

service shorewall restart

En openSUSE y SUSE Linux Enterprise.


Ejecute yast con firewall como argumento:

yast firewall

Habilite Secure Shell Server o bien el puerto seleccionado para utilizar el servicio y
aplique los cambios.

Mdulo de cortafuegos de YaST, habilitando Secure Shell Server en modo texto.


O bien haga lo mismo desde YaST Seguridad y usuarios Cortafuegos Allowed
Services o Servicios autorizados y aplique los cambios.

Mdulo de cortafuegos de YaST, habilitando Secure Shell Server desde el escritorio.

SELinux y el servicio sshd.


Si utiliza openSUSE y SUSE Linux Enterprise omita la siguiente seccin.
Si utiliza CentOS o Red Hat Enterprise Linux, el sistema incluye varias polticas para
el servicio sshd.

Puerto distinto al 22.


Si configura el servicio para utilizar un puerto distinto al 22, debe cambiar el contexto de
SELinux de ste para permitir al servicio hacer uso de ste. En el siguiente ejemplo se
permite utilizar el puerto 52341:

semanage port -a -t ssh_port_t -p tcp 52341

Poltica ssh_chroot_rw_homedirs.
Habilita los atributos lectura y escritura de archivos en los directorios de inicio de los
usuarios con chroot. El valor predeterminado es deshabilitado. Para habilitar slo ejecute:

setsebool -P ssh_chroot_rw_homedirs 1

Poltica fenced_can_ssh.
Permite a usuarios con chroot poder ingresar tambin a travs de SSH. El valor
predeterminado es deshabilitado. Por lo general se evita utilizar esta poltica. Para habilitar
ejecute:

setsebool -P fenced_can_ssh 1

Poltica ssh_chroot_manage_apache_content.
Esta poltica es inexistente en CentOS 7 y Red Hat Enterprise Linux 7 y versiones
posteriores de stos. En CentOS 6 y Red Hat Enterprise Linux 6 permite a usuarios
con chroot poder administrar tambin contenidos publicados a travs de Apache. El valor
predeterminado es deshabilitado. Para habilitar ejecute:

setsebool -P ssh_chroot_manage_apache_content 1

Poltica ssh_sysadm_login.
Habilita el acceso a usuarios con rol de administrador de sistema (contextos
sysadm_r:sysadm_t. El valor predeterminado es deshabilitado. Para habilitar ejecute:

setsebool -P ssh_sysadm_login 1

Poltica allow_ssh_keysign.
Habilita el uso de firmas digitales. El valor predeterminado es deshabilitado. Para habilitar
ejecute:

setsebool -P allow_ssh_keysign 1

Para ms detalles, consulte el documento titulado OpenSSH con autenticacin a travs


de firma digital.

Contexto ssh_home_t.
El contexto de SELinux para de los directorios ~/.ssh y sus contenidos debe ser tipo
ssh_home_t. Reasigne los contextos ejecutando lo siguiente:

restorecon -Rv /root/.ssh /home/*/.ssh

O bien ejecutando:

chcon -R -t ssh_home_t /root/.ssh /home/*/.ssh

Archivos de configuracin.
/etc/ssh/sshd_config
Archivo principal de configuracin del servidor SSH.

/etc/ssh/ssh_config
Archivo principal de configuracin de los clientes SSH utilizados desde el
anfitrin local.
~/.ssh/config
Archivo personal para cada usuario, que almacena la configuracin utilizada
por los clientes SSH utilizados desde el anfitrin local. Permite al usuario local
utilizar una configuracin distinta a la definida en el archivo
/etc/ssh/ssh_config.
~/.ssh/known_hosts
Archivo personal para cada usuario, el cual almacena las firmas digitales de los
servidores SSH a los que se conectan los clientes. Cuando stas firmas
cambian, se pueden actualizar ejecutando ssh-keygen con la opcin -R y el
nombre del anfitrin como argumento, el cual elimina la entrada
correspondiente del archivo ~/.ssh/known_hosts, permitiendo aadir de nuevo
el anfitrin con una nueva firma digital. Ejemplo: ssh-keygen -R
nombre.o.ip.servidor.
~/.ssh/authorized_keys
Archivo personal para cada usuario, el cual almacena los certificados de los
clientes SSH, para permitir autenticacin hacia servidores SSH sin requerir
contrasea. Consulte el documento titulado OpenSSH con autenticacin a
travs de firma digital.
Cuando se utilizan cuentas con acceso al intrprete de mandatos, las opciones suministradas
a ssh tienen precedencia sobre las opciones establecidas en el archivo ~/.ssh/config, que a
su vez tiene precedencia sobre las opciones definidas en el archivo /etc/ssh/ssh_config.

Procedimientos.
Edite el archivo /etc/ssh/sshd_config.

vi /etc/ssh/sshd_config

A continuacin se analizarn las opciones bsicas que se recomienda modificar.

Opcin Port.
Una forma de elevar considerablemente la seguridad al servicio consiste en cambiar el
nmero de puerto predeterminado por otro que slo conozca el administrador del sistema. A
este tipo de tcnicas se les conoce como Seguridad por Oscuridad. La mayora de los
delincuentes informticos utiliza guiones que buscan servidores que respondan a peticiones

a travs del puerto 22. Cambiar de puerto disminuye considerablemente la posibilidad de


una intrusin.

Port 22

SSH trabaja a travs del puerto 22 por TCP. Puede elegirse cualquier otro puerto entre el
1025 y 65535. En el siguiente ejemplo se establecer el puerto 52341:

Port 52341

Opcin ListenAddress.
De modo predeterminado el servicio de SSH escuchar peticiones a travs de todas las
direcciones presentes en todas las interfaces de red del sistema. En el siguiente ejemplo el
servidor a configurar tiene la direccin IP 192.168.1.254, la cual slo podra ser accedida
desde la red local:

ListenAddress 192.168.1.254

Opcin PermitRootLogin.
Establece si se va a permitir el ingreso directo del usuario root al servidor SSH. Si se va a
permitir el ingreso hacia el servidor desde redes pblicas, resultar prudente utilizar esta
opcin con el valor no, de modo que sea necesario ingresar primero con una cuenta de
usuario activa, con un intrprete de mandatos que permita el acceso.

PermitRootLogin no

Opcin X11Forwarding.
Establece si se permitir la ejecucin remota de aplicaciones grficas que utilicen el
servidor X11. Resultar conveniente para algunas tareas administrativas que slo puedan
llevarse a cabo con herramientas grficas o bien si se requiere utilizar una aplicacin
grfica en particular. Para este fin, esta opcin puede establecerse con el valor yes.

X11Forwarding yes

Opcin AllowUsers.
Permite restringir el acceso por usuario y/o por anfitrin. El siguiente ejemplo restringe el
acceso hacia el servidor SSH para que slo puedan hacerlo los usuarios fulano y mengano,
desde cualquier anfitrin.

AllowUsers fulano mengano

El siguiente ejemplo restringe el acceso hacia el servidor SSH para que slo puedan hacerlo
los usuarios fulano y mengano, pero slo desde los anfitriones 10.1.1.1 y 10.2.2.1.

AllowUsers fulano@10.1.1.1 mengano@10.1.1.1 fulano@10.2.2.1


mengano@10.2.2.1

Opcin UseDNS.
Cuando un cliente realiza una conexin hacia un servidor SSH, ste ltimo intentar
resolver la direccin IP del cliente. Si el servidor DNS predeterminado del sistema carece
de una zona de resolucin inversa que resuelva un nombre para la direccin IP del cliente,
la conexin se demorar algunos segundos ms de lo normal. Algunos administradores
prefieren desactivar esta funcin con el fin de agilizar las conexiones SSH en redes donde
se carece de servidores DNS que tengan zonas de reenvo para resolver los nombres o
zonas de resolucin inversa para resolver las direcciones IP de los segmentos de red local.

UseDNS no

Del lado del cliente se realiza un proceso de validacin, que tiene como objetivo verificar si
se estn falsificando registros en un servidor DNS, en el caso de que ste ltimo se haya
visto comprometido en su seguridad. La opcin que controla esta funcin es CheckHostIP,
tiene establecido yes como valor predeterminado y se define en el archivo
/etc/ssh/ssh_config (archivo de configuracin para los clientes SSH del anfitrin local).
Se recomienda dejar intacta esta opcin con el valor predeterminado, salvo que los
servidores SSH involucrados carezcan de resolucin en algn servidor DNS. Establecer el
valor no, tiene como riesgo el ser susceptible de conectarse inadvertidamente a un servidor

distinto al que realmente se quera utilizar, cuya resolucin de nombre de anfitrin haya
sido falsificada y que pudiera estar siendo utilizado con malas intenciones para engaar y
poder capturar nombres de usuario y contraseas y posteriormente utilizar stos para
acceder al verdadero servidor.

Probando OpenSSH.
Acceso con intrprete de mandatos.
Desde GNU/Linux y Mac OS X.
Para acceder con intrprete de mandatos hacia el servidor, ejecute ssh desde una terminal
en el sistema cliente, definiendo como argumentos el usuario a utilizar, una arroba y la
direccin IP o nombre del servidor al cual se quiera conectar:

ssh usuario@nombre.o.ip.servidor

Si el servidor SSH utiliza un puerto distinto al 22, se puede utilizar la opcin -p con el
nmero de puerto utilizado como argumento. En el siguiente ejemplo se utiliza la cuenta
del usuario juan para acceder hacia el servidor con direccin IP 192.168.70.99, el cual
tiene un servicio de SSH que escucha peticiones a travs del puerto 52341.

ssh -p 52341 juan@192.168.70.99

Desde Windows.
Acceda hacia putty.org, descargue y ejecute PuTTY. ste es un cliente para SSH para todas
las versiones de Windows.

Ventana de configuracin de PuTTY.

Aceptando firma digital de servidor SSH en PuTTY.

Ingresando a un servidor SSH con PuTTY.

Transferencia de archivos a travs de SFTP.


Para acceder a travs de SFTP hacia el servidor, ejecute sftp desde el sistema cliente
definiendo el usuario a utilizar, una arroba y el nombre o direccin IP del servidor remoto:

sftp usuario@servidor

El intrprete de mandatos de SFTP es muy similar al utilizado para el protocolo FTP y


tiene las mismas funcionalidades.
Ejecute sftp con la opcin -o con el valor Port=nmero de puerto para acceder hacia un
servidor SSH en un puerto distinto al 22. En el siguiente ejemplo se intentar acceder con el
usuario juan hacia el servidor con direccin IP 192.168.70.99 y que escucha peticiones en
el puerto 52341:

sftp -o Port=52341 juan@192.168.70.99

Si utiliza GNOME 2.x o MATE como escritorio, puede acceder hacia servidores SSH a
travs del protocolo SFTP utilizando el administrador de archivos (Nautilus) para realizar
transferencias y manipulacin de archivos, especificando el URI (Uniform Resource
Locator o Localizador Uniforme de Recursos) sftp:, seguido del servidor y la ruta hacia
la que se quiere acceder, seguido del puerto, en el caso que sea distinto al 22.

Nautilus, accediendo hacia un directorio remoto a travs de SFTP.

Jaulas para los usuarios que acceden a travs de SFTP.


La funcin de chroot (jaula de confinamiento de los usuarios) viene incluida desde la
versin 4.9p1 de OpenSSH.
Edite el archivo /etc/ssh/sshd_config:

vi /etc/ssh/sshd_config

Localice la siguiente lnea resaltada. La encontrar casi al final del archivo:

# override default of no subsystems


Subsystem
sftp
/usr/libexec/openssh/sftp-server

Deshabilite la lnea con una almohadilla y aada el siguiente contenido resaltado:

# override default of no subsystems


#Subsystem
sftp
/usr/libexec/openssh/sftp-server
Subsystem
sftp
internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

Guarde el archivo, salga del editor de texto y regrese al intrprete de mandatos.


Si utiliza CentOS o Red Hat Enterprise Linux, reinicie el servicio ejecutando lo
siguiente:

service sshd restart

Si utiliza openSUSE o SUSE Linux Enterprise, reinicie el servicio ejecutando lo


siguiente:

rcsshd restart

Ejecute groupadd con sftpusers como argumento para crear un grupo con este nombre.

groupadd sftpusers

Aada usuarios a los cuales se quiera enjaular con chroot al grupo sftpusers ejecutando
usermod con la opcin -G (mayscula) y sftpusers y el nombre del usuario como
argumentos. Ejemplo:

usermod -G sftpusers perengano

Cambie los permisos del directorio de inicio de los usuarios involucrados para que
pertenezcan al grupo y usuario root y adems tengan permiso de acceso 755 es decir
drwxr-xr-x.

chown root:root /home/perengano


chmod 755 /home/perengano

Genere un directorio donde el usuario y su grupo predeterminado tengan privilegios de


escritura:

mkdir -p -m 0755 /home/perengano/public_html


mkdir -p -m 0700 /home/perengano/{mail,.ssh}
chown perengano:perengano /home/perengano/
{mail,.ssh,public_html}

Finalmente, cambie el intrprete de mandatos de los usuarios involucrados a /sbin/nologin.

usermod -s /sbin/nologin perengano

A partir de este momento los usuarios involucrados podrn ingresar al sistema a travs de
SFTP, pero slo podrn tener acceso a su directorio de inicio.

[fulano@centos6 ~]$ sftp perengano@192.168.80.8


perengano@192.168.80.8's password:
Connected to 192.168.80.8.
sftp> pwd

Remote working directory: /


sftp> ls -a
.
..
.bash_logout
sftp>

.bash_profile

.bashrc

public_html

Accediendo con Nautilus a cuenta SFTP con chroot.

Transferencia de archivos a travs de SCP.


Para realizar transferencias de archivos a travs de SCP, es necesario conocer las rutas de
los directorios objetivo del anfitrin remoto. A continuacin se describen algunas de las
opciones ms importantes de scp.
-p (minscula)
Preserva el tiempo de modificacin, tiempos de acceso y los modos del archivo
original.
-P (mayscula)
Especifica el puerto para realizar la conexin.
-r
Copia en modo descendente de los directorios especificados.
En el siguiente ejemplo se transferir el archivo algo.txt preservando tiempos y modos
hacia el directorio de inicio del usuario fulano en el servidor 192.169.0.99.

scp -p algo.txt fulano@192.168.70.99:~/

En el siguiente ejemplo se transferir la carpeta Mail, junto con todo su contenido,


preservando tiempos y modos, hacia el directorio de inicio del usuario fulano en el servidor
192.169.0.99.

scp -rp Mail fulano@192.168.70.99:~/

En el siguiente ejemplo se transferir la carpeta Mail, junto con todo su contenido, desde el
directorio de inicio del usuario fulano en el servidor 192.169.0.99, cuyo servicio de SSH
escucha peticiones a travs del puerto 52341, preservando tiempos y modos, hacia el
directorio del usuario con el que se est trabajando en el anfitrin local.

scp -P 52341 -rp fulano@192.168.70.99:~/Mail ./

OpenSSH con autenticacin a travs de firma digital.


Introduccin.
Utilizar firmas digitales en lugar de contraseas a travs de servicios como SSH, SCP o
SFTP, resulta una tcnica ms segura para autenticar dichos servicios, facilitando tambin
la operacin de guiones y herramientas de respaldo que utilizan dichos protocolos.
Los procedimientos descritos en este documento asumen existe un hipottico servidor con
direccin IP 192.168.70.15. Reemplace esta direccin IP por la que corresponda al servidor
que se desea configurar.

Procedimientos
Modificaciones en el Servidor remoto.
Acceda como administrador al servidor remoto. Ejemplo:
ssh root@192.168.70.15

Si utiliza openSUSE o SUSE Linux Enterprise omita el siguiente paso. Si utiliza


CentOS o Red Hat Enterprise Linux ejecute lo siguiente para habilitar la poltica para
SELinux denominada allow_ssh_keysign:

setsebool -P allow_ssh_keysign 1

Si utiliza CentOS o Red Hat Enterprise Linux ejecute lo siguiente para crear el directorio
~/.ssh/ con permiso de acceso de lectura/escritura slo para el usuario y cambiar el contexto
SELinux al tipo ssh_home_t, crear el archivo ~/.ssh/authorized_keys igualmente con
permiso de acceso de lectura/escritura slo para el usuario y cambiar el contexto SELinux
al tipo ssh_home_t:
mkdir
touch
chmod
chcon

-m 0700 ~/.ssh/
~/.ssh/authorized_keys
600 ~/.ssh/authorized_keys
-R -t ssh_home_t ~/.ssh

Si utiliza openSUSE o SUSE Linux Enterprise ejecute lo siguiente para crear el


directorio ~/.ssh/ con permiso de acceso de lectura/escritura slo para el usuario, crear el
archivo ~/.ssh/authorized_keys igualmente con permiso de acceso de lectura/escritura slo
para el usuario:
mkdir -m 0700 ~/.ssh/
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Salga del servidor despus de haber creado el directorio y archivo descrito y de haber
configurado los permisos correspondientes.
exit

Modificaciones en el cliente.
Generar firmas digitales.
Se debe generar una firma digital (firma digital pblica) tipo DSA (Digital Signature
Algorithm o Algoritmo de Firma digital). Puede crear una firma tipo RSA, pero es poco
recomendado debido a las puertas traseras que pudiera tener la NSA de EE.UU. sobre dicha
tecnologa. Es importante sealar que si desea utilizar la firma digital sin contrasea, jams
se deber establecer una durante la generacin de la firma digital. Cuando el dilogo
solicite una contrasea con confirmacin, slo pulse la tecla (ENTER) y contine el
procedimiento. Si asigna contrasea, est ser utilizada para autenticar el certificado creado
cada vez que se quiera utilizar ste.
ssh-keygen -t dsa

El procedimiento devolver una salida similar a la siguiente:


Generating public/private dsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_dsa):

Enter passphrase (empty for no passphrase):


Enter same passphrase again:
Your identification has been saved in /home/usuario/.ssh/id_dsa.
Your public key has been saved in /home/usuario/.ssh/id_dsa.pub.
The key fingerprint is:
2c:73:30:fe:82:21:a5:52:78:49:37:cd:57:af:36:df usuario@cliente
The key's randomart image is:
+--[ DSA 1024]----+
| .o=
|
| .+ o
|
| o.E o
|
| .o = o .
|
|
.o
S
|
|
o. .
|
| . +.+
|
|
*.+
|
|
.*.
|
+-----------------+

Lo anterior generar los archivos los archivos ~/.ssh/id_dsa y ~/.ssh/id_dsa.pub


Cambie de modo descendente los permisos de ~/.ssh a slo lectura y escritura para el
usuario.
chmod -R go-rwX ~/.ssh

Si utiliza openSUSE o SUSE Linux Enterprise omita el siguiente paso. Si utiliza


CentOS o Red Hat Enterprise Linux ejecute lo siguiente para garantizar los contextos del
contenido del directorio ~/.ssh/ al tipo ssh_home_t:
chcon -R -t ssh_home_t ~/.ssh/

Copie el contenido del archivo correspondiente a la firma digital pblica DSA (es decir
id_dsa.pub) dentro del archivo ~/.ssh/authorized_keys del usuario a utilizar en el servidor
remoto. En el siguiente ejemplo se utiliza la cuenta de root del servidor remoto.

cat ~/.ssh/id_dsa.pub|ssh root@192.168.70.15 "cat


>>/root/.ssh/authorized_keys"

Siempre utilice la ruta absoluta del archivo authorized_keys en el servidor remoto.


Para poder acceder al servidor desde cualquier cliente, basta copiar los archivos id_dsa y
id_dsa.pub dentro del directorio ~/.ssh/, de la cuenta de usuario de cada cliente desde el
que se requiera realizar conexin hacia el servidor. Tendr serias implicaciones de
seguridad si el archivo id_dsa cae en manos equivocadas o se ve comprometido. Este
archivo deber ser considerado como altamente confidencial.
Pueden generarse diferentes firmas digitales para cada usuario que deba ingresar a travs de
SSH al servidor remoto. Simplemente se aade el contenido del archivo ~/.ssh/id_dsa.pub
de cada usuario al archivo ~/.ssh/authorized_keys de la cuenta de usuario a utilizar en el

servidor remoto. Pueden agregarse cuantas firmas digitales en este archivo como sean
necesarias. Si acaso se ve comprometida la seguridad de alguna firma digital, se debe
eliminar sta del archivo ~/.ssh/authorized_keys del servidor remoto.

Comprobaciones.
Si se omiti asignar contrasea para la llave DSA, deber poderse acceder hacia el servidor
remoto sin necesidad de autenticar con la contrasea del usuario remoto. Si fue asignada
una contrasea a la clave DSA, se podr acceder hacia el servidor remoto autenticando con
la contrasea definida a la clave DSA y sin necesidad de autenticar con la contrasea del
usuario remoto

Instalacin y configuracin de vsftpd.


Introduccin.
Acerca del protocolo FTP.
FTP (File Transfer Protocol) o Protocolo de Transferencia de Archivos (o archivos
informticos) es uno de los protocolos estndar ms utilizados en Internet siendo el ms
idneo para la transferencia de grandes bloques de datos a travs de redes que soporten
TCP/IP. El servicio utiliza los puertos 20 y 21, exclusivamente sobre TCP. El puerto 20 es
utilizado para el flujo de datos entre cliente y servidor. El puerto 21 es utilizando para el
envo de rdenes del cliente hacia el servidor. Prcticamente todos los sistemas operativos y
plataformas incluyen soporte para FTP, lo que permite que cualquier computadora
conectada a una red basada sobre TCP/IP pueda hacer uso de este servicio a travs de un
cliente FTP.
Existen dos mtodos, el modo activo y el modo pasivo.
URL: http://tools.ietf.org/html/rfc959
Modo activo.
En este modo, el cliente crea una conexin de datos a travs del puerto 20 del servidor,
mientras que en el cliente asocia esta conexin desde un puerto aleatorio entre 1024 y
65535, enviando PORT para indicar al servidor el puerto a utilizar para la transferencia de
datos. Tiene como desventaja que el cliente FTP debe estar dispuesto a aceptar cualquier
conexin de entrada asociada a puertos entre 1024 y 65535, lo que significa que el cliente
tendra que estar detrs de un muro cortafuegos que acepte establecer conexiones entrantes
en este rango de puertos o bien acceder hacia Internet sin un muro cortafuegos de por
medio, lo que evidentemente implica un enorme riesgo de seguridad. El modo activo slo

es conveniente en la ausencia de un muro cortafuegos entre el servidor y el cliente, como


ocurre en los escenarios de una red de rea local.
Modo pasivo.
Fue creado como una alternativa al problema que representa el modo activo. A diferencia
de ste ltimo, el modo pasivo enva PASV en lugar PORT a travs del puerto de control
del servidor. ste devuelve como respuesta el nmero de puerto a travs del cual debe
conectarse el cliente para hacer la transferencia de datos. El servidor puede elegir al azar
cualquier puerto entre 1024 y 65535 o bien el rango de puertos determinado por el
administrador del sistema. En el caso de Vsftpd, se puede definir un rango arbitrario de
puertos para conexiones pasivas utilizando las opciones pasv_min_port y pasv_max_port.
ste es el mtodo recomendado para servidores de acceso pblico.

Acerca del protocolo FTPS.


FTPS tambin referido como FTP/SSL es la forma de designar diferentes mtodos a
travs de las cuales se pueden realizar transferencias de archivos seguras a travs del
protocolo FTP utilizando SSL o TLS. Son mtodos muy diferentes a los del protocolo
SFTP (SSH File Transfer Protocol).
Existen dos diferentes mtodos para realizar una conexin SSL/TLS a travs de FTP. La
primera y ms antigua es a travs de FTPS Implcito (Implicit FTPS), que consiste en
cifrar la sesin completa a travs de los puertos 990 (FTPS) y 998 (FTPS Data), sin
permitir negociacin con el cliente, el cual est obligado a conectarse directamente al
servidor FTPS con el inicio de sesin SSL/TLS. El segundo mtodo, que es el
recomendado por el RFC 4217 y el utilizado por vsftpd, es FTPS Explcito (Explicit FTPS
o FTPES), donde el cliente realiza la conexin normal a travs del puerto 21 y permitiendo
negociar, de manera opcional, una conexin TLS.

Acerca de RSA.
RSA, acrnimo de los apellidos de sus autores, Ron Rivest, Adi Shamir y Len Adleman, es
un algoritmo para cifrar claves pblicas, el cual fue publicado en 1977 y patentado 1983, en
EE.UU., por el Instituto Tecnolgico de Michigan (MIT). RSA es utilizado en todo el
mundo para los protocolos destinados para el comercio electrnico.
URL: http://es.wikipedia.org/wiki/RSA

Acerca de OpenSSL.
OpenSSL es una implementacin libre, de cdigo fuente abierto, de los protocolos SSL
(Secure Sockets Layer o Nivel de Zcalo Seguro) y TLS (Transport Layer Security o
Seguridad para Nivel de Transporte). Est basado sobre el extinto proyecto SSLeay,
iniciado por Eric Young y Tim Hudson, hasta que stos comenzaron a trabajar para la
divisin de seguridad de EMC Corporation.

URL: http://www.openssl.org/

Acerca de X.509.
X.509 es un estndar ITU-T (estandarizacin de Telecomunicaciones de la International
Telecommunication Union) para infraestructura de claves pblicas (PKI o Public Key
Infrastructure). Entre otras cosas, establece los estndares para certificados de claves
pblicas y un algoritmo, para validacin de ruta de certificacin. Este ltimo se encarga de
verificar que la ruta de un certificado sea vlida bajo una infraestructura de clave pblica
determinada. Es decir, desde el certificado inicial, pasando por certificados intermedios,
hasta el certificado de confianza emitido por una Autoridad Certificadora (CA o
Certification Authority).
URL: http://es.wikipedia.org/wiki/X.509

Acerca de vsftpd.
Vsftpd (Very Secure FTP Daemon) es un equipamiento lgico utilizado para implementar
servidores de archivos a travs del protocolo FTP. Se distingue principalmente porque sus
valores predeterminados son muy seguros y por la sencillez para su configuracin cuando
se le es comparado con otras alternativas como ProFTPD y Wu-ftpd. En la actualidad se
estima que vsftpd podra ser quiz el servidor FTP ms seguro del mundo.
URL: http://vsftpd.beasts.org/

Equipamiento lgico necesario.


Instalacin a travs de yum.
Ejecute lo siguiente desde una terminal si utiliza ALDOS, CentOS, Fedora o Red
Hat Enterprise Linux:
yum -y install vsftpd

Archivos de configuracin.
/etc/vsftpd/chroot_list
Lista que definir usuarios a enjaular o no a enjaular, dependiendo de la
configuracin.
/etc/vsftpd/vsftpd.conf
Archivo de configuracin de VSFTPD.

El archivo /etc/vsftpd/chroot_list es inexistente, por lo cual es conveniente crearlo antes de


comenzar a trabajar con la configuracin. Por favor ejecute lo siguiente antes de continuar:
touch /etc/vsftpd/chroot_list

Activar, iniciar, detener y reiniciar el servicio.


Ejecute lo siguiente para activar el servicio en todos los niveles de ejecucin:
chkconfig vsftpd on

Ejecute lo siguiente para iniciar por primera vez el servicio:


service vsftpd start

Ejecute lo siguiente para reiniciar el servicio o bien hacer que los cambios hechos a la
configuracin surtan efecto:
service vsftpd restart

Ejecute lo siguiente para detener el servicio:


service vsftpd stop

Modificaciones necesarias en el muro cortafuegos.


Es necesario abrir los puerto 20 y 21, por TCP (FTP-DATA y FTP, respectivamente) y el
rango de puertos para conexiones pasivas que se haya definido.

Servicio iptables.
Ejecute lo siguiente para anexar las reglas de iptables correspondientes:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 30300:30309 -j
ACCEPT

Ejecute lo siguiente para guardar los cambios:


service iptables save

O bien aada lo siguiente al archivo /etc/sysconfig/iptables:


-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT


-A INPUT -m state --state NEW -m tcp -p tcp --dport 30300:30309 -j ACCEPT

Y reinicie el servicio iptables:


service iptables restart

Shorewall.
Edite el archivo /etc/shorewall/rules:
vi /etc/shorewall/rules

Las reglas corresponderan a algo similar a lo siguiente, permitiendo el acceso hacia el


servicio FTP desde cualquier zona del muro cortafuegos:
#ACTION SOURCE DEST
#
ACCEPT all
fw

PROTO
tcp

DEST
SOURCE
PORT
PORT(S)1
20,21,30300:30309

Reinicie el servicio para aplicar los cambios:


service shorewall restart

Procedimientos.
SELinux y el servicio vsftpd.
SELinux controla varias funciones de el servicio vsftpd incrementando el nivel de
seguridad de ste.
Ejecute lo siguiente para permitir que el servidor FTP pueda asociarse a cualquier puerto
sin reservar al funcionar en modo pasivo:
setsebool -P ftpd_use_passive_mode 1

Ejecute lo siguiente para permitir que los usuarios annimos puedan realizar procesos de
escritura sobre el sistema de archivos:
setsebool -P allow_ftpd_anon_write 1

Si se necesita permitir el acceso utilizando las cuentas de usuarios del anfitrin local, a fin
de que stos puedan acceder a sus directorio de inicio, se debe habilitar la poltica
ftp_home_dir:

setsebool -P ftp_home_dir 1

Ejecute lo siguiente para hacer que SELinux permita acceder a los usuarios locales al resto
del sistema de archivos:
setsebool -P allow_ftpd_full_access 1

Ejecute lo siguiente para permitir que el servicio vsftpd pueda hacer uso de sistemas de
archivos remotos a travs de CIFS (Samba) o NFS y que sern utilizados para compartir a
travs del servicio:
setsebool -P allow_ftpd_use_cifs 1
setsebool -P allow_ftpd_use_nfs 1

Nota.

Lo siguiente slo aplica para CentOS 5 y Red Hat Enterprise Linux 5.


Ejecute lo siguiente para eliminar por completo la proteccin que brinda SELinux al servicio vsftpd y que ste
funcione normalmente sin esta valiosa proteccin, haciendo que todo lo anteriormente descrito en esta seccin
pierda sentido:
setsebool -P ftpd_disable_trans 1
Esta poltica es inexistente en CentOS 6 y Red Hat Enterprise Linux 6.

Archivo /etc/vsftpd/vsftpd.conf.
Utilice un editor de texto y modifique el archivo /etc/vsftpd/vsftpd.conf.
vi /etc/vsftpd/vsftpd.conf

Opcin anonymous_enable.
Esta opcin viene incluida en la configuracin predeterminada. Se utiliza para definir si se
permitirn los accesos annimos al servidor. Establezca como valor YES o NO de acuerdo
a lo que se requiera.
anonymous_enable=YES

Opcin local_enable.

Esta opcin viene incluida en la configuracin predeterminada. Establece si se van a


permitir los accesos autenticados de los usuarios locales del sistema. Establezca como valor
YES o NO de acuerdo a lo que se requiera.
local_enable=YES

Opcin write_enable.
Esta opcin viene incluida en la configuracin predeterminada. Establece si se permite
ejecutar write (escritura) en el servidor. Establezca como valor YES o NO de acuerdo a lo
que se requiera.
write_enable=YES

Opciones anon_upload_enable y anon_mkdir_write_enable


Ambas opciones vienen incluidas en la configuracin predeterminada.
La opcin anon_upload_enable especfica si los usuarios annimos tendrn permitido
subir contenido al servidor. Por lo general no es una funcin deseada, por lo que se
acostumbra desactivar sta.
anon_upload_enable=NO

La opcin anon_mkdir_write_enable especfica si los usuarios annimos tendrn


permitido crear directorios en el servidor. Al igual que la anterior, por lo general no es una
funcin deseada, por lo que se acostumbra desactivar sta.
anon_mkdir_write_enable=NO

Nota.

Si se desea que los usuarios annimos puedan subir archivos al servidor FTP, se deben dejar estas ltimas dos
opciones con valor YES, guardar el archivo /etc/vsftpd/vsftpd.conf y regresar al intrprete de mandatos para
crear un directorio denominado /var/ftp/incoming, el cual debe pertenecer al usuario y grupo ftp y tener
contexto de SELinux tipo public_content_rw_t.
mkdir /var/ftp/incoming
chown ftp:ftp /var/ftp/incoming
chcon -R -t public_content_rw_t /var/ftp/incoming
Se recomienda que /var/ftp/incoming est asignado como una particin independiente al resto del sistema o
bien se le aplique cuota de disco al usuario ftp, porque de otro modo cualquiera podra fcilmente saturar el
espacio de disco disponible, desencadenando una denegacin de servicio en el servidor.

Opcin ftpd_banner.
Esta opcin viene incluida en la configuracin predeterminada. Sirve para establecer el
bandern de bienvenida que ser mostrado cada vez que un usuario acceda al servidor.
Puede establecerse cualquier frase breve que considere conveniente, pero sin signos de
puntuacin.
ftpd_banner=Bienvenido al servidor FTP de nuestra empresa

Estableciendo jaulas para los usuarios: opciones chroot_local_user y


chroot_list_file.
Estas opciones vienen incluidas en la configuracin predeterminada.
De modo predeterminado los usuarios del sistema que se autentiquen tendrn acceso a otros
directorios del sistema fuera de su directorio personal. Si se desea limitar a los usuarios a
slo poder utilizar su propio directorio personal, puede hacerse fcilmente con la opcin
chroot_local_user que habilitar la funcin de chroot() y las opciones chroot_list_enable
y chroot_list_file, para establecer el archivo con la lista de usuarios que quedarn
excluidos de la funcin chroot().
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

Con lo anterior cada vez que un usuario local se autentique en el servidor FTP, slo tendr
acceso a su propio directorio personal y lo que ste contenga. Por favor recuerde crear el
archivo /etc/vsftpd/chroot_list debido a que de otro modo ser imposible que funcione
correctamente el servicio vsftpd.
Nota.

La funcin chroot() puede ser peligrosa si el usuario regular utilizado tiene acceso al intrprete de mandatos del
sistema (/bin/bash o /bin/sh) y adems privilegios de escritura sobre el directorio raz de su propia jaula (es
decir su directorio de inicio). Los directorios de inicio de los usuarios involucrados deben tener permiso 755,
sean propiedad de root y se asigne al usuario /bin/false o /sbin/nologin como intrprete de mandatos.
Lo siguiente corresponde a lo que sera necesario ejecutar para modificar el contenido del directorio de inicio del
usuario regular con el cual se quiera acceder al servidor FTP utilizando chroot() con vsftpd-3.x:
chmod 755 /home/mengano
chown root:root /home/mengano
mkdir -p -m 755 /home/mengano/public_html
mkdir -p -m 700 /home/mengano/mail
chown mengano:mengano /home/mengano/{mail,public_html}
usermod -s /sbin/nologin mengano

Desde la versin 3.0 de vsftpd, de modo predeterminado se impide el ingreso con chroot() a todos los usuarios
regulares que tengan acceso al intrprete de mandatos o bien que posean privilegios de escritura sobre su propio
directorio de inicio.

Opciones pasv_min_port y pasv_max_port.


Ambas opciones estn ausentes en el archivo /etc/vsftpd/vsftpd.conf. Aada stas al final
del archivo de configuracin. Permiten establecer el rango arbitrario de puertos utilizados
para las conexiones pasivas. Puede elegirse cualquier rango de puertos entre 1024 y 65535,
mismo que deber ser habilitado en el muro cortafuegos del servidor. En el siguiente
ejemplo se establece el rango de puertos para conexiones pasivas de 30300 a 30309:
pasv_min_port=30300
pasv_max_port=30309

Control del ancho de banda.


Opcin anon_max_rate.
Esta opcin est ausente en la configuracin predeterminada. Puede aadirla al final del
archivo /etc/vsftpd/vsftpd.conf. Se utiliza para limitar la tasa de transferencia, en bytes por
segundo, para los usuarios annimos, algo sumamente til en servidores FTP de acceso
pblico. En el siguiente ejemplo se limita la tasa de transferencia a 500 Kb por segundo
para los usuarios annimos:
anon_max_rate=524288

Opcin local_max_rate.
Esta opcin est ausente en la configuracin predeterminada. Puede aadirla al final del
archivo /etc/vsftpd/vsftpd.conf. Hace lo mismo que anon_max_rate, pero aplica para
usuarios locales del servidor. En el siguiente ejemplo se limita la tasa de transferencia a 1
MB por segundo para los usuarios locales:
local_max_rate=1048576

Opcin max_clients.
Esta opcin est ausente en la configuracin predeterminada. Puede aadirla al final del
archivo /etc/vsftpd/vsftpd.conf. Establece el nmero mximo de clientes que podrn
acceder simultneamente hacia el servidor FTP. En el siguiente ejemplo se limitar el
acceso a 20 clientes simultneos.

max_clients=20

Opcin max_per_ip.
Esta opcin est ausente en la configuracin predeterminada. Puede aadirla al final del
archivo /etc/vsftpd/vsftpd.conf. Establece el nmero mximo de conexiones que se pueden
realizar desde una misma direccin IP. Tome en cuenta que algunas redes acceden a travs
de un servidor intermediario (Proxy) o puerta de enlace y debido a sto podran quedar
bloqueados innecesariamente algunos accesos. En el siguiente ejemplo se limita el nmero
de conexiones por IP simultneas a un mximo de 10.
max_per_ip=10

Guarde el archivo y salga del editor de texto.


Soporte SSL/TLS.
Siendo que todos los datos enviados a travs del protocolo FTP se hacen en texto simple
(incluyendo nombres de usuario y claves de acceso), hoy en da es muy peligroso operar un
servidor FTP sin SSL/TLS.
VSFTPD puede ser configurado fcilmente para utilizar los protocolos SSL (Secure
Sockets Layer o Nivel de Zcalo Seguro) y TLS (Transport Layer Security o Seguridad
para Nivel de Transporte) a travs de un certificado RSA.
Acceda al sistema como el usuario root.
Acceda al directorio /etc/pki/tls/.
cd /etc/pki/tls/

El certificado y firma digital se pueden generar ejecutando lo siguiente para utilizar una
estructura X.509, algoritmo de cifrado RSA de 4096 bits, sin Triple DES lo cual permita
iniciar normalmente al servicio sin interaccin alguna y una validez por 1825 das
cinco aos.
openssl req -sha256 -x509 -nodes -days 1825 -newkey
rsa:4096 \
-keyout private/vsftpd.key \
-out certs/vsftpd.crt

Lo anterior solicitar se ingresen los siguientes datos:

Cdigo de dos letras para el pas.


Estado o provincia.
Ciudad.

Nombre de la empresa o bien la razn social.


Unidad o seccin responsable del certificado.
Nombre del anfitrin (FQDN) o bien dominio con comodn.
Direccin de correo electrnico de la persona responsable del certificado.

La salida devuelta sera similar a la siguiente:

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) [GB]:MX
State or Province Name (full name) [Berkshire]:Distrito Federal
Locality Name (eg, city) [Newbury]:Mexico
Organization Name (eg, company) [My Company Ltd]:Empresa, S.A. de C.V.
Organizational Unit Name (eg, section) []:Direccion Comercial
Common Name (eg your name or your server's hostname) []:*.dominio.org
Email Address []:webmaster@dominio.org

El archivo del certificado (vsftpd.crt) y el de la firma digital (vsftpd.key), deben tener


permisos de lectura y escritura slo para el usuario root.
chmod 600 certs/vsftpd.crt private/vsftpd.key

Regrese al directorio de inicio del usuario root.


cd

Edite el archivo /etc/vsftpd/vsftpd.conf:


vi /etc/vsftpd/vsftpd.conf

Aada al final de este archivo todo el siguiente contenido:


# Habilita el soporte de TLS/SSL
ssl_enable=YES
# Deshabilita o habilita utilizar TLS/SSL con usuarios
annimos
allow_anon_ssl=NO
# Obliga a utilizar TLS/SSL para todas las operaciones, es
decir,
# transferencia de datos y autenticacin de usuarios locales.
# Establecer el valor NO, hace que sea opcional utilizar
TLS/SSL.
force_local_data_ssl=YES
force_local_logins_ssl=YES

# Se prefiere TLSv1 sobre SSLv2 y SSLv3


ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# Rutas del certificado y firma digital
rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt
rsa_private_key_file=/etc/pki/tls/private/vsftpd.key
ssl_ciphers=HIGH
require_ssl_reuse=NO

Para aplicar los cambios realizados a la configuracin, reinicie el servicio vsftpd


ejecutando lo siguiente:
service vsftpd restart

Clientes recomendados para acceder a FTPES.


Entre los clientes recomendados para acceder a travs de FTPES, est LFTP. Instale ste
ejecutando lo siguiente
yum -y install lftp

Ejecute lftp con las opciones -e con 'set ftp:ssl-force true' como argumento y nuevamente
-e con 'set ssl:verify-certificate no' como argumento y defina un nombre de anfitrin o
direccin IP como ltimo argumento. En el siguiente ejemplo se iniciar una conexin
hacia un hipottico anfitrin con direccin IP 192.168.70.105:
lftp -e 'set ftp:ssl-force true' \
-e 'set ssl:verify-certificate no' 192.168.70.105

Una vez en el intrprete de mandatos de LFTP, ejecute user con un nombre de usuario
como argumento. En el siguiente ejemplo se utiliza al usuario fulano:
lftp 192.168.70.105:~> user fulano

Lo anterior solicitar a continuacin se ingrese la contrasea correspondiente.


Dentro intrprete de mandatos de lftp, ejecute pwd.
lftp 192.168.70.105:~> pwd

Lo anterior devolver una salida similar a la siguiente.


ftp://fulano@192.168.70.105/

Ejecute mkdir con prueba como argumento.

lftp 192.168.70.105:~> mkdir prueba

Lo anterior devolver una salida similar a la siguiente.


mkdir ok, `prueba' creado

Ejecute ls.
lftp 192.168.70.105:~> ls

Lo anterior devolver una salida similar a la siguiente.


drwxr-xr-x

2 500

500

4096 Dec 13 04:36 prueba

Para salir de lftp, ejecute bye.


lftp 192.168.70.105:~> bye

Otros clientes son soporte para FTPES son Filezilla 3.3.x (configurar conexin como
FTPES - FTP sobre TLS/SSL explcito) y WinSCP. Al momento de redactar este
documento, la versin ms reciente de gFTP tienen roto el soporte para FTP sobre TLS/SSL
(FTPS y FTPES).
Filezilla dispone de versiones para GNU/Linux, Mac OS X y Windows XP/Vista/7. La
siguiente imagen ilustra la configuracin que se requiere utilizar.

Configuracin de cuenta FTPES en Filezilla.

Luego de iniciada la conexin, la primera vez que Filezilla se conecte al servidor, mostrar
una ventana con la informacin del certificado y solicitar se acepte ste. Active la casilla
que dice Siempre confiar en el certificado en futuras sesiones antes de hacer clic en el
botn de Aceptar.

Dialogo de certificado de FTPES en Filezilla.

Configuracin de servidor DHCP.


Introduccin.
Acerca del protocolo DHCP.
DHCP (acrnimo de Dynamic Host Configuration Protocol, que se traduce Protocolo de
configuracin dinmica de servidores) es un protocolo que permite a dispositivos
individuales en una red de direcciones IP obtener su propia informacin de configuracin
de red (direccin IP; mscara de sub-red, puerta de enlace, etc.) a partir de un servidor
DHCP. Su propsito principal es hacer ms fciles de administrar las redes grandes. DHCP
existe desde 1993 como protocolo estndar y se describe a detalle en el RFC 2131.
Sin la ayuda de un servidor DHCP, tendran que configurarse de forma manual cada
direccin IP de cada anfitrin que pertenezca a una Red de rea Local. Si un anfitrin se
traslada hacia otra ubicacin donde existe otra Red de rea Local, se tendr que configurar

otra direccin IP diferente para poder unirse a esta nueva Red de rea Local. Un servidor
DHCP entonces supervisa y distribuye, las direcciones IP de una Red de rea Local
asignando una direccin IP a cada anfitrin que se una a la Red de rea Local. Cuando, por
mencionar un ejemplo, una computadora porttil se configura para utilizar DHCP, a sta le
ser asignada una direccin IP y las variables de red, necesarios para unirse a cada Red de
rea Local donde se localice.
Existen tres mtodos de asignacin en el protocolo DHCP:

Asignacin manual: La asignacin utiliza una tabla con direcciones MAC


(acrnimo de Media Access Control Address, que se traduce como direccin
de Control de Acceso al Medio). Slo los anfitriones con una direccin MAC
definida en dicha tabla recibir el IP asignada en la misma tabla. sto se hace a
travs de la opcin hardware ethernet combinado con deny unknownclients.
Asignacin automtica: Una direccin de IP disponible dentro de un rango
determinado se asigna permanentemente al anfitrin que la requiera.
Asignacin dinmica: Se determina arbitrariamente un rango de direcciones
IP y cada anfitrin conectado a la red est configurada para solicitar su
direccin IP al servidor cuando se inicia el dispositivo de red, utilizando un
intervalo de tiempo controlable (opciones default-lease-time y max-leasetime), de modo que la asignacin de direcciones IP es de manera temporal y
stas se reutilizan de forma dinmica.

URL: http://www.ietf.org/rfc/rfc2131.txt y http://www.ietf.org/rfc/rfc2132.txt

Acerca de dhcp por Internet Software Consortium, Inc.


Fundado en 1994, Internet Software Consortium, Inc., distribuye un conjunto de
herramientas para el protocolo DHCP, las cuales consisten en:

Servidor DHCP.
Cliente DHCP.
Agente de retransmisin.

Dichas herramientas utilizan un API (Application Programming Interface o Interfaz de


Programacin de Aplicaciones) modular diseado para ser lo suficientemente general para
ser utilizado con facilidad en los sistemas operativos que cumplen el estndar POSIX
(Portable Operating System Interface for UNIX o interfaz portable de sistema operativo
para Unix) y no-POSIX, como Windows.
URL: http://isc.org/products/DHCP/

Equipamiento lgico necesario.

CentOS, Fedora y Red Hat Enterprise Linux.


Ejecute lo siguiente para instalar o actualizar todo necesario:
yum -y install dhcp

Modificaciones necesarias en el muro cortafuegos.


Por lo general, jams se abren puertos de DHCP a las redes pblicas. Es necesario abrir los
puerto 67 y 68 (BOOTPS y BOOTPC) por UDP, tanto para trafico entrante como saliente.

Servicio iptables.
Asumiendo que el servicio funcionar a travs de la interfaz eth1, puede ejecutar iptables
conlas siguientes opciones:
iptables -A INPUT -i eth1 -p udp -m state --state NEW -m udp \
--sport 67:68 --dport 67:68 -j ACCEPT

Ejecute lo siguiente para guardar los cambios:


service iptables save

O bien edite el archivo /etc/sysconfig/iptables:


vi /etc/sysconfig/iptables

Y aada el siguiente contenido:


-A INPUT -i eth1 -p udp -m state --state NEW -m udp --sport 67:68 --dport 67:68 -j
ACCEPT

Reinicie el servicio iptables a fin de que surtan efecto los cambios.


service iptables restart

Shorewall.
Edite el archivo /etc/shorewall/interfaces:
vi /etc/shorewall/interfaces

Asumiendo que el servicio funcionar a travs de la interfaz eth1 (zona loc), aada la
opcin dhcp a las opciones de la interfaz sobre la cual funciona el servicio dhcpd. Esta

opcin, tras reiniciar el servicio shorewall, habilita las comunicaciones de entrada y salida,
para DHCP.
La siguiente sera la configuracin para CentOS 7 o Red Hat Enterprise Linux 7
utilizando Shorewall 4.5:
#ZONE
INTERFACE
OPTIONS
?FORMAT 2
#############################################################
#############
net
eth0
loc
eth1
dhcp

La siguiente sera la configuracin para ALDOS 1.4, CentOS 6 o Red Hat Enterprise
Linux 6 utilizando Shorewall 4.4:
#############################################################
#############
#ZONE
INTERFACE
BROADCAST
OPTIONS
net
eth0
detect
loc
eth1
detect
dhcp

Reinicie el servicio shorewall a fin de que surtan efecto los cambios.


Ejecute lo siguiente si utiliza CentOS 7 o Red Hat Enterprise Linux 7:
systemctl restart shorewall

Ejecute lo siguiente si utiliza ALDOS 1.4, CentOS 6 o Red Hat Enterprise Linux 6:
service shorewall restart

SELinux y el servicio dhcpd.


Se recomienda encarecidamente dejar activo SELinux y dejar como estn las polticas
predeterminadas.
Nota.

Lo siguiente slo aplica para CentOS 5 y Red Hat Enterprise Linux 5.


Ejecute lo siguiente si se desea eliminar la proteccin que brinda SELinux al servicio dhcpd:
setsebool -P dhcpd_disable_trans 1

Ejecute lo siguiente si se desea eliminar la proteccin que brinda SELinux al sistema para funcionar como
cliente DHCP:
setsebool -P dhcpc_disable_trans 1

Ninguna de ests polticas existe en CentOS 6 y Red Hat Enterprise Linux 6 y versiones posteriores de stos.

Activar, iniciar, detener y reiniciar, el servicio dhcpd.


Ejecute lo siguiente para activar el servicio en todos los niveles de ejecucin:
chkconfig dhcpd on

Prefiera ejecutar lo siguiente si utiliza CentOS 7 o Red Hat Enterprise Linux 7 o


versiones posteriores de stos:
systemctl enable dhcpd

Ejecute lo siguiente para iniciar por primera vez el servicio:


service dhcpd start

Prefiera ejecutar lo siguiente si utiliza CentOS 7 o Red Hat Enterprise Linux 7 o


versiones posteriores de stos:
systemctl start dhcpd

Ejecute lo siguiente para hacer que los cambios hechos a la configuracin surtan efecto:
service dhcpd restart

Prefiera ejecutar lo siguiente si utiliza CentOS 7 o Red Hat Enterprise Linux 7 o


versiones posteriores de stos:
systemctl restart dhcpd

Ejecute lo siguiente para detener el servicio:


service dhcpd stop

Prefiera ejecutar lo siguiente si utiliza CentOS 7 o Red Hat Enterprise Linux 7 o


versiones posteriores de stos:
systemctl stop dhcpd

Procedimientos.
Archivo de configuracin /etc/sysconfig/dhcpd.
Nota.

Este paso es innecesario en CentOS 7 y Red Hat Enterprise Linux 7 y versiones posteriores de stos.

En el caso de disponer mltiples dispositivos de red en el servidor, se recomienda que el


servicio dhcpd solamente funcione a travs de la interfaz de red utilizada por la LAN. Edite
el archivo /etc/sysconfig/dhcpd y agregue el valor eth0, eth1, eth2, etc., como
argumento(s) de la opcin DHCPDARGS o bien lo que corresponda a la interfaz desde la
cual accede la red local.
Edite el archivo /etc/sysconfig/dhcpd:
vi /etc/sysconfig/dhcpd

El siguiente ejemplo considera que eth1 es la interfaz correspondiente a la LAN:


# Command line options here
DHCPDARGS=eth1

Archivo de configuracin dhcpd.conf.


Considerando como ejemplo que se tiene una red local con las siguientes caractersticas:

Direccin IP del segmento de red: 172.16.1.0


Direccin IP de difusin: 172.16.1.15
Mscara de sub-red: 255.255.255.240 (28 bit)
Puerta de enlace: 172.16.1.1
Servidor de nombres: 172.16.1.1
Servidor Wins: 172.16.1.1
Servidores de tiempo (NTP): recomendamos utilizar los de NTP.org es decir
0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org y 3.pool.ntp.org los cuales son
confiables y de acceso gratuito.

Rango de direcciones IP a asignar de modo dinmico: 172.16.1.2 hasta


172.16.1.14.
Nota.

Es indispensable conocer y entender perfectamente, todo lo anterior para poder continuar con este documento.
Si se tienen dudas, por favor, primero consultar y estudiar, el documento titulado Introduccin a IP versin
4.

Puede utilizar el contenido de ejemplo, que se encuentra ms adelante, para adaptar o


bien crear desde cero, un nuevo archivo de configuracin para el servicio dhcpd,
ajustando los datos a una red para un conjunto de sistemas en particular.

Configuracin bsica.
Respalde el archivo de configuracin original.
mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.original

Descargue el archivo plantilla con una configuracin mnima recomendada desde


AlcanceLibre.org:
wget http://www.alcancelibre.org/linux/secrets/dhcpd.conf \
-O /etc/dhcp/dhcpd.conf

Restaure contextos de SELinux.


restorecon /etc/dhcp/dhcpd.conf

Si se utiliza CentOS 6 o Red Hat Enterprise Linux 6 y versiones posteriores de stos,


edite el archivo /etc/dhcp/dhcpd.conf.
vi /etc/dhcp/dhcpd.conf

Nota.

Si se utiliza CentOS 5 o Red Hat Enterprise Linux 5, edite el archivo


/etc/dhcpd.conf.
vi /etc/dhcpd.conf

Para efectos prcticos, utilice la siguiente plantilla y modifique todo lo que est resaltado.
# Si se tienen problemas con equipos con Windows Vista/7/8 omita la opcin
# server-identifier. sto aunque rompe con el protocolo DHCP, permite a los
# clientes Windows Vista/7/8 poder comunicarse con el servidor DHCP y aceptar
# la direccin IP proporcionada.
# server-identifier 172.16.1.1;
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org;
shared-network redlocal {
subnet 172.16.1.0 netmask 255.255.255.240 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.240;
option broadcast-address 172.16.1.15;
option domain-name-servers 172.16.1.1;
option netbios-name-servers 172.16.1.1;
range 172.16.1.2 172.16.1.14;
}
}

Lo anterior corresponde a la configuracin bsica recomendada para un servidor DHCP


bsico.
Ejecute lo siguiente si utiliza CentOS 7 o Red Hat Enterprise Linux 7:
systemctl start dhcpd

Ejecute lo siguiente si utiliza ALDOS 1.4, CentOS 6 o Red Hat Enterprise Linux 6 o
versiones anteriores de stos:
service dhcpd start

Asignacin de direcciones IP estticas.


Para definir equipos con direcciones IP estticas, pueden aadirse tambin en la
configuracin de la siguiente forma, especificando el nombre de anfitrin, direccin MAC
y direccin IP:
host impresora {
option host-name "epl5900.red-local.net";
hardware ethernet 00:24:2B:65:54:84;
fixed-address 172.16.1.59;
}

Edite el archivo /etc/dhcp/dhcpd.conf o bien /etc/dhcpd.conf, segn corresponda:


vi /etc/dhcp/dhcpd.conf

Un ejemplo de la configuracin quedara del siguiente modo:

# Si se tienen problemas con equipos con Windows Vista/7/8 omita la opcin


# server-identifier. sto aunque rompe con el protocolo DHCP, permite a los
# clientes Windows Vista/7/8 poder comunicarse con el servidor DHCP y aceptar
# la direccin IP proporcionada.
# server-identifier 172.16.1.1;
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org;
shared-network redlocal {
subnet 172.16.1.0 netmask 255.255.255.240 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.240;
option broadcast-address 172.16.1.15;
option domain-name-servers 172.16.1.1;
option netbios-name-servers 172.16.1.1;
range 172.16.1.2 172.16.1.12;
}
# Equipos con IP fija.
host impresora {
option host-name "epl5900.red-local.net";
hardware ethernet 00:24:2B:65:54:84;
fixed-address 172.16.1.13;
}
host pc14 {
option host-name "pc14.red-local.net";
hardware ethernet 00:50:BF:27:1C:1C;
fixed-address 172.16.1.14;
}
}

Si realiz cambios en la configuracin, reinicie el servicio dhcpd a fin de que surtan efecto
los cambios.
Ejecute lo siguiente si utiliza CentOS 7 o Red Hat Enterprise Linux 7:
systemctl restart dhcpd

Ejecute lo siguiente si utiliza ALDOS 1.4, CentOS 6 o Red Hat Enterprise Linux 6 o
versiones anteriores de stos:
service dhcpd restart

Limitar el acceso por direccin MAC.


Es posible limitar el acceso al servidor DHCP a travs de la opcin deny con el valor
unknown-clients y definiendo una lista de direcciones MAC. De tal modo, a los anfitriones
que estn ausentes en dicha lista les ser denegado el servicio. Ejemplo:
deny unknown-clients;
host impresora {
hardware ethernet 00:24:2B:65:54:84;
}
host pc1 {
hardware ethernet 00:50:BF:27:1C:1C;
}

Edite el archivo /etc/dhcp/dhcpd.conf o bien /etc/dhcpd.conf, segn corresponda:


vi /etc/dhcp/dhcpd.conf

Un ejemplo de la configuracin quedara del siguiente modo, donde slo las direcciones
MAC en la lista pueden conectarse hacia el servidor DHCP y recibir una direccin IP:
# Si se tienen problemas con equipos con Windows Vista/7/8 omita la opcin
# server-identifier. sto aunque rompe con el protocolo DHCP, permite a los
# clientes Windows Vista/7/8 poder comunicarse con el servidor DHCP y aceptar
# la direccin IP proporcionada.
# server-identifier 172.16.1.1;
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org;
shared-network redlocal {
subnet 172.16.1.0 netmask 255.255.255.240 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.240;
option broadcast-address 172.16.1.15;
option domain-name-servers 172.16.1.1;
option netbios-name-servers 172.16.1.1;
range 172.16.1.2 172.16.1.14;
}
# Lista de direcciones MAC que tendrn permitido utilizar el servidor
# DHCP.
# deny unknown-clients impide que equipos fuera de esta lista puedan
# utilizar el servicio.
deny unknown-clients;
host impresora {
hardware ethernet 00:24:2B:65:54:84;
}
host pc1 {
hardware ethernet 00:50:BF:27:1C:1C;
}
host pc2 {
hardware ethernet F4:C7:14:70:FA:AC;
}
host laptop1 {
hardware ethernet 44:87:FC:AA:DD:2D;
}
host laptop2 {
hardware ethernet 70:F1:A1:9F:70:3B;
}
}

Si realiz cambios en la configuracin, reinicie el servicio dhcpd a fin de que surtan efecto
los cambios.
Ejecute lo siguiente si utiliza CentOS 7 o Red Hat Enterprise Linux 7:
systemctl restart dhcpd

Ejecute lo siguiente si utiliza ALDOS 1.4, CentOS 6 o Red Hat Enterprise Linux 6 o
versiones anteriores de stos:
service dhcpd restart

Comprobaciones desde cliente DHCP.


Hecho lo anterior, solamente se necesitar configurar como interfaces DHCP, las utilizadas
en las estaciones de trabajo que sean necesarias, sin importar que sistema operativo utilicen.
Despus concluida la configuracin y que estn funcionando los servicio correspondientes,
pueden hacerse comprobaciones desde un cliente GNU/Linux, es decir, desde otro equipo.
Abra una terminal, como usuario root y, asumiendo que se tiene una interfaz de red
denominada eth0, ejecute lo siguiente para desactivar la interfaz eth0 y asignar una nueva
direccin IP a travs del servidor dhcp.
ifdown eth0
dhclient -d -I nombre-equipo -H nombre-equipo eth0

Lo anterior deber devolver el mensaje Determinando la informacin IP para eth0... y el


smbolo de sistema. Ejecute ip addr list para hacer comprobaciones y visualizar los
dispositivos de red activos en el sistema.
Si se dispone de varios servidores DHCP y se desea probar la configuracin de alguno en
particular, puede aadir la opcin -V a dhclient, definiendo como valor para esta opcin, el
mismo valor que fue asignado para la opcin server-identifier, establecido en el archivo
/etc/dhcp/dhcpd.conf del servidor correspondiente.
ifdown eth0
dhclient -d -I nombre-equipo -H nombre-equipo -V 172.16.1.1 eth0

Edite el archivo /etc/sysconfig/network-scripts/ifcfg-eth0 o el que corresponda al


dispositivo de red principal del sistema cliente:
vi /etc/sysconfig/network-scripts/ifcfg-eth0

La configuracin permanente del dispositivo de red, considerando como ejemplo la


interfaz eth0 con direccin MAC 00:01:03:DC:67:23, solicitando los datos para los
servidores DNS, puerta de enlace y servidores de tiempo, sera la siguiente:
DEVICE=eth0
ONBOOT=yes
USERCTL=yes
HWADDR=00:01:03:DC:67:23
TYPE=Ethernet
NM_CONTROLLED=no
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
PEERNTP=yes
DOMAIN=red-local.net
DHCP_CLIENT_ID=nombre-equipo

DHCP_HOSTNAME=nombre-equipo

Si utiliza NM_CONTROLLED=yes, deje que el servicio NetworkManager se encargue


por si solo de aplicar los cambios. Si utiliza NM_CONTROLLED=no, reinicie el servicio
network a fin de que surtan efecto los cambios.
service network restart

You might also like