Біз аппараттық кілттері бар SSH хосттарына шұғыл қол жеткізу процедурасын белгілейміз

Біз аппараттық кілттері бар SSH хосттарына шұғыл қол жеткізу процедурасын белгілейміз

Бұл постта біз SSH хосттарына аппараттық қауіпсіздік кілттерін офлайн режимде пайдалану арқылы шұғыл қол жеткізу процедурасын әзірлейтін боламыз. Бұл бір ғана тәсіл және сіз оны қажеттіліктеріңізге сай бейімдей аласыз. Біз хосттарымыз үшін SSH сертификатының өкілеттігін аппараттық қауіпсіздік кілтінде сақтаймыз. Бұл схема кез келген дерлік OpenSSH-де, соның ішінде бір рет кіру арқылы SSH-де жұмыс істейді.

Мұның бәрі не үшін? Бұл ең соңғы нұсқа. Бұл қандай да бір себептермен ештеңе жұмыс істемейтін кезде серверге кіруге мүмкіндік беретін бэкдор.

Неліктен төтенше жағдайда қол жеткізу үшін ашық/жеке кілттердің орнына сертификаттарды пайдалану керек?

  • Ашық кілттерден айырмашылығы, сертификаттардың қызмет ету мерзімі өте қысқа болуы мүмкін. Сіз 1 минут немесе тіпті 5 секунд жарамды сертификат жасай аласыз. Осы кезеңнен кейін сертификат жаңа қосылымдар үшін жарамсыз болады. Бұл төтенше жағдайда қол жеткізу үшін өте қолайлы.
  • Сіз өзіңіздің хосттарыңызда кез келген тіркелгі үшін сертификат жасай аласыз және қажет болған жағдайда әріптестерге осындай «бір реттік» сертификаттарды жібере аласыз.

Сізге не қажет

  • Резидентті кілттерді қолдайтын аппараттық қауіпсіздік кілттері.
    Резиденттік кілттер толығымен қауіпсіздік кілтінде сақталатын криптографиялық кілттер. Кейде олар әріптік-сандық PIN кодымен қорғалады. Резидентті кілттің жалпы бөлігін жеке кілт дескрипторымен бірге қауіпсіздік кілтінен экспорттауға болады. Мысалы, Yubikey 5 сериялы USB пернелері резиденттік кілттерді қолдайды.Олардың тек хостқа төтенше жағдайда кіруге арналғаны жөн. Бұл жазба үшін мен тек бір кілтті қолданамын, бірақ сақтық көшірме жасау үшін сізде қосымша болуы керек.
  • Бұл кілттерді сақтайтын қауіпсіз орын.
  • Жергілікті компьютерде және төтенше жағдайда қол жеткізгіңіз келетін серверлерде OpenSSH 8.2 немесе одан жоғары нұсқасы. Ubuntu 20.04 OpenSSH 8.2 нұсқасымен жеткізіледі.
  • (міндетті емес, бірақ ұсынылады) Сертификаттарды тексеруге арналған CLI құралы.

Дайындау

Алдымен аппараттық қауіпсіздік кілтінде орналасатын сертификаттау орталығын жасау керек. Кілтті енгізіп, іске қосыңыз:

$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]

Түсініктеме ретінде (-C) мен көрсеттім [электрондық пошта қорғалған]сондықтан осы сертификаттау органы қай қауіпсіздік кілтіне жататынын ұмытпайсыз.

Yubikey кілтін қосудан басқа, екі файл жергілікті түрде жасалады:

  1. sk-user-ca, қауіпсіздік кілтінде сақталған жеке кілтке сілтеме жасайтын кілт дескрипті,
  2. sk-user-ca.pub, ол сіздің сертификаттау органыңыздың ашық кілті болады.

Бірақ алаңдамаңыз, Yubikey басқа жеке кілтті сақтайды, оны алу мүмкін емес. Сондықтан мұнда бәрі сенімді.

Хосттарда, түбір ретінде, SSHD конфигурацияңызға (/etc/ssh/sshd_config) келесіні қосыңыз (егер әлі жоқ):

TrustedUserCAKeys /etc/ssh/ca.pub

Содан кейін хостта /etc/ssh/ca.pub ішіне ашық кілтті (sk-user-ca.pub) қосыңыз.

Демонды қайта іске қосыңыз:

# /etc/init.d/ssh restart

Енді біз хостқа кіруге тырысамыз. Бірақ алдымен сертификат керек. Сертификатпен байланыстырылатын кілттер жұбын жасаңыз:

$ ssh-keygen -t ecdsa -f emergency

Сертификаттар және SSH жұптары
Кейде сертификатты жалпы/жеке кілт жұбының орнына пайдалану қызықтырады. Бірақ пайдаланушының аутентификациясы үшін сертификаттың өзі жеткіліксіз. Әрбір сертификатта онымен байланысты жеке кілт бар. Сондықтан біз өзімізге сертификат бермес бұрын осы «төтенше» кілт жұбын жасауымыз керек. Ең бастысы, біз қол қойылған сертификатты серверге көрсетеміз, бізде құпия кілт бар кілттер жұбын көрсетеміз.

Осылайша, ашық кілт алмасу әлі де тірі және жақсы. Бұл тіпті сертификаттармен де жұмыс істейді. Сертификаттар сервердің ашық кілттерді сақтау қажеттілігін жояды.

Содан кейін сертификаттың өзін жасаңыз. Маған 10 минуттық интервалда ubuntu пайдаланушы авторизациясы қажет. Сіз мұны өзіңіз жасай аласыз.

$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency

Сізден саусақ ізі арқылы сертификатқа қол қою сұралады. Үтірмен бөлінген қосымша пайдаланушы атын қосуға болады, мысалы -n ubuntu,carl,ec2-user

Болды, енді сізде сертификат бар! Содан кейін дұрыс рұқсаттарды көрсету керек:

$ chmod 600 emergency-cert.pub

Осыдан кейін сіз сертификаттың мазмұнын көре аласыз:

$ step ssh inspect emergency-cert.pub

Менің түрім мынау:

emergency-cert.pub
        Type: [email protected] user certificate
        Public key: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Signing CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        Key ID: "test-key"
        Serial: 0
        Valid: from 2020-06-24T16:53:03 to 2020-06-24T17:03:03
        Principals:
                ubuntu
        Critical Options: (none)
        Extensions:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

Мұнда ашық кілт - біз жасаған төтенше жағдай кілті және sk-user-ca сертификаттау орталығымен байланысты.

Соңында біз SSH пәрменін іске қосуға дайынбыз:


$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$

  1. Енді сертификаттарыңызға сенетін хосттағы кез келген пайдаланушы үшін сертификаттар жасай аласыз.
  2. Төтенше жағдайды жоюға болады. sk-user-ca файлын сақтауға болады, бірақ ол да қауіпсіздік кілтінде болғандықтан қажет емес. Төтенше жағдайға кіру үшін пайдалансаңыз, бастапқы PEM ашық кілтін хосттардан (мысалы, ubuntu пайдаланушысы үшін ~/.ssh/authorized_keys ішінде) жойғыңыз келуі мүмкін.

Төтенше жағдайға қол жеткізу: әрекет жоспары

Қауіпсіздік кілтін қойып, пәрменді іске қосыңыз:

$ ssh-add -K

Бұл сертификаттау органының ашық кілті мен кілт дескрипторын SSH агентіне қосады.

Енді сертификат жасау үшін ашық кілтті экспорттаңыз:

$ ssh-add -L | tail -1 > sk-user-ca.pub

Жарамдылық мерзімі, мысалы, бір сағаттан аспайтын сертификат жасаңыз:

$ ssh-keygen -t ecdsa -f emergency
$ ssh-keygen -Us sk-user-ca.pub -I test-key -n [username] -V -5m:+60m emergency
$ chmod 600 emergency-cert.pub

Енді SSH қайтадан:

$ ssh -i emergency username@host

Егер .ssh/config файлы қосылу кезінде кейбір ақауларды тудырса, оны айналып өту үшін -F none опциясымен ssh іске қосуға болады. Әріптесіңізге сертификат жіберу қажет болса, ең оңай және қауіпсіз нұсқа Сиқырлы құрт тесігі. Бұл әрекетті орындау үшін сізге тек екі файл қажет - біздің жағдайда, төтенше және авариялық-cert.pub.

Бұл тәсілдің маған ұнайтыны - аппараттық қолдау. Қауіпсіздік кілттерін сейфке қоюға болады және олар ешқайда кетпейді.

Жарнама құқықтары туралы

Эпикалық серверлер Мүмкін арзан VPS AMD қуатты процессорларымен, процессордың ядросының жиілігі 3.4 ГГц-ке дейін. Максималды конфигурация кез келген дерлік мәселені шешуге мүмкіндік береді - 128 CPU ядросы, 512 ГБ жедел жады, 4000 ГБ NVMe. Бізге қосылыңыздар!

Біз аппараттық кілттері бар SSH хосттарына шұғыл қол жеткізу процедурасын белгілейміз

Ақпарат көзі: www.habr.com

пікір қалдыру