Linux server himoyasi. Avval nima qilish kerak

Linux server himoyasi. Avval nima qilish kerak
Habib M'henni/Wikimedia Commons, CC BY-SA

Hozirgi vaqtda hostingda serverni ko'tarish bir necha daqiqa va sichqonchani bir necha marta bosish masalasidir. Ammo ishga tushirilgandan so'ng darhol u o'zini dushman muhitda topadi, chunki u roker diskotekasidagi begunoh qiz kabi butun Internetga ochiq. Skanerlar uni tezda topib, zaifliklar va noto'g'ri konfiguratsiyalarni qidirib tarmoqni tekshiradigan minglab avtomatik skriptli botlarni aniqlaydi. Asosiy himoyani ta'minlash uchun ishga tushirilgandan so'ng darhol qilish kerak bo'lgan bir nechta narsa bor.

Mundarija

Root bo'lmagan foydalanuvchi

Birinchi qadam o'zingiz uchun root bo'lmagan foydalanuvchi yaratishdir. Gap shundaki, foydalanuvchi root tizimda mutlaq imtiyozlar va agar siz unga masofaviy boshqaruvga ruxsat bersangiz, u holda siz xaker uchun ishning yarmini bajarasiz va unga haqiqiy foydalanuvchi nomini qoldirasiz.

Shuning uchun siz boshqa foydalanuvchi yaratishingiz va root uchun SSH orqali masofaviy boshqaruvni o'chirib qo'yishingiz kerak.

Buyruq orqali yangi foydalanuvchi ishga tushiriladi useradd:

useradd [options] <username>

Keyin buyruq bilan unga parol qo'shiladi passwd:

passwd <username>

Nihoyat, bu foydalanuvchi yuqori buyruqlarni bajarish huquqiga ega bo'lgan guruhga qo'shilishi kerak sudo. Linux tarqatilishiga qarab, ular turli guruhlar bo'lishi mumkin. Masalan, CentOS va Red Hat-da foydalanuvchi guruhga qo'shiladi wheel:

usermod -aG wheel <username>

Ubuntu-da u guruhga qo'shiladi sudo:

usermod -aG sudo <username>

SSH parollari o'rniga kalitlar

Shafqatsiz kuch yoki parolning sizib chiqishi standart hujum vektoridir, shuning uchun SSH (Secure Shell) da parolni autentifikatsiya qilishni o'chirib qo'yish va uning o'rniga kalit autentifikatsiyasidan foydalanish yaxshidir.

SSH protokolini amalga oshirish uchun turli xil dasturlar mavjud, masalan lsh и ayiq, lekin eng mashhuri OpenSSH. Ubuntu-da OpenSSH mijozini o'rnatish:

sudo apt install openssh-client

Serverni o'rnatish:

sudo apt install openssh-server

Ubuntu serverida SSH demonini (sshd) ishga tushirish:

sudo systemctl start sshd

Har bir yuklashda demonni avtomatik ravishda ishga tushiring:

sudo systemctl enable sshd

Shuni ta'kidlash kerakki, OpenSSH server qismi mijoz qismini o'z ichiga oladi. Ya'ni orqali openssh-server boshqa serverlarga ulanishingiz mumkin. Bundan tashqari, mijoz kompyuteringizdan uzoq serverdan uchinchi tomon xostiga SSH tunnelini ishga tushirishingiz mumkin, so'ngra uchinchi tomon xosti uzoq serverni so'rovlar manbai sifatida ko'rib chiqadi. Tizimingizni maskalash uchun juda qulay xususiyat. Tafsilotlar uchun maqolaga qarang "Amaliy maslahatlar, misollar va SSH tunnellari".

Mijoz mashinasida kompyuterga masofadan ulanish imkoniyatini oldini olish uchun (xavfsizlik maqsadlarida) to'liq huquqli serverni o'rnatish odatda mantiqiy emas.

Shunday qilib, yangi foydalanuvchi uchun siz avval serverga kiradigan kompyuterda SSH kalitlarini yaratishingiz kerak:

ssh-keygen -t rsa

Ochiq kalit faylda saqlanadi .pub bilan boshlanadigan tasodifiy belgilar qatoriga o‘xshaydi ssh-rsa.

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

Keyin, ildiz ostidan, foydalanuvchining uy katalogidagi serverda SSH katalogini yarating va faylga SSH ochiq kalitini qo'shing. authorized_keys, Vim kabi matn muharriri yordamida:

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

vim /home/user_name/.ssh/authorized_keys

Nihoyat, fayl uchun to'g'ri ruxsatlarni o'rnating:

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

va ushbu foydalanuvchiga egalikni o'zgartiring:

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

Mijoz tomonida autentifikatsiya qilish uchun maxfiy kalitning joylashuvini ko'rsatishingiz kerak:

ssh-add DIR_PATH/keylocation

Endi siz ushbu kalit yordamida serverga foydalanuvchi nomi bilan kirishingiz mumkin:

ssh [username]@hostname

Avtorizatsiyadan so'ng siz yordam dasturidan fayllarni nusxalash uchun scp buyrug'idan foydalanishingiz mumkin sshfs fayl tizimi yoki kataloglarni masofadan o'rnatish uchun.

Shaxsiy kalitning bir nechta zaxira nusxalarini yaratish tavsiya etiladi, chunki agar siz parolni autentifikatsiya qilishni o'chirib qo'ysangiz va uni yo'qotib qo'ysangiz, o'z serveringizga umuman kirish imkoni bo'lmaydi.

Yuqorida aytib o'tilganidek, SSH-da siz ildiz uchun autentifikatsiyani o'chirib qo'yishingiz kerak (shuning uchun biz yangi foydalanuvchini ishga tushirdik).

CentOS/Red Hat-da biz chiziqni topamiz PermitRootLogin yes konfiguratsiya faylida /etc/ssh/sshd_config va uni o'zgartiring:

PermitRootLogin no

Ubuntu-da qatorni qo'shing PermitRootLogin no konfiguratsiya fayliga 10-my-sshd-settings.conf:

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

Yangi foydalanuvchi o'z kaliti bilan autentifikatsiya qilinayotganini tekshirgandan so'ng, parolning sizib chiqishi yoki qo'pol kuch ishlatish xavfini bartaraf qilish uchun parolni autentifikatsiya qilishni o'chirib qo'yishingiz mumkin. Endi serverga kirish uchun tajovuzkor shaxsiy kalitni olishi kerak bo'ladi.

CentOS/Red Hat-da biz chiziqni topamiz PasswordAuthentication yes konfiguratsiya faylida /etc/ssh/sshd_config va uni quyidagicha o'zgartiring:

PasswordAuthentication no

Ubuntu-da qatorni qo'shing PasswordAuthentication no faylga 10-my-sshd-settings.conf:

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

SSH orqali ikki faktorli autentifikatsiyani yoqish bo'yicha ko'rsatmalar uchun qarang shu yerda.

Xavfsizlik devori

Xavfsizlik devori faqat siz to'g'ridan-to'g'ri ruxsat bergan portlardagi trafik serverga o'tishini ta'minlaydi. Bu boshqa xizmatlar bilan tasodifan yoqilgan portlarni ekspluatatsiya qilishdan himoya qiladi, bu esa hujum maydonini sezilarli darajada kamaytiradi.

Xavfsizlik devorini o'rnatishdan oldin, SSH istisnolar ro'yxatiga kiritilganligiga va bloklanmasligiga ishonch hosil qilishingiz kerak. Aks holda, xavfsizlik devorini ishga tushirgandan so'ng, biz serverga ulana olmaymiz.

Ubuntu tarqatish murakkab bo'lmagan xavfsizlik devori bilan birga keladi (Qoyil) va CentOS/Red Hat bilan - xavfsizlik devori.

Ubuntu-da xavfsizlik devorida SSH-ga ruxsat berish:

sudo ufw allow ssh

CentOS/Red Hat-da buyruqdan foydalaning firewall-cmd:

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

Ushbu protseduradan so'ng siz xavfsizlik devorini ishga tushirishingiz mumkin.

CentOS/Red Hat-da xavfsizlik devori uchun systemd xizmatini ishga tushiring:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ubuntu-da biz quyidagi buyruqdan foydalanamiz:

sudo ufw enable

Fail2Ban

xizmat Fail2Ban serverdagi jurnallarni tahlil qiladi va har bir IP manzildan kirishga urinishlar sonini hisoblaydi. Sozlamalar ma'lum bir vaqt oralig'ida qancha kirish urinishlariga ruxsat berish qoidalarini belgilaydi - shundan so'ng ushbu IP-manzil ma'lum vaqt davomida bloklanadi. Masalan, 5 soat ichida 2 ta muvaffaqiyatsiz SSH autentifikatsiya urinishlariga ruxsat beraylik, keyin esa berilgan IP manzilni 12 soat davomida bloklaymiz.

Fail2Ban-ni CentOS va Red Hat-ga o'rnatish:

sudo yum install fail2ban

Ubuntu va Debian-ga o'rnatish:

sudo apt install fail2ban

Ishga tushirish:

systemctl start fail2ban
systemctl enable fail2ban

Dasturda ikkita konfiguratsiya fayli mavjud: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Taqiqlash cheklovlari ikkinchi faylda ko'rsatilgan.

SSH uchun Jail sukut bo'yicha standart sozlamalar bilan yoqilgan (5 urinish, interval 10 daqiqa, 10 daqiqaga taqiq).

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

SSH-dan tashqari, Fail2Ban nginx yoki Apache veb-serveridagi boshqa xizmatlarni himoya qilishi mumkin.

Avtomatik xavfsizlik yangilanishlari

Ma'lumki, barcha dasturlarda doimiy ravishda yangi zaifliklar topiladi. Ma'lumotlar chop etilgandan so'ng, ekspluatatsiyalar barcha serverlarni ketma-ket skanerlashda xakerlar va o'smirlar tomonidan ommaviy ravishda qo'llaniladigan mashhur ekspluatatsiya paketlariga qo'shiladi. Shuning uchun xavfsizlik yangilanishlarini paydo bo'lishi bilanoq o'rnatish juda muhimdir.

Ubuntu serverida avtomatik xavfsizlik yangilanishlari sukut bo'yicha yoqilgan, shuning uchun boshqa hech qanday harakat talab etilmaydi.

CentOS/Red Hat-da dasturni o'rnatishingiz kerak dnf-avtomatik va taymerni yoqing:

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

Taymerni tekshirish:

sudo systemctl status dnf-automatic.timer

Standart portlarni o'zgartirish

SSH 1995 yilda telnet (23-port) va ftp (21-port) oʻrnini bosish uchun ishlab chiqilgan, shuning uchun dastur muallifi Tatu Iltonen sukut bo'yicha tanlangan port 22, va IANA tomonidan tasdiqlangan.

Tabiiyki, barcha tajovuzkorlar SSH qaysi portda ishlayotganini bilishadi - va dasturiy ta'minot versiyasini bilish, standart ildiz parollarini tekshirish va hokazolar uchun uni qolgan standart portlar bilan birga skanerlang.

Standart portlarni o'zgartirish - xiralashish - axlat trafigini, jurnallar hajmini va serverdagi yukni bir necha bor kamaytiradi, shuningdek, hujum yuzasini kamaytiradi. Garchi ba'zilar bu "noaniqlik orqali himoya" usulini tanqid qiling (noaniqlik orqali xavfsizlik). Sababi, bu texnika fundamentalga ziddir arxitektura muhofazasi. Shuning uchun, masalan, AQSh Milliy standartlar va texnologiyalar instituti "Server xavfsizligi bo'yicha qo'llanma" ochiq server arxitekturasi zarurligini ko'rsatadi: "Tizim xavfsizligi uning tarkibiy qismlarini amalga oshirish siriga tayanmasligi kerak", deyiladi hujjatda.

Nazariy jihatdan, standart portlarni o'zgartirish ochiq arxitektura amaliyotiga ziddir. Ammo amalda zararli trafik miqdori aslida kamayadi, shuning uchun bu oddiy va samarali choradir.

Port raqamini direktivani o'zgartirish orqali sozlash mumkin Port 22 konfiguratsiya faylida / etc / ssh / sshd_config. Bu parametr bilan ham ko'rsatiladi -p <port> в ssh. SSH mijozi va dasturlari sftp variantni ham qo'llab-quvvatlaydi -p <port>.

Parametr -p <port> buyruq bilan ulanishda port raqamini ko'rsatish uchun ishlatilishi mumkin ssh linuxda. IN sftp и scp parametr ishlatiladi -P <port> (Kapital P). Buyruqlar qatori ko'rsatmalari konfiguratsiya fayllaridagi har qanday qiymatni bekor qiladi.

Agar serverlar ko'p bo'lsa, Linux serverini himoya qilish bo'yicha deyarli barcha bu harakatlar skriptda avtomatlashtirilishi mumkin. Ammo agar bitta server bo'lsa, jarayonni qo'lda boshqarish yaxshiroqdir.

Reklama huquqlari to'g'risida

Buyurtma bering va darhol boshlang! VDS yaratish har qanday konfiguratsiya va har qanday operatsion tizim bilan bir daqiqa ichida. Maksimal konfiguratsiya sizga maksimal darajada ishlashga imkon beradi - 128 protsessor yadrosi, 512 GB RAM, 4000 GB NVMe. Epos 🙂

Linux server himoyasi. Avval nima qilish kerak

Manba: www.habr.com