Comment utiliser un shell restreint pour limiter ce qu'un utilisateur Linux peut faire

Contenu

Une fenêtre de terminal sur un système Linux.

Un shell restreint limite ce qu'un compte utilisateur peut faire sur Linux. Un utilisateur restreint ne peut pas changer son répertoire et vous contrôlez les commandes auxquelles il a accès. Ensuite, explique comment configurer un shell restreint sur Linux.

Coquilles restreintes

Un shell restreint n'est pas un shell distinct. C'est un mode différent d'un shell standard. Les A essayé, Korn, Pez, et d'autres shells peuvent être démarrés en mode shell restreint. Nous utiliserons Bash dans ce post, mais les mêmes principes s'appliquent aux autres coquilles.

Parce que les shells restreints ne sont qu'une autre façon d'utiliser votre shell standard, ils sont faciles à configurer. Il n'y a rien à installer et ils sont disponibles partout où Linux est.

Les shells restreints peuvent également être appliqués aux scripts. Cela garantit que tout dommage qu'ils peuvent causer s'ils sont mal orthographiés est confiné aux confins de leur monde restreint et qu'ils n'ont pas accès à l'intégralité de votre ordinateur..

Malgré cela, notez que les projectiles restreints ne sont pas entièrement étanches. Quelqu'un avec suffisamment de connaissances peut échapper à un shell restreint. Ils sont parfaits pour définir des limites de sécurité pour un utilisateur occasionnel, mais ne comptez pas sur des shells restreints pour la sécurité du monde réel sur un système de production.

EN RELATION: Quelle est la différence entre Bash, Zsh et autres shells Linux?

Coup restreint

Lorsque vous exécutez Bash en tant que shell restreint, l'utilisateur a certaines capacités supprimées. Spécifiquement, utilisateur ne pas pouvoir:

  • Utilisation cd pour changer le répertoire de travail.
  • Changer les valeurs du $PATH , $SHELL , $BASH_ENV , O $ENV variables environnementales (mais ils peuvent lire les valeurs actuelles).
  • Lire ou modifier $SHELLOPTS Shell options environnementales.
  • Rediriger la sortie d'une commande.
  • Invoquer des commandes qui nécessitent un chemin pour les localiser. Autrement dit, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/” En cela.
  • Invoquer exec remplacer la coque par une procédure différente.
  • Utiliser l'une des fonctions restreintes dans un script.

Vous pouvez appeler un shell bash restreint en utilisant le -r option (limité). Essayer d'effectuer une tâche simple telle que changer le répertoire de travail est interdit. Un message laconique vous dit que cd il est restreint.

bash -r
CD Documents

vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “rbash” au lieu de “frapper”. Cela le fait également commencer comme un shell restreint. Cela fournit un moyen pratique de configurer le shell par défaut pour un utilisateur particulier, que nous utiliserons bientôt.

Si nous utilisons le whereis commande dans Ubuntu pour rechercher le rbash des dossiers, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “usr / poubelle”. La page de manuel se trouve dans le répertoire "/usr / partager / homme / homme1".

En utilisant le ls commande avec le -l L'option (longue) révèle que rbash est en fait un lien symbolique vers bash .

où est rbash
ls -l /usr/bin/rbash

A Manjaro et Fedora, les rbash Vous deviez créer un lien symbolique. Cela fonctionne sur les deux distributions:

où est rbash
sudo ln -s /bin/bash /bin/rbash
où est rbash

La deuxième fois que nous utilisons le whereis commander, trouve rbash dans le répertoire "/usr / poubelle".

Restreindre un utilisateur

vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques”. Nous allons configurer votre shell pour qu'il soit le shell contraint en utilisant le -s (coquille) option de la useradd commander. Nous allons également configurer le mot de passe du compte en utilisant lepasswd commander, et nous allons créer un dossier personnel pour eux.

Les -p (parents) drapeau dans le mkdir la commande dit mkdir pour créer le répertoire cible et tout répertoire parent que vous devez créer en plus. Ensuite, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/ domicile / minnie / poubelle”, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/ domicile / minnie” en même temps.

sudo useradd minnie -s /bin/rbash
sudo passwd minnie
sudo mkdir -p /home/minnie/bin

Quand minnie se connecte, fonctionnera dans un shell restreint.

CD

vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/":

/usr/bin/ping

Malgré cela, vous pouvez toujours exécuter les commandes trouvées dans le chemin.

ping

Ce n'est pas le comportement auquel j'aurais pu m'attendre, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques. vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques.

vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques

vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/ domicile / minnie”, vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “/ domicile / minnie / poubelle”. vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques.

vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques “.vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques” vous ne pouvez pas émettre une commande comportant une ou plusieurs barres obliques. Nous limiterons également le fichier « .bash_profile » de minnie afin que seule la racine puisse l’éditer. Cela signifie qu’aucun autre utilisateur ne peut modifier ce fichier et modifier son chemin..

sudo gedit /home/minnie/.bash_profile

Modifier le “CHEMIN =” existant ou ajouter la ligne suivante:

CHEMIN=$HOME/bin

Enregistrer le fichier. Bien modifier le propriétaire du fichier root à l’aide de l’icône chown commande et modifier les autorisations de fichier en utilisant le chmod commander. Seul l’utilisateur root pourra modifier le fichier.

racine chown sudo:racine /home/minnie/.bash_profile
sudo chmod 755 /accueil/minnie/.bash_profile
ls -l /home/minnie/.bash_profile

La prochaine fois que l’utilisateur minnie se connecte, son chemin d’accès pointe vers un seul dossier.

Notre utilisateur restreint minnie ne peut utiliser que des commandes Bash intégrées comme echo, alias, Oui logout. Elle ne peut même pas utiliser ls!

ls

Tendremos que aflojar un poco nuestro dominio si queremos que puedan hacer algo útil. Crearemos algunos links simbólicos desde el directorio “poubelle” de minnie a los comandos que queremos que minnie pueda utilizar.

sudo ln -s /bin/ls /home/minnie/bin
sudo ln -s /bin/top /home/minnie/bin
sudo ln -s /bin/uptime /home/minnie/bin
sudo ln -s /bin/pinky /home/minnie/bin

La prochaine fois que minnie se connectera, Vous constaterez que vous pouvez utiliser les commandes Bash intégrées, en même temps des commandes auxquelles ils ont été liés.

ls
dave rose
disponibilité

Restreindre les utilisateurs existants

Nous créons minnie en tant que nouvel utilisateur. Pour changer la coque d'un existant Nom d'utilisateur, nous pouvons utiliser le -s (coquille) option de la usermod commander.

sudo usermod -s /bin/rbash mary

Vous pouvez utiliser le less commande dans le fichier "/etc / passwd "pour voir rapidement quel shell est défini comme shell par défaut de l'utilisateur.

moins /etc/passwd

Nous pouvons voir que l'utilisateur Mary utilisera un shell restreint lors de sa prochaine connexion.

N'oubliez pas d'appliquer les autres modifications pour restreindre votre $PATH variable d'environnement et pour définir les commandes que vous voulez que l'utilisateur Mary puisse exécuter.

Restriction de script

Un utilisateur normal et non restreint peut démarrer des scripts qui s'exécutent dans un shell restreint. Copiez les lignes suivantes et collez-les dans un éditeur. Enregistrez le fichier sous “restricto.sh” y cierre el editor.

#!/poubelle/bash

# script starts in normal Bash shell
echo "## En mode UNrestricted! ##"

echo
echo "Répertoire actuel: 'pwd'"
écho "Changement de répertoire"
cd /usr/share
echo "Maintenant dans le répertoire: 'pwd'"
écho "Passage au répertoire de base"
cd ~
echo "Maintenant dans le répertoire: 'pwd'"

# Setting restricted mode
set -r

echo
echo "## En mode restreint! ##"

echo
echo "Répertoire actuel: 'pwd'"
écho "Changement de répertoire en /home/"
cd /home
echo "Toujours dans le répertoire: 'pwd'"

echo
echo "Essayer de démarrer un autre shell"
/bin/bash

echo
echo "Tentative de redirection de la sortie de la commande"
ls -l $HOME > my_files.txt
cat my_files.txt
echo

exit 0

Nous devons utiliser le chmod commande avec le +x (Cours) drapeau pour rendre le script exécutable.

drapeau pour rendre le script exécutable

La première partie du script s'exécute dans un shell normal.

./restreint.sh

La deuxième partie du scénario, drapeau pour rendre le script exécutable “drapeau pour rendre le script exécutable”, fonctionne dans un shell restreint.

Aucune des actions tentées n'a abouti dans la partie restreinte du script.

Un script complet peut être exécuté dans un shell restreint en ajoutant -r à la première ligne:

!#/bin/bash -r

Souviens-toi de Houdini

Les projectiles restreints sont utiles, mais pas totalement infaillible. Un utilisateur suffisamment formé peut y échapper. Mais lorsqu'il est utilisé à bon escient, sont un moyen utile de déterminer un ensemble de limitations pour un compte particulier.

setTimeout(fonction(){
!fonction(F,b,e,v,m,t,s)
{si(f.fbq)revenir;n=f.fbq=fonction(){n.callMethod?
n.callMethod.apply(m,arguments):n.queue.push(arguments)};
si(!f._fbq)f._fbq=n;n.push=n;n.chargé=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertAvant(t,s) } (window, document,'scénario',
'https://connect.facebook.net/en_US/fbevents.js’);
fbq('init', « 335401813750447 »);
fbq('Piste', « Page View »);
},3000);

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.