Aller au contenu

Logger Les Connexions D'utilisateurs, Les Tentatives D'acc


trucmuche2005

Messages recommandés

Bonjour !

Je suis sous DSM 4.1 et j'aimerais pouvoir avoir un log reprenant les dates & heures de connexions des utilisateurs (de certains utilisateurs seulement, idéalement), mais aussi un relevé des tentatives d'accès au NAS.

Mon but est de voir quand certains utilisateurs accèdent aux fichiers que je mets à leur disposition, et aussi de dépister les éventuels problèmes de sécurité, les attaques subies etc, pour mieux protéger mon installation.

Comment puis-je faire ? C'est syslog qui me permet cela ? (j'ai l'impression que non)

Je vous remercie pour vos conseils !

Belle après-midi !

Trucmuche

Lien vers le commentaire
Partager sur d’autres sites

Content pour toi ! Cela ne correspond pas tout à fait à ce que je souhaite. J'ai pu trouver comment voir quel utilisateur se connecte et plein de choses intéressantes dans les Journaux Systèmes (merci à toi !) mais je n'ai pas encore trouvé comment voir les tentatives de login infructueuses, les attaques login par ssh, les tentatives d'accéder à des ports de l'extérieur, ou des choses comme cela...

Savez-vous où trouver cela ?

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Pour ma part, je me suis fait un petit script perl qui tourne en crontab 1 fois par semaine.

Le script parse le fichier /var/log/message qui contient les informations sur les connexions ssh (Accepted ou Failed), construit un fichier temporaire de résultat en séparant les Failed des Accepted et envoie un mail avec ce résultat dans le corps du message.

Le mail est envoyé en utilisant la commande "nail" disponible via ipkg.

Le script perl est adaptable selon les besoin (filtrage de certain utilisateurs, filtre sur autre chose que sshd dans le fichier /var/log/messages ...)

Ce script est bien évidement développé "rapidement", mais fonctionnel, si cela intéresse quelqu'un, n'hésitez pas à me MP

Modifié par loli71
Lien vers le commentaire
Partager sur d’autres sites

Bonjour !

J'ai vu ton script ici les jours derniers, malheureusement lorsque j'avais peu de temps et je vois qu'il a été supprimé depuis...

Pourquoi avoir changé d'avis et avoir caché ce script ? Ne peut-il pas être d'utilité publique ? J'comprends pas trop la motivation...

En tout cas, moi ca m'intéresse et je n'ai pas eu le temps d'en faire un copier-coller...

Merci d'avance !

Trucmuche

Lien vers le commentaire
Partager sur d’autres sites

Salut Trucmuche,

Désolé d'avoir enlever le script, il n'était pas très propre, je voulais juste le remettre au mieux pour que tout à chacun puisse l'utiliser à sa convenance, mais j'ai été très pris ces derniers jours.

je rattrape donc mon retard en mettant ici le script corrigé et avec en plus quelques commentaires :


#!/usr/bin/perl

my $message='/var/log/messages'; # fichier de log a surveiller

my $dest='mon.adresse@mail.com'; # adresse mail à modifier

my %connexionsok;

my @connexionsfailed;

my $entete, $texte;

my $date=`date`;

chomp($date);

$entete="SSHD surveillance $date";

open(TEXTE, ">/tmp/texte.txt") or die;

# recherche du mot "sshd" dans le fichier de log :

open (MSG, "/bin/grep sshd $message |");

while ( defined( my $line = <MSG> )) {

  chomp($line);

  if (my ($date, $value, $type, $user, $adresse) = ( $line =~ m/^(.*) sshd\[\d+\]: ((?:Accepted|Failed)) (\w+) for (\w+) from (\d+\.\d+\.\d+\.\d+).*$/)) {

    # recuperation des lignes de la forme

    # Oct 4 23:16:36 sshd[14190]: Accepted publickey for USER from XXX.XXX.XXX.XXX port 65017 ssh2

    # Oct 4 17:51:28 sshd[25256]: Accepted password for USER from XXX.XXX.XXX.XXX port 43954 ssh2

    # Oct 4 17:56:45 sshd[13272]: Failed password for USER from XXX.XXX.XXX.XXX port 37651 ssh2

    if ($value eq 'Accepted') {

	  my ($moisday) = ($date =~ m/^(\w+\s+\d+)\s+.*$/);

	  my $k="$moisday"."$user"."$adresse"."$type";

	  $connexionsok{$k}=$moisday.'#'.$type.'#'.$user.'#'.$adresse;

    } else {

	  push(@connexionsfailed,"$date".'#'."$type".'#'."$user".'#'."$adresse");

    }

  }

}

close(MSG);

print TEXTE "############################\nConnexions Failed:\n";

foreach my $v (@connexionsfailed) {

  my ($date,$type,$user,$adresse) = split('#', $v);

  # recuperation du nom par resolution nslookup depuis l'adresse IP

  my $name=`nslookup $adresse | grep "^Address.*: $adresse"`;

  chomp($name);

  $name =~ s/^Address.*:\s+${adresse}\s+//;

  print TEXTE "$date $user (authtype:$type) $adresse (nom:$name)\n";

}

print TEXTE "\n############################\nConnexions Accepted:\n";

foreach my $k (sort( {$a cmp $b} keys(%connexionsok))) {

  my ($moisday,$type,$user,$adresse) = split('#', $connexionsok{$k});

  # recuperation du nom par resolution nslookup depuis l'adresse IP

  my $name=`nslookup $adresse | grep "^Address.*: $adresse"`;

  chomp($name);

  $name =~ s/^Address.*:\s+${adresse}\s+//;

  print TEXTE "$moisday $user (authtype:$type) $adresse (nom:$name)\n";

}

close(TEXTE);

# Envoie du mail par le programme nail (ipkg)

`/opt/bin/nail -s "$entete" $dest </tmp/texte.txt`;

# suppression du fichier temporaire

# decommentez la ligne suivante si vous souhaitez ne pas garder le ficheir en local

#unlink("/tmp/texte.txt");

Modifié par loli71
Lien vers le commentaire
Partager sur d’autres sites

Pour l'executer je mets effectivement la tâche cron suivante dans le fichier /etc/crontab :

01	    0	    *	    *	    0 	   root	    /opt/bin/surveillance_sshd.pl 2>&1 >/dev/null[/CODE]

Comme le fichier /var/log/message tourne automatiquement chaque dimanche matin à 00:05, en lançant mon script chaque dimanche à 00:01 (avant la rotation), j'obtiens bien toutes les tentatives de connexions ssh de la semaine qui vient de passer.

après, si tu souhaites le lancer tous les jours, tu auras les tentatives de la journée ajoutées aux tentatives déjà reçues dans le mail de la veille, mais ce n'est pas forcément gênant si tu le sais.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...
  • 1 an après...

Tout dépend de ce que tu appel par loguer tout ce que fait un utilisateur.

Est-ce en connection telnet ou ssh?

en graphique je ne saurait te dire...

Si tel est le cas j'ai un petit script qui permet de faire cela uniquement lors de connexion ennoncés ci-dessus...

chaque commande tapé sera logué dans un fichier (mais pas le résultat).

si ça interesse quelqu'un...

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.