Cкрипты проверки безопасности Linux. Часть 1

Cкрипты проверки безопасности Linux. Часть 1

Life-Hack [Жизнь-Взлом]/Хакинг

#Полезное

Большинство таких корпоративных и многокомпонентных систем, таких как SAPOracle DB, используют на своей платформе операционную систему на базе Linux. В связи с этим они привлекли к себе пристальное внимание со стороны IT-аудиторов.

 Сегодня в статье мы представим вашему вниманию несколько бесплатных инструментов, представленных в виде скриптов и использующих стандартные механизмы ОС для проведения экспресс-аудита конфигурации безопасности.

Опсанные ниже системные команды и сценарии, используемые для быстрого управления параметрами безопасности в системах Linux, основаны на рекомендациях по проверке безопасности, опубликованных сообществом ISACA в руководстве UNIX-LINUX-Operating-System-Security-Audit-Assurance-Program.

Проверка учетных записей 

1.1 Вывести список всех пользователей 

Список пользователей хранится в файле /etc/passwdfile. Для получения списка пользователей можно использовать следующий скрипт:

#!/bin/bash
# userslistinthesystem.sh
# count and Lists existing “real” users in the system.
echo
echo “[*] Existing users (sorted alphabetically):”
echo
grep ‘/bin/bash’ /etc/passwd | grep -v ‘root’ | cut -f1
-d’:’ | sort
echo
echo -n “[*] Number of real users found: “
grep ‘/bin/bash’ /etc/passwd | grep -v ‘root’ | wc -l
echo

1.2 Вывести список заблокированных учетных записей 

В ходе аудита, необходимо проверить список заблокированных и разблокированных пользователей (accountName). Для этого подойдет следующая команда:

#!/bin/bash
echo
# passwd –s accountName

1.3 Просмотр статистики по всем пользователям 

Аудитор должен убедиться, что команда ac включена в системе, для обзора деятельности пользователей:

#!/bin/bash
# ac

Для просмотра активности сеанса подключения пользователя с итогами за каждый день используйте команду:

#!/bin/bash
# ac -d

Для вывода информации и, об активности сеанса (в часах) подключения пользователя «user»:

#!/bin/bash
# ac user

1.4 Просмотр активности пользователей 

Приложения в системе psacct или acct работают в фоновом режиме и отслеживают активность каждого пользователя в системе, а также потребляемые ими ресурсы. Чтобы проверить активность пользователя в системе, запустите следующий скрипт:

#!/usr/bin/envksh
last -Fa|awk ‘
/wtmp begins/ { next; }
/still logged in/ { next; }
$0 == reboot { next; }
NF >  0 {
if( NR > 1 )
printf( “\n” );
printf( “ User:\t%s\n”, $1 ); # user
printf( “ Start:\t%s %s %s %s\n”, $3, $4, $5, $6 );
if( $9 == “down” )
printf( “ End:\tshutdown\n” );
else
printf( “ End:\t%s %s %s %s\n”, $9, $10, $11, $12 );
if( substr( $NF, 1, 1 ) == “(“ )
{
t = $NF;
h = “localhost”;
}
else
{
t = $(NF-1);
h = $NF;
}
gsub( “[()]”, “”, t );
printf( “ Time On:\t%s\n”, t );
printf( “Remote Host:\t%s\n”, h );
}‘

Проверка парольной политики 

2.1 Учетные записи с пустым паролем 

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

# cat /etc/shadow | awk -F: ($2==””){print $1}’

2.2 Проверка сложности пароля 

В ходе аудита, необходимо проверить настройки сложности пароля, чтобы снизить риск атак на пароль брутфорсом (перебором) или подбором по словарю. Для установки этого правила в системе необходимо использовать подключаемые модули аутентификации (PAM). 

Аудитор может проверить соответствующую настройку в файле конфигурации: 

# vi /etc/pam.d/system-auth 

2.3 Проверка срока действия пароля 

Во время аудита необходимо проверить настройку срока действия пароля. Используйте команду изменения, чтобы проверить срок действия пароля. Эта команда отображает подробную информацию о дате истечения срока действия пароля и дате его последнего изменения.

Следующая команда отображает информацию о «возрасте» паролей:

#chage -l username 

Для изменения срока истечения пароля конкретного пользователя можно использовать команды указанные ниже: 

#chage -M 60 username 
#chage -M 60 -m 7 -W 7 userName 

Параметры (для установки срока действия пароля): 

-M – максимальный срок действия в днях. 

-m – минимальный срок действия в днях. 

-W – настройка предупреждения в днях. 

2.4 Использование повторяющихся паролей 

Настройки авторизации в систему должны соответствовать парольной политике. Файл содержащий историю паролей находится в /etc/security/opasswd. Для проверки необходимо выполнить следующие шаги: 

для RHEL: открыть файл ‘/etc/pam.d/system-auth‘: 

# vi /etc/pam.d/system-auth  

Ubuntu/Debian/Linux Mint: открыть файл ‘/etc/pam.d/common-password‘: 

# vi /etc/pam.d/common-password 

Добавить следующую строку раздел ‘auth’: 

auth sufficient pam_unix.so likeauthnullok  

Для запрета использовать последние шесть паролей добавьте следующую строку: 

Password sufficient pam_unix.so nullokuse_authtok md5 shadow remember=6 

После выполнения команды, система будет хранить историю о предыдущих шести паролей, и если какой-либо пользователь пытается обновить пароль, используя любой из последних шести, он получит сообщение об ошибке. 

3. Настройки защищенного подключения 

Протоколы удаленного подключения к системе Telnet и Rlogin очень старые и уязвимые из-за передачи пароля по сети в незашифрованном виде. Для удаленного и безопасного подключения необходимо использовать протокол Secure Shell (SSH). Аудитору также необходимо убедиться, что опция входа в систему root отключена, порт SSH по умолчанию был изменен и удаленный доступ разрешен только для определенных авторизованных пользователей. Отмеченные настройки находятся в конфигурационном файле SSH: 

# vi /etc/ssh/sshd_config 

3.1 Вход в систему от имени суперпользователя (root login) 

В ходе аудита, аудитор должен проверить запрет удаленного входа в систему с правами суперпользователя root. 

# PermitRootLogin = yes 

3.2 Проверка служебного аккаунта SSH login 

В ходе аудита аудитор должен проверить учетную запись службы с логином SSH без пароля. Обычно системные администраторы используют эту функцию для выполнения запрограммированного резервного копирования, передачи файлов и выполнения сценариев в режиме удаленного управления. 

Check your sshd_config settings (/etc/ssh/sshd_config) are correct one last time. 

# PermitRootLogin without-password 
# RSAAuthentication = yes
# PubkeyAuthentication = yes 

3.3 Проверка списков доступа в DenyHosts и Fail2ban 

Во время аудита необходимо проверить параметры списков доступа DenyHosts и Fail2ban. Это сценарии, используемые для мониторинга и анализа журналов доступа SSH и защиты от парольных атак методом перебора. 

Особенности DenyHosts: 

  • сохраняет и отслеживает журналы из файла /var/log/secure, отметив, все успешные и неудачные попытки входа, и фильтрует их.
  • осуществляет мониторинг неудачных попыток входа
  • отправляет по электронной почте уведомление о заблокированных хостах и подозрительных попытках входа 

Особенности Fail2ban: 

  • Сохраняет и отслеживает журналы из файлов /var/log/secure и /var/log/auth.log/var/log/pwdfail
  • высоко настраиваемый и многопоточный
  • следит за файлами журналов на регул 

4. Проверка системных журналов 

В ходе аудита, необходимо убедиться, что запущен демон SysLog, а все значимые события происходящие в системе фиксируются в журналах событий. В ходе аудита также необходимо убедится, что политика хранения журналов событий учитывает требования действующего законодательства и политики безопаности 

4.1 Журналы событий в Linux: 

/var/log/auth.log – журнал системы авторизации (логины и механизм проверки подлинности). 

/var/log/dpkg.log – журнал установки/удаления пакетов с использованием dpkg. 

/var/log/yum.log – журнал установки/удаления пакетов с использованием yum. 

/var/log/faillog – журнал неудачных попыток входа в систему и их предельного числа для каждой учётной записи. 

/var/log/kern.log – журнал ядра, (подробный лог сообщений от ядра Linux). 

/var/log/maillog или /var/log/mail.log – журнал почтового сервера. 

/var/log/wtmp – журнал входа в систему (время регистрации и продолжительность работы всех пользователей системы). 

/var/run/utmp – сведения о пользователях, зарегистрированных в системе в настоящее время. 

/var/log/lastlog – записи о предыдущих входах в систему. 

/var/log/boot – информация, которая регистрируется во время загрузки системы

Продолжение следует…

Источник



Report Page