Linux server mühafizəsi. Əvvəlcə nə etməli

Linux server mühafizəsi. Əvvəlcə nə etməli
Həbib M'henni/Wikimedia Commons, CC BY-SA

İndiki vaxtda hostinqdə server qurmaq bir neçə dəqiqə və siçanla bir neçə klik tələb edir. Ancaq işə salındıqdan dərhal sonra o, özünü düşmən mühitdə tapır, çünki o, rokçu diskotekada məsum bir qız kimi bütün İnternetə açıqdır. Skanerlər onu tez tapacaq və zəifliklər və yanlış konfiqurasiyalar axtarışında şəbəkəni yoxlayan minlərlə avtomatik skriptli bot aşkar edəcək. Əsas müdafiəni təmin etmək üçün işə salındıqdan dərhal sonra etməli olduğunuz bir neçə şey var.

Məzmun

Kök olmayan istifadəçi

Etməli olduğunuz ilk şey kök olmayan istifadəçi yaratmaqdır. Məsələ ondadır ki, istifadəçi root sistemdə mütləq imtiyazlar və ona uzaqdan idarəetməyə icazə versəniz, haker üçün etibarlı istifadəçi adı qoyaraq işin yarısını edəcəksiniz.

Buna görə başqa bir istifadəçi yaratmalı və kök üçün SSH vasitəsilə uzaqdan idarəetməni deaktiv etməlisiniz.

Komanda ilə yeni istifadəçi yaradılır useradd:

useradd [options] <username>

Sonra əmrlə onun üçün parol əlavə edilir passwd:

passwd <username>

Nəhayət, bu istifadəçi yüksək imtiyazlarla əmrləri yerinə yetirmək hüququ olan qrupa əlavə edilməlidir. sudo. Linux paylanmasından asılı olaraq bunlar müxtəlif qruplar ola bilər. Məsələn, CentOS və Red Hat-da istifadəçi qrupa əlavə olunur wheel:

usermod -aG wheel <username>

Ubuntu-da qrupa əlavə olunur sudo:

usermod -aG sudo <username>

SSH parolları yerinə açarlar

Kobud güc və ya parol sızması standart hücum vektorudur, ona görə də SSH (Secure Shell)-də parol identifikasiyasını söndürmək və əvəzinə açar identifikasiyadan istifadə etmək daha yaxşıdır.

kimi SSH protokolunu həyata keçirmək üçün müxtəlif proqramlar var и Damla, lakin ən populyar OpenSSH-dir. Ubuntu-da OpenSSH müştərisinin quraşdırılması:

sudo apt install openssh-client

Server quraşdırılması:

sudo apt install openssh-server

Ubuntu serverində SSH demonunun (sshd) işə salınması:

sudo systemctl start sshd

Hər açılışda demonu avtomatik işə salın:

sudo systemctl enable sshd

Qeyd etmək lazımdır ki, OpenSSH server hissəsinə müştəri hissəsi daxildir. Yəni vasitəsilə openssh-server başqa serverlərə qoşula bilərsiniz. Üstəlik, müştəri maşınınızdan uzaq serverdən üçüncü tərəf hostuna SSH tunelini işə sala bilərsiniz və sonra üçüncü tərəf hostu uzaq serveri sorğuların mənbəyi hesab edəcək. Sisteminizi maskalamaq üçün çox rahat funksiya. Daha ətraflı məlumat üçün məqaləyə baxın. "Praktik məsləhətlər, nümunələr və SSH tunelləri".

Kompüterə uzaqdan qoşulma ehtimalının qarşısını almaq üçün (təhlükəsizlik səbəbindən) müştəri maşınına tam hüquqlu bir server quraşdırmağın ümumiyyətlə mənası yoxdur.

Beləliklə, yeni istifadəçiniz üçün əvvəlcə serverə daxil olacağınız kompüterdə SSH açarlarını yaratmalısınız:

ssh-keygen -t rsa

Açıq açar faylda saxlanılır .pub ilə başlayan təsadüfi simvollar silsiləsi kimi görünür ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Sonra, kök olaraq, istifadəçinin ev kataloqunda serverdə SSH kataloqu yaradın və fayla SSH ictimai açarını əlavə edin. authorized_keysVim kimi mətn redaktorundan istifadə edərək:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Nəhayət, fayl üçün düzgün icazələri təyin edin:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

və bu istifadəçiyə sahibliyi dəyişdirin:

chown -R username:username /home/username/.ssh

Müştəri tərəfində identifikasiya üçün məxfi açarın yerini göstərməlisiniz:

ssh-add DIR_PATH/keylocation

İndi bu açardan istifadə edərək istifadəçi adı ilə serverə daxil ola bilərsiniz:

ssh [username]@hostname

Avtorizasiyadan sonra, yardım proqramı olan faylları kopyalamaq üçün scp əmrindən istifadə edə bilərsiniz sshfs fayl sistemini və ya qovluqları uzaqdan quraşdırmaq üçün.

Şəxsi açarın bir neçə ehtiyat nüsxəsini çıxarmaq məsləhətdir, çünki parol autentifikasiyasını söndürsəniz və onu itirsəniz, öz serverinizə ümumiyyətlə daxil olmaq imkanınız olmayacaq.

Yuxarıda qeyd edildiyi kimi, SSH-də kök üçün autentifikasiyanı söndürməlisiniz (bu səbəbdən yeni istifadəçi yaratdıq).

CentOS/Red Hat-da xətti tapırıq PermitRootLogin yes konfiqurasiya faylında /etc/ssh/sshd_config və dəyişdirin:

PermitRootLogin no

Ubuntu-da xətti əlavə edin PermitRootLogin no konfiqurasiya faylına 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Yeni istifadəçinin öz açarından istifadə edərək autentifikasiya edildiyini yoxladıqdan sonra parol sızması və ya kobud güc riskini aradan qaldırmaq üçün parol identifikasiyasını söndürə bilərsiniz. İndi, serverə daxil olmaq üçün təcavüzkar şəxsi açarı əldə etməlidir.

CentOS/Red Hat-da xətti tapırıq PasswordAuthentication yes konfiqurasiya faylında /etc/ssh/sshd_config və onu aşağıdakı kimi dəyişdirin:

PasswordAuthentication no

Ubuntu-da xətti əlavə edin PasswordAuthentication no sənədləşdirmək 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

SSH vasitəsilə iki faktorlu autentifikasiyanı necə aktivləşdirmək barədə təlimatlar üçün baxın burada.

Firewall

Firewall yalnız birbaşa icazə verdiyiniz portlardakı trafikin serverə getməsini təmin edir. Bu, digər xidmətlər tərəfindən təsadüfən işə salınan portların istismarından qoruyur və bu, hücum səthini xeyli azaldır.

Firewall quraşdırmadan əvvəl, SSH-nin istisnalar siyahısına daxil edildiyinə və bloklanmayacağına əmin olmalısınız. Əks halda, firewall işə salındıqdan sonra serverə qoşula bilməyəcəyik.

Ubuntu paylanması Mürəkkəb Firewall ilə gəlir (Heyrət! Vay) və CentOS/Red Hat ilə - firewalld.

Ubuntu-da təhlükəsizlik duvarında SSH-ə icazə verilir:

sudo ufw allow ssh

CentOS/Red Hat-da biz əmrdən istifadə edirik firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Bu prosedurdan sonra firewall işə başlaya bilərsiniz.

CentOS/Red Hat-da biz firewalld üçün systemd xidmətini işə salırıq:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ubuntu-da aşağıdakı əmrdən istifadə edirik:

sudo ufw enable

Fail2Ban

Xidmət Fail2Ban server qeydlərini təhlil edir və hər bir IP ünvanından giriş cəhdlərinin sayını hesablayır. Parametrlər müəyyən bir intervalda neçə giriş cəhdinə icazə verilməsi qaydalarını müəyyənləşdirir - bundan sonra bu IP ünvanı müəyyən bir müddət ərzində bloklanır. Məsələn, biz 5 saat ərzində SSH vasitəsilə 2 uğursuz autentifikasiya cəhdinə icazə veririk, bundan sonra bu IP ünvanını 12 saat ərzində bloklayırıq.

CentOS və Red Hat-da Fail2Ban quraşdırılması:

sudo yum install fail2ban

Ubuntu və Debian-da quraşdırma:

sudo apt install fail2ban

Başla:

systemctl start fail2ban
systemctl enable fail2ban

Proqramda iki konfiqurasiya faylı var: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Qadağa məhdudiyyətləri ikinci faylda göstərilmişdir.

SSH üçün həbs standart parametrlərlə (5 cəhd, interval 10 dəqiqə, 10 dəqiqə qadağa) defolt olaraq aktivdir.

[DEFAULT] ignorecommand = bantime = 10m findtime = 10m maxretry = 5

SSH ilə yanaşı, Fail2Ban nginx və ya Apache veb serverində digər xidmətləri də qoruya bilər.

Avtomatik təhlükəsizlik yeniləmələri

Bildiyiniz kimi, bütün proqramlarda daim yeni boşluqlar aşkar edilir. Məlumat dərc edildikdən sonra, bütün serverləri ardıcıl olaraq skan edərkən hakerlər və yeniyetmələr tərəfindən geniş istifadə olunan məşhur istismar paketlərinə istismarlar əlavə edilir. Buna görə də, təhlükəsizlik yeniləmələrini əlçatan olan kimi quraşdırmaq çox vacibdir.

Ubuntu serverlərində defolt olaraq aktivləşdirilmiş avtomatik təhlükəsizlik yeniləmələri var, ona görə də əlavə addımlar tələb olunmur.

CentOS/Red Hat-da proqramı quraşdırmalısınız dnf-avtomatik və taymeri yandırın:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Taymer yoxlanışı:

sudo systemctl status dnf-automatic.timer

Standart portların dəyişdirilməsi

SSH 1995-ci ildə telnet (port 23) və ftp (port 21) əvəz etmək üçün hazırlanmışdır, ona görə də proqramın müəllifi Tatu İltonendir. standart olaraq port 22-ni seçdi, və IANA tərəfindən təsdiq edilmişdir.

Təbii ki, bütün təcavüzkarlar SSH-nin hansı portda işlədiyini bilir və proqram versiyasını tapmaq, standart kök parollarını yoxlamaq və s. üçün onu digər standart portlarla birlikdə skan edir.

Standart portların dəyişdirilməsi - qarışıqlıq - lazımsız trafikin həcmini, jurnalların ölçüsünü və serverə yükü bir neçə dəfə azaldır, həmçinin hücum səthini azaldır. Baxmayaraq ki, bəziləri bu "qeyri-müəyyənlik vasitəsilə müdafiə" metodunu tənqid edin (qeyri-müəyyənlik vasitəsilə təhlükəsizlik). Səbəb isə bu texnikanın təmələ zidd olmasıdır memarlıq mühafizəsi. Buna görə də, məsələn, ABŞ Milli Standartlar və Texnologiya İnstitutu "Server Təhlükəsizlik Bələdçisi" açıq server arxitekturasına ehtiyac olduğunu göstərir: “Sistemin təhlükəsizliyi onun komponentlərinin həyata keçirilməsinin məxfiliyinə əsaslanmamalıdır”, - sənəddə deyilir.

Teorik olaraq, standart portların dəyişdirilməsi açıq memarlıq təcrübələrinə ziddir. Amma praktikada zərərli trafikin həcmi əslində azalır, ona görə də bu sadə və effektiv tədbirdir.

Port nömrəsi direktivi dəyişdirməklə konfiqurasiya edilə bilər Port 22 konfiqurasiya faylında / etc / ssh / sshd_config. Parametrlə də göstərilir -p <port> в ssh. SSH müştəri və proqramları sftp parametrini də dəstəkləyir -p <port>.

Parametr -p <port> əmrindən istifadə edərək qoşulduqda port nömrəsini təyin etmək üçün istifadə edilə bilər ssh Linux-da. IN sftp и scp parametrindən istifadə olunur -P <port> (böyük P). Onu komanda xəttindən təyin etmək konfiqurasiya fayllarında istənilən dəyəri əvəz edir.

Bir çox server varsa, Linux serverini qorumaq üçün demək olar ki, bütün bu hərəkətlər bir skriptdə avtomatlaşdırıla bilər. Ancaq yalnız bir server varsa, prosesi əl ilə idarə etmək daha yaxşıdır.

Reklam Hüquqları haqqında

Sifariş edin və dərhal işə başlayın! VDS-nin yaradılması bir dəqiqə ərzində istənilən konfiqurasiya və istənilən əməliyyat sistemi ilə. Maksimum konfiqurasiya sizə bir partlayışa imkan verəcək - 128 CPU nüvəsi, 512 GB RAM, 4000 GB NVMe. Olduqca epik :)

Linux server mühafizəsi. Əvvəlcə nə etməli

Mənbə: www.habr.com