VPSలో UFW ఫైర్వాల్ సెటప్: SSH లాక్అవుట్ లేకుండా
UFWతో VPSలో default-deny విధానాన్ని అమలు చేసి, అవసరమైన ports మాత్రమే allow చేయడం నేర్చుకోండి. SSHను ముందుగా అనుమతించి access కోల్పోకుండా firewallను ప్రారంభించండి.
UFW అంటే ఏమిటి, అది ఎందుకు అవసరం
UFW అంటే Uncomplicated Firewall. ఆ పేరు దాని పని విధానాన్ని సరిగ్గా వివరిస్తుంది. Linux kernel లో ఇప్పటికే ఉన్న firewall పై ఇది సులభమైన front end గా పనిచేస్తుంది. అందువల్ల raw rules రాయాల్సిన బదులు ufw allow 22/tcp వంటి చిన్న commands ను ఉపయోగించవచ్చు. కొత్త VPS లో listening services అన్నీ default గా internet నుంచి అందుబాటులో ఉంటాయి. Firewall ఈ విధానాన్ని మార్చుతుంది: ముందుగా అన్నింటినీ deny చేసి, మీరు నిజంగా ఉపయోగించే కొన్ని ports ను మాత్రమే allow చేస్తారు. ఈ ఒక్క మార్పుతో సుమారు నాలుగు commands లోనే మీ server exposure లో ఎక్కువ భాగాన్ని తగ్గించవచ్చు. UFW అనేది Ubuntu మరియు Debian tool. కాబట్టి మీ VPS Rocky లేదా AlmaLinux పై నడుస్తుంటే, దాని బదులు firewalld ను ఉపయోగించండి; ఇది rules ను zones గా నిర్వహిస్తుంది.
UFW ను ఉపయోగించే ముందు ఏవి listening లో ఉన్నాయో తెలుసుకోండి. Firewall ఏ services కు అనుమతి ఇవ్వాలి లేదా నిరాకరించాలి అనేది వాటి ఆధారంగా నిర్ణయిస్తుంది. ss -tlnp తో ఏవి listening లో ఉన్నాయో చూడటం సరైన మొదటి దశ.
సర్వర్ నుంచి మీరే బయటపడకుండా కాపాడే ఏకైక నియమం
ఫైర్వాల్లకు దూరంగా ఉండేలా చేసే తప్పు ఇదే. మీరు default-deny policyతో UFWను enable చేస్తారు, కానీ SSHను ఎప్పుడూ allow చేయరు. అందువల్ల ఫైర్వాల్ ప్రారంభమైన వెంటనే మీ స్వంత connection కట్ అవుతుంది. తిరిగి login కాలేరు. UFWను enable చేయడానికి ముందు ఎల్లప్పుడూ SSHను allow చేయడం ద్వారా దీన్ని నివారించండి. మొత్తం విధానం ఇదే. దిగువ దశలు ఈ పనిని సురక్షితమైన క్రమంలో చేస్తాయి.
ఇది జరిగినా మీరు పూర్తిగా చిక్కుకుపోరు. మీ provider అందించే web console VNC లేదా serial ద్వారా పనిచేస్తుంది. అది SSH ద్వారా వెళ్లదు. కాబట్టి అక్కడ login చేసి ufw disable అమలు చేయవచ్చు లేదా మిస్సైన ruleను add చేయవచ్చు. Firewall lockoutకు ఒక స్పష్టమైన లక్షణం కూడా ఉంటుంది. Dropped packet కారణంగా SSH client timeout అయ్యే వరకు వేచి ఉంటుంది. కానీ ఆగిపోయిన SSH daemon connectionను వెంటనే నిరాకరిస్తుంది. ఇదే connection refusedకు connection timed outకు మధ్య తేడా.
దశ 1: డిఫాల్ట్ విధానాలను సెట్ చేయండి
ముందుగా, లోపలికి వచ్చే ప్రతిదాన్ని నిరాకరించి, బయటికి వెళ్లే ప్రతిదాన్ని అనుమతించమని UFW కు చెప్పండి:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming ముఖ్యమైన భాగం. స్పష్టమైన allow rule లేని ఏ port అయినా బయటివారికి మూసివేయబడుతుంది. ఆ port పై service listening చేస్తున్నా ఇదే వర్తిస్తుంది. allow outgoing వల్ల updates వంటి అవసరాల కోసం మీ server సాధారణంగా internet ను చేరుకోగలదు. ఈ రెండు commands విధానాన్ని మాత్రమే మార్చుతాయి. దశ 3లో UFW ను enable చేసే వరకు అవి అమలులోకి రావు.
దశ 2: మీకు నిజంగా అవసరమైన ports ను మాత్రమే అనుమతించండి
Enable చేయడానికి ముందు, మీ connection కొనసాగేందుకు SSH ను open చేయండి:
sudo ufw allow 22/tcpUFW మీ కోసం SSH కు rate limit కూడా విధించగలదు: sudo ufw limit 22/tcp ఆ port ను అనుమతిస్తుంది. అయితే 30 seconds లో 6 లేదా అంతకంటే ఎక్కువ connections చేసే ఏ address నైనా block చేస్తుంది. దీనివల్ల అదనపు software లేకుండానే brute-force scripts ప్రభావం తగ్గుతుంది.
మీరు web server నడుపుతున్నట్లయితే, HTTP మరియు HTTPS ను కూడా అనుమతించండి:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpమీరు public కు అందించే services కు మాత్రమే అనుమతి ఇవ్వండి. 5432 port పై నడిచే Postgres వంటి database కు దాదాపు ఎప్పుడూ allow rule అవసరం ఉండదు. దాన్ని 127.0.0.1 కు bind చేయండి. అప్పుడు అది ఆ machine లో మాత్రమే అందుబాటులో ఉంటుంది. మీరు open చేసే ప్రతి port ను రక్షించాల్సి ఉంటుంది. కాబట్టి ఈ జాబితాను చిన్నగా ఉంచండి.
మీ server కోసం ufw commands యొక్క పూర్తి క్రమాన్ని ఇక్కడ కూడా సిద్ధం చేయవచ్చు. తరువాత వాటిని క్రమంగా run చేయండి:
దశ 3: దాన్ని ప్రారంభించి, అమలులో ఉందని నిర్ధారించండి
sudo ufw enableఈ command ఇప్పటికే ఉన్న SSH connections కు అంతరాయం కలిగించవచ్చని హెచ్చరిస్తుంది. దశ 2లో మీరు 22/tcp ను అనుమతించినందున, మీ session కొనసాగుతుంది. ఫలితాన్ని నిర్ధారించండి:
sudo ufw status verboseStatus: active
Default: deny (incoming), allow (outgoing)
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp ALLOW IN Anywhereఇక్కడ రెండు విషయాలను పరిశీలించండి. Status: active అంటే firewall అమలులో ఉందని అర్థం. ప్రతి rule రెండుసార్లు కనిపిస్తుంది: ఒకసారి సాధారణంగా, మరొకసారి (v6) తో. దీని ద్వారా UFW IPv4తో పాటు IPv6ను కూడా కవర్ చేస్తుందని తెలుస్తుంది. (v6) lines కనిపించకపోతే, మీ IPv6 భాగం నిర్వహణ లేకుండా ఉంది. ఇది స్వతంత్ర సమస్య; దీనిని IPv6 firewall గురించిన వ్యాసంలో వివరించారు.
తర్వాత నియమాలను నిర్వహించడం
ఒక నియమాన్ని తొలగించేందుకు, నియమాలను సంఖ్యలతో చూడండి:
sudo ufw status numbered
sudo ufw delete 3ఒక port కు ఒకే address నుంచి మాత్రమే అనుమతి ఇవ్వాలంటే, ఈ విధానం ఉపయోగకరం. ఉదాహరణకు, admin service ను మీ స్వంత IP కు మాత్రమే అందుబాటులో ఉంచవచ్చు:
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpమీ స్వంత address మారినప్పుడు లేదా అనేక machines కు ప్రాప్యత అవసరమైనప్పుడు ఈ విధానం పనిచేయదు. సాధారణ పరిష్కారం port ను public గా తెరిచి ఉంచకుండా, private network ద్వారా service ను చేరుకోవడం. ఇందుకోసం మీ server యొక్క private subnet ను మీ tailnet కు ప్రకటించడం ఉపయోగపడుతుంది.
Firewall ఒక రక్షణ పొర మాత్రమే. ఏది port కు చేరుకోవచ్చో అది నియంత్రిస్తుంది. కానీ SSH వంటి మీరు open గా ఉంచిన port పై ఎవరైనా పదేపదే ప్రయత్నాలు చేస్తే, వాటిని నెమ్మదించదు. అందుకోసం SSH ముందు Fail2ban ను అమర్చడం ద్వారా పదేపదే దాడి చేసే వారిని ban చేయండి. Defence in depth అంటే ప్రతి పొర, ఇతర పొరలు కవర్ చేయలేని అంశాలను రక్షించడం.
ports అంటే ఏమిటి మరియు services ఎలా listen చేస్తాయి అనేది తెలిసిన తర్వాతే firewall ఉపయోగకరంగా ఉంటుంది. దాన్ని configure చేయడం కొత్త VPS పై మొదటి 10 నిమిషాల్లో చేయాల్సిన పనుల్లో ఒకటి.
FAQ
UFW ప్రారంభిస్తే నా SSH sessionకి అంతరాయం కలుగుతుందా?
మీరు ముందుగా SSHకి అనుమతి ఇస్తే అంతరాయం కలగదు. sudo ufw enable కంటే ముందు sudo ufw allow 22/tcp ను అమలు చేయండి. Firewall ఇప్పుడు port 22కి అనుమతించడంతో మీ connection కొనసాగుతుంది. SSH allow rule లేకుండా default-deny firewallను ప్రారంభించడమే ప్రమాదకరం. అలా జరిగితే మీ provider యొక్క VNC లేదా serial console ద్వారా login చేసి ufw disable ను అమలు చేయండి.
VPSలో ఏ ports తెరవాలి?
మీరు publicగా అందించే ports మాత్రమే తెరవాలి. Serverను నిర్వహించడానికి SSH (22/tcp), website నడిపితే HTTP మరియు HTTPS (80/tcp, 443/tcp) అవసరం. మిగతా అన్నింటినీ deniedగా ఉంచండి. Databaseల వంటి అంతర్గత services 127.0.0.1కు bind అయి ఉండాలి. వాటికి firewall rule అసలు ఇవ్వకండి. అప్పుడు అవి network నుంచి ఎప్పటికీ చేరుకోలేరు.
UFW IPv6ను నిర్వహిస్తుందా?
ఆధునిక Ubuntuలో అవును. /etc/default/ufw లో IPV6=yes సెట్ అయి ఉంటుంది. అందువల్ల ప్రతి rule రెండు stacksకూ వర్తిస్తుంది. ufw status IPv6 rulesను (v6) suffixతో చూపిస్తుంది. ఇది ఇంకా తప్పుగా పనిచేసే పరిస్థితులు IPv6 firewall సమస్యలో వివరించబడ్డాయి.
UFW ruleను ఎలా తొలగించాలి?
ముందుగా rulesను index numbersతో జాబితా చేయడానికి sudo ufw status numbered ను అమలు చేయండి. తరువాత తొలగించాలనుకున్న rule number స్థానంలో N ఉంచి sudo ufw delete N ను అమలు చేయండి. Specification ఆధారంగా కూడా తొలగించవచ్చు. ఉదాహరణకు sudo ufw delete allow 80/tcp.
ఒకే IP address నుంచి మాత్రమే portకు అనుమతి ఎలా ఇవ్వాలి?
సాధారణ allow బదులుగా from ruleను ఉపయోగించండి. మీ office addressకి మాత్రమే PostgreSQLను చేరుకునేలా చేయడానికి sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp ను అమలు చేయండి. Default-deny policy ఉన్నప్పుడు rule ద్వారా తెరవబడే వరకు ఆ port అందరికీ మూసి ఉంటుంది. అందువల్ల ఈ from rule మాత్రమే ప్రవేశ మార్గంగా ఉంటుంది. మొత్తం internet block అవుతుంది. మీరు పేర్కొన్న addressకు మాత్రమే అనుమతి లభిస్తుంది. సాధారణ allow 5432/tcp ను కూడా జోడించవద్దు. అది portను అందరికీ తెరుస్తుంది. Database లేదా admin panelను public networkకు అందించడానికి ఇది అత్యంత సురక్షితమైన విధానం. Port పక్కన source addressను చూపించే sudo ufw status verbose ద్వారా దీన్ని నిర్ధారించండి.