Одна из типичных задач администраторов 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 "--------------------------------------------"
# 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
# crontab -e 0 8 * * * /bin/bash /opt/scripts/user-access-details-2.sh