May 7

10 bash-скриптов для усиления безопасности Linux

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

1. Включение автоматических обновлений безопасности

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

#!/bin/bash 
# Автоматическое обновление и установка исправлений безопасности
sudo apt-get update -y 
sudo apt-get upgrade -y 
sudo apt-get dist-upgrade -y 
# Установка unattended-upgrades, если они не установлены
sudo apt-get install unattended-upgrades -y 
# Включение автоматических обновлений
sudo dpkg-reconfigure --priority=low unattended-upgrades

- apt-get update -y обновляет, а apt-get upgrade -yмодернизирует все системные пакеты.
- unattended-upgradesобеспечивает применение автоматических обновлений безопасности.
- dpkg-reconfigureиспользуется для настройки автоматических обновлений в системе.

2. Отключение ненужных служб

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

#!/bin/bash 
# Список всех активных служб 
echo  "Список активных служб:"
sudo systemctl list-units --type=service --state=active 
# Отключение ненужных служб 
echo  "Отключение ненужных служб..."
sudo systemctl stop apache2 
sudo systemctl disable apache2 
sudo systemctl stop mysql 
sudo systemctl disable mysql

- systemctl list-unitsпоказывает все запущенные службы.
- systemctl stopостанавливает службу и systemctl disableотключает ее запуск при загрузке.
- Этот скрипт отключает Apache2 и MySQL в качестве примера.

3. Внедрение политики надежных паролей

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

#!/bin/bash 
# Установите пакет libpam-pwquality для настройки политик паролей
sudo apt-get install libpam-pwquality -y 
# Установите требования к сложности пароля
sudo sed -i 's/# minlen = 8/minlen = 12/' /etc/security/pwquality.conf 
sudo sed -i 's/# minclass = 1/minclass = 4/' /etc/security/pwquality.conf 
# Включите политику паролей в конфигурации PAM
sudo echo  "password tribute pam_pwquality.so retry=3" >> /etc/pam.d/common-password

- пакет libpam-pwqualityп предоставляет инструменты для соблюдения политики надежных паролей.
- параметрminlen устанавливает минимальную длину пароля, minclassзадает количество требуемых классов символов (заглавные, строчные, цифры, специальные символы).

4. Отключение входа root по SSH

Разрешение входа root через SSH представляет собой существенный риск безопасности. Этот скрипт отключает вход root SSH путем редактирования конфигурации SSH.

#!/bin/bash 
# Отключение вход root через SSH
sudo sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config 
# Перезапуск службу SSH, чтобы применить изменения
sudo systemctl restart sshd

- директива PermitRootLogin в конфигурации SSH контролирует, разрешен ли вход root. Установка значения «no» отключает его.
- systemctl restart sshdперезапускает службу SSH для применения изменений.

5. Обеспечение прав доступа к конфиденциальным файлам

Обеспечение правильных разрешений для конфиденциальных файлов важно для безопасности системы. Этот скрипт проверяет и корректирует разрешения для важных файлов, таких как /etc/passwdи /etc/shadow.

#!/bin/bash 
# Убедитесь, что у /etc/passwd и /etc/shadow правильные права доступа
sudo chmod 644 /etc/passwd 
sudo chmod 000 /etc/shadow 
# Проверьте права доступа 
echo  "Права доступа для /etc/passwd:" 
ls -l /etc/passwd 
echo  "Права доступа для /etc/shadow:" 
ls -l /etc/shadow

- chmod 644устанавливает разрешения на чтение и запись для владельца файла и только на чтение для остальных.
- chmod 000гарантирует, что никто не сможет читать или записывать в файл/etc/shadow, содержащий информацию о пароле пользователя.

6. Настройка брандмауэра (UFW)

Использование брандмауэра — важный шаг в защите сервера. Этот скрипт настраивает простой брандмауэр (UFW) для блокировки ненужных портов и разрешения только необходимых служб.

##!/bin/bash 
# Включить UFW
sudo ufw enable 
# Разрешить SSH (порт 22) и HTTP (порт 80)
sudo ufw allow 22 
sudo ufw allow 80 
# Запретить все остальные входящие соединения
sudo ufw default deny incoming
sudo ufw default allow outgoing 
# Показать статус UFW
sudo ufw status

- ufw enableвключает несложный брандмауэр (UFW).
- команды «allow» разрешают соединения SSH и HTTP.
- «default deny incoming» и «default allow outgoing» устанавливают правила по умолчанию для блокировки входящего трафика и разрешения исходящего трафика.

7. Регулярная ротация логов

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

#!/bin/bash 
# Установить logrotate, если он не установлен
sudo apt-get install logrotate -y 
# Создать пользовательский файл конфигурации logrotate 
echo  "/var/log/*.log { 
 daily 
 rotate 7 
 compress 
 delaycompress 
 missingok 
 notifempty 
 create 0640 root root 
}" | sudo tee /etc/logrotate.d/custom_logs 
# Проверить конфигурацию logrotate
sudo logrotate --debug /etc/logrotate.conf

- logrotateуправляет ротацией файлов журналов.
- файл конфигурации указывает, что журналы должны ротироваться ежедневно, сохранять 7 старых журналов и сжимать старые журналы для экономии места.
- флаг --debug проверяет правильность конфигурации logrotate.

8. Блокировка учетных записей пользователей после неудачных попыток входа в систему

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

#!/bin/bash 
# Установить pam_tally2, если он не установлен
sudo apt-get install libpam-modules -y 
# Установить политику блокировки для блокировки учетных записей пользователей после 5 неудачных попыток 
echo  "auth required pam_tally2.so onerr=fail deny=5" | sudo tee -a /etc/pam.d/common-auth 
# Сбросить счетчик неудачных попыток входа для всех пользователей
sudo pam_tally2 --user * --reset

- модульpam_tally2 отслеживает попытки входа в систему и блокирует учетную запись после указанного количества неудачных попыток ( deny=5).
- флаг --reset сбрасывает счетчик неудачных попыток входа для всех пользователей.

9. Обнаружение и удаление файлов SUID/SGID

Файлы SUID и SGID предоставляют пользователям повышенные привилегии и могут представлять угрозу безопасности. Этот скрипт проверяет и удаляет файлы SUID/SGID из системы.

#!/bin/bash 
# Поиск файлов SUID и SGID 
echo  "Поиск файлов SUID и SGID..."
find / - type f -executable -perm /4000 -o -perm /2000 
# При желании удалите их (закомментируйте эту строку, если не хотите удалять файлы) 
# find / -type f -executable -perm /4000 -o -perm /2000 -exec rm -f {} \;

- find / -type f -executable -perm /4000ищет файлы с установленным битом SUID (Set User ID).
- find / -type f -executable -perm /2000ищет файлы с установленным битом SGID (Set Group ID).
- Скрипт выводит список файлов, вы можете удалить их, раскомментировав последнюю строку.

10. Обеспечение надлежащих прав доступа пользователей к критически важным файлам

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

#!/bin/bash 
# Установка владельца и разрешений для критических системных файлов
sudo chown root:root /etc/passwd 
sudo chmod 644 /etc/passwd 
sudo chown root:root /etc/shadow 
sudo chmod 600 /etc/shadow 
# Проверка изменений 
ls -l /etc/passwd /etc/shadow

- chown root:rootгарантирует, что файлами владеет пользователь root.
- «chmod 644» гарантирует, что файл /etc/passwdдоступен для чтения другим пользователям, но доступен для записи только пользователю root.
- «chmod 600» ограничивает доступ /etc/shadowтолько пользователю root.

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.