హార్డ్‌వేర్ కీలతో SSH హోస్ట్‌లకు అత్యవసర యాక్సెస్ కోసం మేము ఒక విధానాన్ని సూచిస్తాము

హార్డ్‌వేర్ కీలతో SSH హోస్ట్‌లకు అత్యవసర యాక్సెస్ కోసం మేము ఒక విధానాన్ని సూచిస్తాము

ఈ పోస్ట్‌లో, హార్డ్‌వేర్ సెక్యూరిటీ కీలను ఆఫ్‌లైన్‌లో ఉపయోగించి SSH హోస్ట్‌లకు అత్యవసర యాక్సెస్ కోసం మేము ఒక విధానాన్ని అభివృద్ధి చేస్తాము. ఇది కేవలం ఒక విధానం మాత్రమే మరియు మీరు మీ అవసరాలకు అనుగుణంగా దీనిని స్వీకరించవచ్చు. మేము మా హోస్ట్‌ల కోసం SSH ప్రమాణపత్ర అధికారాన్ని హార్డ్‌వేర్ సెక్యూరిటీ కీలో నిల్వ చేస్తాము. సింగిల్ సైన్-ఆన్ SSHతో సహా దాదాపు ఏదైనా OpenSSHలో ఈ పథకం పని చేస్తుంది.

ఇదంతా దేనికి? బాగా, ఇది చివరి రిసార్ట్ ఎంపిక. ఇది కొన్ని కారణాల వల్ల మరేమీ పని చేయనప్పుడు మీ సర్వర్‌కు ప్రాప్యతను పొందడానికి మిమ్మల్ని అనుమతించే బ్యాక్‌డోర్.

అత్యవసర యాక్సెస్ కోసం పబ్లిక్/ప్రైవేట్ కీలకు బదులుగా ధృవపత్రాలను ఎందుకు ఉపయోగించాలి?

  • పబ్లిక్ కీల వలె కాకుండా, సర్టిఫికెట్లు చాలా తక్కువ జీవితకాలం కలిగి ఉంటాయి. మీరు 1 నిమిషం లేదా 5 సెకన్ల వరకు చెల్లుబాటు అయ్యే ప్రమాణపత్రాన్ని రూపొందించవచ్చు. ఈ వ్యవధి తర్వాత, కొత్త కనెక్షన్‌ల కోసం సర్టిఫికెట్ నిరుపయోగంగా మారుతుంది. అత్యవసర యాక్సెస్ కోసం ఇది అనువైనది.
  • మీరు మీ హోస్ట్‌లలో ఏదైనా ఖాతా కోసం సర్టిఫికేట్‌ను సృష్టించవచ్చు మరియు అవసరమైతే, అటువంటి "వన్-టైమ్" సర్టిఫికేట్‌లను సహోద్యోగులకు పంపవచ్చు.

మీకు ఏమి కావాలి

  • రెసిడెంట్ కీలకు మద్దతు ఇచ్చే హార్డ్‌వేర్ సెక్యూరిటీ కీలు.
    రెసిడెంట్ కీలు పూర్తిగా సెక్యూరిటీ కీలో నిల్వ చేయబడిన క్రిప్టోగ్రాఫిక్ కీలు. కొన్నిసార్లు అవి ఆల్ఫాన్యూమరిక్ పిన్ ద్వారా రక్షించబడతాయి. రెసిడెంట్ కీ యొక్క పబ్లిక్ భాగాన్ని సెక్యూరిటీ కీ నుండి ఐచ్ఛికంగా ప్రైవేట్ కీ హ్యాండిల్‌తో పాటు ఎగుమతి చేయవచ్చు. ఉదాహరణకు, Yubikey 5 సిరీస్ USB కీలు రెసిడెంట్ కీలకు మద్దతు ఇస్తాయి. అవి హోస్ట్‌కి అత్యవసర యాక్సెస్ కోసం మాత్రమే ఉద్దేశించబడినవి కావడం మంచిది. ఈ పోస్ట్ కోసం నేను ఒక కీని మాత్రమే ఉపయోగిస్తాను, కానీ మీరు బ్యాకప్ కోసం అదనంగా ఒక కీని కలిగి ఉండాలి.
  • ఆ కీలను నిల్వ చేయడానికి సురక్షితమైన స్థలం.
  • ఓపెన్‌ఎస్‌ఎస్‌హెచ్ వెర్షన్ 8.2 లేదా అంతకంటే ఎక్కువ మీ స్థానిక కంప్యూటర్‌లో మరియు మీరు అత్యవసర యాక్సెస్‌ను కలిగి ఉండాలనుకుంటున్న సర్వర్‌లలో. ఉబుంటు 20.04 OpenSSH 8.2తో పంపబడుతుంది.
  • (ఐచ్ఛికం, కానీ సిఫార్సు చేయబడింది) సర్టిఫికేట్‌లను తనిఖీ చేయడానికి CLI సాధనం.

శిక్షణ

ముందుగా, మీరు హార్డ్‌వేర్ సెక్యూరిటీ కీలో ఉండే ధృవీకరణ అధికారాన్ని సృష్టించాలి. కీని చొప్పించి, అమలు చేయండి:

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

వ్యాఖ్యగా (-C) నేను సూచించాను [ఇమెయిల్ రక్షించబడింది]కాబట్టి మీరు ఈ సర్టిఫికేట్ అధికారం ఏ భద్రతా కీకి చెందినదో మర్చిపోవద్దు.

యుబికీకి కీని జోడించడంతో పాటు, రెండు ఫైల్‌లు స్థానికంగా ఉత్పత్తి చేయబడతాయి:

  1. sk-user-ca, సెక్యూరిటీ కీలో నిల్వ చేయబడిన ప్రైవేట్ కీని సూచించే కీ హ్యాండిల్,
  2. sk-user-ca.pub, ఇది మీ సర్టిఫికేట్ అధికారం కోసం పబ్లిక్ కీ అవుతుంది.

కానీ చింతించకండి, Yubikey తిరిగి పొందలేని మరొక ప్రైవేట్ కీని నిల్వ చేస్తుంది. అందువలన, ఇక్కడ ప్రతిదీ నమ్మదగినది.

హోస్ట్‌లలో, రూట్‌గా, మీ SSHD కాన్ఫిగరేషన్‌కు (/etc/ssh/sshd_config) కింది వాటిని జోడించండి (మీరు ఇప్పటికే కలిగి ఉండకపోతే):

TrustedUserCAKeys /etc/ssh/ca.pub

ఆపై హోస్ట్‌లో, పబ్లిక్ కీ (sk-user-ca.pub)ని /etc/ssh/ca.pubకి జోడించండి

డెమోన్‌ని పునఃప్రారంభించండి:

# /etc/init.d/ssh restart

ఇప్పుడు మనం హోస్ట్‌ని యాక్సెస్ చేయడానికి ప్రయత్నించవచ్చు. అయితే ముందుగా సర్టిఫికెట్ కావాలి. సర్టిఫికేట్‌తో అనుబంధించబడే కీ జతని సృష్టించండి:

$ ssh-keygen -t ecdsa -f emergency

సర్టిఫికెట్లు మరియు SSH జతలు
కొన్నిసార్లు పబ్లిక్/ప్రైవేట్ కీ జతకి ప్రత్యామ్నాయంగా సర్టిఫికెట్‌ని ఉపయోగించడం ఉత్సాహం కలిగిస్తుంది. కానీ వినియోగదారుని ప్రమాణీకరించడానికి ఒక సర్టిఫికేట్ మాత్రమే సరిపోదు. ప్రతి సర్టిఫికేట్ దానితో అనుబంధించబడిన ప్రైవేట్ కీని కూడా కలిగి ఉంటుంది. అందుకే మనం సర్టిఫికేట్‌ను జారీ చేసే ముందు ఈ "అత్యవసర" కీ జతని రూపొందించాలి. ముఖ్యమైన విషయం ఏమిటంటే, మేము సంతకం చేసిన సర్టిఫికేట్‌ను సర్వర్‌కు చూపుతాము, ఇది మనకు ప్రైవేట్ కీని కలిగి ఉన్న కీ జతని సూచిస్తుంది.

కాబట్టి పబ్లిక్ కీ మార్పిడి ఇప్పటికీ సజీవంగా ఉంది. ఇది సర్టిఫికేట్‌లతో కూడా పనిచేస్తుంది. సర్టిఫికేట్‌లు సర్వర్ పబ్లిక్ కీలను నిల్వ చేయవలసిన అవసరాన్ని తొలగిస్తాయి.

తరువాత, సర్టిఫికేట్‌ను సృష్టించండి. నాకు 10 నిమిషాల వ్యవధిలో ఉబుంటు యూజర్ ఆథరైజేషన్ కావాలి. మీరు దీన్ని మీ మార్గంలో చేయవచ్చు.

$ 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 పబ్లిక్ కీని కూడా తీసివేయాలనుకోవచ్చు (ఉదాహరణకు ఉబుంటు వినియోగదారు కోసం ~/.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 GHz వరకు CPU కోర్ ఫ్రీక్వెన్సీ. గరిష్ట కాన్ఫిగరేషన్ ఏదైనా సమస్యను పరిష్కరించడానికి మిమ్మల్ని అనుమతిస్తుంది - 128 CPU కోర్లు, 512 GB RAM, 4000 GB NVMe. మాతో చేరండి!

హార్డ్‌వేర్ కీలతో SSH హోస్ట్‌లకు అత్యవసర యాక్సెస్ కోసం మేము ఒక విధానాన్ని సూచిస్తాము

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి