13 votes

Être averti lorsqu'une personne se connecte à un serveur en utilisant SSH ou Remote Desktop

J'ai un serveur mac mini fonctionnant sous OS X Lion Server 10.7.3. Il fonctionne pratiquement sans surveillance et sans problème. Cependant, le serveur subit une "attaque" constante selon les journaux. Le pare-feu et la sécurité semblent tenir le coup.

Existe-t-il une application/script capable de m'envoyer un e-mail lorsque quelqu'un se connecte au serveur en utilisant SSH, Admin Tools ou ARD ?

Comme la machine fonctionne sans surveillance, sans tête, dans un centre de données situé dans une autre ville, je crains que quelqu'un (par pure persistance) ne parvienne à craquer un mot de passe ou à compromettre le système. Savoir que je serai alerté me rassurera.

4voto

shsteimer Points 8749

Votre meilleure défense est toujours de désactiver les services inutiles. Si vous n'utilisez pas le bureau à distance : désactivez-le. Si vous n'utilisez pas les serveurs HTTP ou FTP, désactivez-les. Moins de services en cours d'exécution, moins de points d'entrée à exploiter par d'éventuels intrus.

Outre le verrouillage, il existe des produits gratuits et open source compatibles avec OS X que vous pouvez utiliser pour détecter les intrusions sur votre machine.

Snort

Bien que je ne l'aie pas utilisé personnellement, j'ai des collègues qui le connaissent et lui font confiance pour la détection des intrusions. Il est compatible avec BSD, ce qui en fait un bon outil pour OS X. Un autre avantage de Snort est qu'il est disponible sous la forme d'une version Homebrew paquet :

> brew info snort
snort 2.9.0.5
http://www.snort.org
Depends on: daq, libdnet, pcre
Not installed
https://github.com/mxcl/homebrew/commits/master/Library/Formula/snort.rb

==> Caveats
For snort to be functional, you need to update the permissions for /dev/bpf*
so that they can be read by non-root users.  This can be done manually using:
    sudo chmod 644 /dev/bpf*
or you could create a startup item to do this for you.

Vous bénéficiez donc d'un chemin d'installation simplifié et d'une certaine confiance dans le fait qu'il est bien porté sur OS X et y fonctionne. Avec Homebrew installé, il vous suffit de faire :

> brew install snort

Et vous êtes prêt à vous y mettre.

Regarde ça Guide d'installation de Snort pour OS X Lion Server que la communauté Snort fournit pour commencer à écrire des règles pour votre machine OS X. C'est un excellent document. Il s'agit d'un excellent document qui, en plus d'expliquer comment installer Snort à partir des sources (ce qui n'est pas nécessaire), traite de tout ce que vous devez faire pour protéger votre instance de serveur OS X Lion. Si vous installez via Homebrew, commencez à la Section 5 (page 13) du PDF car vous n'avez pas besoin de vous soucier de l'installation à partir du code source.

Tripwire

J'ai couru Tripwire sur des machines linux pour faire de la détection rapide d'intrusion et de l'alerte. C'est efficace mais c'est un peu une bête à mettre en place. Il peut effectuer des actions lorsque les règles sont comparées aux fichiers journaux. Bien entendu, un pirate avisé saura désactiver Tripwire dès qu'il s'introduira dans le système, afin d'éviter que sa session ne soit coupée.

L'allusion à MacWorld parle de Configuration de Tripwire sous OS X . Ce n'est pas simple et l'article se termine en mentionnant que cela n'a pas été testé.

4voto

sss Points 41

Vous pouvez durcir ssh et installer denyhosts, sshguard, et Snort, Barnyard, Base et Swatch.

Voir ces liens pour plus de détails :

https://discussions.apple.com/thread/3565475 https://discussions.apple.com/thread/4473229?tstart=0

  1. Désactivez les connexions par racine et par mot de passe :

    vi /etc/sshd_config

    PermitRootLogin no
    PasswordAuthentication no
    ChallengeResponseAuthenticatio no

    Ensuite, utilisez ssh-keygen sur le client distant pour générer des clés publiques/privées qui peuvent être utilisées pour se connecter à distance au serveur :  

    client$ ssh-keygen -t rsa -b 2048 -C client_name [Securely copy ~/.ssh/id_rsa.pub from client to server.] server$ cat id_rsa.pub > ~/.ssh/known_hosts  

  2. Installez denyhosts et sshguard.

    • sudo port install denyhosts sshguard
    • sudo port load denyhosts
    • sudo port load sshguard

    Vous pouvez configurer denyhosts pour bloquer tout le trafic, pas seulement le trafic ssh.

  3. Snort, avec une carte mondiale des attaques :

    https://discussions.apple.com/thread/4473229?tstart=0

3voto

user16797 Points 331

Pour répondre directement à la question posée. J'ai un autre script qui m'envoie un courriel, encore une fois, vers minuit, si quelqu'un se connecte avec succès via ssh.

#!/usr/bin/env bash

mm=`date +%b`
dd=`date $1 +%d`
dd=`expr $dd`
if [ "$dd" -ge "10" ]
  then 
    dt=`echo "$mm $dd"` 
  else 
    dt=`echo "$mm  $dd"` 
fi

cat /var/log/secure.log | grep -E '(Accepted|SUCCEEDED)'| grep -E -v '(my.ip.address|192.168.1)' | grep "$dt" >> /tmp/access_granted

/usr/bin/mail -E -s "Access granted" email@myserver.com < /tmp/access_granted
rm /tmp/access_granted

Modifier le grep ci-dessus pour exclure votre propre IP fixe, si vous le souhaitez, et pour utiliser votre adresse électronique. Vous pouvez combiner une partie du code de mon autre réponse pour ajouter des défaillances pour VNC.

2voto

user16797 Points 331

Pour développer un peu plus sur Fail2ban Une fois qu'il est installé et fonctionne, j'ai un script que j'exécute juste avant minuit et qui extrait les journaux et m'envoie par courriel ce que Fail2ban a fait pendant la journée précédente.

Le script est le suivant et peut être exécuté depuis cron ou un plist launchd.

#!/usr/bin/env bash

mm=`date +%b`
dd=`date $1 +%d`
dd=`expr $dd`
if [ "$dd" -ge "10" ]
  then 
    dt=`echo "$mm $dd"` 
  else 
    dt=`echo "$mm  $dd"` 
fi

cat /var/log/system.log | grep "$dt" | grep org.fail2ban | grep -v COMMAND > /tmp/fail2ban_deny
cat /var/log/fail2ban.log | grep -E '(WARN|ERR|rotation|target)' | grep `date $1 +%Y-%m-%d` >> /tmp/fail2ban_deny
cat /var/log/ipfw.log | grep TCP | grep "$dt" >> /tmp/fail2ban_deny
cat /var/log/secure.log | grep VNC | grep FAILED | grep "$dt" >> /tmp/fail2ban_deny

/usr/bin/mail -E -s "Fail2ban ipfw" email@yourserver.com < /tmp/fail2ban_deny
rm /tmp/fail2ban_deny

Vous devrez évidemment utiliser l'adresse électronique de votre choix.

La mise en place de Fail2ban est un tout autre problème. J'ai beaucoup écrit à ce sujet.

0voto

science Points 107

Il est assez simple d'installer le plugin PAM de Google Authenticator sur Mac OS X si vous avez installé le compilateur de ligne de commande X code. T

https://code.google.com/p/google-authenticator/wiki/PamModuleInstructions

Une fois que vous aurez initialisé votre jeton (généré un code que vous transmettrez à l'application sur votre téléphone), vous disposerez d'une authentification à deux facteurs pour protéger votre machine. Tout compte sans jeton initialisé ne pourra pas se connecter, donc si vous ne voulez pas autoriser la connexion Root, n'initialisez pas de clé pour ce compte.

Mais sérieusement, quelque chose comme DenyHosts a du sens si vous devez garder SSH ouvert sur Internet. Malheureusement, depuis Mac OS X V10.8, Apple a supprimé le support des tcpwrappers du démon SSH, qui ignore donc /etc/deny.hosts, ce qui était une décision stupide, si vous voulez mon avis, en supprimant une fonctionnalité de sécurité.

Pour contourner cela, j'ai utilisé MacPorts pour installer un démon openssh à jour, et restaurer la fonctionnalité complète de tcpwrappers, édité et utiliser le démon DenyHosts pour surveiller /var/log/system.log et bannir les IP qui devinent les logins et les mots de passe. Et n'oubliez pas de mettre à jour MacPorts et de vérifier/réinstaller openssh/DenyHosts à chaque fois que vous mettez le système d'exploitation à jour.

Bonne chance !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X