Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия | |||
| vm:ubuntu:script:02-root_user [2025/09/21 21:20] – admin | vm:ubuntu:script:02-root_user [2025/09/21 21:25] (текущий) – admin | ||
|---|---|---|---|
| Строка 20: | Строка 20: | ||
| * ✅ Проверка результатов и рекомендации по безопасности | * ✅ Проверка результатов и рекомендации по безопасности | ||
| - | ===== Установка и запуск ===== | + | ===== Создание |
| - | ==== Шаг 1: Создание файла скрипта | + | Создание файла скрипта |
| - | + | ||
| - | <code bash> | + | |
| - | nano / | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Создание и запуск скрипта ==== | + | |
| <code bash> | <code bash> | ||
| + | cd ~ | ||
| nano activate_root.sh | nano activate_root.sh | ||
| </ | </ | ||
| - | Скопируйте | + | Скопируйте |
| <code bash> | <code bash> | ||
| Строка 43: | Строка 38: | ||
| **ВАЖНО!** Скрипт должен запускаться с правами sudo | **ВАЖНО!** Скрипт должен запускаться с правами sudo | ||
| + | ===== Код скрипта ===== | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | # Скрипт активации учетной записи root на Ubuntu | ||
| + | # Автор: Nick | ||
| + | # Версия: | ||
| set -e # Остановка скрипта при любой ошибке | set -e # Остановка скрипта при любой ошибке | ||
| - | |||
| echo "=== Скрипт активации учетной записи root на Ubuntu ===" | echo "=== Скрипт активации учетной записи root на Ubuntu ===" | ||
| echo " | echo " | ||
| echo | echo | ||
| - | |||
| # Проверка прав администратора | # Проверка прав администратора | ||
| if [ " | if [ " | ||
| Строка 55: | Строка 55: | ||
| exit 1 | exit 1 | ||
| fi | fi | ||
| - | |||
| # Проверка операционной системы | # Проверка операционной системы | ||
| if ! grep -q " | if ! grep -q " | ||
| Строка 65: | Строка 64: | ||
| fi | fi | ||
| fi | fi | ||
| - | |||
| echo " | echo " | ||
| root_status=$(passwd -S root) | root_status=$(passwd -S root) | ||
| echo " | echo " | ||
| - | |||
| # Проверка статуса root (P = пароль установлен, | # Проверка статуса root (P = пароль установлен, | ||
| root_status_code=$(echo " | root_status_code=$(echo " | ||
| - | |||
| echo | echo | ||
| if [[ " | if [[ " | ||
| Строка 126: | Строка 122: | ||
| fi | fi | ||
| done | done | ||
| - | |||
| echo | echo | ||
| echo "=== Шаг 2: Разблокировка учетной записи root ===" | echo "=== Шаг 2: Разблокировка учетной записи root ===" | ||
| Строка 137: | Строка 132: | ||
| fi | fi | ||
| fi | fi | ||
| - | |||
| echo | echo | ||
| echo "=== Шаг 3: Настройка SSH доступа для root (опционально) ===" | echo "=== Шаг 3: Настройка SSH доступа для root (опционально) ===" | ||
| read -p " | read -p " | ||
| echo | echo | ||
| - | |||
| if [[ $REPLY =~ ^[Yy]$ ]]; then | if [[ $REPLY =~ ^[Yy]$ ]]; then | ||
| # Создание резервной копии конфигурации SSH | # Создание резервной копии конфигурации SSH | ||
| Строка 167: | Строка 160: | ||
| echo " | echo " | ||
| fi | fi | ||
| - | |||
| echo | echo | ||
| echo "=== Шаг 4: Проверка результатов ===" | echo "=== Шаг 4: Проверка результатов ===" | ||
| - | |||
| # Проверка статуса пользователя root | # Проверка статуса пользователя root | ||
| echo " | echo " | ||
| passwd -S root | passwd -S root | ||
| - | |||
| # Проверка возможности входа | # Проверка возможности входа | ||
| echo | echo | ||
| echo " | echo " | ||
| grep " | grep " | ||
| - | |||
| # Проверка групп root | # Проверка групп root | ||
| echo | echo | ||
| echo " | echo " | ||
| groups root | groups root | ||
| - | |||
| # Проверка SSH конфигурации (если была изменена) | # Проверка SSH конфигурации (если была изменена) | ||
| if [[ $REPLY =~ ^[Yy]$ ]]; then | if [[ $REPLY =~ ^[Yy]$ ]]; then | ||
| Строка 191: | Строка 179: | ||
| grep " | grep " | ||
| fi | fi | ||
| - | |||
| echo | echo | ||
| echo "=== Шаг 5: Управление пользователями системы ===" | echo "=== Шаг 5: Управление пользователями системы ===" | ||
| Строка 205: | Строка 192: | ||
| awk -F: ' | awk -F: ' | ||
| echo | echo | ||
| - | |||
| read -p " | read -p " | ||
| echo | echo | ||
| - | |||
| if [[ $REPLY =~ ^[Yy]$ ]]; then | if [[ $REPLY =~ ^[Yy]$ ]]; then | ||
| echo "=== Удаление пользователей ===" | echo "=== Удаление пользователей ===" | ||
| Строка 376: | Строка 361: | ||
| done | done | ||
| fi | fi | ||
| - | |||
| echo | echo | ||
| echo "=== Информация о безопасности ===" | echo "=== Информация о безопасности ===" | ||
| cat << ' | cat << ' | ||
| ВАЖНО! После активации root: | ВАЖНО! После активации root: | ||
| - | |||
| 1. Используйте сильный пароль для root | 1. Используйте сильный пароль для root | ||
| 2. Рассмотрите использование SSH ключей вместо паролей | 2. Рассмотрите использование SSH ключей вместо паролей | ||
| Строка 388: | Строка 371: | ||
| 5. Мониторьте логи на предмет подозрительной активности | 5. Мониторьте логи на предмет подозрительной активности | ||
| 6. Рассмотрите отключение root после настройки системы | 6. Рассмотрите отключение root после настройки системы | ||
| - | |||
| Логи входа в систему: | Логи входа в систему: | ||
| Для отключения root: sudo passwd -l root | Для отключения root: sudo passwd -l root | ||
| EOF | EOF | ||
| - | |||
| echo | echo | ||
| echo "=== Дополнительные команды (опционально) ===" | echo "=== Дополнительные команды (опционально) ===" | ||
| read -p " | read -p " | ||
| echo | echo | ||
| - | |||
| if [[ $REPLY =~ ^[Yy]$ ]]; then | if [[ $REPLY =~ ^[Yy]$ ]]; then | ||
| cat << ' | cat << ' | ||
| Дополнительные команды безопасности: | Дополнительные команды безопасности: | ||
| - | |||
| # Настройка SSH ключей для root: | # Настройка SSH ключей для root: | ||
| mkdir -p /root/.ssh | mkdir -p /root/.ssh | ||
| Строка 407: | Строка 386: | ||
| # Добавить публичный ключ в / | # Добавить публичный ключ в / | ||
| chmod 600 / | chmod 600 / | ||
| - | |||
| # Настройка файрвола (не включается автоматически): | # Настройка файрвола (не включается автоматически): | ||
| # ufw enable | # ufw enable | ||
| Строка 413: | Строка 391: | ||
| # ufw default allow outgoing | # ufw default allow outgoing | ||
| # ufw allow ssh | # ufw allow ssh | ||
| - | |||
| # Отключение root после настройки: | # Отключение root после настройки: | ||
| passwd -l root | passwd -l root | ||
| - | |||
| # Изменение SSH порта: | # Изменение SSH порта: | ||
| # Измените Port 22 на другой порт в / | # Измените Port 22 на другой порт в / | ||
| # systemctl restart ssh | # systemctl restart ssh | ||
| - | |||
| # Мониторинг попыток входа: | # Мониторинг попыток входа: | ||
| tail -f / | tail -f / | ||
| EOF | EOF | ||
| fi | fi | ||
| - | |||
| echo | echo | ||
| echo "=== Активация root завершена ===" | echo "=== Активация root завершена ===" | ||
| echo " | echo " | ||
| passwd -S root | passwd -S root | ||
| - | |||
| exit 0 | exit 0 | ||
| - | echo " | + | </ |
| - | echo " | + | |
| - | echo | + | |
| - | read -p " | + | |
| - | echo | + | |
| - | if [[ $REPLY =~ ^[Yy]$ ]]; then | + | |
| - | echo " | + | |
| - | pkill -u " | + | |
| - | sleep 2 | + | |
| - | + | ||
| - | # Принудительное завершение если нужно | + | |
| - | who | grep " | + | |
| - | echo " | + | |
| - | pkill -u " | + | |
| - | } | + | |
| - | + | ||
| - | echo "✓ Сессии завершены" | + | |
| - | else | + | |
| - | echo "✗ Невозможно удалить пользователя с активными сессиями" | + | |
| - | continue | + | |
| - | fi | + | |
| - | else | + | |
| - | echo "✓ Активных сессий не найдено" | + | |
| - | fi | + | |
| - | echo | + | |
| - | + | ||
| - | echo " | + | |
| - | echo "1) Удалить только пользователя (сохранить домашнюю папку)" | + | |
| - | echo "2) Удалить пользователя и домашнюю папку" | + | |
| - | echo "3) Удалить пользователя, | + | |
| - | echo "4) Отмена" | + | |
| - | + | ||
| - | read -p " | + | |
| - | echo | + | |
| - | + | ||
| - | case $REPLY in | + | |
| - | 1) | + | |
| - | deluser " | + | |
| - | if [ $? -eq 0 ]; then | + | |
| - | echo "✓ Пользователь ' | + | |
| - | else | + | |
| - | echo "✗ Ошибка удаления пользователя ' | + | |
| - | fi | + | |
| - | ;; | + | |
| - | 2) | + | |
| - | deluser --remove-home " | + | |
| - | if [ $? -eq 0 ]; then | + | |
| - | echo "✓ Пользователь ' | + | |
| - | else | + | |
| - | echo "✗ Ошибка удаления пользователя ' | + | |
| - | fi | + | |
| - | ;; | + | |
| - | 3) | + | |
| - | deluser --remove-home --remove-all-files " | + | |
| - | if [ $? -eq 0 ]; then | + | |
| - | echo "✓ Пользователь ' | + | |
| - | else | + | |
| - | echo "✗ Ошибка удаления пользователя ' | + | |
| - | fi | + | |
| - | ;; | + | |
| - | 4) | + | |
| - | echo " | + | |
| - | ;; | + | |
| - | *) | + | |
| - | echo "✗ Неверный выбор" | + | |
| - | ;; | + | |
| - | esac | + | |
| - | echo | + | |
| - | done | + | |
| - | fi | + | |
| - | + | ||
| - | echo | + | |
| - | echo "=== Информация о безопасности ===" | + | |
| - | cat << ' | + | |
| - | ВАЖНО! После активации root: | + | |
| - | + | ||
| - | 1. Используйте сильный пароль для root | + | |
| - | 2. Рассмотрите использование SSH ключей вместо паролей | + | |
| - | 3. Настройте файрвол (ufw) для ограничения доступа | + | |
| - | 4. Регулярно обновляйте систему | + | |
| - | 5. Мониторьте логи на предмет подозрительной активности | + | |
| - | 6. Рассмотрите отключение root после настройки системы | + | |
| - | + | ||
| - | Логи входа в систему: | + | |
| - | Для отключения root: sudo passwd -l root | + | |
| - | EOF | + | |
| - | + | ||
| - | echo | + | |
| - | echo "=== Дополнительные команды (опционально) ===" | + | |
| - | read -p " | + | |
| - | echo | + | |
| - | + | ||
| - | if [[ $REPLY =~ ^[Yy]$ ]]; then | + | |
| - | cat << ' | + | |
| - | Дополнительные команды безопасности: | + | |
| - | + | ||
| - | # Настройка SSH ключей для root: | + | |
| - | mkdir -p / | + | |
| - | chmod 700 / | + | |
| - | # Добавить публичный ключ в / | + | |
| - | chmod 600 / | + | |
| - | + | ||
| - | # Настройка файрвола (не включается автоматически): | + | |
| - | # ufw enable | + | |
| - | # ufw default deny incoming | + | |
| - | # ufw default allow outgoing | + | |
| - | # ufw allow ssh | + | |
| - | + | ||
| - | # Отключение root после настройки: | + | |
| - | passwd -l root | + | |
| - | + | ||
| - | # Изменение SSH порта: | + | |
| - | # Измените Port 22 на другой порт в / | + | |
| - | # systemctl restart ssh | + | |
| - | + | ||
| - | # Мониторинг попыток входа: | + | |
| - | tail -f / | + | |
| - | EOF | + | |
| - | fi | + | |
| - | + | ||
| - | echo | + | |
| - | echo "=== Активация root завершена ===" | + | |
| - | echo " | + | |
| - | passwd -S root | + | |
| - | + | ||
| - | ===== Код скрипта ===== | + | |
| - | + | ||
| - | <code bash> | + | |
| - | # | + | |
| - | + | ||
| - | # Скрипт активации учетной записи root на Ubuntu | + | |
| - | # Версия: | + | |
| ===== Пошаговое использование ===== | ===== Пошаговое использование ===== | ||
| Строка 685: | Строка 527: | ||
| chmod 600 / | chmod 600 / | ||
| - | # Настройка файрвола | + | # Настройка файрвола |
| - | ufw default deny incoming | + | # ufw default deny incoming |
| - | ufw default allow outgoing | + | # ufw default allow outgoing |
| - | ufw allow ssh | + | # ufw allow ssh |
| - | ufw enable | + | # ufw enable |
| # Мониторинг попыток входа | # Мониторинг попыток входа | ||
| Строка 701: | Строка 543: | ||
| ^ Проблема ^ Причина ^ Решение ^ | ^ Проблема ^ Причина ^ Решение ^ | ||
| | `userdel: user is currently used by process` | Активные процессы пользователя | Выберите завершение процессов в скрипте | | | `userdel: user is currently used by process` | Активные процессы пользователя | Выберите завершение процессов в скрипте | | ||
| - | | `Permission denied` при запуске | Отсутствие sudo прав | Запустите: | + | | `Permission denied` при запуске | Отсутствие sudo прав | Запустите: |
| | SSH не перезапускается | Ошибка в конфигурации | Проверьте `/ | | SSH не перезапускается | Ошибка в конфигурации | Проверьте `/ | ||
| | Root остается заблокированным | Системная политика | Выполните: | | Root остается заблокированным | Системная политика | Выполните: | ||