Administrateur Linux - Gestion à distance

Lorsque nous parlons de la gestion à distance dans CentOS en tant qu'administrateur, nous explorerons deux méthodes -

  • Gestion de la console
  • Gestion GUI

Gestion de la console à distance

La gestion de la console à distance consiste à effectuer des tâches d'administration à partir de la ligne de commande via un service tel que ssh. Pour utiliser efficacement CentOS Linux, en tant qu'administrateur, vous devrez maîtriser la ligne de commande. Linux en son cœur a été conçu pour être utilisé depuis la console. Même aujourd'hui, certains administrateurs système préfèrent la puissance de la commande et économisent de l'argent sur le matériel en exécutant des boîtiers Linux simples sans terminal physique et sans interface graphique installée.

Gestion de l'interface graphique à distance

La gestion de l'interface graphique à distance est généralement réalisée de deux manières: soit une X-Session distante, soit un protocole de couche d'application GUI comme VNC. Chacun a ses points forts et ses inconvénients. Cependant, pour la plupart, VNC est le meilleur choix pour l'administration. Il permet un contrôle graphique à partir d'autres systèmes d'exploitation tels que Windows ou OS X qui ne prennent pas en charge nativement le protocole X Windows.

L'utilisation de sessions X distantes est native à la fois aux gestionnaires de fenêtres et aux DesktopManagers de X-Window fonctionnant sous X. Cependant, toute l'architecture X Session est principalement utilisée avec Linux. Tous les administrateurs système ne disposeront pas d'un ordinateur portable Linux pour établir une session X distante. Par conséquent, il est plus courant d'utiliser une version adaptée de VNC Server.

Les plus gros inconvénients de VNC sont: VNC ne prend pas en charge nativement un environnement multi-utilisateur tel que les X-Sessions distantes. Par conséquent, pour l'accès GUI aux utilisateurs finaux, XSessions distantes serait le meilleur choix. Cependant, nous sommes principalement concernés par l'administration d'un serveur CentOS à distance.

Nous discuterons de la configuration de VNC pour plusieurs administrateurs par rapport à quelques centaines d'utilisateurs finaux avec des sessions X distantes.

Jeter les bases de la sécurité avec SSH pour l'accès à la console distante

ssh ou Secure Shellest désormais la norme pour l'administration à distance de tout serveur Linux. Contrairement à telnet, SSH utilise TLS pour l'authenticité et le chiffrement de bout en bout des communications. Lorsqu'il est correctement configuré, un administrateur peut être sûr que son mot de passe et le serveur sont approuvés à distance.

Avant de configurer SSH, parlons un peu de la sécurité de base et de l'accès le moins courant. Lorsque SSH s'exécute sur son port par défaut 22; tôt ou tard, vous allez subir des attaques par dictionnaire par force brute contre des noms d'utilisateur et des mots de passe courants. Cela vient juste avec le territoire. Peu importe le nombre d'hôtes que vous ajoutez à vos fichiers de refus, ils viendront simplement de différentes adresses IP chaque jour.

Avec quelques règles communes, vous pouvez simplement prendre des mesures proactives et laisser les méchants perdre leur temps. Voici quelques règles de sécurité à suivre en utilisant SSH pour l'administration à distance sur un serveur de production -

  • N'utilisez jamais un nom d'utilisateur ou un mot de passe commun. Les noms d'utilisateur sur le système ne doivent pas être ceux par défaut du système ou associés à l'adresse e-mail de l'entreprise comme:[email protected]

  • L'accès root ou l'accès administratif ne doit pas être autorisé via SSH. Utilisez un nom d'utilisateur et un su uniques pour root ou un compte d'administration une fois authentifié via SSH.

  • La politique de mot de passe est un must: Mots de passe utilisateur SSH complexes comme: "This & IS & a & GUD & P @ ssW0rd & 24 & me". Changez les mots de passe tous les quelques mois pour éliminer la vulnérabilité aux attaques incrémentielles par force brute.

  • Désactivez les comptes abandonnés ou inutilisés pendant de longues périodes. Si un responsable du recrutement a un message vocal indiquant qu'il ne fera pas d'entretiens pendant un mois; Cela peut conduire à des personnes connaissant bien la technologie avec beaucoup de temps libre, par exemple.

  • Surveillez vos journaux quotidiennement. En tant qu'administrateur système, consacrez au moins 30 à 40 minutes chaque matin à l'examen des journaux système et de sécurité. Si on vous le demande, faites savoir à tout le monde que vous n'avez pas le temps de ne pas être proactif. Cette pratique aidera à isoler les signes avant-coureurs avant qu'un problème ne se présente aux utilisateurs finaux et aux bénéfices de l'entreprise.

Note On Linux Security- Toute personne intéressée par l'administration Linux devrait suivre activement les nouvelles et la technologie actuelles en matière de cybersécurité. Alors que nous entendons principalement parler d'autres systèmes d'exploitation compromis, une machine Linux non sécurisée est un trésor recherché par les cybercriminels. Avec la puissance de Linux sur une connexion Internet à haut débit, un cybercriminel expérimenté peut utiliser Linux pour exploiter des attaques sur d'autres systèmes d'exploitation.

Installer et configurer SSH pour l'accès à distance

Step 1 - Installez le serveur SSH et tous les packages dépendants.

[[email protected]]# 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 - Faites une utilisation régulière sécurisée à ajouter pour l'accès au shell.

[[email protected] ~]# useradd choozer 
[[email protected] ~]# usermod -c "Remote Access" -d /home/choozer -g users -G 
wheel -a choozer

Note- Nous avons ajouté le nouvel utilisateur au groupe de roues permettant la possibilité de su dans root une fois que l'accès SSH a été authentifié. Nous avons également utilisé un nom d'utilisateur introuvable dans les listes de mots courants. De cette façon, notre compte ne sera pas verrouillé lorsque SSH est attaqué.

Le fichier contenant les paramètres de configuration du serveur sshd est / etc / ssh / sshd_config .

Les parties que nous voulons modifier au départ sont -

LoginGraceTime 60m
PermitRootLogin no

Step 3- Rechargez le démon SSH sshd .

[[email protected]]# systemctl reload sshd

Il est bon de définir la période de grâce de déconnexion à 60 minutes. Certaines tâches d'administration complexes peuvent dépasser la valeur par défaut de 2 minutes. Il n'y a vraiment rien de plus frustrant que d'avoir un délai d'expiration de session SSH lors de la configuration ou de la recherche de modifications.

Step 4 - Essayons de nous connecter en utilisant les informations d'identification root.

bash-3.2# ssh centos.vmnet.local 
[email protected]'s password:   
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

Step 5- Nous ne pouvons plus nous connecter à distance via ssh avec les informations d'identification root . Alors connectons-nous à notre compte utilisateur non privilégié et su dans le compte root .

bash-3.2# ssh [email protected]
[email protected]'s password:
[[email protected] ~]$ su root
Password:

[[email protected] choozer]#

Step 6- Enfin, assurons-nous que le service SSHD se charge au démarrage et que firewalld autorise les connexions SSH extérieures.

[[email protected]]# systemctl enable sshd

[[email protected]]# firewall-cmd --permanent --add-service=ssh 
success

[[email protected]]# firewall-cmd --reload 
success
 
[[email protected]]#

SSH est maintenant configuré et prêt pour l'administration à distance. En fonction de la frontière de votre entreprise, il se peut que le périphérique de bordure de filtrage de paquets doive être configuré pour permettre l'administration à distance SSH en dehors du réseau local de l'entreprise.

Configurer VNC pour l'administration CentOS à distance

Il existe plusieurs façons d'activer l'administration CentOS à distance via VNC sur CentOS 6 - 7. Le moyen le plus simple, mais le plus limitatif, consiste simplement à utiliser un package appelé vino .Vinoest une application Virtual Network Desktop Connection pour Linux conçue autour de la plate-forme Gnome Desktop. Par conséquent, il est supposé que l'installation a été terminée avec Gnome Desktop. Si le bureau Gnome n'a pas été installé, veuillez le faire avant de continuer. Vino sera installé par défaut avec une interface graphique Gnome.

Pour configurer le partage d'écran avec Vino sous Gnome, nous voulons aller dans les Préférences Système CentOS pour le partage d'écran.

Applications->System Tools->Settings->Sharing

Remarques sur la configuration du partage de bureau VNC -

  • Disable New Connections must ask for access- Cette option nécessitera un accès physique pour valider chaque connexion. Cette option empêchera l'administration à distance sauf si quelqu'un se trouve sur le bureau physique.

  • Enable Require a password- Ceci est distinct du mot de passe utilisateur. Il contrôlera l'accès au bureau virtuel et exigera toujours le mot de passe de l'utilisateur pour accéder à un bureau verrouillé (c'est bon pour la sécurité).

  • Forward UP&P Ports: If available leave disabled- Le transfert des ports UP&P enverra des demandes Universal Plug and Play pour un périphérique de couche 3 afin d'autoriser automatiquement les connexions VNC à l'hôte. Nous ne voulons pas de cela.

Assurez-vous que vino écoute sur le port VNC 5900.

[[email protected]]# 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
   
[[email protected]]#

Configurons maintenant notre pare-feu pour autoriser les connexions VNC entrantes.

[[email protected]]# firewall-cmd --permanent --add-port=5900/tcp 
success

[[email protected]]# firewall-cmd --reload 
success

[[email protected] rdc]#

Enfin, comme vous pouvez le voir, nous sommes en mesure de connecter notre CentOS Box et de l'administrer avec un client VNC sous Windows ou OS X.

Il est tout aussi important d'obéir aux mêmes règles pour VNC que pour SSH. Tout comme SSH, VNC est continuellement analysé sur les plages IP et testé pour les mots de passe faibles. Il convient également de noter que laisser la connexion CentOS par défaut activée avec un délai d'expiration de la console aide à la sécurité VNC à distance. Comme un attaquant aura besoin du VNC et du mot de passe utilisateur, assurez-vous que votre mot de passe de partage d'écran est différent et tout aussi difficile à deviner que le mot de passe utilisateur.

Après avoir entré le mot de passe de partage d'écran VNC, nous devons également entrer le mot de passe utilisateur pour accéder à un bureau verrouillé.

Security Note- Par défaut, VNC n'est pas un protocole crypté. Par conséquent, la connexion VNC doit être tunnelée via SSH pour le chiffrement.

Configurer le tunnel SSH via VNC

La configuration d'un tunnel SSH fournira une couche de cryptage SSH pour tunneler la connexion VNC. Une autre fonctionnalité intéressante est qu'elle utilise la compression SSH pour ajouter une autre couche de compression aux mises à jour de l'écran VNC GUI. Plus sûr et plus rapide est toujours une bonne chose pour l'administration des serveurs CentOS!

Donc, à partir de votre client qui lancera la connexion VNC, configurons un tunnel SSH distant. Dans cette démonstration, nous utilisons OS X. Nous devons d'abord sudo -s pour rooter .

bash-3.2# sudo -s 
password:

Entrez le mot de passe de l'utilisateur et nous devrions maintenant avoir un shell root avec une invite # -

bash-3.2#

Maintenant, créons notre tunnel SSH .

ssh -f [email protected] -L 2200:192.168.1.143:5900 -N

Décomposons cette commande -

  • ssh - Exécute l'utilitaire ssh local

  • -f - ssh devrait s'exécuter en arrière-plan après l'exécution complète de la tâche

  • [email protected] - Utilisateur ssh distant sur le serveur CentOS hébergeant les services VNC

  • -L 2200:192.168.1.143:5900 - Créez notre tunnel [Port local]: [hôte distant]: [port distant du service VNC]

  • -N indique à ssh que nous ne souhaitons pas exécuter de commande sur le système distant

bash-3.2# ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
[email protected]'s password:

Après avoir entré avec succès le mot de passe de l'utilisateur ssh distant, notre tunnel ssh est créé. Maintenant pour la partie cool! Pour nous connecter, nous pointons notre client VNC sur l'hôte local sur le port de notre tunnel, dans ce cas le port 2200. Voici la configuration sur le client VNC de Mac Laptop -

Et enfin, notre connexion de bureau VNC à distance!

La chose intéressante à propos du tunnel SSH est qu'il peut être utilisé pour presque tous les protocoles. Les tunnels SSH sont couramment utilisés pour contourner le filtrage des ports de sortie et d'entrée par un FAI, ainsi que pour tromper l'IDS / IPS de la couche application tout en évitant la surveillance des autres couches de session.

  • Votre FAI peut filtrer le port 5900 pour les comptes non professionnels mais autoriser SSH sur le port 22 (ou on peut exécuter SSH sur n'importe quel port si le port 22 est filtré).

  • Les IPS et IDS au niveau de l'application examinent la charge utile. Par exemple, un débordement de tampon courant ou une injection SQL. Le chiffrement SSH de bout en bout cryptera les données de la couche application.

SSH Tunneling est un excellent outil dans la boîte à outils d'un administrateur Linux pour faire avancer les choses. Cependant, en tant qu'administrateur, nous souhaitons explorer le verrouillage de la disponibilité des utilisateurs moins privilégiés ayant accès au tunnel SSH.

Administration Security Note- Restreindre le tunnel SSH est quelque chose qui nécessite une réflexion de la part d'un administrateur. Évaluer pourquoi les utilisateurs ont besoin du tunnel SSH en premier lieu; quels utilisateurs ont besoin de tunnel; ainsi que la probabilité de risque pratique et l'impact dans le pire des cas.

Il s'agit d'un sujet avancé qui s'étend hors du domaine d'une introduction de niveau intermédiaire. La recherche sur ce sujet est conseillée à ceux qui souhaitent atteindre les échelons supérieurs de l'administration Linux CentOS.

Utiliser SSH Tunnel pour Remote X-Windows

La conception de X-Windows sous Linux est vraiment soignée par rapport à celle de Windows. Si nous voulons contrôler une machine Linux distante depuis une autre machine Linux, nous pouvons profiter des mécanismes intégrés à X.

X-Windows (souvent appelé simplement "X"), fournit le mécanisme pour afficher les fenêtres d'application provenant d'une machine Linux vers la partie d'affichage de X sur une autre machine Linux. Ainsi, via SSH, nous pouvons demander qu'une application X-Windows soit transmise à l'écran d'une autre machine Linux à travers le monde!

Pour exécuter une application X à distance via un tunnel ssh, il suffit d'exécuter une seule commande -

[[email protected]]# ssh -X [email protected]

The syntax is - ssh -X [utilisateur] @ [hôte], et l'hôte doit exécuter ssh avec un utilisateur valide.

Voici une capture d'écran de GIMP s'exécutant sur une station de travail Ubuntu via un tunnel SSH XWindows distant.

Il est assez simple d'exécuter des applications à distance à partir d'un autre serveur ou poste de travail Linux. Il est également possible de démarrer une X-Session entière et d'avoir tout l'environnement de bureau à distance grâce à quelques méthodes.

  • XDMCP

  • Progiciels sans tête tels que NX

  • Configurer d'autres écrans et bureaux dans X et des gestionnaires de bureau tels que Gnome ou KDE

Cette méthode est la plus couramment utilisée pour les serveurs sans tête sans affichage physique et dépasse vraiment la portée d'une introduction de niveau intermédiaire. Cependant, il est bon de connaître les options disponibles.