15 критични стъпки за защита на Linux сървър: Пълно ръководство за сигурност

Научете как да защитите Linux сървъра си от 90% от атаките с тези 15 проверени техники. Включва готови команди, конфигурационни файлове и checklist за проверка на сигурността.
Сигурността на Linux сървърите не е въпрос на "ако", а на "кога" ще бъдете атакувани. Статистиките показват, че средно един сървър в интернет получава атака на всеки 39 секунди. Тази статия ще ви даде конкретните инструменти и знания, за да защитите системата си ефективно.
1. Обновяване на системата – първата линия на отбрана
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y
# CentOS/RHEL/Fedora
sudo dnf update -y
# или за по-стари версии
sudo yum update -y
# Автоматични обновления (Ubuntu)
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
Защо е важно: 60% от успешните атаки използват известни уязвимости, за които вече има патчове.
2. Конфигуриране на SSH за максимална сигурност
Редактирайте /etc/ssh/sshd_config
:
# Променете порта по подразбиране
Port 2222
# Забранете root login
PermitRootLogin no
# Използвайте само ключове за аутентикация
PasswordAuthentication no
PubkeyAuthentication yes
# Ограничете потребителите
AllowUsers yourusername
# Добавете timeout
ClientAliveInterval 300
ClientAliveCountMax 2
# Забранете празни пароли
PermitEmptyPasswords no
# Ограничете протокола
Protocol 2
Рестартирайте SSH:
sudo systemctl restart sshd
3. Създаване на потребител с sudo права
# Създайте нов потребител
sudo adduser newuser
# Добавете го към sudo групата
sudo usermod -aG sudo newuser
# Генерирайте SSH ключове (на локалната машина)
ssh-keygen -t rsa -b 4096 -C "[email protected]"
# Копирайте публичния ключ на сървъра
ssh-copy-id -p 2222 newuser@your-server-ip
4. Конфигуриране на firewall (UFW)
# Активирайте UFW
sudo ufw enable
# Базови правила
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Разрешете SSH (с новия порт)
sudo ufw allow 2222/tcp
# Разрешете HTTP и HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Проверете статуса
sudo ufw status verbose
5. Инсталиране и конфигуриране на Fail2Ban
# Инсталация
sudo apt install fail2ban -y
# Създайте локален конфигурационен файл
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Редактирайте /etc/fail2ban/jail.local
:
ini[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
ignoreip = 127.0.0.1/8 your-home-ip
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
Стартирайте услугата:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
6. Настройка на логове и мониторинг
# Инсталирайте logwatch
sudo apt install logwatch -y
# Конфигурирайте за ежедневни отчети
echo "logwatch --output mail --mailto [email protected] --detail high" | sudo tee -a /etc/cron.daily/00logwatch
7. Премахване на ненужни услуги
# Вижте всички активни услуги
sudo systemctl list-units --type=service --state=running
# Спрете ненужни услуги (примери)
sudo systemctl disable telnet
sudo systemctl disable rsh
sudo systemctl disable rlogin
8. Конфигуриране на антивирус (ClamAV)
# Инсталация
sudo apt install clamav clamav-daemon -y
# Обновете базата данни
sudo freshclam
# Създайте скрипт за ежедневно сканиране
cat << 'EOF' | sudo tee /usr/local/bin/daily-scan.sh
#!/bin/bash
SCAN_DIR="/"
LOG_FILE="/var/log/clamav/daily-scan.log"
clamscan -r --bell -i $SCAN_DIR >> $LOG_FILE 2>&1
EOF
sudo chmod +x /usr/local/bin/daily-scan.sh
# Добавете в crontab
echo "0 2 * * * /usr/local/bin/daily-scan.sh" | sudo crontab -
9. Шифроване на диска (LUKS)
За нови инсталации:
# По време на инсталацията изберете шифроване
# За съществуващи системи - използвайте отделен шифрован том
sudo cryptsetup luksFormat /dev/sdb1
sudo cryptsetup luksOpen /dev/sdb1 encrypted-drive
sudo mkfs.ext4 /dev/mapper/encrypted-drive
10. Настройка на intrusion detection (AIDE)
# Инсталация
sudo apt install aide -y
# Инициализирайте базата данни
sudo aideinit
# Копирайте базата данни
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# Създайте ежедневна проверка
echo "0 3 * * * /usr/bin/aide --check" | sudo crontab -
11. Ограничаване на мрежовия достъп
# Инсталирайте iptables-persistent
sudo apt install iptables-persistent -y
# Основни правила
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# Разрешете loopback
sudo iptables -A INPUT -i lo -j ACCEPT
# Разрешете установени връзки
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешете SSH
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
# Запазете правилата
sudo netfilter-persistent save
12. Конфигуриране на система за backup
# Инсталирайте rsync
sudo apt install rsync -y
# Скрипт за backup
cat << 'EOF' | sudo tee /usr/local/bin/backup.sh
#!/bin/bash
BACKUP_DIR="/backup"
SOURCE_DIRS="/home /etc /var/www"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR/$DATE
for dir in $SOURCE_DIRS; do
if [ -d "$dir" ]; then
rsync -av "$dir" "$BACKUP_DIR/$DATE/"
fi
done
# Запази само последните 7 backup-а
find $BACKUP_DIR -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
EOF
sudo chmod +x /usr/local/bin/backup.sh
# Ежедневен backup в 1:00
echo "0 1 * * * /usr/local/bin/backup.sh" | sudo crontab -
13. Настройка на лимити за ресурси
Редактирайте /etc/security/limits.conf
:
# Ограничете максималния брой процеси
* soft nproc 1000
* hard nproc 1200
# Ограничете максималния брой отворени файлове
* soft nofile 1024
* hard nofile 2048
14. Конфигуриране на сигурни пароли
# Инсталирайте libpam-pwquality
sudo apt install libpam-pwquality -y
Редактирайте /etc/pam.d/common-password
:
password requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
15. Редовна проверка на сигурността
Създайте скрипт за проверка:
cat << 'EOF' | sudo tee /usr/local/bin/security-check.sh
#!/bin/bash
echo "=== SECURITY CHECK REPORT ==="
echo "Date: $(date)"
echo
echo "=== Failed login attempts ==="
grep "Failed password" /var/log/auth.log | tail -10
echo -e "\n=== Active network connections ==="
ss -tuln
echo -e "\n=== Running processes by users ==="
ps aux | awk '{print $1}' | sort | uniq -c | sort -nr
echo -e "\n=== Disk usage ==="
df -h
echo -e "\n=== Memory usage ==="
free -h
echo -e "\n=== Load average ==="
uptime
echo -e "\n=== Last logins ==="
last -10
echo -e "\n=== Fail2Ban status ==="
sudo fail2ban-client status
EOF
sudo chmod +x /usr/local/bin/security-check.sh
# Седмична проверка
echo "0 8 * * 1 /usr/local/bin/security-check.sh | mail -s 'Weekly Security Report' [email protected]" | sudo crontab -
Checklist за проверка на сигурността
- Системата е обновена до последната версия
- SSH е конфигуриран сигурно (променен порт, без root login)
- Създаден е потребител с sudo права
- Firewall (UFW) е активен и конфигуриран
- Fail2Ban е инсталиран и работи
- Логовете се мониторират (logwatch)
- Премахнати са ненужните услуги
- Антивирус (ClamAV) сканира системата
- Настроена е система за backup
- Конфигурирани са лимити за ресурси
- Паролите са сигурни (PAM правила)
- Редовни проверки на сигурността
Заключение
Сигурността не е еднократно действие, а постоянен процес. Тези 15 стъпки ще защитят вашия Linux сървър от повечето автоматизирани атаки и ще ви дадат солидна основа за по-нататъшно укрепване.
Помнете: най-добрата сигурност е тази, която се прилага последователно и се поддържа редовно. Проверявайте логовете си, следете за необичайна активност и винаги имайте актуални backup-и.
Полезни ресурси:
Следващи стъпки: След като приложите тези основни мерки, разгледайте напреднали теми като SELinux/AppArmor, контейнерна сигурност и мрежова сегментация.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut