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

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 "your_email@example.com"

# Копирайте публичния ключ на сървъра
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 your-email@example.com --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' your-email@example.com" | sudo crontab -

Checklist за проверка на сигурността

  • Системата е обновена до последната версия
  • SSH е конфигуриран сигурно (променен порт, без root login)
  • Създаден е потребител с sudo права
  • Firewall (UFW) е активен и конфигуриран
  • Fail2Ban е инсталиран и работи
  • Логовете се мониторират (logwatch)
  • Премахнати са ненужните услуги
  • Антивирус (ClamAV) сканира системата
  • Настроена е система за backup
  • Конфигурирани са лимити за ресурси
  • Паролите са сигурни (PAM правила)
  • Редовни проверки на сигурността

Заключение

Сигурността не е еднократно действие, а постоянен процес. Тези 15 стъпки ще защитят вашия Linux сървър от повечето автоматизирани атаки и ще ви дадат солидна основа за по-нататъшно укрепване.

Помнете: най-добрата сигурност е тази, която се прилага последователно и се поддържа редовно. Проверявайте логовете си, следете за необичайна активност и винаги имайте актуални backup-и.


Полезни ресурси:

Следващи стъпки: След като приложите тези основни мерки, разгледайте напреднали теми като SELinux/AppArmor, контейнерна сигурност и мрежова сегментация.

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: