Language: az
VPS təhlükəsizliyi sıfırdan: SSH açarları, firewall və Fail2ban
Ubuntu quraşdırıldıqdan dərhal sonra yeni VPS-i təhlükəsiz hesab etmək olmaz. Giriş konfiqurasiya edilməzdən əvvəl server artıq skanerlər üçün görünür: onlar SSH parollarını sınaqdan keçirir, açıq idarəetmə panellərini axtarır və geniş yayılmış boşluqları yoxlayırlar. Bu təlimatda VPS-i sıfırdan qorumağın əsas addımlarını nəzərdən keçirəcəyik: ayrıca istifadəçi yaratmaq, SSH açarı ilə autentifikasiyanı qurmaq, UFW ilə şəbəkə portlarını məhdudlaşdırmaq və Fail2ban əlavə etmək. Əmrlər sudo səlahiyyətlərinə malik istifadəçi tərəfindən icra edildikdə bütün addımlar Ubuntu 22.04 və 24.04 ilə işləyir.
Başlamazdan əvvəl: portların siyahısını hazırlayın
Portları “ehtiyat üçün” açmayın. Tipik veb serverə bunlar lazımdır:
22/tcp— SSH; ideal olaraq onu IP üzrə məhdudlaşdırın və ya yalnız əlavə tədbir kimi başqa porta köçürün;80/tcp— HTTP; adətən HTTPS-ə yönləndirmə və sertifikatı yoxlamaq üçün lazımdır;443/tcp— HTTPS.
Nginx və ya Caddy qarşısında işləyirsə, 3000, 8080 və ya 9000 kimi tətbiq portu internetdən əlçatan olmamalıdır. Tətbiqi 127.0.0.1 ünvanına bağlayın və ya portuna yalnız daxili şəbəkədə icazə verin. Əvvəlcə serverdə nəyin qulaq asdığını öyrənin:
sudo ss -tulpnDocker quraşdırıldıqdan sonra onun iptables qaydalarını ayrıca yoxlayın: -p 3000:3000 yayımlaması portu gözlənilən quruluşdan kənara çıxara bilər. İctimai xidmət üçün HTTPS proksisindən istifadə etmək və daxili portu gizli saxlamaq daha təhlükəsizdir.
Addım 1. Sistemi yeniləyin və administrator yaradın
Sizə verilən məlumatlarla VPS-ə qoşulun və yeniləmələri quraşdırın:
sudo apt update
sudo apt full-upgrade -y
sudo apt install -y ufw fail2ban unattended-upgradesŞəxsi istifadəçi yaradın. alex sözünü öz adınızla əvəz edin:
sudo adduser alex
sudo usermod -aG sudo alexYeni hesabı ayrıca terminal pəncərəsində yoxlamadan əvvəl ilkin girişi silməyin. Bu vacib qaydadır: cari sessiya hələ açıq olduğu müddətdə SSH səhvini düzəltmək daha asandır.
Addım 2. SSH açarı yaradın və serverə quraşdırın
Linux, macOS və ya Windows PowerShell işlədən kompüterinizdə bu əmri yerinə yetirin:
ssh-keygen -t ed25519 -C "alex@my-computer"Açarı standart faylda saxlamaq üçün Enter düyməsini basın, sonra passphrase təyin edin. Şəxsi açarı heç vaxt çata göndərməyin, repozitoriyaya qoymayın və VPS-ə köçürməyin. Serverə yalnız .pub uzantılı fayl ötürülməlidir:
ssh-copy-id alex@SERVER_IPssh-copy-id mövcud deyilsə, PowerShell-də Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub ilə açıq açarı göstərin, sonra onu serverə əlavə edin:
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_keysAçarı bir sətirə yerləşdirin və parolları söndürməzdən əvvəl girişi yoxlayın:
ssh alex@SERVER_IP
sudo whoamiSon əmrin gözlənilən nəticəsi root olmalıdır. SSH müştərisi açarı tapa bilmirsə, onu açıq şəkildə göstərin: ssh -i ~/.ssh/id_ed25519 alex@SERVER_IP.
Addım 3. root girişini və parol autentifikasiyasını söndürün
SSH konfiqurasiyasının ehtiyat nüsxəsini yaradın:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_configFaylda bu parametrlərin olduğuna əmin olun:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
MaxAuthTries 3Ubuntu-da parametrlər /etc/ssh/sshd_config.d/*.conf daxilində yerləşə bilər, buna görə effektiv konfiqurasiyanı yoxlayın:
sudo sshd -t
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|maxauthtries'sshd -t xəta bildirirsə, sintaksisi düzəldənə qədər xidməti yenidən başlatmayın. Yoxlama uğurlu olduqdan sonra parametrləri tətbiq edin:
sudo systemctl reload sshKöhnə SSH bağlantısını açıq saxlayın və yeni pəncərədə açarla girişi yoxlayın. Yoxlanmış açar olmadan parolları söndürmək serverə girişi itirməyin ən yayılmış səbəbidir.
Addım 4. SSH-ni bloklamadan UFW-ni konfiqurasiya edin
UFW Linux şəbəkə qaydaları üçün rahat örtükdür. Əvvəlcə təhlükəsiz standartları təyin edin, sonra SSH və veb portlarına icazə verin:
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 enableSSH qaydası əlavə edildikdən sonra aktivləşdirməni təsdiqləyin. Nəticəni nəzərdən keçirin:
sudo ufw status verbose
sudo ufw status numberedDaimi ofis IP-si üçün SSH-ni həmin ünvana məhdudlaşdıra bilərsiniz:
sudo ufw delete allow 22/tcp
sudo ufw allow from YOUR.PUBLIC.IP to any port 22 proto tcp comment 'SSH office'Bu seçimdən yalnız daimi IP və provayder konsoluna giriş olduqda istifadə edin: ünvan dəyişərsə, özünüzü serverdən kənarda saxlaya bilərsiniz.
Tətbiq portunu müvəqqəti necə açmaq olar
Xidməti birbaşa yoxlamaq lazımdırsa, məhdud mənbə ilə qayda yaradın:
sudo ufw allow from YOUR.PUBLIC.IP to any port 8080 proto tcpYoxlamadan sonra ufw status numbered tərəfindən göstərilən nömrədən istifadə edərək qaydanı silin:
sudo ufw delete RULE_NUMBERsudo ufw allow 1:65535/tcp istifadə etməyin: belə qayda firewall-u formal bir tədbirə çevirir.
Addım 5. SSH üçün Fail2ban-ı aktivləşdirin
Fail2ban jurnalları təhlil edir və bir neçə uğursuz giriş cəhdindən sonra müvəqqəti bloklama qaydası əlavə edir. O, SSH açarlarını və ya firewall-u əvəz etmir, amma avtomatlaşdırılmış brute-force cəhdlərindən gələn səsi azaldır.
Paket yeniləmələrinin parametrlərinizi üzərindən yazmaması üçün lokal konfiqurasiya yaradın:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local[DEFAULT] bölməsində məntiqli dəyərlər təyin edin:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
banaction = ufw
[sshd]
enabled = true
port = 22Xidməti başladın və jail-i yoxlayın:
sudo systemctl enable --now fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshdsshd çıxışında uğursuz cəhdlərin və bloklanmış ünvanların sayını yoxlayın. Öz IP-nizi bloklama siyahısına əlavə etməyin. Daimi istisna üçün ignoreip = 127.0.0.1/8 YOUR.PUBLIC.IP parametrini [DEFAULT] bölməsində istifadə edin.
Addım 6. Avtomatik yeniləmələri aktivləşdirin
Avtomatik yeniləmələr təhlükəsizlik paketləri üçün faydalıdır, amma kernel-in yenidən başladılmasını yenə də idarə etmək lazımdır:
sudo dpkg-reconfigure -plow unattended-upgrades
sudo systemctl status unattended-upgradesHəftədə bir dəfə yenidən başlatmanın lazım olub-olmadığını yoxlayın:
test -f /var/run/reboot-required && echo 'Требуется перезапуск'Əl ilə yenidən başlamazdan əvvəl işlək açarınızın və VPS konsoluna girişinizin olduğuna əmin olun. Yenidən başlatdıqdan sonra tətbiq xidmətlərini, Nginx-i, UFW-ni və Fail2ban-ı yoxlayın.
Addım 7. Nəticəni kənardan yoxlayın
Qorumanı yalnız konfiqurasiyanı oxumaqla deyil, başqa kompüterdən yoxlayın:
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no alex@SERVER_IPƏmr girişin rədd edilməsi ilə nəticələnməlidir. İşlək açarla girişi ayrıca yoxlayın:
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 alex@SERVER_IPVPS-də dinləyən ünvanları və qaydaları yoxlayın:
sudo ss -lntup
sudo ufw status numbered
sudo fail2ban-client status sshdBirbaşa giriş üçün nəzərdə tutulmayıbsa, tətbiq portu 127.0.0.1 ünvanında dinləməlidir. Xarici hostdan nmap SERVER_IP istifadə edə bilərsiniz, amma yalnız öz serverinizi skan edin: başqasının infrastrukturunu icazəsiz yoxlamaq qanunu və provayder qaydalarını poza bilər.
Ehtiyat nüsxələri və bərpa
SSH qoruması silinmiş məlumatlardan, administrator səhvindən və ya ələ keçirilmiş tətbiqdən müdafiə etmir. Verilənlər bazasının, konfiqurasiyanın və istifadəçi fayllarının nüsxələrini VPS-dən ayrı saxlayın. Minimum quruluş gündəlik ehtiyat nüsxə, əvvəlki günlərdən bir neçə versiya və dövri bərpa testlərindən ibarətdir.
Parolları və ya tokenləri açıq mətnli skriptlərə yazmayın. Sirr ifşa olunarsa, onu dərhal ləğv edin və yenisini yaradın.
Təhlükəsiz layihə üçün VPS-i necə seçmək olar
Təhlükəsizlik infrastruktur üzərində nəzarətlə başlayır. VPS-də əməliyyat sistemini, firewall qaydalarını, giriş üsulunu, ehtiyat nüsxələri və xidmətlərin yerləşimini özünüz seçə bilərsiniz. Kiçik vebsayt və ya API üçün sabit şəbəkə, SSD yaddaş və bərpa konsolu artıq virtual nüvələrdən daha vacibdir.
Layihəni tropic.host üzərində VPS-də başladarkən onun ictimai giriş nöqtələrini əvvəlcədən müəyyən edin: əksər hallarda SSH, HTTP və HTTPS kifayətdir. Verilənlər bazasını və idarəetmə panellərini daxili şəbəkədə saxlayın. Layihə böyüdükcə tətbiq, verilənlər bazası və monitorinq üçün ayrıca VPS instansiyaları nasazlıq sahələrini təcrid etməyə kömək edir.
Yayğın səhvlər
- Açarla girişi yoxlamadan parolları söndürmək. Cari sessiyanı açıq saxlayın və yeni girişi ayrıca yoxlayın.
- Etibarlı ünvanlardan girişə icazə verilə bildiyi halda
22/tcpportunu bütün dünyaya açıq saxlamaq. - Docker portlarını birbaşa yayımlamaq. Əvvəlcə Docker və UFW qaydalarını yoxlayın.
- Fail2ban quraşdırıldıqdan sonra jurnalları bir daha yoxlamamaq. Dəyişikliklərdən sonra
journalctl -u sshvə jail statusunu nəzərdən keçirin.
Nəticə
Addımlar düzgün ardıcıllıqla yerinə yetirildikdə əsas VPS qoruması çox vaxt aparmır: ayrıca istifadəçi yaradın, SSH açarı quraşdırın, girişi yoxlayın, root girişini və parolları söndürün, UFW-ni aktivləşdirin, Fail2ban-ı konfiqurasiya edin və avtomatik yeniləmələri qurun. Sonra ehtiyat nüsxələri, jurnal qeydini və xarici monitorinqi əlavə edin.
Bu addımlar serveri toxunulmaz etmir, amma ilkin konfiqurasiyada ən çox rast gəlinən səhvləri aradan qaldırır. Növbəti addım təhlükəsizlik profilini konkret tətbiqə uyğunlaşdırmaqdır: asılılıqları yeniləyin, xidmət icazələrini məhdudlaşdırın, idarəetmə panellərini qoruyun və açıq portları müntəzəm yoxlayın.
FAQ
Standart SSH portunu dəyişməliyəm?
Mütləq deyil. Portu köçürmək avtomatlaşdırılmış səsi azaldır, amma açarları, söndürülmüş parolları, UFW-ni və ya Fail2ban-ı əvəz etmir. Portu dəyişsəniz, firewall qaydasını və Fail2ban jail-indəki port parametrini yeniləyin.
UFW-ni konfiqurasiya etdikdən sonra girişi itirsəm nə etməliyəm?
Provayderin veb və ya rescue konsolundan istifadə edin, sonra SSH qaydasını və sshd konfiqurasiyasını yoxlayın. Yeni giriş təsdiqlənənə qədər köhnə işlək sessiyanı bağlamayın.
Fail2ban SSH-ni qorumaq üçün kifayətdirmi?
Xeyr. Fail2ban artıq baş vermiş giriş uğursuzluqlarına reaksiya verir. Əsas müdafiə SSH açarları, parol autentifikasiyasının söndürülməsi, minimal istifadəçi icazələri və məhdud firewall olmalıdır.
SSH-yə yalnız bir IP ünvanından icazə verə bilərəm?
Bəli, ünvan daimidirsə: həmin IP üçün UFW-də allow from qaydası əlavə edin. Provayder konsoluna girişi və ya başqa ehtiyat üsulu əvvəlcədən təmin edin, çünki IP dəyişdikdən sonra bağlantı bloklanacaq.
VPS təhlükəsizliyini nə qədər tez-tez yoxlamalıyam?
SSH, firewall və ya Docker portlarının yayımlanmasında hər dəyişiklikdən sonra port yoxlaması aparın və girişi test edin. Müntəzəm texniki xidmət kimi yeniləmələri və jurnalları ən azı həftədə bir dəfə nəzərdən keçirin, ehtiyat nüsxədən bərpanı isə müntəzəm test edin.
