USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс

USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс
В бидний өмнөх нийтлэлүүдийн нэг Бид компаниудын корпорацийн портал дээрх хоёр хүчин зүйлийн баталгаажуулалтын ач холбогдлын талаар ярилцсан. Хамгийн сүүлд бид IIS вэб серверт аюулгүй нэвтрэлт танилтыг хэрхэн тохируулахыг харуулсан.

Сэтгэгдэл бичихдээ биднээс Linux-д зориулсан хамгийн түгээмэл вэб сервер болох nginx болон Apache-ийн зааварчилгааг бичихийг хүссэн.

Та асуусан - бид бичсэн.

Эхлэхийн тулд танд юу хэрэгтэй вэ?

  • Ямар ч орчин үеийн Linux түгээлт. Би MX Linux 18.2_x64 дээр туршилтын тохиргоо хийсэн. Энэ нь мэдээжийн хэрэг серверийн түгээлт биш, гэхдээ Debian-д ямар нэгэн ялгаа байх магадлал багатай. Бусад түгээлтийн хувьд тохиргооны сангуудын замууд бага зэрэг өөр байж болно.
  • Токен. Бид загварыг үргэлжлүүлэн ашигладаг Rutoken EDS PKI, энэ нь байгууллагын хэрэглээнд хурдны шинж чанарын хувьд хамгийн тохиромжтой.
  • Линукс дээр токентэй ажиллахын тулд та дараах багцуудыг суулгах хэрэгтэй.
    libccid libpcsclite1 pcscd pcsc-tools opensc

USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс

Сертификат олгох

Өмнөх нийтлэлүүдэд бид сервер болон үйлчлүүлэгчийн гэрчилгээг Microsoft CA ашиглан олгоно гэсэн баримтад тулгуурласан. Гэхдээ бид Линукс дээр бүх зүйлийг тохируулж байгаа тул Линуксийг орхихгүйгээр эдгээр гэрчилгээг олгох өөр арга замын талаар танд хэлэх болно.
Бид XCA-г CA болгон ашиглах болно (https://hohnstaedt.de/xca/), орчин үеийн ямар ч Linux түгээлт дээр байдаг. XCA дээр бидний хийх бүх үйлдлийг OpenSSL болон pkcs11 хэрэглүүрийг ашиглан командын мөрийн горимд хийж болох боловч илүү хялбар, ойлгомжтой болгох үүднээс бид энэ нийтлэлд тэдгээрийг танилцуулахгүй.

Эхлэл

  1. Суулгах:
    $ apt-get install xca
  2. Тэгээд бид гүйж байна:
    $ xca
  3. Бид CA - /root/CA.xdb-д зориулсан мэдээллийн санг бий болгодог
    Гэрчилгээний албаны мэдээллийн санг зөвхөн администратор хандах боломжтой хавтсанд хадгалахыг бид зөвлөж байна. Энэ нь бусад бүх гэрчилгээнд гарын үсэг зурахад ашигладаг эх гэрчилгээний хувийн түлхүүрүүдийг хамгаалахад чухал ач холбогдолтой.

Түлхүүрүүд болон root CA сертификат үүсгэх

Нийтийн түлхүүрийн дэд бүтэц (PKI) нь шаталсан систем дээр суурилдаг. Энэ систем дэх гол зүйл бол root баталгаажуулалтын байгууллага эсвэл root CA юм. Эхлээд түүний гэрчилгээг бүрдүүлэх ёстой.

  1. Бид CA-д зориулсан RSA-2048 хувийн түлхүүрийг үүсгэдэг. Үүнийг хийхийн тулд таб дээр Хувийн түлхүүрүүд түлхэх Шинэ түлхүүр мөн тохирох төрлийг сонгоно уу.
  2. Шинэ түлхүүрийн хосын нэрийг тохируулна уу. Би үүнийг CA Key гэж нэрлэсэн.
  3. Бид үүсгэсэн түлхүүрийн хослолыг ашиглан CA гэрчилгээг өөрөө гаргадаг. Үүнийг хийхийн тулд таб руу очно уу гэрчилгээ дээр дарна уу Шинэ гэрчилгээ.
  4. Сонголт хийхээ мартуузай SHA-256, учир нь SHA-1-ийг ашиглах нь аюулгүй гэж үзэх боломжгүй болсон.
  5. Загвар болгон сонгохоо мартуузай [өгөгдмөл]CA. дээр дарахаа бүү мартаарай Бүгдийг нь хэрэглэх, эс бөгөөс загварыг ашиглахгүй.
  6. Таб дотор Агуулга Манай түлхүүрийг сонго. Тэнд та гэрчилгээний бүх үндсэн талбаруудыг бөглөж болно.

USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс

Түлхүүрүүд болон https серверийн гэрчилгээг үүсгэж байна

  1. Үүнтэй адилаар бид серверт зориулсан RSA-2048 хувийн түлхүүрийг үүсгэдэг, би үүнийг Серверийн түлхүүр гэж нэрлэсэн.
  2. Сертификат үүсгэх үед бид серверийн гэрчилгээнд CA гэрчилгээтэй гарын үсэг зурсан байх ёстойг сонгодог.
  3. Сонгохыг бүү мартаарай SHA-256.
  4. Бид загвар болгон сонгодог [өгөгдмөл] HTTPS_сервер. Дээр товшино уу Бүгдийг нь хэрэглэх.
  5. Дараа нь таб дээр Агуулга манай түлхүүрийг сонгоод шаардлагатай талбаруудыг бөглөнө үү.

USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс

Хэрэглэгчийн түлхүүр, гэрчилгээ үүсгэх

  1. Хэрэглэгчийн хувийн түлхүүр нь бидний жетон дээр хадгалагдах болно. Үүнтэй ажиллахын тулд та манай вэбсайтаас PKCS#11 номын санг суулгах хэрэгтэй. Алдартай түгээлтийн хувьд бид энд байрлах бэлэн багцуудыг тараадаг. https://www.rutoken.ru/support/download/pkcs/. Бидэнд мөн arm64, armv7el, armv7hf, e2k, mipso32el-д зориулсан угсралтууд байгаа бөгөөд үүнийг манай SDK-ээс татаж авах боломжтой - https://www.rutoken.ru/developers/sdk/. Линуксд зориулсан угсралтаас гадна macOS, freebsd, android-д зориулсан угсралтууд бас бий.
  2. XCA-д шинэ PKCS#11 үйлчилгээ үзүүлэгч нэмж байна. Үүнийг хийхийн тулд цэс рүү очно уу сонголтууд таб руу PKCS#11 Үйлчилгээ үзүүлэгч.
  3. Бид дардаг нэмэх болон PKCS замыг сонгох # 11 номын сан. Миний хувьд энэ нь usrliblibrtpkcs11ecp.so юм.
  4. Бидэнд форматлагдсан Rutoken EDS PKI токен хэрэгтэй болно. rtAdmin хэрэгслийг татаж авах - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Бид гүйцэтгэдэг
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Бид Rutoken EDS PKI-д зориулсан RSA-2048 түлхүүрийг түлхүүрийн төрлөөр сонгоно. Би энэ түлхүүрийг Client Key гэж нэрлэсэн.

    USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс

  7. ПИН кодыг оруулна уу. Мөн бид түлхүүр хосын техник хангамжийн үйлдвэрлэл дуусахыг хүлээж байна

    USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс

  8. Бид серверийн гэрчилгээтэй адилтган хэрэглэгчийн гэрчилгээг бий болгодог. Энэ удаад бид загвар сонгох болно [өгөгдмөл] HTTPS_client мөн дарахаа бүү мартаарай Бүгдийг нь хэрэглэх.
  9. Таб дотор Агуулга хэрэглэгчийн талаарх мэдээллийг оруулна уу. Сертификатыг токенд хадгалах хүсэлтэд бид эерэгээр хариулдаг.

Үүний үр дүнд, таб дээр Сертификат XCA дээр та иймэрхүү зүйлийг авах ёстой.

USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс
Түлхүүр болон гэрчилгээний хамгийн бага багц нь серверүүдийг өөрсдөө тохируулж эхлэхэд хангалттай.

Тохируулахын тулд бид CA сертификат, серверийн гэрчилгээ, серверийн хувийн түлхүүрийг экспортлох шаардлагатай.

Үүнийг хийхийн тулд XCA дээрх харгалзах таб дээрээс хүссэн оруулгыг сонгоод товшино уу Экспорт.

Nginx

Би nginx серверийг хэрхэн суулгах, ажиллуулах талаар бичихгүй - албан ёсны баримт бичгийг дурдахгүй байхын тулд Интернетэд энэ сэдвээр хангалттай нийтлэлүүд байдаг. HTTPS болон токен ашиглан хоёр хүчин зүйлийн баталгаажуулалтыг тохируулах руу шууд орцгооё.

Nginx.conf дээрх серверийн хэсэгт дараах мөрүүдийг нэмнэ үү:

server {
	listen 443 ssl;
	ssl_verify_depth 1;
	ssl_certificate /etc/nginx/Server.crt;
	ssl_certificate_key /etc/nginx/ServerKey.pem;
	ssl_client_certificate /etc/nginx/CA.crt;
	ssl_verify_client on;
}

Nginx дээр ssl-г тохируулахтай холбоотой бүх параметрүүдийн дэлгэрэнгүй тайлбарыг эндээс олж болно - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Би өөрөөсөө асуусан зүйлээ товчхон тайлбарлая:

  • ssl_verify_client - гэрчилгээний итгэлцлийн хэлхээг баталгаажуулах шаардлагатайг заана.
  • ssl_verify_depth - Гинжин дэх итгэмжлэгдсэн эх сертификатын хайлтын гүнийг тодорхойлно. Манай үйлчлүүлэгчийн гэрчилгээ нэн даруй үндсэн сертификат дээр гарын үсэг зурсан тул гүнийг 1 гэж тохируулсан. Хэрэв хэрэглэгчийн гэрчилгээ нь завсрын CA дээр гарын үсэг зурсан бол энэ параметрт 2-ыг зааж өгөх ёстой гэх мэт.
  • ssl_client_certificate - хэрэглэгчийн гэрчилгээнд итгэх итгэлийг шалгахад ашигладаг итгэмжлэгдсэн эх сертификат руу хүрэх замыг зааж өгдөг.
  • ssl_certificate/ssl_certificate_key - серверийн гэрчилгээ/хувийн түлхүүр рүү хүрэх замыг заана.

Тохиргоонд ямар ч үсгийн алдаа байхгүй, бүх файл зөв газарт байгаа гэх мэтийг шалгахын тулд nginx -t-г ажиллуулахаа бүү мартаарай.

Тэгээд л энэ! Таны харж байгаагаар тохиргоо нь маш энгийн.

Firefox дээр ажиллаж байгаа эсэхийг шалгаж байна

Бид бүх зүйлийг Линукс дээр бүрэн хийдэг тул хэрэглэгчид маань Линукс дээр ажилладаг (хэрэв тэд Windows-тэй бол). Өмнөх нийтлэл дэх хөтчүүдийг тохируулах зааврыг үзнэ үү.

  1. Firefox-г ажиллуулцгаая.
  2. Эхлээд токенгүйгээр нэвтэрч үзэцгээе. Бид энэ зургийг авна:

    USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс

  3. Руу явцгаая тухай: тохиргоо # нууцлал, мөн бид очдог Хамгаалалтын төхөөрөмжүүд…
  4. Бид дардаг Loadшинэ PKCS#11 Төхөөрөмжийн Драйвер нэмж, манай librtpkcs11ecp.so руу очих замыг зааж өгнө үү.
  5. Сертификат харагдаж байгаа эсэхийг шалгахын тулд та дараах руу очиж болно Сертификат менежер. Танаас ПИН кодоо оруулахыг хүсэх болно. Зөв оруулсны дараа та таб дээр юу байгааг шалгаж болно Таны гэрчилгээ жетоноос бидний гэрчилгээ гарч ирэв.
  6. Одоо тэмдэгтэй явцгаая. Firefox серверт сонгогдох гэрчилгээг сонгохыг танд сануулж байна. Манай гэрчилгээг сонго.

    USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс

  7. АШИГ!

    USB токен ашиглан сайт дээрх хоёр хүчин зүйлийн баталгаажуулалт. Одоо бас Линукс

Тохируулга нь нэг удаа хийгдсэн бөгөөд та гэрчилгээний хүсэлтийн цонхноос харж байгаагаар бид сонголтоо хадгалах боломжтой. Үүний дараа бид портал руу нэвтрэх бүрт токен оруулж, форматлах явцад заасан хэрэглэгчийн ПИН кодыг оруулахад л хангалттай. Ийм баталгаажуулалтын дараа сервер аль хэрэглэгч нэвтэрсэнийг аль хэдийн мэдэж байгаа бөгөөд та баталгаажуулахын тулд нэмэлт цонх үүсгэх боломжгүй, харин тэр даруй хэрэглэгчийг өөрийн хувийн данс руу оруулна.

Апачи

Яг л nginx-тэй адил apache-г суулгахад хэн ч асуудал гарах ёсгүй. Хэрэв та энэ вэб серверийг хэрхэн суулгахаа мэдэхгүй байгаа бол албан ёсны баримт бичгийг ашиглана уу.

Мөн бид HTTPS болон хоёр хүчин зүйлийн баталгаажуулалтыг тохируулж эхэлнэ:

  1. Эхлээд та mod_ssl-г идэвхжүүлэх хэрэгтэй:
    $ a2enmod ssl
  2. Дараа нь сайтын анхдагч HTTPS тохиргоог идэвхжүүлнэ үү:
    $ a2ensite default-ssl
  3. Одоо бид тохиргооны файлыг засварлаж байна: /etc/apache2/sites-enabled/default-ssl.conf:
        SSLEngine on
        SSLProtocol all -SSLv2
    
        SSLCertificateFile	/etc/apache2/sites-enabled/Server.crt
        SSLCertificateKeyFile /etc/apache2/sites-enabled/ServerKey.pem
    
        SSLCACertificateFile /etc/apache2/sites-enabled/CA.crt
    
        SSLVerifyClient require
        SSLVerifyDepth  10

    Таны харж байгаагаар параметрүүдийн нэр нь nginx дээрх параметрүүдийн нэртэй бараг давхцаж байгаа тул би тэдгээрийг тайлбарлахгүй. Дахин хэлэхэд, дэлгэрэнгүй мэдээллийг сонирхож буй хэн бүхэн баримт бичигт тавтай морилно уу.
    Одоо бид серверээ дахин эхлүүлнэ үү:

    $ service apache2 reload
    $ service apache2 restart

  4. Таны харж байгаагаар Windows эсвэл Linux дээр байгаа аль ч вэб сервер дээр хоёр хүчин зүйлийн баталгаажуулалтыг тохируулах нь хамгийн ихдээ нэг цаг зарцуулдаг. Мөн хөтчүүдийг тохируулах нь ойролцоогоор 5 минут болно. Олон хүмүүс хоёр хүчин зүйлийн баталгаажуулалтыг тохируулах, ажиллах нь хэцүү бөгөөд тодорхойгүй гэж боддог. Манай нийтлэл энэ домгийг бага ч болов үгүйсгэнэ гэж найдаж байна.

Зөвхөн бүртгэлтэй хэрэглэгчид санал асуулгад оролцох боломжтой. Нэвтрэх, гуйя.

ГОСТ 34.10-2012 стандартын дагуу гэрчилгээ бүхий TLS-ийг тохируулах заавар танд хэрэгтэй юу?

  • Тийм ээ, TLS-ГОСТ маш хэрэгтэй

  • Үгүй ээ, ГОСТ алгоритмтай тааруулах нь тийм ч сонирхолтой биш юм

44 хэрэглэгч санал өгсөн. 9 хэрэглэгч түдгэлзсэн.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх