VPSలో SSH hardening: root, password login నిలిపివేత
VPSలో SSHను భద్రపరచడానికి key-only login, root మరియు password login నిలిపివేత, drop-in config, Fail2ban, VPN అమలు చేసే క్రమాన్ని తెలుసుకోండి.
SSH ను ముందుగా ఎందుకు భద్రపరచాలి
మీ server ను నియంత్రించడానికి SSH ఉపయోగిస్తారు. అందువల్ల attacker ముందుగా ప్రయత్నించే తాళం SSH అవుతుంది. VPS online అయిన వెంటనే scanners port 22 పై usernames మరియు passwords ను ఊహించడం ప్రారంభిస్తాయి. ఇది ప్రారంభమైన కొన్ని నిమిషాల్లోనే మీ logs లో కనిపిస్తుంది. వారు ఊహించగల అంశాలను తొలగించడమే SSH hardening లక్ష్యం: password login ను పూర్తిగా ఆపివేయాలి, root login ను ఆపివేయాలి, cryptographic keys ను మాత్రమే అనుమతించాలి. ఇలా చేసిన తర్వాత నిరంతర password guessing విజయవంతం కాదు, ఎందుకంటే కనుగొనడానికి password ఉండదు.
మీకు ఇప్పటికే SSH పనిచేస్తోందని ఇది భావిస్తుంది. మీరు login చేయగలిగితే, దాన్ని harden చేయవచ్చు. దశలను క్రమంగా అమలు చేయండి. కొత్త session పనిచేసే వరకు ప్రస్తుత session ను తెరిచి ఉంచండి. అప్పుడు పొరపాటు జరిగినా మీరు server నుంచి బయటపడరు.
దశ 1: ముందుగా key authentication పనిచేస్తోందని నిర్ధారించండి
Key authentication password స్థానంలో key pair ను ఉపయోగిస్తుంది: private key మీ కంప్యూటర్లోనే ఉంటుంది, public key ను serverలో ఉంచుతారు. Private key మీ కంప్యూటర్ను ఎప్పుడూ విడిచిపెట్టకుండానే మీరు దాన్ని కలిగి ఉన్నారని server నిర్ధారిస్తుంది. Passwordలను నిలిపివేయడానికి ముందు keys పనిచేస్తున్నాయని నిర్ధారించండి. లేకపోతే మీరు serverకు మీ ప్రవేశాన్ని కోల్పోతారు.
మీ స్వంత కంప్యూటర్లో key లేకపోతే దాన్ని సృష్టించండి:
ssh-keygen -t ed25519Public key భాగాన్ని serverకు కాపీ చేయండి:
ssh-copy-id user@your-serverతర్వాత కొత్త SSH sessionను ప్రారంభించండి. Password అడగకుండానే అది మిమ్మల్ని లోపలికి అనుమతిస్తే, మీ key పనిచేస్తోంది. అప్పుడు passwordsను నిలిపివేయడం సురక్షితం. Permission denied (publickey) తో అది ఆపివేస్తే, ఆ ఒక్క error వెనుక ఐదు వేర్వేరు సమస్యలు ఉండవచ్చు, మరియు మీరు మరేదీ మార్చకముందే ssh -v output మీకు ఏ సమస్య ఉందో తెలియజేస్తుంది. Keys మీకు కొత్తవైతే లేదా మీరు ఒకటి కంటే ఎక్కువ కంప్యూటర్లను ఉపయోగిస్తే, SSH key management ప్రాథమికాలు పూర్తి విధానాన్ని వివరిస్తుంది: ప్రతి deviceకు ఒక key, sshd కోరే permissions, అలాగే laptop కనిపించకుండా పోయినప్పుడు keyను ఎలా revoke చేయాలో.
దశ 2: drop-in ఫైల్తో sshd ను మరింత భద్రపరచండి
/etc/ssh/sshd_config ను నేరుగా సవరించవద్దు. Ubuntu 24.04, /etc/ssh/sshd_config.d/ నుంచి drop-in ఫైళ్లను చదువుతుంది. అక్కడ చిన్న ఫైల్ను ఉంచడం శుభ్రంగా ఉంటుంది, package upgrades తర్వాత కూడా అలాగే ఉంటుంది, సమస్య ఏర్పడితే సులభంగా తొలగించవచ్చు. ఫైల్ పేరు ముఖ్యమైనది. ప్రతి setting కోసం sshd తాను చదివిన మొదటి విలువనే ఉంచుతుంది. Ubuntu cloud images ఈ directoryలో 50-cloud-init.conf ను PasswordAuthentication yes తో అందిస్తాయి. మీ ఫైల్ను 00- గా పేరు పెట్టండి. అప్పుడు అది ఆ ఫైల్కు ముందు sort అయి ప్రాధాన్యం పొందుతుంది. 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ప్రతి line ఒక ప్రవేశ మార్గాన్ని మూసివేస్తుంది. PasswordAuthentication no అత్యంత ముఖ్యమైనది. Passwords నిలిపివేస్తే brute-force attack ప్రయత్నించడానికి ఏ password ఉండదు. KbdInteractiveAuthentication no మరో password ఆధారిత మార్గాన్ని మూసివేస్తుంది. PermitRootLogin no వల్ల దాడిచేసేవారికి మీ username తెలిసి ఉండటమే కాకుండా మీ key కూడా ఉండాలి. ప్రతి serverలో ఉండే ఏకైక account అయిన root ను లక్ష్యంగా చేసుకోవడం మాత్రమే సరిపోదు.
దశ 3: config ను పరీక్షించి, తరువాత reload చేయండి
మార్పులను అమలు చేయడానికి ముందు config లో తప్పులు ఉన్నాయా అని తనిఖీ చేయండి. Typos వల్ల service నిలిచిపోకుండా ఇది నిరోధిస్తుంది:
sudo sshd -tఏదీ output కాకపోతే config చెల్లుబాటు అవుతుంది. SSH ను reload చేయండి:
sudo systemctl reload sshతరువాత sshd వాస్తవంగా ఉపయోగించే settings ను తనిఖీ చేయండి. దీనివల్ల మరొక file కారణంగా ప్రాధాన్యత కోల్పోయిన drop-in ను గుర్తించవచ్చు:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'రెండింటిలోనూ no అని ఉండాలి. ఇప్పుడు ప్రస్తుత session ను మూసివేయకుండా, మరో terminal నుంచి పూర్తిగా కొత్త session ను ప్రారంభించండి. మీ key తో login అయితే పని పూర్తయింది. ఏదైనా తప్పుగా ఉంటే, దాన్ని సరిచేయడానికి మొదటి session ఇంకా తెరిచి ఉంటుంది. ఈ రెండు sessions సమాంతరంగా ఉండటం safety net గా పనిచేస్తుంది. కాబట్టి ఈ దశను ఎప్పుడూ దాటవేయవద్దు.
దశ 4: ఐచ్చిక ప్రామాణికేతర port
SSH ను port 22 నుంచి 2222 వంటి port కు మార్చడం వల్ల వాస్తవ భద్రత పెరగదు, ఎందుకంటే పట్టుదల ఉన్న దాడిదారు అన్ని ports ను scan చేస్తాడు. అయితే log లోని అనవసర సందేశాలు తగ్గుతాయి, ఎందుకంటే చాలా automated scanners 22 ను మాత్రమే ప్రయత్నిస్తాయి. దీన్ని ఉపయోగించాలనుకుంటే, మీ drop-in file కు Port 2222 ను జోడించండి. ముందుగా firewall లో కొత్త port ను అనుమతించండి. తరువాత sudo systemctl daemon-reload && sudo systemctl restart ssh.socket ను నడిపి, ssh -p 2222 తో connect అవ్వండి. Ubuntu 24.04 లో listening port ను ssh.socket నిర్వహిస్తుంది. అందువల్ల సాధారణ reload ssh అమలు చేస్తే sshd port 22 పైనే ఉంటుంది. కొత్త port అమలులోకి రావాలంటే socket ను restart చేయాలి. దీన్ని రక్షణగా కాకుండా నిర్వహణలోని క్రమబద్ధతగా పరిగణించండి.
దశ 5: అదనపు రక్షణ పొరలను అమలు చేయండి
బలోపేతం చేసిన SSH keys పునాది. వాటి పైన మరో రెండు రక్షణ పొరలను అమలు చేయవచ్చు.
Fail2ban మీ logs ను monitor చేసి, పదేపదే విఫలమయ్యే addresses ను ban చేస్తుంది. దీనివల్ల scanner noise తగ్గి, ఆ addresses ను ముందుగానే నిరోధించవచ్చు. ఇది key-only auth తో సహజంగా కలిసి పనిచేస్తుంది: SSH దాడులను ఆపడానికి Ubuntuలో Fail2ban చూడండి.
ఇంకా బలమైన పద్ధతి SSH ను public internet కు పూర్తిగా అందుబాటులో లేకుండా ఉంచడం. మీరు WireGuard VPN వెనుక SSH ను ఉంచి, port 22 ను tunnel కు మాత్రమే firewall ద్వారా అనుమతిస్తే, VPN వెలుపల ఉన్నవారు SSH ను చేరుకోలేరు. అప్పుడు brute-force guessing కేవలం కష్టతరం కాకుండా పూర్తిగా అసాధ్యమవుతుంది. దీనికి దిగువన default-deny firewall అమల్లో ఉందని భావిస్తున్నాం. VPSలో దీనిని UFWతో ఏర్పాటు చేయడం చూడండి.
SSH అనేది పెద్ద checklist లోని ఒక అంశం మాత్రమే: కొత్త VPSలో మొదటి 10 నిమిషాలు దశలను క్రమంగా చూపిస్తుంది. తరువాత Ubuntuలో automatic security updates అమలు చేస్తే system తాజాగా patch చేయబడుతుంది. ప్రవేశద్వారాన్ని భద్రపరచడం మాత్రమే దాని వెనుక ఉన్న services కు రక్షణ ఇవ్వదు. అదే VPSలో password vault నడుస్తుంటే, Vaultwardenను harden చేయడం key auth ఎప్పటికీ కవర్ చేయని రెండు అంశాలను పరిష్కరిస్తుంది: దాని admin token మరియు backup file.
FAQ
SSH కోసం Ubuntu 24.04లో password login ను ఎలా నిలిపివేయాలి?
/etc/ssh/sshd_config.d/00-hardening.conf వద్ద drop-in file ను సృష్టించండి. 00 prefix కారణంగా ఇది 50-cloud-init.conf కంటే ముందు క్రమబద్ధీకరించబడుతుంది. లేకపోతే PasswordAuthentication yes విలువే అమలవుతుంది, ఎందుకంటే sshd తాను చదివే మొదటి విలువను ఉంచుతుంది. ఆ file లో PasswordAuthentication no మరియు KbdInteractiveAuthentication no ఉంచండి. తనిఖీ చేయడానికి sudo sshd -t అమలు చేసి, తరువాత sudo systemctl reload ssh అమలు చేయండి. దీనిపై ఆధారపడే ముందు కొత్త session లో key login పనిచేస్తోందని నిర్ధారించుకోండి. sshd_config ను మార్చడం కంటే drop-in ను మార్చడం package upgrades తర్వాత కూడా కొనసాగుతుంది. దాన్ని తిరిగి మార్చడం కూడా సులభం.
SSH ద్వారా root login ను నిలిపివేయాలా?
అవును. ఎవరూ నేరుగా root గా login చేయలేని విధంగా PermitRootLogin no సెట్ చేయండి. మీ సాధారణ user గా login చేసి, administration పనుల కోసం sudo ఉపయోగించండి. ప్రతి Linux సిస్టమ్లో root account ఉంటుంది. దాన్ని అందుబాటులో ఉంచితే దాడి చేసేవారికి లక్ష్యంగా ఉపయోగించగల తెలిసిన username లభిస్తుంది. దాన్ని నిలిపివేస్తే వారు మీ account name తెలుసుకోవడంతో పాటు మీ key కూడా కలిగి ఉండాలి.
SSH port మార్చడం వల్ల నా server మరింత సురక్షితంగా మారుతుందా?
గణనీయంగా కాదు. Port 22 నుంచి వేరే port కు మార్చితే 22 ను మాత్రమే పరిశీలించే నిర్లక్ష్యమైన scanners నుంచి కనిపించకుండా ఉండవచ్చు. దీనివల్ల logs లోని అనవసరమైన entries తగ్గుతాయి. అయితే నిజమైన దాడి చేసేవారు ప్రతి port ను scan చేసి, కొత్త port ను కూడా కనుగొంటారు. Break-inలను నిజంగా అడ్డుకునేది key-only authentication. Port మార్చితే ముందుగా కొత్త port ను firewall లో తెరవండి. తరువాత sudo systemctl daemon-reload && sudo systemctl restart ssh.socket అమలు చేయండి. Ubuntu 24.04లో listener ను socket నిర్వహిస్తుంది. సాధారణ reload చేస్తే sshd port 22 పైనే ఉంటుంది.
నేను SSH keys ఉపయోగిస్తే Fail2ban అవసరమా?
ఇది ఐచ్ఛికమే, కానీ ఇప్పటికీ ఉపయోగకరంగా ఉంటుంది. Key-only authentication ఉన్నప్పుడు password guessing విజయవంతం కాలేదు. అందువల్ల దాడి చేసేవారిని బయట ఉంచేది Fail2ban కాదు. ఒకే address నుంచి వచ్చే పదేపదే విఫలమైన ప్రయత్నాలకు ఇది rate limit విధిస్తుంది. దీనివల్ల logs లో scanner noise తగ్గుతుంది, అలాగే పదేపదే దాడి చేసే addresses ను త్వరగా తొలగించవచ్చు. అయితే నెమ్మదిగా, అనేక addresses నుంచి జరిగే దాడి దాని ban threshold కంటే తక్కువగా ఉండవచ్చు. Key authentication పై Fail2ban ను అమలు చేయండి. సాధ్యమైనంతవరకు SSH ను VPN వెనుక ఉంచండి.
SSH నుంచి నేను నన్నే బయటకు లాక్ చేసుకుంటే ఎలా తిరిగి ప్రవేశించాలి?
మీ provider యొక్క web console ను ఉపయోగించండి. ఇది SSH ద్వారా కాకుండా serial లేదా VNC connection ద్వారా server ను చేరుతుంది. అక్కడి నుంచి login చేసి, sshd drop-in file ను సరిచేసి, service ను reload చేయవచ్చు. మొదటి session ను మూసే ముందు కొత్త SSH config ను రెండో terminal లో పరీక్షించాల్సిన కారణం ఇదే. Passwordలను నిలిపివేయడానికి ముందే key authentication పనిచేస్తోందని నిర్ధారించుకోవాల్సిన కారణం కూడా ఇదే.