VPSలో SSH సురక్షితం చేయడం ఎలా
VPSలో SSH లాగిన్ను సురక్షితం చేయడం ఎలా: పాస్వర్డ్ లాగిన్ ఆపివేయడం, root లాగిన్ నిలిపివేయడం, కీ-ఆధారిత ప్రామాణీకరణ మరియు Fail2ban సెటప్ దశలు వివరంగా ఇక్కడ.
SSH కంటే ముందు సురక్షితం చేయవలసింది మరోటి లేదు
SSH ద్వారా మీరు మీ సర్వర్ను నియంత్రిస్తారు. అందువల్ల ప్రతి దుర్మార్గుడు ముందుగా ప్రయత్నించే తాళం అదే. VPS ఆన్లైన్ అయిన క్షణం నుండి, స్కానర్లు పోర్ట్ 22 పై వినియోగదారు పేర్లు మరియు పాస్వర్డ్లను ఊహించడం ప్రారంభిస్తాయి. కొన్ని నిమిషాల్లోనే మీ లాగ్లలో ఇది జరుగుతున్నట్లు మీరు చూడవచ్చు. SSH సురక్షితం చేయడం అంటే వారు ఊహించగలిగే అంశాలను తొలగించడం: పాస్వర్డ్ లాగిన్ను పూర్తిగా ఆపివేయడం, root లాగిన్ను ఆపివేయడం, మరియు కేవలం క్రిప్టోగ్రాఫిక్ కీలను మాత్రమే అనుమతించడం. మీరు అలా చేసిన తర్వాత, నిరంతర ఊహాగానాలు విఫలమవుతాయి, ఎందుకంటే కనుగొనడానికి పాస్వర్డ్ అసలు ఉండదు.
ఇది SSH ఇప్పటికే పనిచేస్తోందని ఊహిస్తుంది. మీరు లాగిన్ చేయగలిగితే, దాన్ని మీరు సురక్షితం చేయవచ్చు. దశలను క్రమంలో చేయండి. కొత్త సెషన్ పనిచేసే వరకు ప్రస్తుత సెషన్ను తెరిచే ఉంచండి. దీనివల్ల పొరపాటు మీకు లాక్ అవ్వదు.
దశ 1: ముందుగా కీ ప్రామాణీకరణ పనిచేస్తుందని నిర్ధారించుకోండి
కీ ప్రామాణీకరణ అనేది పాస్వర్డ్ను కీ జతతో భర్తీ చేస్తుంది: మీ కంప్యూటర్లో ఉండే ప్రైవేట్ కీ, సర్వర్లో ఉంచే పబ్లిక్ కీ. ప్రైవేట్ కీ మీ మెషీన్ను విడిచి వెళ్లకుండానే, దాన్ని మీరు కలిగి ఉన్నారని సర్వర్ నిరూపిస్తుంది. పాస్వర్డ్లను అచేతనం చేయడానికి ముందు, కీలు పనిచేస్తున్నాయని నిర్ధారించుకోండి. లేదంటే మీరు లాక్ అవుట్ అవుతారు.
మీకు కీ లేకపోతే, మీ స్వంత కంప్యూటర్లో ఒక కీని సృష్టించండి:
ssh-keygen -t ed25519పబ్లిక్ భాగాన్ని సర్వర్కు కాపీ చేయండి:
ssh-copy-id user@your-serverతర్వాత కొత్త SSH సెషన్ను తెరవండి. పాస్వర్డ్ అడగకుండానే అది మిమ్మల్ని లోపలికి అనుమతిస్తే, మీ కీ పనిచేస్తుంది. పాస్వర్డ్లను ఆపేయడం మీకు సురక్షితమే. కీలు మీకు కొత్త అయితే, లేదా మీరు ఒకటి కంటే ఎక్కువ కంప్యూటర్లను వాడుతుంటే, SSH కీ నిర్వహణ ప్రాథమికాలు పూర్తి మోడల్ను వివరిస్తుంది: ప్రతి పరికరానికి ఒక కీ, sshd కావలసిన అనుమతులు, మరియు ల్యాప్టాప్ పోయినప్పుడు కీని ఎలా రద్దు చేయాలి.
దశ 2: drop-in ఫైల్తో sshd ను కఠినంగా మార్చండి
/etc/ssh/sshd_config ను నేరుగా సవరించవద్దు. Ubuntu 24.04 అనేది /etc/ssh/sshd_config.d/ నుండి drop-in ఫైళ్లను చదువుతుంది. అక్కడ ఒక చిన్న ఫైల్ ఉంటే అది శుభ్రంగా ఉంటుంది, ప్యాకేజీ అప్గ్రేడ్లను తట్టుకుంటుంది, మరియు ఏదైనా తప్పు జరిగితే దాన్ని సులభంగా తొలగించవచ్చు. పేరు ముఖ్యం: sshd ప్రతి సెట్టింగ్కు అది చదివే మొదటి విలువను నిలుపుకుంటుంది, మరియు Ubuntu క్లౌడ్ ఇమేజ్లు ఈ డైరెక్టరీలో 50-cloud-init.conf తో పాటు PasswordAuthentication yes ను పంపుతాయి. మీ ఫైలుకు 00- అని పేరు పెట్టండి, తద్వారా అది దానికంటే ముందు క్రమపరచబడి గెలుస్తుంది; 99- ఫైల్ నిశ్శబ్దంగా ఓడిపోతుంది. ఒకటి సృష్టించండి:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confదీన్ని ఇందులో ఉంచండి:
# Key-only login: no passwords to guess.
PasswordAuthentication no
KbdInteractiveAuthentication no
# No direct root login. Log in as your user, then use sudo.
PermitRootLogin noప్రతి వరుస ఒక ద్వారాన్ని మూసివేస్తుంది. PasswordAuthentication no అనేది పెద్దది: పాస్వర్డ్లు ఆఫ్ చేయబడితే, బ్రూట్-ఫోర్స్ దాడికి బ్రూట్-ఫోర్స్ చేయడానికి ఏమీ ఉండదు. KbdInteractiveAuthentication no రెండవ పాస్వర్డ్-శైలి మార్గాన్ని మూసివేస్తుంది. PermitRootLogin no అంటే దాడిదారుడు మీ వినియోగదారు పేరును తెలుసుకోవాలి మరియు మీ కీని కలిగి ఉండాలి, ప్రతి బాక్స్లో ఉన్న ఒకే ఖాతా అయిన root ను మాత్రమే లక్ష్యంగా చేసుకోకూడదు.
దశ 3: ఆకృతీకరణను పరీక్షించండి, తర్వాత రీలోడ్ చేయండి
ఆకృతీకరణను వర్తింపజేయడానికి ముందు తప్పుల కోసం తనిఖీ చేయండి. దీనివల్ల ఒక టైపో సర్వీస్ను పాడుచేయదు:
sudo sshd -tఇది ఏమీ ప్రింట్ చేయకపోతే, ఆకృతీకరణ చెల్లుబాటు అవుతుంది. SSHను రీలోడ్ చేయండి:
sudo systemctl reload sshతర్వాత sshd వాస్తవంగా ఉపయోగించే సెట్టింగ్లను తనిఖీ చేయండి. దీనివల్ల మరొక ఫైల్తో ఓడిపోయిన డ్రాప్-ఇన్ను మీరు గుర్తించవచ్చు:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'రెండూ no అని చెప్పాలి. ఇప్పుడు, మీ ప్రస్తుత సెషన్ను మూసివేయకుండా, మరొక టెర్మినల్ నుండి కొత్త సెషన్ను తెరవండి. అది మీ కీతో మిమ్మల్ని లాగిన్ చేస్తే, మీ పని పూర్తయింది. ఏదైనా తప్పు ఉంటే, దాన్ని సరిచేయడానికి మీ మొదటి సెషన్ ఇంకా తెరిచే ఉంది. ఈ అతివ్యాప్తి ఒక భద్రతా వలయం. కాబట్టి దీన్ని ఎప్పుడూ దాటవద్దు.
దశ 4: ఐచ్ఛిక ప్రామాణికేతర పోర్ట్
SSH ను పోర్ట్ 22 నుండి 2222 లాంటి వేరే పోర్ట్కు మార్చడం వలన భద్రత పెరగదు. ఎందుకంటే ఒక దృఢమైన దాడిదారుడు అన్ని పోర్ట్లను స్కాన్ చేస్తాడు. ఇది చేసేది లాగ్ రద్దీని తగ్గించడం మాత్రమే. ఎందుకంటే చాలా స్వయంచాలక స్కానర్లు 22 మాత్రమే ప్రయత్నిస్తాయి. మీకు అది కావాలంటే, మీ డ్రాప్-ఇన్ ఫైలుకు Port 2222 ను జోడించండి. ముందుగా ఫైర్వాల్లో కొత్త పోర్ట్ను అనుమతించండి. తర్వాత sudo systemctl daemon-reload && sudo systemctl restart ssh.socket ను అమలు చేసి, ssh -p 2222 తో అనుసంధానించండి. Ubuntu 24.04 లో, లిజనింగ్ పోర్ట్ను ssh.socket నియంత్రిస్తుంది. కాబట్టి సాధారణ reload ssh sshd ను 22 పైనే ఉంచుతుంది. సాకెట్ను పునఃప్రారంభించడం మాత్రమే కొత్త పోర్ట్ను స్వీకరిస్తుంది. దీన్ని భద్రత కాదు, కేవలం శుభ్రతగా పరిగణించండి.
దశ 5: మరింత రక్షణలను పొరలుగా అమర్చండి
దృఢపరచిన SSH కీలు పునాది. వాటిపై మరో రెండు పొరలు ఉంటాయి.
Fail2ban మీ లాగ్లను పర్యవేక్షిస్తుంది. తరచుగా విఫలమయ్యే చిరునామాలను నిరోధిస్తుంది. దీనివల్ల స్కానర్ రద్దీ తగ్గుతుంది, వాటిని ముందే బహిష్కరిస్తుంది. ఇది కీ-ఆధారిత ప్రామాణీకరణతో సహజంగా జతపడుతుంది: SSH దాడులను ఆపడానికి Ubuntuలో Fail2ban చూడండి.
మరింత బలమైనది, SSHని ప్రజా ఇంటర్నెట్ నుండి పూర్తిగా దూరంగా ఉంచడం. మీరు SSHని WireGuard VPN వెనుక ఉంచినట్లయితే, పోర్ట్ 22ని టనెల్కు ఫైర్వాల్ చేస్తే, VPN వెలుపల ఎవరూ దానిని చేరుకోలేరు. బలవంతపు అంచనా కేవలం కష్టంగా మారడం కాకుండా, అసాధ్యమవుతుంది. ఇదంతా కింద డిఫాల్ట్-డినై ఫైర్వాల్ ఉందనే ఊహ మీద ఆధారపడి ఉంటుంది, అది VPSలో UFW సెటప్.
SSH అనేది పెద్ద చెక్లిస్ట్లో ఒక అంశం: కొత్త VPSలో మొదటి 10 నిమిషాలు దశలను క్రమంలో ఉంచుతుంది, మరియు Ubuntuలో స్వయంచాలక భద్రతా నవీకరణలు తరువాత సిస్టమ్ను ప్యాచ్ చేసి ఉంచుతాయి.
FAQ
Ubuntu 24.04లో SSH కోసం పాస్వర్డ్ లాగిన్ను నేను ఎలా నిలిపివేయాలి?
/etc/ssh/sshd_config.d/00-hardening.conf వద్ద డ్రాప్-ఇన్ ఫైల్ను సృష్టించండి (00 ప్రిఫిక్స్ దీన్ని 50-cloud-init.conf కంటే ముందు క్రమబద్ధీకరిస్తుంది, లేనట్లయితే దాని PasswordAuthentication yes విలువ అమల్లోకి వస్తుంది, ఎందుకంటే sshd ముందుగా చదివిన విలువనే నిలుపుకుంటుంది). దానిలో PasswordAuthentication no మరియు KbdInteractiveAuthentication no ఉండేలా చేయండి. తనిఖీ చేయడానికి sudo sshd -t నడపండి, తర్వాత sudo systemctl reload ssh. మీరు దానిపై ఆధారపడే ముందు కొత్త సెషన్లో కీ లాగిన్ పనిచేస్తుందో కనుక్కోండి. sshd_config ఫైల్ను సవరించడం కంటే డ్రాప్-ఇన్ను సవరించడం ప్యాకేజీ అప్గ్రేడ్లను తట్టుకుంటుంది మరియు దాన్ని రద్దు చేయడం సులభం.
SSH ద్వారా రూట్ లాగిన్ను నేను నిలిపివేయాలా?
అవును. ఎవరూ నేరుగా రూట్గా లాగిన్ కాకుండా చేయడానికి PermitRootLogin no అమర్చండి. మీ సాధారణ యూజర్గా లాగిన్ అవ్వండి మరియు అడ్మిన్ పనుల కోసం sudo ఉపయోగించండి. ప్రతి Linux సిస్టమ్లోనూ రూట్ ఉంటుంది, కాబట్టి దాన్ని అందుబాటులో ఉంచడం దాడి చేసేవారికి లక్ష్యంగా తెలిసిన ఒక యూజర్నేమ్ను అందిస్తుంది. దాన్ని నిలిపివేయడం అంటే వారు మీ అకౌంట్ పేరును తెలుసుకోవాలి మరియు మీ కీని కలిగి ఉండాలి.
SSH పోర్ట్ను మార్చడం వల్ల నా సర్వర్ మరింత సురక్షితమవుతుందా?
గణనీయంగా కాదు. పోర్ట్ 22 నుండి మారడం కేవలం 22 పోర్ట్ను మాత్రమే పరిశీలించే సులభమైన స్కానర్ల నుండి మిమ్మల్ని దాచుతుంది. ఇది లాగ్లలో రద్దీ తగ్గిస్తుంది. కానీ నిజమైన దాడి చేసేవాడు ప్రతి పోర్ట్ను స్కాన్ చేసి దాన్ని ఏదో ఒక మార్గంలో కనుగొంటాడు. దాడులను వాస్తవంగా ఆపడం కీ-ఆధారిత ప్రామాణీకరణే. మీరు పోర్ట్ మార్చినట్లయితే, ముందుగా ఫైర్వాల్లో కొత్త పోర్ట్ను తెరవండి, తర్వాత sudo systemctl daemon-reload && sudo systemctl restart ssh.socket నడపండి; Ubuntu 24.04లో సాకెట్ లిసనర్ను నియంత్రిస్తుంది, మరియు సాధారణ రీలోడ్ sshdను పోర్ట్ 22 పైనే ఉంచుతుంది.
నేను SSH కీలను ఉపయోగిస్తున్నట్లయితే నాకు Fail2ban అవసరమా?
ఇది ఐచ్ఛికం కానీ ఇప్పటికీ ఉపయోగకరం. కీ-ఆధారిత ప్రామాణీకరణతో, పాస్వర్డ్ అంచనా వేయడం విజయవంతం కాదు, కాబట్టి దాడి చేసేవారిని బయటకు నెట్టడంలో Fail2ban పాత్ర లేదు. ఇది ఒకే చిరునామా నుండి వచ్చే పునరావృత వైఫల్యాలను పరిమితం చేస్తుంది. ఇది మీ లాగ్ల నుండి స్కానర్ రద్దీని తగ్గిస్తుంది మరియు పునరావృత దాడులాళ్లను ముందుగానే బహిష్కరిస్తుంది; నెమ్మదైన, విస్తృతమైన దాడి దాని బ్యాన్ పరిమితి కిందే ఉంటుంది. దీన్ని కీ ప్రామాణీకరణపై నడపండి, మరియు అంతిమంగా SSHను VPN వెనుక ఉంచండి.
SSH నుండి నేను బయటకు దిగిపోతే ఎలా కోలుకుంటాను?
మీ ప్రొవైడర్ వెబ్ కన్సోల్ను ఉపయోగించండి. ఇది SSH గుండా వెళ్ళని సీరియల్ లేదా VNC కనెక్షన్ ద్వారా సర్వర్ను చేరుకుంటుంది. అక్కడి నుండి మీరు లాగిన్ అవ్వచ్చు, sshd డ్రాప్-ఇన్ ఫైల్ను సరిచేయవచ్చు, మరియు సర్వీస్ను రీలోడ్ చేయవచ్చు. మీ మొదటి సెషన్ను మూసేసే ముందు రెండవ టెర్మినల్లో కొత్త SSH కాన్ఫిగరేషన్ను పరీక్షించాలి అని ఇది సరిగ్గా చూపిస్తుంది, మరియు పాస్వర్డ్లను ఆపే ముందు కీ ప్రామాణీకరణ ఇప్పటికే పనిచేస్తూ ఉండాలి.