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, где будет еще больше полезной информации.