summaryrefslogtreecommitdiff
path: root/LINUX/HOME_SERVER/Усиление безопасности Linux.md
diff options
context:
space:
mode:
Diffstat (limited to 'LINUX/HOME_SERVER/Усиление безопасности Linux.md')
-rw-r--r--LINUX/HOME_SERVER/Усиление безопасности Linux.md178
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