DEV Community

Cover image for 🐧 Hardening Linux: практическое руководство для безопасной работы
Sascha
Sascha

Posted on

🐧 Hardening Linux: практическое руководство для безопасной работы

Одна команда rm -rf способна уничтожить целую систему.

Эта статья — практическое руководство, как сделать Linux максимально безопасным:

от защиты от случайных удалений до настройки файрвола и резервных копий.


🧱 1. Защита от случайных удалений

🔹 1.1 — Делайте rm интерактивным

Добавьте в ~/.bashrc:

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
Enter fullscreen mode Exit fullscreen mode

Теперь перед удалением, копированием или перемещением Linux всегда спросит подтверждение.

Примените изменения:

source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

🔹 1.2 — Безопасная корзина через trash-cli

Чтобы rm не удалял файлы навсегда, установите утилиту корзины:

sudo apt install trash-cli
Enter fullscreen mode Exit fullscreen mode

Добавьте в ~/.bashrc:

alias rm='trash'
Enter fullscreen mode Exit fullscreen mode

Теперь все файлы отправляются в:

~/.local/share/Trash/files/
Enter fullscreen mode Exit fullscreen mode

Восстановить можно так:

trash-restore
Enter fullscreen mode Exit fullscreen mode

🔹 1.3 — Подтверждение даже при rm -rf

Создайте безопасную функцию в ~/.bashrc:

safe_trash() {
    echo "⚠️  Вы собираетесь удалить: $@"
    read -p "❓ Отправить в корзину? (y/N): " confirm
    if [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]]; then
        command trash "$@"
    else
        echo "🚫 Удаление отменено."
    fi
}
alias rm='safe_trash'
Enter fullscreen mode Exit fullscreen mode

Теперь даже rm -rf myfolder не сработает без явного подтверждения.
Файлы при этом перемещаются в корзину, а не уничтожаются.


🔹 1.4 — “Двойной уровень безопасности”

Если хотите иметь возможность удалять “по-настоящему”, добавьте в .bashrc это:

# rm — безопасное удаление в корзину
safe_trash() {
    echo "⚠️  Вы собираетесь удалить: $@"
    read -p "❓ Отправить в корзину? (y/N): " confirm
    if [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]]; then
        command trash "$@"
    else
        echo "🚫 Удаление отменено."
    fi
}
alias rm='safe_trash'

# rm! — настоящее удаление без корзины, но с подтверждением
rm_force() {
    echo "⚠️  ОПАСНОЕ УДАЛЕНИЕ: $@"
    read -p "Введите 'yes' для подтверждения: " confirm
    if [[ "$confirm" == "yes" ]]; then
        command rm "$@"
    else
        echo "🚫 Удаление отменено."
    fi
}
alias rm!='rm_force'
Enter fullscreen mode Exit fullscreen mode

Теперь:

  • rm something → безопасно, в корзину
  • rm! something → настоящее удаление (только после “yes”)

🛡️ 2. Резервные копии и восстановление

🔹 Timeshift — «точки восстановления» для Linux

sudo apt install timeshift
sudo timeshift-gtk
Enter fullscreen mode Exit fullscreen mode

Можно восстанавливать систему, как в Windows.
Рекомендуется создавать снимки раз в день или перед установкой пакетов.


🔒 3. Минимизация прав и системная защита

🔹 Не злоупотребляйте sudo

Для редактирования системных файлов:

sudoedit /etc/имя_файла
Enter fullscreen mode Exit fullscreen mode

Безопаснее, чем sudo nano, потому что не даёт случайно стереть файл.

🔹 Изолируйте /home

Если /home находится на отдельном разделе, данные пользователей не пострадают при сбое системы.


🌐 4. Сетевая безопасность

🔹 Настройте файрвол

sudo apt install ufw
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw status
Enter fullscreen mode Exit fullscreen mode

🔹 Проверка на вредоносные процессы

sudo apt install chkrootkit
sudo chkrootkit
Enter fullscreen mode Exit fullscreen mode

⚙️ 5. Умный скрипт «Безопасный Linux»

Создайте safe_linux_setup.sh:

#!/bin/bash
set -e

echo "🔧 Настройка безопасного окружения Linux..."
echo

# === УСТАНОВКА НЕОБХОДИМЫХ ПАКЕТОВ ===
echo "📦 Установка утилит: trash-cli, timeshift, ufw..."
sudo apt install -y trash-cli timeshift ufw

# === БЕЗОПАСНЫЕ АЛИАСЫ ===
echo "🧱 Настройка безопасных алиасов..."
{
  echo ""
  echo "# === Safe Linux Aliases ==="
  echo "alias cp='cp -i'"
  echo "alias mv='mv -i'"
} >> ~/.bashrc

# === SAFE_TRASH И RM_FORCE ===
echo "🗑️  Добавление функций safe_trash и rm_force..."
{
  echo ""
  echo "# === Safe Remove Functions ==="
  cat <<'EOF'
safe_trash() {
    echo "⚠️  Вы собираетесь удалить: $@"
    read -p "❓ Отправить в корзину? (y/N): " confirm
    if [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]]; then
        command trash "$@"
    else
        echo "🚫 Удаление отменено."
    fi
}
alias rm='safe_trash'

rm_force() {
    echo "⚠️  ОПАСНОЕ УДАЛЕНИЕ: $@"
    read -p "Введите 'yes' для подтверждения: " confirm
    if [[ "$confirm" == "yes" ]]; then
        command rm "$@"
    else
        echo "🚫 Удаление отменено."
    fi
}
alias rm!='rm_force'
EOF
} >> ~/.bashrc

# === FIREWALL ===
echo "🧱 Настройка файрвола (ufw)..."
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing

echo
echo "✅ Настройка завершена!"
echo "ℹ️  Перезапустите терминал или выполните: source ~/.bashrc"
echo "Теперь:"
echo " - 'rm' отправляет файлы в корзину с подтверждением"
echo " - 'rm!' удаляет навсегда (только после 'yes')"
echo " - Timeshift готов к созданию снимков"
echo " - Firewall активирован"
Enter fullscreen mode Exit fullscreen mode

📚 Полезные ссылки


✅ Итого

Мера безопасности Защищает от
safe_trash Случайного удаления
trash-cli Потери файлов
rm! Контролируемого полного удаления
Timeshift Поломок системы
sudoedit Ошибок редактирования
ufw Сетевых атак
chkrootkit Вирусов уровня ядра

💬 Если у вас есть свои приёмы повышения безопасности Linux —
делитесь ими в комментариях!

Top comments (0)