Keepalived test


TLS bilan Apache xavfsizligini ta'minlash



Yüklə 13,79 Mb.
səhifə121/125
tarix21.08.2023
ölçüsü13,79 Mb.
#140060
1   ...   117   118   119   120   121   122   123   124   125
abdurakhmonov

TLS bilan Apache xavfsizligini ta'minlash


Hozirgi kunda tashkilotingiz veb-sayti shifrlangan va HTTPS orqali mavjud bo'lishini ta'minlash juda yaxshi g'oya. Veb-trafikni shifrlash tarixan Secure Sockets Layer ( SSL ) yoki yaqinda SSL vorisi bo'lgan Transport Layer Security ( TLS ) yordamida amalga oshirilgan. Ikkalasi ham veb-trafikni himoya qiluvchi va shifrlaydigan imzolangan sertifikatlarni o'rnatish orqali kriptografiyadan foydalanish usuliga ishora qiladi. Ikkala funktsiya boshqacha, ammo yakuniy natija bir xil. Kelgusida, qo'shimcha xavfsizlik kuchi tufayli TLS dan foydalanish tavsiya etiladi, ammo hozirgi kunda SSL to'liq bekor qilinmaganligi sababli foydalanilayotganini ko'rish odatiy hol emas.
TLSni sozlash va undan foyda olish unchalik qiyin emas va tashkilotingizni potentsial foydalaniladigan umumiy zaifliklardan himoya qilishga yordam beradi. TLS-dan foydalanish sizni tabiatda qo'llaniladigan barcha ekspluatatsiyalardan himoya qilmaydi, lekin u sizga foyda olishni xohlaydigan himoya qatlamini taklif qiladi. Nafaqat bu, balki sizning mijozlaringiz bugungi kunda ularning aloqalarini himoya qilishingizni kutishadi. Ushbu bo'limda biz Apache o'rnatishimiz bilan TLS dan qanday foydalanishni ko'rib chiqamiz. Biz uni yoqish, sertifikatlar yaratish va Apache’ni ushbu sertifikatlardan bitta sayt konfiguratsiyasi va virtual xostlar bilan foydalanish uchun sozlash orqali ishlaymiz.
80- portdagi trafikni tinglaydi, lekin 443- port (HTTPS) emas. Quyidagi buyruqni ishga tushirish orqali buni o'zingiz tekshirishingiz mumkin:
sudo ss -tulpn | grep apache
Natijalar quyidagiga o'xshaydi va Apache tinglayotgan portlarni ko'rsatadi, bu sukut bo'yicha faqat 80 port:
tcp LISTEN 0 511 *:80 *:* users:(("apache2",pid=33019,fd=4),("apache2",pid=33018,fd=4),("apache2",pid=33017,fd=4),("apache2",pid=33016,fd=4),("apache2",pid=33015,fd=4),
("apache2", pid=33011,fd=4))
Agar server 443- portni ham tinglayotgan bo'lsa, biz chiqishda quyidagilarni ko'rgan bo'lardik:
tcp LISTEN 0 511 *:443 *:*
ssl modulini yoqishimiz kerak:
sudo a2enmod ssl
Keyinchalik, Apache-ni qayta ishga tushirishimiz kerak:
sudo systemctl restart apache2
Biz ilgari muhokama qilgan namunaviy veb-saytga qo'shimcha ravishda, Ubuntu-ning standart Apache ilovasi boshqa sayt konfiguratsiya faylini ham o'z ichiga oladi, /etc/apache2/sitesavailable/default-ssl.conf. Namuna saytidan farqli o'laroq, bu sukut bo'yicha yoqilmagan. Ushbu konfiguratsiya fayli namunaviy sayt konfiguratsiyasiga oʻxshaydi, lekin u 443- portdagi ulanishlarni tinglaydi va TLS bilan bogʻliq qoʻshimcha konfiguratsiya elementlarini oʻz ichiga oladi. Mana shu faylning mazmuni, bu sahifadagi joyni tejash maqsadida izohlar olib tashlangan:


ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log birlashtirilgan
SSLEngine yoqilgan
SSLCertificateFile /etc/ssl/certs/ssl-cert- snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert- snakeoil.key

SSLOptions +StdEnvVars


SSLOptions +StdEnvVars



bu bobda ServerAdmin, DocumentRoot, ErrorLog va CustomLog opsiyalarini ko‘rib chiqdik, ammo bu faylda biz hali ko‘rmagan qo‘shimcha imkoniyatlar mavjud. Birinchi qatorda biz ushbu virtual xost 443 portni tinglayotganini ko'rishimiz mumkin. Shuningdek, biz IP-manzil o'rniga _default_ ro'yxatini ko'ramiz. _default_ opsiyasi faqat aniqlanmagan trafik uchun amal qiladi, bu holda boshqa virtual xostda aniqlanmagan 443-portga keladigan har qanday trafikni bildiradi. Bundan tashqari, SSLEngine on opsiyasi TLS trafikini faollashtiradi. Shundan so'ng bizda TLS sertifikat fayli va kalit fayl uchun variantlar mavjud, biz ularga birozdan keyin murojaat qilamiz.
Shuningdek, bizda bandi mavjud bo'lib, u bizga katalogga maxsus variantlarni qo'llash imkonini beradi. Bunday holda, /usr/lib/cgi-bin katalogida SSLOptions +StdEnvVars sozlamalari qo'llaniladi, bu esa TLS bilan foydalanish uchun standart muhit o'zgaruvchilarini ta'minlaydi. Ushbu parametr.cgi,.shtml, kengaytmasi bo'lgan fayllarga ham qo'llaniladi.
opsiyasi orqali.phtml yoki.php. BrowserMatch opsiyasi ma'lum brauzerlar uchun opsiyalarni o'rnatishga imkon beradi, garchi u ushbu bob uchun mo'ljallangan bo'lmasa ham. Hozircha shuni yodda tutingki, agar siz sozlamalarni muayyan brauzerlarga qo'llamoqchi bo'lsangiz, mumkin.
Odatiy bo'lib, default-ssl.conf fayli yoqilmagan. Uning konfiguratsiya opsiyalaridan foydalanish uchun biz uni yoqishimiz kerak, biz buni a2ensite buyrug'i bilan boshqa har qanday virtual xostda bo'lgani kabi bajarishimiz mumkin:
sudo a2ensite default-ssl.conf
Biz hozirgina TLSni yoqgan bo'lsak ham, saytimiz hali xavfsiz emas. Veb-serverimizni himoya qilish uchun bizga TLS sertifikatlari o'rnatilishi kerak. Biz buni ikkita usuldan birida, o'z-o'zidan imzolangan sertifikatlar yoki sertifikat organi tomonidan imzolangan sertifikatlar bilan amalga oshirishimiz mumkin. Ikkalasi ham juda o'xshash usullarda amalga oshiriladi va men ikkala usulni ham muhokama qilaman. Sinov maqsadlari uchun o'z-o'zidan imzolangan sertifikatlar yaxshi. Ishlab chiqarishda o'z-o'zidan imzolangan sertifikatlar texnik jihatdan ishlaydi, lekin ko'pchilik brauzerlar sukut bo'yicha ularga ishonmaydi va ularning sahifasiga kirganingizda sizga xatolik beradi. Shuning uchun, ishlab chiqarish tizimida o'z-o'zidan imzolangan sertifikatlardan foydalanishdan bosh tortish yaxshi fikr. O'z-o'zidan imzolangan sertifikatlarga ega sayt foydalanuvchilari saytga kirishdan oldin xato sahifasini chetlab o'tishlari kerak va bu xatoni ko'rish ularning saytingizdan butunlay qochishiga olib kelishi mumkin. Siz sertifikatlarni har bir foydalanuvchining veb-brauzeriga o'rnatishingiz mumkin, ammo bu bosh og'rig'i bo'lishi mumkin. Ishlab chiqarishda sotuvchi tomonidan imzolangan sertifikatlardan foydalanish yaxshidir.

Serveringizda sertifikat o'rnatishning yana bir usuli - bu veb-trafikni shifrlash uchun mashhur (va bepul) xizmat - Let's Encrypt. Letsencrypt.org/docs manzilidagi Let's Encrypt veb-saytidagi ko'rsatmalarni , shuningdek, bob oxirida keltirilgan misol maqolasini ko'rib chiqing.

Ushbu jarayondan o'tayotganimizdan so'ng, men sizga birinchi navbatda o'z-o'zidan imzolangan sertifikat bilan TLS sozlamalarini o'tkazaman, shunda jarayon qanday ishlashini ko'rishingiz mumkin. Biz sertifikat yaratamiz va keyin uni Apache-ga o'rnatamiz. Ushbu jarayondan o'tish uchun veb-sayt yaratishingiz shart emas, chunki agar siz kontseptsiya isboti sifatida foydalanmoqchi bo'lsangiz, Apache bilan birga kelgan namunaviy veb-saytni himoyalashingiz mumkin. Jarayonni tugatganimizdan so'ng, sertifikat organi tomonidan imzolangan sertifikatlarni o'rnatishni ko'rib chiqamiz.
To'pni aylantirish uchun bizga sertifikatlarimiz joylashgan katalog kerak bo'ladi. Men misollarimda /etc/ apache2/certs dan foydalanaman, garchi siz Apache konfiguratsiyasini kerakli joylashuv va fayl nomlari bilan yangilashni eslab qolsangiz, xohlagan katalogingizdan foydalanishingiz mumkin:
sudo mkdir /etc/apache2/certs
O'z-o'zidan imzolangan sertifikat va kalit uchun biz quyidagi buyruq bilan juftlikni yaratishimiz mumkin. Veb-saytingiz nomiga mos keladigan kalit va sertifikat fayllari nomini o'zgartirishingiz mumkin:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \ / etc/apache2/certs/mysite.key -out /etc/apache2/certs/mysite.crt
Sizdan sertifikat yaratish uchun ba'zi ma'lumotlarni kiritish so'raladi. Har bir so'rovga ular kelganda javob bering. Mana sizga beriladigan savollar roʻyxati va har biriga javoblarim. Javoblarni serveringizga, muhitingizga, tashkilot nomiga va joylashuvingizga mos ravishda o'zgartiring:
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:Michigan
Locality Name (eg, city) []:Detroit
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:myserver.mydomain.com
Email Address []:webmaster@mycompany.com
/etc/apache2/certs katalogida mos ravishda sertifikat va shaxsiy kalitni ifodalovchi mysite.crt va mysite.key ikkita fayl yaratilganligini ko'rishingiz kerak. Endi bu fayllar yaratilgan bo'lsa, biz uchun navbatdagi narsa Apache-ni ulardan foydalanish uchun sozlashdir. /etc/ apache2/sites-available/default-ssl.conf faylida quyidagi ikkita qatorni qidiring:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Ikkalasining oldiga # belgisini qo'yish orqali ushbu qatorlarni izohlang:
# SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
# SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Keyin, siz sharhlagan satrlar ostiga quyidagi ikkita qatorni qo'shing. Agar siz o'zingizning nomlash qoidalariga rioya qilgan bo'lsangiz, maqsadli kataloglar va sertifikat fayl nomlarini o'zingiz bilan almashtirganingizga ishonch hosil qiling:
SSLCertificateFile /etc/apache2/certs/mysite.crt
SSLCertificateKeyFile /etc/apache2/certs/mysite.key
Apache yangi konfiguratsiyadan foydalanishi uchun apache2 demonini qayta yuklang:
sudo systemctl reload apache2
Yangi konfiguratsiya oʻrnatilgach, biz toʻliq tayyor emasmiz, lekin biz yaqinmiz. Bizda hali qo'shish uchun ozgina konfiguratsiya bor. Ammo bunga kirishdan oldin, sertifikat organi tomonidan imzolangan TLS sertifikatlarini o'rnatish mavzusiga qaytaylik. Imzolangan TLS sertifikatlarini o'rnatish jarayoni deyarli bir xil, ammo asosiy farq sertifikat fayllari qanday so'ralishi va olinishida. Ularga ega bo'lganingizdan so'ng, siz ularni fayl serveringizga ko'chirasiz va Apache'ni xuddi biz qilgandek sozlaysiz. Imzolangan TLS sertifikatini olish jarayonini boshlash uchun siz sertifikat imzolash soʻrovini ( CSR ) yaratishingiz kerak boʻladi. KSS asosan fayl ko'rinishidagi sertifikat so'rovidir, siz imzolangan sertifikatni so'rash jarayonini boshlash uchun sertifikat organingizga taqdim etasiz. CSR quyidagi buyruq bilan osongina yaratilishi mumkin:
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
Yaratilgan CSR fayli bilan siz imzolangan sertifikatni so'rashingiz mumkin. CSR fayli endi joriy ishchi katalogingizda bo'lishi kerak. Butun jarayon bir provayderdan boshqasiga farq qiladi, lekin ko'p hollarda bu juda oddiy. Siz ularga CSR yuborasiz, to'lovlarini to'laysiz, veb-saytida bir yoki ikkita shaklni to'ldirasiz, siz ushbu veb-sayt egasi ekanligingizni isbotlaysiz, so'ngra sotuvchi sizga kerakli fayllarni yuboradi. Bu murakkab tuyulishi mumkin, lekin sertifikat idoralari odatda sizni butun jarayon orqali o'tkazadi va davom etish uchun sizdan nima kerakligini aniqlab beradi. Jarayonni tugatganingizdan so'ng, sertifikat idorasi sizga sertifikat fayllaringizni yuboradi, keyin siz ularni serveringizga o'rnatasiz. ni sozlaganingizdan so'ng
/etc/apache2/sitesavailable/default-ssl.conf-dagi SSLCertificateFile va SSLCertificateKeyFile opsiyalari, siz tayyor bo'lishingiz kerak.
Buni to'g'ri sozlash uchun yana bir qo'shimcha qadamni bajarishimiz kerak. Ayni paytda bizning sertifikat fayllarimiz to'g'ri o'rnatilgan bo'lishi kerak, ammo biz ularni qachon qo'llash haqida Apachega xabar berishimiz kerak. Esingizda bo'lsa, apache2 paketi tomonidan taqdim etilgan default-ssl.conf fayli virtual xost tomonidan boshqa tarzda aniqlanmagan har qanday trafik uchun so'rovlarga javob beradi ( opsiyasi). TLS so'ralganda veb-serverimiz mavjud veb-saytlarimiz uchun trafikni boshqarishini ta'minlashimiz kerak. Saytimiz TLS-ni qo'llab-quvvatlashini ta'minlash uchun ushbu faylga ServerName opsiyasini qo'shishimiz mumkin.
ostidagi /etc/apache2/sites-available/default-ssl.conf fayliga quyidagi parametrni qo'shing:
ServerName mydomain.com:443
ServerName opsiyasi uchun siz kiritgan domenga mos keladigan domenni so‘rab, 443- portdagi serveringizga trafik kelganida, bu mijoz uchun xavfsiz ko‘rish seansiga olib kelishi kerak. Manzil satrida yashil qulf belgisini ko'rishingiz kerak (bu sizning brauzeringizga bog'liq), bu sizning seansingiz himoyalanganligini bildiradi. Agar siz o'z-o'zidan imzolangan sertifikatlardan foydalanayotgan bo'lsangiz, avval o'tkazib yuborishingiz kerak bo'lgan xatoni ko'rasiz va yashil qulf belgisini olmasligingiz mumkin. Bu shifrlash ishlamayapti degani emas; Bu sizning brauzeringiz sertifikatga shubha bilan qarashini bildiradi, chunki u ma'lum sertifikat organi tomonidan imzolanmagan. Seansingiz hali ham shifrlangan bo‘ladi.
Agar siz HTTPS orqali bir nechta veb-saytlarni joylashtirishni rejalashtirmoqchi bo'lsangiz, har biri uchun alohida virtual xost faylidan foydalanishni ko'rib chiqishingiz mumkin. Buni amalga oshirishning oson yo'li - /etc/apache2/sites-available/default-ssl.conf faylini shablon sifatida ishlatish va DocumentRoot-ni ushbu sayt uchun fayllar joylashgan katalogga o'zgartirish. Bundan tashqari, SSLCertificateFile va SSLCertificateKeyFile opsiyalarini sayt uchun sertifikat fayllariga ishora qilish va ServerName ni saytingizga mos keladigan domenga o‘rnatishni unutmang. Mana, TLS dan foydalanadigan faraziy sayt uchun virtual xost fayliga misol.
default-ssl.conf faylidan o'zgartirgan qatorlarni ajratib ko'rsatdim:



ServerName acmeconsulting.com:443

ServerAdmin webmaster@localhost

DocumentRoot /var/www/acmeconsulting

Yüklə 13,79 Mb.

Dostları ilə paylaş:
1   ...   117   118   119   120   121   122   123   124   125




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin