🐧 Bash скрипт для проверки успешных и неудачных попыток входа пользователя в Linux

Одна из типичных задач администраторов Linux – проверка успешных и неудачных попыток входа в систему Linux.

Это гарантирует, что не будет никаких незаконных покушений на окружающую среду.

Их очень трудно проверить вручную, потому что вывод файла «/var/log/secure» выглядит нечитабельно.

Чтобы сделать это проще и эффективнее, нам нужно написать скрипт на bash.

Я включил в этот учебник два скрипта.

Эти скрипты покажут количество пользователей, вошедших в систему за определенную дату.

Кроме того, они показывают успешные попытки входа в систему, а также неудачные.

Первый скрипт позволяет вам проверять информацию о доступе пользователя по любой дате, доступной в файле «/var/log/secure».

Способ 1: скрипт  для проверки успешных и неудачных попыток входа пользователя в Linux

Этот скрипт позволяет вам проверить информацию о доступе пользователя по заданной дате из терминала.

# vi /opt/scripts/user-access-details.sh



#!/bin/bash

echo ""

echo -e "Enter the Date, Use Double Space for date from 1 to 9 (Nov  3) and use Single Space for date from 10 to 31 (Nov 30): c"

read yday

MYPATH=/var/log/secure*

tuser=$(grep "$yday" $MYPATH | grep "Accepted|Failed" | wc -l)

suser=$(grep "$yday" $MYPATH | grep "Accepted password|Accepted publickey|keyboard-interactive" | wc -l)

fuser=$(grep "$yday" $MYPATH | grep "Failed password" | wc -l)

scount=$(grep "$yday" $MYPATH | grep "Accepted" | awk '{print $9;}' | sort | uniq -c)

fcount=$(grep "$yday" $MYPATH | grep "Failed" | awk '{print $9;}' | sort | uniq -c)

echo "--------------------------------------------"

echo "       User Access Report on: $yday"

echo "--------------------------------------------"

echo "Number of Users logged on System: $tuser"

echo "Successful logins attempt: $suser"

echo "Failed logins attempt: $fuser"

echo "--------------------------------------------"

echo -e "Success User Details:n $scount"

echo "--------------------------------------------"

echo -e "Failed User Details:n $fcount"

echo "--------------------------------------------"

Установите права на исполнение файла «user-access-details-1.sh».

# chmod +x /opt/scripts/user-access-details-1.sh

Когда вы запустите скрипт, вы получите предупреждение, подобное приведенному ниже.

# sh /opt/scripts/user-access-details.sh



Enter the Date, Use Double Space for date from 1 to 9 (Nov  3) and use Single Space for date from 10 to 31 (Nov 30): Nov  6

------------------------------------------

        User Access Report on: Nov  6

------------------------------------------

Number of Users logged on System: 1

Successful logins attempt: 1

Failed logins attempt: 0

------------------------------------------

Success User Details:

       1 root

------------------------------------------

Failed User Details:

------------------------------------------

еще пример:

# sh /opt/scripts/user-access-details.sh



Enter the Date, Use Double Space for date from 1 to 9 (Nov  3) and use Single Space for date from 10 to 31 (Nov 30): Nov 30

------------------------------------------

        User Access Report on: Nov 30

------------------------------------------

Number of Users logged on System: 20

Successful logins attempt: 14

Failed logins attempt: 6

------------------------------------------

Success User Details:

       1 daygeek

      1 root

      3 u1

      4 u2

      1 u3

      2 u4

      2 u5

------------------------------------------

Failed User Details:

       3 u1

      3 u4

------------------------------------------

Метод 2: Скрипт для проверки успешных и неудачных попыток входа пользователя в систему с помощью электронной почты.

Этот скрипт на Bash позволяет вам ежедневно отправлять почту с информацией о доступе пользователя по электронной почте на вчерашнюю дату.

# vi /opt/scripts/user-access-details-2.sh



#!/bin/bash

/tmp/u-access.txt

SUBJECT="User Access Reports on "date""

MESSAGE="/tmp/u-access.txt"

TO="admin@itsecforu.ru"

MYPATH=/var/log/secure*

yday=$(date --date='yesterday' | awk '{print $2,$3}')

tuser=$(grep "$yday" $MYPATH | grep "Accepted|Failed" | wc -l)

suser=$(grep "$yday" $MYPATH | grep "Accepted password|Accepted publickey|keyboard-interactive" | wc -l)

fuser=$(grep "$yday" $MYPATH | grep "Failed password" | wc -l)

scount=$(grep "$yday" $MYPATH | grep "Accepted" | awk '{print $9;}' | sort | uniq -c)

fcount=$(grep "$yday" $MYPATH | grep "Failed" | awk '{print $9;}' | sort | uniq -c)

echo "--------------------------------------------" >> $MESSAGE

echo "       User Access Report on: $yday" >> $MESSAGE

echo "--------------------------------------------" >> $MESSAGE

echo "Number of Users logged on System: $tuser" >> $MESSAGE

echo "Successful logins attempt: $suser" >> $MESSAGE

echo "Failed logins attempt: $fuser" >> $MESSAGE

echo "--------------------------------------------" >> $MESSAGE

echo -e "Success User Details:n $scount" >> $MESSAGE

echo "--------------------------------------------" >> $MESSAGE

echo -e "Failed User Details:n $fcount" >> $MESSAGE

echo "--------------------------------------------" >> $MESSAGE

mail -s "$SUBJECT" "$TO" < $MESSAGE

Установите права на исполнение файла «user-access-details-2.sh».

# chmod +x /opt/scripts/user-access-details-2.sh

Наконец добавьте cronjob, чтобы автоматизировать это действие.

Он будет срабатывать каждый день в 8 часов.

# crontab -e



0 8 * * * /bin/bash /opt/scripts/user-access-details-2.sh

Примечание. Вы будете получать оповещения по электронной почте каждый день в 8 часов, что относится к информации о доступе пользователей за предыдущий день.



2019-12-04T16:10:51
Скрипты