An open API service indexing awesome lists of open source software.

https://github.com/kukoboris/ubuntu-security-setup

Скрипт для автоматизированной настройки безопасности и оптимизации серверов Ubuntu
https://github.com/kukoboris/ubuntu-security-setup

bash-script hardening security server-setup ubuntu

Last synced: 8 months ago
JSON representation

Скрипт для автоматизированной настройки безопасности и оптимизации серверов Ubuntu

Awesome Lists containing this project

README

          

# Ubuntu Security Setup Script

[🇬🇧 English](docs/README.en.md) | [🇷🇺 Русский](README.md)

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Скрипт для автоматизированной настройки безопасности и оптимизации серверов Ubuntu 20.04 и 22.04. Этот инструмент обеспечивает комплексное усиление защиты системы, соответствующее современным стандартам безопасности.

## 🛡️ Функциональность

Скрипт выполняет следующие операции:

1. **Обновление системы**
- Полное обновление пакетов и дистрибутива
- Удаление неиспользуемых пакетов и очистка кэша

2. **Управление пользователями**
- Создание нового пользователя с привилегиями sudo
- Настройка аутентификации по SSH-ключам
- Ограничение доступа root-пользователя

3. **Настройка SSH**
- Изменение стандартного порта SSH
- Отключение входа по паролю
- Запрет доступа для пользователя root
- Настройка дополнительных параметров безопасности SSH
- Создание предупреждающего SSH-баннера

4. **Настройка файрвола (UFW)**
- Установка базовых правил (блокировка входящего трафика)
- Настройка разрешений для SSH и других выбранных сервисов
- Возможность определить дополнительные порты

5. **Защита от брутфорс-атак (fail2ban)**
- Установка и настройка fail2ban
- Создание правил для защиты SSH
- Настройка защиты от сканирования портов
- Конфигурирование правил для веб-серверов (опционально)

6. **Автоматические обновления**
- Установка и настройка unattended-upgrades
- Настройка автоматической очистки пакетов
- Настройка автоматической перезагрузки в определенное время

7. **Ведение логов (rsyslog)**
- Настройка системы журналирования
- Настройка ротации логов
- Настройка информативных сообщений журнала

8. **Установка системных утилит**
- Диагностические инструменты (htop, iotop, iftop)
- Сетевые инструменты (net-tools, curl, wget, nmap, tcpdump)
- Инструменты безопасности (lynis, rkhunter, chkrootkit)

9. **Расширенные меры безопасности**
- Настройка параметров ядра для усиления сетевой безопасности
- Ограничение доступа к критичным файлам
- Настройка политик паролей
- Настройка системы аудита (auditd)
- Настройка AppArmor
- Проверка на наличие руткитов

10. **Аудит безопасности**
- Запуск Lynis для оценки уровня безопасности
- Запуск проверок на руткиты
- Создание отчета о настройках

## ⚙️ Требования

- Ubuntu Server 20.04 LTS или 22.04 LTS
- Права пользователя root
- Интернет-подключение для загрузки пакетов

## 📥 Установка и использование

### Метод 1: Создание файла скрипта и его запуск

1. Создайте файл скрипта:

```bash
sudo nano /usr/local/bin/ubuntu-security-setup.sh
```

2. Скопируйте содержимое скрипта из репозитория в файл.

3. Сделайте скрипт исполняемым:

```bash
sudo chmod +x /usr/local/bin/ubuntu-security-setup.sh
```

4. Запустите скрипт:

```bash
sudo /usr/local/bin/ubuntu-security-setup.sh
```

### Метод 2: Установка непосредственно из репозитория

1. Установите Git, если он еще не установлен:

```bash
sudo apt update
sudo apt install -y git
```

2. Клонируйте репозиторий:

```bash
git clone https://github.com/kukoboris/ubuntu-security-setup.git
```

3. Перейдите в директорию репозитория:

```bash
cd ubuntu-security-setup
```

4. Сделайте скрипт исполняемым:

```bash
chmod +x ubuntu-security-setup.sh
```

5. Запустите скрипт:

```bash
sudo ./ubuntu-security-setup.sh
```

## 🚨 Предупреждения

- **Создайте резервную копию** перед запуском скрипта
- После настройки **доступ по SSH будет возможен только по ключу**
- После выполнения **доступ пользователя root будет ограничен**
- Скрипт **изменит порт SSH** на указанный вами
- После настройки **потребуется перезагрузка сервера**

## 📋 Результаты выполнения

После завершения скрипт создаст информационный файл `/root/security-setup-info.txt` с описанием всех выполненных настроек и рекомендациями по дальнейшему использованию. В файле будет содержаться информация о:

- Новом пользователе с правами администратора
- Измененном порте SSH
- Настроенных службах безопасности
- Рекомендациях по дальнейшему усилению безопасности
- Расположении важных логов для мониторинга

## 📊 Проверка безопасности

После выполнения скрипта рекомендуется проверить уровень безопасности:

```bash
lynis audit system
```

Скрипт автоматически запускает Lynis и показывает индекс защищенности (Hardening Index) в конце выполнения.

## 🔧 Настройки по умолчанию

- Политика паролей: длина не менее 12 символов, обязательно содержание цифр, заглавных и строчных букв, специальных символов
- SSH: аутентификация только по ключам
- Файрвол: блокировка всего входящего трафика, кроме SSH и выбранных вами сервисов
- Fail2ban: блокировка IP на 1 час после 3 неудачных попыток доступа
- Автоматические обновления: ежедневно, с перезагрузкой в 03:00

## 📝 Примечания

- Скрипт разработан и протестирован на Ubuntu 20.04 LTS и 22.04 LTS
- Для других дистрибутивов может потребоваться адаптация
- При возникновении проблем, проверьте логи: `/var/log/auth.log`, `/var/log/syslog`

## 🤝 Вклад в проект

Предложения и улучшения приветствуются! Пожалуйста, создавайте issue или pull request.

## 📜 Лицензия

Этот проект распространяется под лицензией MIT. См. файл LICENSE для дополнительной информации.

## 👤 Автор

- **kukoboris** - [GitHub](https://github.com/kukoboris)

---

⭐️ Если этот проект оказался полезным, поставьте звездочку репозиторию! ⭐️