Administrador de Linux - Gestión remota
Cuando se habla de administración remota en CentOS como administrador, exploraremos dos métodos:
- Gestión de consola
- Gestión de GUI
Gestión de consola remota
La administración de consola remota significa realizar tareas de administración desde la línea de comandos a través de un servicio como ssh. Para utilizar CentOS Linux de forma eficaz, como administrador, deberá dominar la línea de comandos. Linux en su esencia fue diseñado para usarse desde la consola. Incluso hoy en día, algunos administradores de sistemas prefieren la potencia del comando y ahorran dinero en el hardware ejecutando cajas Linux básicas sin terminal físico y sin GUI instalada.
Gestión remota de GUI
La administración remota de GUI generalmente se logra de dos maneras: una X-Session remota o un protocolo de capa de aplicación GUI como VNC. Cada uno tiene sus puntos fuertes y sus inconvenientes. Sin embargo, en su mayor parte, VNC es la mejor opción para la administración. Permite el control gráfico desde otros sistemas operativos como Windows u OS X que no soportan de forma nativa el protocolo X Windows.
El uso de sesiones X remotas es nativo de los administradores de ventanas y administradores de escritorio de X-Window que se ejecutan en X. Sin embargo, toda la arquitectura de sesiones X se usa principalmente con Linux. No todos los administradores del sistema tendrán a mano un portátil Linux para establecer una sesión X remota. Por lo tanto, lo más común es utilizar una versión adaptada de VNC Server.
Los mayores inconvenientes de VNC son: VNC no es compatible de forma nativa con un entorno multiusuario como X-Sessions remotas. Por lo tanto, para el acceso GUI a los usuarios finales, las XSessions remotas serían la mejor opción. Sin embargo, nos preocupa principalmente la administración de un servidor CentOS de forma remota.
Discutiremos la configuración de VNC para múltiples administradores frente a unos pocos cientos de usuarios finales con X-Sessions remotas.
Sentar las bases para la seguridad con SSH para el acceso a la consola remota
ssh o Secure Shelles ahora el estándar para administrar de forma remota cualquier servidor Linux. SSH, a diferencia de telnet, utiliza TLS para la autenticidad y el cifrado de extremo a extremo de las comunicaciones. Cuando se configura correctamente, un administrador puede estar bastante seguro de que tanto su contraseña como el servidor son de confianza de forma remota.
Antes de configurar SSH, hablemos un poco sobre la seguridad básica y el acceso menos común. Cuando SSH se ejecuta en su puerto predeterminado de 22; más temprano que tarde, recibirá ataques de diccionario de fuerza bruta contra nombres de usuario y contraseñas comunes. Esto solo viene con el territorio. No importa cuántos hosts agregue a sus archivos de denegación, solo vendrán desde diferentes direcciones IP a diario.
Con algunas reglas comunes, simplemente puede tomar algunos pasos proactivos y dejar que los malos pierdan el tiempo. A continuación se muestran algunas reglas de seguridad a seguir al usar SSH para la administración remota en un servidor de producción:
Nunca use un nombre de usuario o contraseña común. Los nombres de usuario en el sistema no deben ser los predeterminados del sistema ni estar asociados con la dirección de correo electrónico de la empresa como:[email protected]
El acceso de raíz o el acceso de administración no deben permitirse a través de SSH. Use un nombre de usuario único y su para root o una cuenta de administración una vez autenticado a través de SSH.
La política de contraseñas es imprescindible: Contraseñas de usuario SSH complejas como: "This & IS & a & GUD & P @ ssW0rd & 24 & me". Cambie las contraseñas cada pocos meses para eliminar la susceptibilidad a ataques incrementales de fuerza bruta.
Deshabilite las cuentas abandonadas o que no se utilicen durante períodos prolongados. Si un gerente de contratación tiene un mensaje de voz que indica que no hará entrevistas durante un mes; que puede llevar a personas conocedoras de la tecnología con mucho tiempo libre, por ejemplo.
Mire sus registros a diario. Como administrador del sistema, dedique al menos 30 a 40 minutos cada mañana a revisar los registros de seguridad y del sistema. Si se le pregunta, dígales a todos que no tiene tiempo para no ser proactivo. Esta práctica ayudará a aislar las señales de advertencia antes de que se presente un problema a los usuarios finales y las ganancias de la empresa.
Note On Linux Security- Cualquier persona interesada en la administración de Linux debe buscar activamente las noticias y la tecnología actual de ciberseguridad. Si bien escuchamos sobre todo sobre otros sistemas operativos comprometidos, una caja de Linux insegura es un tesoro buscado por los ciberdelincuentes. Con el poder de Linux en una conexión a Internet de alta velocidad, un ciberdelincuente experto puede usar Linux para aprovechar los ataques a otros sistemas operativos.
Instalar y configurar SSH para acceso remoto
Step 1 - Instale el servidor SSH y todos los paquetes dependientes.
[root@localhost]# yum -y install openssh-server
'Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: repos.centos.net
* extras: repos.dfw.centos.com
* updates: centos.centos.com
Resolving Dependencies
--> Running transaction check
---> Package openssh-server.x86_64 0:6.6.1p1-33.el7_3 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
Step 2 - Haga un uso regular seguro para agregar para el acceso al shell.
[root@localhost ~]# useradd choozer
[root@localhost ~]# usermod -c "Remote Access" -d /home/choozer -g users -G
wheel -a choozer
Note- Añadimos el nuevo usuario a la rueda de grupo que permite capacidad de Do en la raíz una vez que el acceso SSH ha sido autenticada. También usamos un nombre de usuario que no se encuentra en listas de palabras comunes. De esta manera, nuestra cuenta no se bloqueará cuando se ataque SSH.
El archivo que contiene los ajustes de configuración para el servidor sshd es / etc / ssh / sshd_config .
Las partes que queremos editar inicialmente son:
LoginGraceTime 60m
PermitRootLogin no
Step 3- Vuelva a cargar el demonio SSH sshd .
[root@localhost]# systemctl reload sshd
Es bueno establecer el período de gracia de cierre de sesión en 60 minutos. Algunas tareas de administración complejas pueden superar el valor predeterminado de 2 minutos. Realmente no hay nada más frustrante que tener un tiempo de espera de sesión SSH al configurar o investigar cambios.
Step 4 - Intentemos iniciar sesión con las credenciales de root.
bash-3.2# ssh centos.vmnet.local
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Step 5- Ya no podemos iniciar sesión de forma remota a través de ssh con credenciales de root . Así que iniciemos sesión en nuestra cuenta de usuario sin privilegios y accedamos a la cuenta raíz .
bash-3.2# ssh [email protected]
[email protected]'s password:
[choozer@localhost ~]$ su root
Password:
[root@localhost choozer]#
Step 6- Finalmente, asegurémonos de que el servicio SSHD se cargue en el arranque y firewalld permita conexiones SSH externas.
[root@localhost]# systemctl enable sshd
[root@localhost]# firewall-cmd --permanent --add-service=ssh
success
[root@localhost]# firewall-cmd --reload
success
[root@localhost]#
SSH ahora está configurado y listo para la administración remota. Dependiendo de la frontera de su empresa, es posible que el dispositivo de frontera de filtrado de paquetes deba configurarse para permitir la administración remota SSH fuera de la LAN corporativa.
Configurar VNC para la administración remota de CentOS
Hay algunas formas de habilitar la administración remota de CentOS a través de VNC en CentOS 6 - 7. La forma más fácil, pero más limitante, es simplemente usando un paquete llamado vino .Vinoes una aplicación de conexión de escritorio de red virtual para Linux diseñada en torno a la plataforma de escritorio Gnome. Por lo tanto, se asume que la instalación se completó con Gnome Desktop. Si no se ha instalado Gnome Desktop, hágalo antes de continuar. Vino se instalará con una instalación GUI de Gnome de forma predeterminada.
Para configurar el uso compartido de la pantalla con Vino en Gnome, queremos ir a las Preferencias del sistema CentOS para compartir la pantalla.
Applications->System Tools->Settings->Sharing
Notas para configurar VNC Desktop Sharing -
Disable New Connections must ask for access- Esta opción requerirá acceso físico para aceptar todas las conexiones. Esta opción evitará la administración remota a menos que haya alguien en el escritorio físico.
Enable Require a password- Esto es independiente de la contraseña de usuario. Controlará el acceso al escritorio virtual y aún requerirá la contraseña de usuario para acceder a un escritorio bloqueado (esto es bueno para la seguridad).
Forward UP&P Ports: If available leave disabled- El reenvío de puertos UP&P enviará solicitudes Universal Plug and Play para un dispositivo de capa 3 para permitir conexiones VNC al host automáticamente. No queremos esto.
Asegúrese de que vino esté escuchando en el puerto VNC 5900.
[root@localhost]# netstat -antup | grep vino
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 4873/vino-server
tcp6 0 0 :::5900 :::* LISTEN 4873/vino-server
[root@localhost]#
Configuremos ahora nuestro Firewall para permitir conexiones VNC entrantes.
[root@localhost]# firewall-cmd --permanent --add-port=5900/tcp
success
[root@localhost]# firewall-cmd --reload
success
[root@localhost rdc]#
Finalmente, como puede ver, podemos conectar nuestro CentOS Box y administrarlo con un cliente VNC en Windows u OS X.
Es tan importante obedecer las mismas reglas para VNC como las que establecemos para SSH. Al igual que SSH, VNC se escanea continuamente a través de rangos de IP y se prueba para detectar contraseñas débiles. También vale la pena señalar que dejar el inicio de sesión predeterminado de CentOS habilitado con un tiempo de espera de la consola ayuda con la seguridad de VNC remota. Como un atacante necesitará el VNC y la contraseña de usuario, asegúrese de que su contraseña para compartir pantalla sea diferente y tan difícil de adivinar como la contraseña de usuario.
Después de ingresar la contraseña de uso compartido de pantalla de VNC, también debemos ingresar la contraseña de usuario para acceder a un escritorio bloqueado.
Security Note- De forma predeterminada, VNC no es un protocolo encriptado. Por lo tanto, la conexión VNC debe canalizarse a través de SSH para el cifrado.
Configurar túnel SSH a través de VNC
La configuración de un túnel SSH proporcionará una capa de cifrado SSH para canalizar la conexión VNC. Otra gran característica es que usa compresión SSH para agregar otra capa de compresión a las actualizaciones de la pantalla de VNC GUI. ¡Más seguro y más rápido siempre es bueno cuando se trata de la administración de servidores CentOS!
Entonces, desde su cliente que iniciará la conexión VNC, configuremos un túnel SSH remoto. En esta demostración, estamos usando OS X. Primero necesitamos sudo -s para rootear .
bash-3.2# sudo -s
password:
Ingrese la contraseña del usuario y ahora deberíamos tener un shell de root con un indicador # -
bash-3.2#
Ahora, creemos nuestro túnel SSH .
ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
Analicemos este comando:
ssh - Ejecuta la utilidad ssh local.
-f - ssh debería ejecutarse en segundo plano después de que la tarea se ejecute por completo
[email protected] - Usuario ssh remoto en el servidor CentOS que aloja servicios VNC
-L 2200:192.168.1.143:5900 - Cree nuestro túnel [Puerto local]: [host remoto]: [puerto remoto del servicio VNC]
-N le dice a ssh que no deseamos ejecutar un comando en el sistema remoto
bash-3.2# ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
[email protected]'s password:
Después de ingresar con éxito la contraseña del usuario ssh remoto, se crea nuestro túnel ssh . ¡Ahora la parte genial! Para conectar, apuntamos nuestro cliente VNC al host local en el puerto de nuestro túnel, en este caso el puerto 2200. A continuación se muestra la configuración en el cliente VNC de Mac Laptop -
¡Y finalmente, nuestra conexión de escritorio VNC remota!
Lo bueno de la tunelización SSH es que se puede utilizar para casi cualquier protocolo. Los túneles SSH se utilizan comúnmente para eludir el filtrado de puertos de entrada y salida por parte de un ISP, así como para engañar a los IDS / IPS de la capa de aplicación mientras evitan la supervisión de otra capa de sesión.
Su ISP puede filtrar el puerto 5900 para cuentas no comerciales pero permitir SSH en el puerto 22 (o se podría ejecutar SSH en cualquier puerto si el puerto 22 está filtrado).
IPS e IDS a nivel de aplicación analizan la carga útil. Por ejemplo, un desbordamiento de búfer común o inyección SQL. El cifrado SSH de extremo a extremo cifrará los datos de la capa de aplicación.
SSH Tunneling es una gran herramienta en la caja de herramientas de un administrador de Linux para hacer las cosas. Sin embargo, como administrador, queremos explorar el bloqueo de la disponibilidad de los usuarios con menos privilegios que tienen acceso a la tunelización SSH.
Administration Security Note- La restricción de la tunelización SSH es algo que requiere reflexión por parte de un administrador. Evaluar por qué los usuarios necesitan tunelización SSH en primer lugar; qué usuarios necesitan tunelización; junto con la probabilidad práctica de riesgo y el impacto en el peor de los casos.
Este es un tema avanzado que se extiende más allá del ámbito de una cartilla de nivel intermedio. Se recomienda investigar este tema para aquellos que deseen alcanzar los niveles superiores de la administración de CentOS Linux.
Utilice el túnel SSH para X-Windows remoto
El diseño de X-Windows en Linux es realmente elegante en comparación con el de Windows. Si queremos controlar una caja Linux remota desde otra caja Linux, podemos aprovechar los mecanismos integrados en X.
X-Windows (a menudo llamado simplemente "X"), proporciona el mecanismo para mostrar las ventanas de la aplicación que se originan en una caja de Linux a la parte de visualización de X en otra caja de Linux. Entonces, a través de SSH, podemos solicitar que una aplicación X-Windows se envíe a la pantalla de otra caja de Linux en todo el mundo.
Para ejecutar una aplicación X de forma remota a través de un túnel ssh, solo necesitamos ejecutar un solo comando:
[root@localhost]# ssh -X [email protected]
The syntax is - ssh -X [usuario] @ [host], y el host debe ejecutar ssh con un usuario válido.
A continuación se muestra una captura de pantalla de GIMP que se ejecuta en una estación de trabajo Ubuntu a través de un túnel ssh remoto de XWindows.
Es bastante sencillo ejecutar aplicaciones de forma remota desde otro servidor o estación de trabajo Linux. También es posible iniciar una X-Session completa y tener todo el entorno de escritorio de forma remota a través de algunos métodos.
XDMCP
Paquetes de software sin cabeza como NX
Configurar pantallas y escritorios alternativos en X y administradores de escritorio como Gnome o KDE
Este método se usa más comúnmente para servidores sin cabeza sin pantalla física y realmente excede el alcance de un manual de nivel intermedio. Sin embargo, es bueno conocer las opciones disponibles.