Tropic Host

VPS қауіпсіздігін нөлден баптау: SSH кілттері, firewall және Fail2ban

6 мин оқу
Tropic
VPS қауіпсіздігін нөлден баптау: SSH кілттері, firewall және Fail2ban

Language: kk

VPS қауіпсіздігін нөлден баптау: SSH кілттері, firewall және Fail2ban

Жаңа VPS Ubuntu орнатылғаннан кейін бірден қауіпсіз деп саналмауы керек. Қолжетімділік бапталмай тұрып-ақ сервер сканерлерге көрінеді: олар SSH парольдерін сынайды, ашық басқару панельдерін іздейді және кең таралған осалдықтарды тексереді. Бұл нұсқаулықта VPS-ті нөлден қорғаудың негізгі қадамдарын қарастырамыз: бөлек пайдаланушы жасау, SSH кілті арқылы аутентификацияны баптау, UFW көмегімен желі порттарын шектеу және Fail2ban қосу. Командаларды sudo құқықтары бар пайдаланушы орындаса, барлық қадам Ubuntu 22.04 және 24.04 жүйелерінде жұмыс істейді.

Бастамас бұрын: порттар тізімін жасаңыз

Порттарды “керек болып қалар” деп ашпаңыз. Әдеттегі веб-серверге мыналар қажет:

  • 22/tcp — SSH; оны IP бойынша шектеу немесе басқа портқа көшіру тек қосымша шара ретінде қарастырылады;
  • 80/tcp — HTTP; әдетте HTTPS-ке бағыттау және сертификатты тексеру үшін қажет;
  • 443/tcp — HTTPS.

Алдында Nginx немесе Caddy жұмыс істеп тұрса, 3000, 8080 немесе 9000 сияқты қолданба порттары интернеттен қолжетімді болмауы керек. Қолданбаны 127.0.0.1 адресіне байланыстырыңыз немесе оның портына тек ішкі желіден рұқсат беріңіз. Алдымен серверде қандай қызметтер тыңдап тұрғанын анықтаңыз:

sudo ss -tulpn

Docker орнатылғаннан кейін оның iptables ережелерін бөлек тексеріңіз: -p 3000:3000 арқылы порт жариялау портты күтілген баптаудан тыс ашуы мүмкін. Ашық сервис үшін HTTPS проксиін қолдану және ішкі портты жасыру қауіпсіздеу.

1-қадам. Жүйені жаңартып, әкімші жасаңыз

Сізге берілген деректермен VPS-ке қосылып, жаңартуларды орнатыңыз:

sudo apt update
sudo apt full-upgrade -y
sudo apt install -y ufw fail2ban unattended-upgrades

Жеке пайдаланушы жасаңыз. alex орнына өз атыңызды жазыңыз:

sudo adduser alex
sudo usermod -aG sudo alex

Жаңа аккаунтты бөлек терминал терезесінде сынамайынша бастапқы қолжетімділікті өшірмеңіз. Бұл маңызды ереже: ағымдағы сессия ашық тұрғанда SSH қатесін түзету оңай.

2-қадам. SSH кілтін жасап, серверге орнатыңыз

Linux, macOS немесе Windows PowerShell компьютеріңізде мынаны орындаңыз:

ssh-keygen -t ed25519 -C "alex@my-computer"

Кілтті әдепкі файлға сақтау үшін Enter басып, кейін passphrase орнатыңыз. Жеке кілтті ешқашан чатқа жібермеңіз, репозиторийге салмаңыз және VPS-ке көшірмеңіз. Серверге тек .pub кеңейтімі бар файл тасымалдануы керек:

ssh-copy-id alex@SERVER_IP

Егер ssh-copy-id қолжетімсіз болса, PowerShell-де Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub арқылы ашық кілтті көрсетіп, оны серверге қосыңыз:

sudo install -d -m 700 -o alex -g alex /home/alex/.ssh
sudo nano /home/alex/.ssh/authorized_keys
sudo chown alex:alex /home/alex/.ssh/authorized_keys
sudo chmod 600 /home/alex/.ssh/authorized_keys

Кілтті бір жолға қойып, парольдерді өшірмес бұрын кіруді сынаңыз:

ssh alex@SERVER_IP
sudo whoami

Соңғы команданың күтілетін нәтижесі — root. SSH клиенті кілтті таба алмаса, оны нақты көрсетіңіз: ssh -i ~/.ssh/id_ed25519 alex@SERVER_IP.

3-қадам. Root арқылы кіруді және пароль аутентификациясын өшіріңіз

SSH конфигурациясының резервтік көшірмесін жасаңыз:

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

Файлда мына параметрлер бар екеніне көз жеткізіңіз:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
MaxAuthTries 3

Ubuntu-да баптаулар /etc/ssh/sshd_config.d/*.conf ішінде орналасуы мүмкін, сондықтан нақты қолданылатын конфигурацияны тексеріңіз:

sudo sshd -t
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|maxauthtries'

sshd -t қате туралы хабарласа, синтаксисті түзетпейінше сервисті қайта іске қоспаңыз. Тексеру сәтті болған соң баптауды қолданыңыз:

sudo systemctl reload ssh

Ескі SSH қосылымын ашық қалдырып, жаңа терезеде кілтпен кіруді сынаңыз. Тексерілген кілтсіз парольдерді өшіру — серверге қолжетімділікті жоғалтудың ең жиі кездесетін себебі.

4-қадам. SSH-ті бұғаттамай UFW-ті баптаңыз

UFW — Linux желі ережелеріне арналған ыңғайлы қабат. Алдымен қауіпсіз әдепкі мәндерді орнатып, кейін SSH пен веб-порттарға рұқсат беріңіз:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enable

SSH ережесі қосылғаннан кейін ғана іске қосуды растаңыз. Нәтижені қарап шығыңыз:

sudo ufw status verbose
sudo ufw status numbered

Тұрақты кеңсе IP адресі үшін SSH-ті сол адреске шектей аласыз:

sudo ufw delete allow 22/tcp
sudo ufw allow from YOUR.PUBLIC.IP to any port 22 proto tcp comment 'SSH office'

Бұл нұсқаны тек тұрақты IP және провайдер консоліне қолжетімділік болғанда қолданыңыз: адрес өзгерсе, өзіңізді серверден оқшаулап алуыңыз мүмкін.

Қолданба портын уақытша қалай ашуға болады

Сервисті тікелей тексеру қажет болса, көзі шектелген ереже жасаңыз:

sudo ufw allow from YOUR.PUBLIC.IP to any port 8080 proto tcp

Тексеруден кейін оны ufw status numbered көрсеткен нөмірмен өшіріңіз:

sudo ufw delete RULE_NUMBER

sudo ufw allow 1:65535/tcp командасын қолданбаңыз: мұндай ереже firewall-ды тек формалдылыққа айналдырады.

5-қадам. SSH үшін Fail2ban қосыңыз

Fail2ban логтарды талдап, бірнеше сәтсіз кіру әрекетінен кейін уақытша бұғаттау ережесін қосады. Ол SSH кілттері немесе firewall орнына жүрмейді, бірақ автоматты brute-force әрекеттерінен болатын шуды азайтады.

Пакет жаңартулары баптауларыңызды өшірмеуі үшін жергілікті конфигурация жасаңыз:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

[DEFAULT] бөлімінде орынды мәндерді белгілеңіз:

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
banaction = ufw

[sshd]
enabled = true
port = 22

Сервисті іске қосып, jail күйін тексеріңіз:

sudo systemctl enable --now fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd

sshd нәтижесінен сәтсіз әрекеттер мен бұғатталған адрестер санын тексеріңіз. Өз IP адресіңізді ban тізіміне қоспаңыз. Тұрақты ерекшелік үшін [DEFAULT] бөліміндегі ignoreip = 127.0.0.1/8 YOUR.PUBLIC.IP мәнін қолданыңыз.

6-қадам. Автоматты жаңартуларды қосыңыз

Автоматты жаңартулар қауіпсіздік пакеттері үшін пайдалы, бірақ ядроны қайта іске қосуды бәрібір басқару қажет:

sudo dpkg-reconfigure -plow unattended-upgrades
sudo systemctl status unattended-upgrades

Аптасына бір рет қайта іске қосу қажет пе, тексеріңіз:

test -f /var/run/reboot-required && echo 'Требуется перезапуск'

Қолмен қайта іске қоспас бұрын жұмыс істейтін кілт пен VPS консоліне қолжетімділік бар екеніне көз жеткізіңіз. Қайта іске қосқаннан кейін қолданба сервистерін, Nginx-ті, UFW-ті және Fail2ban-ды тексеріңіз.

7-қадам. Нәтижені сырттан тексеріңіз

Қорғанысты конфигурацияны оқумен ғана емес, басқа компьютерден де тексеріңіз:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no alex@SERVER_IP

Команда рұқсат берілмегені туралы хабармен аяқталуы керек. Жұмыс істейтін кілттік кіруді бөлек сынаңыз:

ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 alex@SERVER_IP

VPS ішінде тыңдап тұрған адрестер мен ережелерді тексеріңіз:

sudo ss -lntup
sudo ufw status numbered
sudo fail2ban-client status sshd

Тікелей қолжетімділікке арналмаған қолданба порты 127.0.0.1 адресінде тыңдауы керек. Сыртқы хосттан nmap SERVER_IP қолдануға болады, бірақ тек өз серверіңізді сканерлеңіз: біреудің инфрақұрылымын рұқсатсыз тексеру заңды және провайдер ережелерін бұзуы мүмкін.

Резервтік көшірмелер және қалпына келтіру

SSH қорғанысы өшірілген деректерден, әкімші қатесінен немесе бұзылған қолданбадан қорғамайды. Дерекқор, конфигурация және пайдаланушы файлдарының көшірмелерін VPS-тен бөлек сақтаңыз. Минималды нұсқа — күнделікті резерв, алдыңғы күндердің бірнеше нұсқасы және қалпына келтіруді мерзімді сынау.

Парольдер мен токендерді кәдімгі мәтін түріндегі скрипттерге жазбаңыз. Құпия ашылып қалса, оны дереу қайтарып, жаңасын жасаңыз.

Қауіпсіз жоба үшін VPS-ті қалай таңдау керек

Қауіпсіздік инфрақұрылымды бақылаудан басталады. VPS-те операциялық жүйені, firewall ережелерін, кіру әдісін, резервтік көшірмелерді және сервистердің орналасуын өзіңіз таңдайсыз. Шағын веб-сайт немесе API үшін артық виртуалды ядролардан гөрі тұрақты желі, SSD жады және қалпына келтіру консолі маңызды.

Жобаны tropic.host VPS-інде іске қосқанда, оның ашық кіру нүктелерін алдын ала белгілеңіз: көп жағдайда SSH, HTTP және HTTPS жеткілікті. Дерекқор мен басқару панельдерін ішкі желіде ұстаңыз. Жоба өскен сайын қолданба, дерекқор және мониторинг үшін бөлек VPS даналарын пайдалану ақау домендерін оқшаулауға көмектеседі.

Жиі кездесетін қателер

  • Кілтпен кіруді тексермей тұрып парольдерді өшіру. Ағымдағы сессияны ашық қалдырып, жаңа кіруді бөлек сынаңыз.
  • Сенімді адрестермен ғана шектеуге болатын 22/tcp портын бүкіл әлемге ашық қалдыру.
  • Docker порттарын тікелей жариялау. Алдымен Docker және UFW ережелерін тексеріңіз.
  • Fail2ban орнатып, логтарды қайта қарамау. Өзгерістерден кейін journalctl -u ssh және jail күйін тексеріңіз.

Қорытынды

Негізгі VPS қорғанысы қадамдар дұрыс ретпен орындалса, көп уақыт алмайды: бөлек пайдаланушы жасаңыз, SSH кілтін орнатыңыз, қолжетімділікті тексеріңіз, root арқылы кіру мен парольдерді өшіріңіз, UFW-ті қосыңыз, Fail2ban-ды баптаңыз және автоматты жаңартуларды іске қосыңыз. Одан кейін резервтік көшірмелерді, логтауды және сыртқы мониторингті қосыңыз.

Бұл қадамдар серверді мүлдем бұзылмайтын етпейді, бірақ бастапқы баптаудағы ең жиі қателерді жояды. Келесі қадам — қауіпсіздік профилін нақты қолданбаға бейімдеу: тәуелділіктерді жаңарту, сервис рұқсаттарын шектеу, әкімші панельдерін қорғау және ашық порттарды тұрақты тексеру.

FAQ

Әдепкі SSH портын өзгерту керек пе?

Міндетті емес. Портты ауыстыру автоматты шуды азайтады, бірақ кілттерді, өшірілген парольдерді, UFW-ті немесе Fail2ban-ды алмастырмайды. Порт өзгерсе, firewall ережесін және Fail2ban jail ішіндегі port параметрін де жаңартыңыз.

UFW-ті баптағаннан кейін қолжетімділікті жоғалтсам не істеймін?

Провайдердің веб немесе rescue консолін пайдаланып, SSH ережесі мен sshd конфигурациясын тексеріңіз. Жаңа кіру расталғанша ескі жұмыс істеп тұрған сессияны жаппаңыз.

Fail2ban SSH-ті қорғауға жеткілікті ме?

Жоқ. Fail2ban болған кіру қателеріне жауап береді. Негізі SSH кілттері, пароль аутентификациясын өшіру, пайдаланушы рұқсаттарын азайту және шектеулі firewall болуы керек.

SSH-ке тек бір IP адресінен рұқсат бере аламын ба?

Иә, адрес тұрақты болса, сол IP үшін UFW allow from ережесін қосыңыз. Провайдер консоліне кіруді немесе басқа резервтік жолды алдын ала дайындаңыз, өйткені IP өзгергеннен кейін қосылым бұғатталады.

VPS қауіпсіздігін қаншалықты жиі тексеру керек?

SSH, firewall немесе Docker порттарын жариялау өзгерген сайын портты тексеріп, кіруді сынаңыз. Күнделікті қызмет ретінде жаңартулар мен логтарды кемінде аптасына бір рет қарап, резервтен қалпына келтіруді тұрақты сынаңыз.