VPSలో UFW ఫైర్వాల్ ఎలా సెటప్ చేయాలి
UFWతో default-deny విధానాన్ని అమలు చేసి, అవసరమైన ports మాత్రమే అనుమతించండి. SSHను ముందుగా అనుమతిస్తే firewall ప్రారంభించినప్పుడు VPS యాక్సెస్ కోల్పోరు.
UFW అంటే ఏమిటి, అది మీకు ఎందుకు అవసరం
UFW అంటే Uncomplicated Firewall. ఆ పేరు దాని పనిని సరిగ్గా వివరిస్తుంది. Linux kernelలో ఇప్పటికే ఉన్న firewallకు ఇది సరళమైన ముందువైపు ఇంటర్ఫేస్. అందువల్ల ముడి నియమాలు రాయడానికి బదులుగా ufw allow 22/tcp వంటి చిన్న ఆదేశాలను టైప్ చేయవచ్చు. కొత్త VPSలో listening service ప్రతి ఒక్కటీ డిఫాల్ట్గా internet నుంచి చేరుకోవచ్చు. Firewall ఈ విధానాన్ని మారుస్తుంది: మొదట అన్నింటినీ నిరాకరించి, మీరు నిజంగా ఉపయోగించే కొద్ది portsను మాత్రమే అనుమతిస్తారు. ఈ ఒక్క మార్పుతో సుమారు నాలుగు ఆదేశాల్లో మీ exposureలో ఎక్కువ భాగం తొలగిపోతుంది.
Firewallను మార్చే ముందు ఏ services listeningలో ఉన్నాయో తెలుసుకోండి. Firewall వాటి ప్రాప్యతను నిర్ణయిస్తుంది. ss -tlnpతో listeningలో ఉన్నవి చదవడం సరైన మొదటి దశ.
మీ యాక్సెస్ను కోల్పోకుండా నిరోధించే ఒక నియమం
ఫైర్వాల్లను ఉపయోగించకుండా కొంతమందిని వెనక్కి తగ్గించే పొరపాటు ఇదే. మీరు default-deny విధానంతో UFWను ప్రారంభిస్తారు, కానీ SSHను ఎప్పుడూ అనుమతించరు. అందువల్ల ఫైర్వాల్ ప్రారంభమైన వెంటనే మీ కనెక్షన్ నిలిచిపోతుంది, తిరిగి లాగిన్ కాలేరు. UFWను ప్రారంభించే ముందు ఎల్లప్పుడూ SSHను అనుమతించడం ద్వారా దీన్ని నివారించండి. అంతే ముఖ్యమైన విషయం. దిగువ దశలు ఈ క్రమాన్ని సురక్షితంగా అమలు చేస్తాయి.
అయినా ఇది జరిగితే మీరు పూర్తిగా చిక్కుకుపోలేదు. మీ provider యొక్క VNC లేదా serial ద్వారా అందించే వెబ్ కన్సోల్ SSHపై ఆధారపడదు. అక్కడ లాగిన్ చేసి ufw disable అమలు చేయవచ్చు లేదా మిస్సైన నియమాన్ని జోడించవచ్చు.
దశ 1: డిఫాల్ట్ విధానాలను సెట్ చేయండి
లోపలికి వచ్చే మొత్తం కనెక్షన్లను నిరాకరించి, బయటికి వెళ్లే మొత్తం కనెక్షన్లను అనుమతించమని UFWకి ముందుగా చెప్పండి:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming ముఖ్యమైన భాగం. స్పష్టమైన allow నియమం లేని ఏ పోర్ట్ అయినా మూసివేయబడుతుంది. దానిపై ఏ సేవ listeningలో ఉన్నా, అది బయటి నుంచి అందుబాటులో ఉండదు. allow outgoing మీ సర్వర్కు updates వంటి అవసరాల కోసం internetను సాధారణంగా యాక్సెస్ చేయడానికి అనుమతిస్తుంది. ఈ రెండు commands విధానాన్ని మాత్రమే మారుస్తాయి. దశ 3లో UFWను enable చేసే వరకు ఏ నియమం అమల్లోకి రాదు.
దశ 2: మీకు నిజంగా అవసరమైన పోర్ట్లను మాత్రమే అనుమతించండి
ప్రారంభించే ముందు మీ SSH కనెక్షన్ కొనసాగేందుకు SSHను తెరవండి:
sudo ufw allow 22/tcpUFW మీ కోసం SSHకి రేట్ లిమిట్ కూడా విధించగలదు: sudo ufw limit 22/tcp పోర్ట్ను అనుమతిస్తుంది. అయితే 30 సెకన్లలో ఆరు లేదా అంతకంటే ఎక్కువ కనెక్షన్లు చేసే ఏ చిరునామాన్నైనా బ్లాక్ చేస్తుంది. అదనపు సాఫ్ట్వేర్ లేకుండానే ఇది బ్రూట్-ఫోర్స్ స్క్రిప్ట్ల ప్రభావాన్ని తగ్గిస్తుంది.
మీరు వెబ్ సర్వర్ నడుపుతున్నట్లయితే, HTTP మరియు HTTPSను కూడా అనుమతించండి:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpమీరు పబ్లిక్కు అందించే సేవలకు మాత్రమే అనుమతి ఇవ్వండి. 5432 పోర్ట్లో పనిచేసే Postgres వంటి డేటాబేస్కు సాధారణంగా ఎప్పుడూ allow నియమాన్ని ఇవ్వకూడదు. దాన్ని 127.0.0.1కు bind చేయండి. అప్పుడు అది ఆ మెషీన్లో మాత్రమే అందుబాటులో ఉంటుంది. మీరు తెరిచే ప్రతి పోర్ట్కు రక్షణ కల్పించాలి. కాబట్టి ఈ జాబితాను చిన్నగా ఉంచండి.
మీ సర్వర్ కోసం ufw ఆదేశాల పూర్తి క్రమాన్ని ఇక్కడ కూడా రూపొందించవచ్చు. తరువాత వాటిని క్రమంగా అమలు చేయండి:
దశ 3: ప్రారంభించి, అది అమలులో ఉందని నిర్ధారించండి
sudo ufw enableఈ ఆదేశం ఇప్పటికే ఉన్న SSH కనెక్షన్లకు అంతరాయం కలిగించవచ్చని హెచ్చరిస్తుంది. దశ 2లో మీరు 22/tcpను అనుమతించినందున, మీ సెషన్ కొనసాగుతుంది. ఫలితాన్ని నిర్ధారించండి:
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 అమలులో ఉందని అర్థం. ప్రతి నియమం రెండుసార్లు కనిపిస్తుంది: ఒకసారి సాధారణంగా, మరోసారి (v6)తో. దీని ద్వారా UFW IPv4తో పాటు IPv6ను కూడా కవర్ చేస్తుందని తెలుస్తుంది. (v6) పంక్తులు కనిపించకపోతే, మీ IPv6 భాగం నిర్వహణలో లేదని అర్థం. ఇది ప్రత్యేక సమస్య. దీని గురించి IPv6 firewall పోస్ట్లో వివరించబడింది.
Managing rules later
To see rules with numbers so you can remove one:
sudo ufw status numbered
sudo ufw delete 3To allow a port only from one address, which is a good way to expose an admin service to just your own IP:
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpమీ స్వంత address మారినప్పుడు లేదా అనేక machines కు ప్రాప్యత అవసరమైనప్పుడు ఈ విధానం పనిచేయదు. సాధారణ పరిష్కారం public గా port తెరవడాన్ని పూర్తిగా ఆపి, private network ద్వారా సేవను చేరుకోవడం. ఇందుకోసం server యొక్క private subnet ను మీ tailnet కు ప్రకటించడం ఉపయోగపడుతుంది.
A firewall is one layer. It controls what can reach a port, but it does not slow down someone hammering a port you have left open, like SSH. For that, add Fail2ban in front of SSH to ban repeat offenders. Defence in depth means each layer covers what the others cannot.
A firewall only makes sense once you know what ports are and how services listen, and configuring one is a step in the first 10 minutes on a new VPS.
FAQ
UFW ప్రారంభిస్తే నా SSH సెషన్ డిస్కనెక్ట్ అవుతుందా?
ముందుగా SSHను అనుమతిస్తే డిస్కనెక్ట్ కాదు. sudo ufw allow 22/tcp ను sudo ufw enable కు ముందు అమలు చేయండి. అప్పుడు firewall port 22కు అనుమతి ఇస్తుంది కాబట్టి మీ కనెక్షన్ కొనసాగుతుంది. SSH allow rule లేకుండా default-deny firewallను ప్రారంభించడం ప్రమాదకరం. అలా చేస్తే మీకు యాక్సెస్ ఉండదు. అది జరిగితే, మీ provider యొక్క VNC లేదా serial console ద్వారా login చేసి ufw disable ను అమలు చేయండి.
VPSలో ఏ portsను తెరవాలి?
మీరు publicగా అందించే portsను మాత్రమే తెరవాలి. సిస్టమ్ను నిర్వహించడానికి SSH (22/tcp) అవసరం. మీరు website నడుపుతున్నట్లయితే HTTP మరియు HTTPS (80/tcp, 443/tcp) అవసరం. మిగతా అన్నింటినీ deniedగా ఉంచండి. databases వంటి internal servicesను 127.0.0.1 కు bind చేయాలి. వాటికి firewall rule ఇవ్వకూడదు. అందువల్ల అవి network నుంచి ఎప్పటికీ చేరుకోలేరు.
UFW IPv6ను నిర్వహిస్తుందా?
ఆధునిక Ubuntuలో అవును. IPV6=yes విలువ /etc/default/ufw లో సెట్ చేయబడి ఉంటుంది. అందువల్ల ప్రతి rule రెండు stacksకూ వర్తిస్తుంది. ufw status IPv6 rulesను (v6) suffixతో చూపిస్తుంది. ఇంకా సమస్యలు ఎలా సంభవించవచ్చో IPv6 firewall సమస్యలో వివరించాం.
UFW ruleను ఎలా తొలగించాలి?
Index numbersతో rules జాబితాను చూపించడానికి 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 blockedగా ఉంటుంది. మీరు పేర్కొన్న addressకు మాత్రమే అనుమతి లభిస్తుంది. సాధారణ allow 5432/tcp ను కూడా జోడించవద్దు. అది portను అందరికీ తెరుస్తుంది. database లేదా admin panelను బయటకు అందించడానికి ఇది అత్యంత సురక్షితమైన విధానం. sudo ufw status verbose తో దీనిని నిర్ధారించండి. ఇది port పక్కన source addressను చూపిస్తుంది.