Sondeo

Si ya probaste GNOME 3...

¿Te gustó GNOME 3?

  •  Si
  •  No
Este sondeo tiene 5 preguntas más.
Resultados
Más sondeos | 1,805 votos | 7 comentarios
Atención: 20 al 24 de febrero, Curso Global de Servidores con CentOS 6.
Atención: 21 y 28 de enero, 4 y 11 de febrero, Taller de programación de Python.
Atención: Disponible ALDOS 1.4.2. Nuestro sistema operativo para escritorio.

Configuración de OpenSSH

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2011 Joel Barrios Dueñas. Usted es libre de copiar, distribuir, y comunicar públicamente la obra, y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer, y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera, o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar, o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento, y los derivados de éste se proporcionan tal cual son, y los autores no asumirán responsabilidad alguna si el usuario, o lector, hace mal uso de éstos.

Introducción.

Acerca de SSH.

SSH (Secure Shell) es un conjunto de estándares y protocolo de red que permite establecer una comunicación a través de un canal seguro entre un cliente local y un servidor remoto. Utiliza una clave pública cifrada para autenticar el servidor remoto y, opcionalmente, permitir al servidor remoto autenticar al usuario. SSH provee confidencialidad e integridad en la transferencia de los datos utilizando criptografía y MAC (Message Authentication Codes, o Códigos de Autenticación de Mensaje). De modo predeterminado, escucha peticiones a través del puerto 22 por TCP.

Acerca de SFTP.

SFTP (SSH File Transfer Protocol) es un protocolo que provee funcionalidad de transferencia y manipulación de archivos a través de un flujo confiable de datos. Comúnmente se utiliza con SSH para proveer a éste de transferencia segura de archivos.

Acerca de SCP.

SCP (Secure Copy, o Copia Segura) es una protcolo seguro para transferir archivos entre un anfitrión local y otro remoto, a través de SSH. Básicamente, es idéntico a RCP (Remote Copy, o Copia Remota), con la diferencia de que los datos son cifrados durante la transferencia para evitar la extracción potencial de información a través de programas de captura de las tramas de red (packet sniffers). SCP sólo implementa la transferencia de archivos, pues la autenticación requerida es realizada a través de SSH.

Acerca de OpenSSH.

OpenSSH (Open Secure Shell) es una alternativa de código abierto, con licencia BSD, hacia la implementación propietaria y de código cerrado SSH creada por Tatu Ylönen. OpenSSH es un proyecto creado por el equipo de desarrollo de OpenBSD y actualmente dirigido por Theo de Raadt. Se considera es más segura que su contraparte propietaria debido a la constante auditoría que se realiza sobre el código fuente por parte de una gran comunidad de desarrolladores, una ventaja que brinda al tratarse de un proyecto de fuente abierta.

OpenSSH incluye servicio y clientes para los protocolos SSH, SFTP y SCP.

URL: http://www.openssh.org/.

Equipamiento lógico necesario.

Instalación a través de yum.

Si se utiliza de CentOS 5, o Red Hat Enterprise Linux 5, o versiones posteriores de éstos, se ejecuta lo siguiente:

yum -y install openssh openssh-server openssh-clients

SELinux y el servicio sshd.

Si se utiliza de CentOS 6, o Red Hat Enterprise Linux 6, el sistema incluye tres políticas para el servicio sshd.

Política ssh_chroot_rw_homedirs.

Esta política habilita, o deshabilita, la lectura y escritura de archivos a través de SFTP en los directorios de inicio de los usuarios enjaulados. El valor predeterminado es deshabilitado. Para habilitar, ejecute lo siguiente

setsebool -P ssh_chroot_rw_homedirs 1

Política fenced_can_ssh.

Esta política habilita, o deshabilita, que usuarios enjaulados a través de SFTP puedan ingresar también a través de SSH. El valor predeterminado es deshabilitado. Para habilitar, ejecute lo siguiente

setsebool -P fenced_can_ssh 1

Política ssh_sysadm_login.

Esta política habilita, o deshabilita, el acceso a través de ssh como administrador del sistema (contextos sysadm_r:sysadm_t, que corresponden a los del directorio de inicio del usuario root, o bien que pueden ser aplicados al directorio de inicio de otro usuario con privilegios). El valor predeterminado es deshabilitado. Para habilitar, ejecute lo siguiente

setsebool -P ssh_sysadm_login 1

Política allow_ssh_keysign.

Esta política habilita, o deshabilita, el acceso a través de ssh utilizando firmas digitales. El valor predeterminado es deshabilitado. Para habilitar, ejecute lo siguiente

setsebool -P allow_ssh_keysign 1

Para más detalles, consulte el documento titulado «Cómo utilizar OpenSSH con autenticación a través de firma digital.».

Archivos de configuración.

/etc/ssh/sshd_config Archivo principal de configuración del servicio SSH.

Procedimientos.

Edite /etc/ssh/sshd_config. A continuación se analizarán los parámetros a modificar.

vim /etc/ssh/sshd_config

Parámetro Port.

Una forma de elevar considerablemente la seguridad al servicio de SSH, es cambiar el número de puerto utilizado por el servicio, por otro que sólo conozca el administrador del sistema. A este tipo de técnicas se les conoce como Seguridad por Oscuridad. La mayoría de los delincuentes informáticos utiliza guiones que buscan servidores que respondan a peticiones a través del puerto 22. Cambiar de puerto el servicio de SSH disminuye considerablemente la posibilidad de una intrusión a través de este servicio.

Port 22

SSH trabaja a través del puerto 22 por TCP. Puede elegirse cualquier otro puerto entre el 1025 y 65535. ejemplo:

Port 52341

Parámetro ListenAddress.

De modo predeterminado, el servicio de SSH responderá peticiones a través de todas las interfaces del sistema. En algunos casos es posible que no se desee esto y se prefiera limitar el acceso sólo a través de una interfaz a la que sólo se pueda acceder desde la red local. Para tal fin puede establecerse lo siguiente, considerando que el servidor a configurar posee la IP 192.168.1.254:

ListenAddress 192.168.1.254

Parámetro PermitRootLogin.

Establece si se va a permitir el acceso directo del usuario root al servidor SSH. Si se va a permitir el acceso hacia el servidor desde redes públicas, resultará prudente utilizar este parámetro con el valor no.

PermitRootLogin no

Parámetro X11Forwarding.

Establece si se permite o no la ejecución remota de aplicaciones gráficas. Si se va a acceder hacia el servidor desde red local, este parámetro puede quedarse con el valor yes. Si se va a permitir el acceso hacia el servidor desde redes públicas, resultará prudente utilizar este parámetro con el valor no.

X11Forwarding yes

Parámetro AllowUsers.

Permite restringir el acceso por usuario y, de manera opcional, anfitrión desde el cual pueden hacerlo. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que sólo puedan hacerlo los usuarios fulano y mengano, desde cualquier anfitrión.

AllowUsers fulano mengano

También se puede restringir el acceso por usuario y anfitrión. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que sólo puedan hacerlo los usuarios fulano y mengano, solamente 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

Aplicando los cambios.

El servicio de SSH puede iniciar, detenerse o reiniciar a través de un guión similar a los del resto del sistema. De tal modo, podrá iniciar, detenerse o reiniciar a través del mandato service y añadirse al arranque del sistema en un nivel o niveles de ejecución en particular con el mandato chkconfig.

De modo predeterminado, el servicio sshd está activo en todos los niveles de ejecución.

Para ejecutar por primera vez el servicio sshd, ejecute lo siguiente:

service sshd start

Para hacer que surtan efecto los cambios hechos a la configuración del servicio sshd, ejecute lo siguiente:

service sshd restart

Para detener el servicio sshd, ejecute lo siguiente:

service sshd stop

De forma predeterminada, el servicio SSH está incluido en todos los niveles de ejecución con servicio de red. Para desactivar el servicio sshd de todos los niveles de ejecución, ejecute:

chkconfig sshd off

Probando OpenSSH.

Acceso a través de intérprete de mandatos.

Para acceder a través de intérprete de mandatos hacia el servidor, basta con ejecutar desde el sistema cliente el mandato ssh definiendo el usuario a utilizar y el servidor al cual conectar:

ssh usuario@servidor

Para acceder hacia un puerto en particular, se utiliza el parámetro -p. En el siguiente ejemplo, utilizando la cuanta del usuario juan, se intentará acceder hacia el servidor con dirección IP 192.168.70.99, el cual tiene un servicio de SSH que responde peticiones a través del puerto 52341.

ssh -p 52341 juan@192.168.70.99

Transferencia de archivos a través de SFTP.

Para acceder a través de SFTP hacia el servidor, basta con ejecutar desde el sistema cliente el mandato sftp definiendo el usuario a utilizar y el servidor al cual conectar:

sftp usuario@servidor

El intérprete de mandatos de SFTP es muy similar al utilizado para el protocolo FTP y tiene las mismas funcionalidades.

Para acceder hacia un puerto en particular, en el cual está trabajando el servicio de SSH, se hace través de el parámetro -o, con la opción Port=número de puerto. En el siguiente ejemplo, utilizando la cuenta del usuario juan, se accederá a través de SFTP hacia el servidor 192.168.70.99, el cual tiene trabajando el servicio de SSH en el puerto 52341.

sftp -o Port=52341 juan@192.168.70.99

Si dispone de un escritorio en GNU/Linux, con GNOME 2.x, puede acceder hacia servidores SSH a través del protocolo SFTP utilizando el administrador de archivos (Nautilus) para realizar transferencias y manipulación 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 través de SFTP.
Nautilus, accediendo hacia un directorio remoto a través de SFTP.

Jaulas para los usuarios que acceden a través de SFTP.

La función de chroot viene incluida desde la versión 4.9p1de OpenSSH. Para habilitarla, es necesario editar el archivo /etc/ssh/sshd_config:

vim /etc/ssh/sshd_config

Casi al final del archivo, localice la siguiente línea:

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

Comente la línea con una almohadilla y añada el siguiente contenido:

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

Guarde el archivo y regrese al intérprete de mandatos

Reinicie el servicio sshd ejecutando lo siguiente:

service sshd

Utilice el mandato groupadd para crear el grupo sftpusers.

groupdadd sftpusers

Añada a los usuarios a los cuales se quiera enjaular, al grupo sftp.

gpasswd -a juanito sftpusers

Cambie los permisos del directorio de inicio de los usuarios involucrados, para que pertenezcan a root, y tengan permiso de acceso 755.

chown root:root /home/juanito
chmod 755 /home/juanito

Finalmente, cambie el intérprete de mandatos de los usuarios involucrados a /sbin/nologin o bien /bin/false.

usermod -s /sbin/nologin juanito

A partir de este momento, los usuarios involucrados podrán ingresar al sistema a través de SFTP, pero solo podrán tener acceso a su directivo de inicio.

[jbarrios@centos6 ~]$ sftp juanito@192.168.80.8
juanito@192.168.80.8's password: 
Connected to 192.168.80.8.
sftp> pwd
Remote working directory: /
sftp> ls -a
.               ..              .bash_logout    .bash_profile   .bashrc         
sftp>

Transferencia de archivos a través de SCP.

Para realizar transferencias de archivos a través de SCP, es necesario conocer las rutas de los directorios objetivo del anfitrión remoto. A continuación se describen algunas de las opciones más importantes del mandato scp.

-pPreserva el tiempo de modificación, tiempos de acceso y los modos del archivo original.
-PEspecifica el puerto para realizar la conexión.
-rCopia recursiva 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 través del puerto 52341, preservando tiempos y modos, hacia el directorio del usuario con el que se está trabajando en el anfitrión local.

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

Modificaciones necesarias en el muro cortafuegos.

Si se utiliza un cortafuegos con políticas estrictas, como por ejemplo Shorewall, es necesario abrir el puerto 22 por UDP (SSH).

Si utiliza Shorewall, edite el archivo /etc/shorewall/rules:

vim /etc/shorewall/rules

Las reglas corresponderían a algo similar a lo siguiente:

#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	net	fw	tcp	22
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Si la red de área local (LAN) va a acceder hacia el servidor recién configurado, es neceario abrir el puerto correspondiente.

#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	net	fw	tcp	22
ACCEPT	loc	fw	tcp	22
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

O bien, hacer todo lo anterior, con una sola regla, que permita el acceso desde cualquier zona del muro cortafuegos:

#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	all	fw	tcp	22
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Si se decidió ofuscar el puerto de SSH, puede utilizar la siguiente regla, donde, en lugar de 52341, deberá especificar el puerto que haya elegido:

#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	all	fw	tcp	52341
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Al terminar de configurar las reglas para Shorewall, reinicie el muro cortafuegos, ejecutando el siguiente mandato:

service shorewall restart

Última Edición 20/12/2011, 22:11|26,139 Accesos Ver la versión para imprimir