Ha biztonságban szeretnénk tudni szerverünket, nem árt, ha értesülünk arról, amikor valaki SSH-n keresztül belép arra. Ez fontos lehet olyankor is, amikor több felhasználó is rendelkezik ilyen hozzáféréssel, de akkor is, amikor csak arról szeretnénk megbizonyosodni, hogy senki sem élt vissza a mi fiókunk adataival. A legegyszerűbb módja ennek, ha a háttérben mindig fut egy szkript, amely e-mailt küld nekünk SSH-val történő be- és kijelentkezéskor.

Ehhez először is hozzuk létre a figyelést végző szkriptet:

sudo nano /usr/sbin/user-monitor.pl

Majd ezt követően írjuk bele a következő tartalmat:

#!/usr/bin/perl
# user_monitor.pl v0.4 :: keep track on who's logged in
# Written by Stephan Schmieder - http://www.unix-geek.info, 2003
# Usage: ./user-monitor.pl&

use strict;
use warnings;
use diagnostics;
use Net::SMTP;

#configuration
my $server =`uname -a|cut -d" " -f2`;
my $smtp_server ='localhost';
my $mail_to     ='root@mail.sajatdomain.hu';
my $mail_from   ='root@' . $server;
my $subject     ="$server :: User login monitor";
#configuration

my @old_users=split(/\n/, qx/who/);
while(sleep(60))
{
        my @users=split(/\n/, qx/who/);
        if(@users ne @old_users)
        {
                my $smtp = Net::SMTP->new($smtp_server);
                die "Couldn't connect to server" unless $smtp;
                $smtp->mail( $mail_from );
                $smtp->to( $mail_to );
                $smtp->data();
                $smtp->datasend("Subject: $subject\n\n");
                foreach my $user (@users)
                {
                        $smtp->datasend("$user\n");
                }
                $smtp->dataend();
                $smtp->quit();
        }
        @old_users=@users;
}

A root@mail.sajatdomain.hu helyére azt az e-mail-címet írjuk, ahová az értesítéseket kérjük.

FONTOS!

A szkript a rendszer saját postfix/sendmail szolgáltatását használja a kimenő levelekhez, és elég kevés információt tesz bele a levélbe, ezért könnyen lehet, hogy az olyan nagyobb rendszerek, mint a gmail, levélszemétként észlelik az így küldött üzeneteket. Főleg akkor, ha rendszeresen és sok ilyet kapunk egy nem éppen a szabványok szerint bekonfigurált SMTP-kiszolgálóról. Érdemes engedélyezési listára (whitelist) tenni a feladót, de a fenti szkriptet át is lehet írni igény szerint (akár egy külső SMTP-szolgáltatás, például a Postmark használatára).

Ez a probléma abban az esetben nem fog fennállni, ha a saját rendszerünkön saját magunk biztosítjuk az e-mail-fiókokat, és erre kérjük az értesítést, ebben az esetben azonban arra is fel kell készülnünk, hogy egy esetleges sikeres támadás után könnyen lehet, hogy sem az e-mailjeinket nem érjük már el, sem magát a rendszert, és így plusz információt sem kapunk egy esetleges támadóról. Éppen ezért javasolt inkább egy, a saját szerverünktől független, külső e-mail-címet megadni, amelyen akkor is látjuk a kapott üzeneteket, ha esetleg a saját gépünk már elesett.

Ennek elkerülése érdekében érdemes követni A tökéletes Ubuntu 18.04 LTS szerver telepítésének lépéseit, melynek során egy biztonságos kiszolgálót hozhatunk létre, amelyet igény szerint az ISPConfig webes adminisztrációs szoftverrel kezelhetünk.

Ezután módosítjuk a futtatási engedélyeket:

sudo chmod 755 /usr/sbin/user-monitor.pl

Ahhoz, hogy a szkript minden rendszerindításkor elinduljon a háttérben, felvesszük a crontab bejegyzései közé a következő sor beszúrásával:

sudo nano /etc/crontab
@reboot root    /usr/sbin/./user-monitor.pl&

Most pedig elindítjuk kézzel, hogy a rendszer újraindítása nélkül is elkezdjen futni a háttérben:

sudo /usr/sbin/./user-monitor.pl&

A sikeres indítást követően meg kell jelennie a futó folyamatok listájában:

ps aux | grep monitor.pl
root      1026  0.0  0.2  59548 11380 ?        S    Aug09   0:22 /usr/bin/perl /usr/sbin/./user-monitor.pl

Ha ezzel megvagyunk, akkor mostantól kezdve minden egyes SSH-s be- és kijelentkezéskor egy e-mailt kapunk a megadott e-mail-címen, amelyben szerepel a szerverünk neve és a bejelentkező felhasználó IP-címe is.

Chilly
Chilly

Chilly 1997 óta foglalkozik webhelyek üzemeltetésével és programozással, valamint különböző kütyük kipróbálásával, és azóta folyamatosan nyomon követi a technikai újításokat. Elsődlegesen Linux-rendszerekkel dolgozik, de az évek során rengeteg tapasztalatra tett szert a Windows-gépek üzemeltetése terén is, hobbiszinten pedig az utóbbi időben egyre több időt tölt a Raspberry Pi módosítgatásával, illetve otthoni automatizált és biztonságtechnikai rendszerek kiépítésével.
Mesterfokon beszél angolul, és műszaki szakfordítói vizsgával rendelkezik. Korábban sokáig újságíróként dolgozott nyomtatott és online magazinoknál.