J'ai un serveur qui exécute quelques services. Cependant, pour des raisons de sécurité, j'ai configuré le serveur de sorte que rien, sauf pour SSH, ne soit accessible de l'extérieur.
Ce que je voudrais plutôt faire, cependant, est de laisser le serveur autoriser l'accès à tous ses services à toute personne ayant réussi à se connecter via SSH (et une fois que cette personne s'est déconnectée, fermez à nouveau tous les ports, à l'exception du port SSH. qui devrait rester ouvert).
Y a-t-il un moyen de faire cela?
J'utilise Arch Linux sur le serveur et ufw
pour gérer le pare-feu.
Réponses:
Vous pouvez insérer des commandes
~/.bashrc
. Tout ce qui s’y trouve est exécuté chaque fois qu’un utilisateur se connecte.Pour que vos commandes ne s'exécutent que lors de la connexion via ssh (et non lors d'une connexion physique), vous pouvez tester la présence de la
SSH_CONNECTION
variable d'environnement.la source
~/.bash_logout
parce que ça ne s'appelle pas si la connexion meurt après coup.J'ai écrit une solution pour cela. Ce n'est pas parfait et les améliorations sont les bienvenues. En particulier, je pense que cela
~/.bash_logout
ne sera pas appelé si la connexion est arrêtée, mais je veux que le pare-feu se ferme lui aussi.Dans tous les cas, commencez par configurer le
sudoers
fichier afin que votre utilisateur puisse exécuter leufw
binaire sans entrer de mot de passe.Puis dans
~/.bashrc
:Dans
~/.bash_logout
:Encore une fois, cependant, cela ne fera que refermer les ports si vous terminez correctement votre session. Si quelqu'un sait comment la fermer à chaque fois que la connexion se ferme / meurt / peu importe, modifiez cette réponse avec votre solution.
la source
who --ips
pour voir qui est actuellement connecté. Vous aurez besoin d'une liste d'adresses IP que vous avez autorisées (vous pourrez peut-être l'obtenirufw
, ou vous pourrez simplement la conserver vous-même à l'aide des scripts de connexion et de déconnexion). Ensuite, comparez la liste que vous avez avec la sortiewho
et supprimez les IP du pare-feu (et de la liste) qui ne figurent pas dans lawho
sortie.who --ips
me donneunrecognized option '--ips'
. Je peux faire justewho
mais cela retourne une longue chaîne contenant le nom de domaine, pas l'adresse IP. Il doit y avoir un moyen plus facile d'obtenir les adresses IP directement?man who
pour voir les options que vous avez. Vous semblez avoir une version différente de la mienne.