15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
30.10.2024
1 +1

Как да инсталирате и конфигурирате SSH сървър на Debian (Пълно ръководство)

SSH (Secure Shell) е един от най-фундаменталните протоколи в съвременната сървърна администрация. Той осигурява криптиран, удостоверен канал за отдалечен достъп и управление на Linux сървъри — което го прави незаменим инструмент за системни администратори, разработчици и всеки, който управлява отдалечена машина. Независимо дали управлявате среда за VPS Хостинг или Dedicated сървър, правилното инсталиране и защитаване на вашия SSH сървър е една от първите задачи, които трябва да изпълните.

В това изчерпателно ръководство ще научите как да инсталирате OpenSSH на Debian, да го конфигурирате сигурно, да настроите удостоверяване с ключ и да приложите мерки за защита според най-добрите практики, за да предпазите сървъра си от неоторизиран достъп.

Предварителни изисквания

Преди да започнете, уверете се, че имате:

  • Сървър базиран на Debian (Debian 10 Buster, 11 Bullseye или 12 Bookworm)
  • Потребител без root права с sudo привилегии или директен root достъп за първоначална настройка
  • Основни познания за командния ред на Linux
  • Мрежов достъп до вашия сървър

Стъпка 1: Актуализирайте системата си и инсталирайте OpenSSH сървър

Преди да инсталирате какъвто и да е софтуер, добра практика е да обновите индекса на пакетите и да надстроите съществуващите пакети до най-новите им версии. Това осигурява съвместимост и намалява уязвимостите в сигурността.

sudo apt update && sudo apt upgrade -y

Сега инсталирайте пакета на OpenSSH сървъра:

sudo apt install openssh-server -y

Мениджърът на пакети ще изтегли и инсталира OpenSSH заедно с всички необходими зависимости. След като инсталацията приключи, SSH услугата обикновено се стартира автоматично.

Проверете дали SSH услугата работи

Потвърдете, че услугата ssh е активна и активирана:

sudo systemctl status ssh

Трябва да видите изход, подобен на:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

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

sudo systemctl start ssh
sudo systemctl enable ssh

Стъпка 2: Разберете конфигурационния файл на SSH

Основният конфигурационен файл на SSH демона се намира на:

/etc/ssh/sshd_config

Този файл контролира практически всеки аспект от поведението на вашия SSH сървър — от порта, на който слуша, до разрешените методи за удостоверяване. Преди да правите каквито и да е промени, създайте резервно копие на оригиналния файл:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Сега отворете файла с текстов редактор:

sudo nano /etc/ssh/sshd_config

Разделите по-долу ви запознават с най-важните опции за конфигурация.

Стъпка 3: Защитете вашата SSH конфигурация

3.1 Променете стандартния SSH порт (препоръчително)

По подразбиране SSH слуша на порт 22. Това е широко известно и автоматизирани ботове постоянно сканират интернет за отворени връзки на порт 22, за да опитат brute-force атаки. Промяната на порта към нестандартна стойност значително намалява този шум.

Намерете следния ред (може да е коментиран с #):

#Port 22

Премахнете коментара и променете стойността:

Port 2222

> Забележка: Изберете номер на порт между 1024 и 65535, който вече не се използва от друга услуга. Често срещани алтернативи включват 2222, 2200 или 4422. Не забравяйте да актуализирате правилата на защитната стена съответно (вижте Стъпка 5).

3.2 Деактивирайте root влизането (силно препоръчително)

Разрешаването на директно root влизане през SSH е значителен риск за сигурността. Ако атакуващ познае или разбие с brute-force root паролата, той получава пълен контрол над вашия сървър. Деактивирайте го, като намерите и промените тази директива:

PermitRootLogin no

Ако трябва да изпълнявате административни задачи, влезте като обикновен потребител и ескалирайте привилегиите с sudo.

3.3 Ограничете SSH достъпа до конкретни потребители

Можете да добавите в белия списък конкретни потребителски акаунти, на които е разрешено да влизат чрез SSH. Това предотвратява използването на неоторизирани или системни акаунти като входни точки:

AllowUsers your_username deploy_user

Алтернативно, можете да ограничите достъпа по група:

AllowGroups sshusers

3.4 Деактивирайте удостоверяването с парола (след настройка на удостоверяване с ключ)

След като SSH удостоверяването с ключ работи (вижте Стъпка 6), деактивирайте напълно влизанията с парола, за да премахнете векторите за brute-force атаки:

PasswordAuthentication no

3.5 Допълнителни директиви за защита

Добавете или променете следните редове за по-стабилна позиция на сигурност:

# Disable empty passwords
PermitEmptyPasswords no

# Limit authentication attempts per connection
MaxAuthTries 3

# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable X11 forwarding if not needed
X11Forwarding no

# Use only SSH Protocol 2
Protocol 2

# Restrict to specific address family (IPv4 only example)
AddressFamily inet

Вашият финален раздел /etc/ssh/sshd_config трябва да изглежда приблизително така:

Port 2222
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers your_username
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2

Стъпка 4: Валидирайте конфигурацията и рестартирайте SSH

Преди да рестартирате услугата, винаги тествайте конфигурационния файл за синтактични грешки. Неправилно конфигуриран sshd_config може да ви заключи извън сървъра:

sudo sshd -t

Ако не се върнат грешки, приложете промените, като рестартирате SSH демона:

sudo systemctl restart ssh

Проверете дали услугата се е рестартирала успешно:

sudo systemctl status ssh

> ⚠️ Важно: Преди да затворите текущата си SSH сесия, отворете второ терминално прозорче и тествайте новата конфигурация. По този начин, ако нещо се обърка, все още имате активна сесия за отстраняване на проблема.

Стъпка 5: Актуализирайте правилата на защитната стена

Ако използвате UFW (Uncomplicated Firewall) — инструментът за защитна стена по подразбиране в Debian — трябва да разрешите трафик на новия ви SSH порт.

Ако сте променили порта на 2222:

sudo ufw allow 2222/tcp
sudo ufw reload

Ако сте запазили стандартния порт 22:

sudo ufw allow ssh
sudo ufw reload

Проверете текущото състояние на защитната стена:

sudo ufw status verbose

Ако UFW все още не е активиран, активирайте го (уверете се, че SSH портът ви е разрешен първо, за да избегнете заключване):

sudo ufw enable

Стъпка 6: Настройте SSH удостоверяване с ключ

SSH удостоверяването с ключ е много по-сигурно от влизането с парола. То използва асиметрична криптография — двойка ключове, състояща се от частен ключ (пазен в тайна на клиентската ви машина) и публичен ключ (съхраняван на сървъра). Дори ако атакуващ знае вашето потребителско име, той не може да влезе без частния ключ.

6.1 Генерирайте двойка SSH ключове на вашата клиентска машина

Изпълнете следната команда на вашата локална машина (не на сървъра):

ssh-keygen -t ed25519 -C "your_email@example.com"

> Защо Ed25519? Ed25519 е съвременен алгоритъм с елиптична крива, който предлага по-добра сигурност и производителност в сравнение с по-стария RSA алгоритъм. Ако вашата система не го поддържа, използвайте RSA с 4096-битов ключ: ssh-keygen -t rsa -b 4096

Когато бъдете подканени, изберете местоположение за запазване (по подразбиране е ~/.ssh/id_ed25519) и задайте силна парола за допълнителен слой защита.

6.2 Копирайте публичния ключ на вашия сървър

Използвайте ssh-copy-id за сигурно прехвърляне на публичния ви ключ към сървъра:

ssh-copy-id -p 2222 username@your_server_ip

Тази команда добавя вашия публичен ключ към ~/.ssh/authorized_keys на сървъра с правилните разрешения.

Ако ssh-copy-id не е наличен, можете да го направите ръчно:

# On your local machine, display your public key:
cat ~/.ssh/id_ed25519.pub

# On the server, add it to authorized_keys:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

6.3 Тествайте влизане с ключ

От вашата клиентска машина се свържете със сървъра:

ssh -p 2222 username@your_server_ip

Трябва да бъдете подканени за паролата на вашия ключ (не паролата на акаунта ви). След потвърждение сте влезли сигурно.

6.4 Деактивирайте удостоверяването с парола

Сега, когато удостоверяването с ключ работи, върнете се към /etc/ssh/sshd_config и се уверете, че:

PasswordAuthentication no

Рестартирайте SSH за прилагане:

sudo systemctl restart ssh

Стъпка 7: Наблюдавайте и поддържайте SSH сигурността

Инсталирането и конфигурирането на SSH не е еднократна задача. Непрекъснатото наблюдение е от съществено значение за откриване на опити за проникване и поддържане на сигурна среда.

Проверете неуспешните опити за влизане

sudo journalctl -u ssh | grep "Failed password"

Или използвайте lastb за преглед на неуспешните опити за влизане:

sudo lastb | head -20

Инсталирайте Fail2Ban за блокиране на brute-force атаки

Fail2Ban наблюдава лог файловете и автоматично забранява IP адреси, които показват злонамерено поведение (като повтарящи се неуспешни опити за влизане):

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Създайте локална конфигурация на jail за SSH:

sudo nano /etc/fail2ban/jail.local

Добавете следното:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600

Рестартирайте Fail2Ban за прилагане:

sudo systemctl restart fail2ban

Поддържайте OpenSSH актуализиран

Редовно актуализирайте OpenSSH за отстраняване на известни уязвимости:

sudo apt update && sudo apt upgrade openssh-server -y

Свързване към вашия SSH сървър: Бърза справка

СценарийКоманда
Стандартен порт (22)ssh username@your_server_ip
Персонализиран портssh -p 2222 username@your_server_ip
Конкретен файл с идентичностssh -i ~/.ssh/id_ed25519 username@your_server_ip
Подробен изход (дебъгване)ssh -v username@your_server_ip
Копиране на файлове чрез SSHscp -P 2222 file.txt username@your_server_ip:/path/

Избор на правилната хостинг среда за SSH

Стъпките в това ръководство се прилагат за всеки сървър базиран на Debian, но видът на хостинга, който използвате, влияе върху начина, по който получавате достъп и управлявате средата си:

  • VPS Хостинг: VPS с cPanel или други VPS контролни панели ви дават пълен root SSH достъп заедно с графичен интерфейс за управление — идеален за потребители, които искат едновременно мощ и удобство.
  • Dedicated сървъри: С Dedicated сървър имате пълен контрол на хардуерно ниво, което прави SSH конфигурацията още по-критична, тъй като вие сте единствено отговорни за сигурността на машината.
  • Споделен хостинг: Плановете за Споделен уеб хостинг обикновено предоставят ограничен или никакъв SSH достъп, тъй като средата се споделя между множество потребители. Ако SSH е изискване, надграждането до VPS е препоръчителният път.

Заключение

Инсталирането и конфигурирането на SSH сървър на Debian е основно умение за всеки системен администратор или разработчик, работещ с отдалечени Linux сървъри. Следвайки това ръководство, вие:

  • ✅ Инсталирахте OpenSSH сървър на Debian
  • ✅ Защитихте SSH конфигурацията, като промените стандартния порт, деактивирахте root влизането и ограничихте потребителския достъп
  • ✅ Настроихте SSH удостоверяване с ключ за влизания без парола и сигурни влизания
  • ✅ Конфигурирахте правила на защитната стена за защита на вашия SSH порт
  • ✅ Внедрихте Fail2Ban за защита срещу brute-force атаки
  • ✅ Установихте рутина за наблюдение и поддръжка

Правилно защитен SSH сървър драстично намалява повърхността на атака и ви дава надежден, криптиран шлюз за отдалечено управление на вашата инфраструктура. Независимо дали тепърва започвате с първия си сървър или защитавате производствена среда, тези практики са основни градивни елементи на сигурна Linux система.

15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало