diff options
Diffstat (limited to 'LINUX/HOME_SERVER/Усиление безопасности Linux.md')
| -rw-r--r-- | LINUX/HOME_SERVER/Усиление безопасности Linux.md | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/LINUX/HOME_SERVER/Усиление безопасности Linux.md b/LINUX/HOME_SERVER/Усиление безопасности Linux.md new file mode 100644 index 0000000..5d4ada7 --- /dev/null +++ b/LINUX/HOME_SERVER/Усиление безопасности Linux.md @@ -0,0 +1,178 @@ +### 10 bash-скриптов + +## 1. Включение автоматических обновлений безопасности + +Одной из важнейших практик поддержания безопасности систем является поддержание программного обеспечения в актуальном состоянии. Этот скрипт включит автоматические обновления безопасности в системе Linux, гарантируя, что система всегда будет защищена от уязвимостей. +```sh +#!/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. Отключение ненужных служб + +Во многих системах ненужные службы запущены по умолчанию. Отключение этих служб уменьшает количество целей для атаки сервера. Этот скрипт выведет список и отключит ненужные службы. +```sh +#!/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. Внедрение политики надежных паролей + +Обеспечение соблюдения пользователями политики надежных паролей необходимо для безопасности системы. Этот скрипт настроит политику паролей системы для обеспечения надежных паролей. +```sh +#!/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. +```sh +#!/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`. +```sh +#!/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) для блокировки ненужных портов и разрешения только необходимых служб. +```sh +##!/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. Регулярная ротация логов + +Чтобы избежать заполнения диска логами, следует настроить регулярную ротацию логов. Этот скрипт настраивает ротацию логов на ежедневной основе. +```sh +#!/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 неудачных попыток входа в систему. +```sh +#!/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 из системы. +```sh +#!/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 и доступны только ему. +```sh +#!/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](https://t.me/usr_bin_linux), где будет еще больше полезной информации.
\ No newline at end of file |
