యాక్షన్ పుస్తకంలో Linux

యాక్షన్ పుస్తకంలో Linux హలో, ఖబ్రో నివాసులారా! పుస్తకంలో, డేవిడ్ క్లింటన్ మీ బ్యాకప్ మరియు రికవరీ సిస్టమ్‌ను ఆటోమేట్ చేయడం, డ్రాప్‌బాక్స్-స్టైల్ పర్సనల్ ఫైల్ క్లౌడ్‌ను సెటప్ చేయడం మరియు మీ స్వంత మీడియావికీ సర్వర్‌ని సృష్టించడం వంటి 12 నిజ-జీవిత ప్రాజెక్టులను వివరించాడు. మీరు ఆసక్తికరమైన కేస్ స్టడీస్ ద్వారా వర్చువలైజేషన్, డిజాస్టర్ రికవరీ, సెక్యూరిటీ, బ్యాకప్, DevOps మరియు సిస్టమ్ ట్రబుల్షూటింగ్‌ను అన్వేషిస్తారు. ప్రతి అధ్యాయం ఉత్తమ అభ్యాసాల సమీక్ష, కొత్త నిబంధనల పదకోశం మరియు వ్యాయామాలతో ముగుస్తుంది.

సారాంశం “10.1. OpenVPN సొరంగం సృష్టిస్తోంది"

నేను ఇప్పటికే ఈ పుస్తకంలో ఎన్‌క్రిప్షన్ గురించి చాలా మాట్లాడాను. SSH మరియు SCP రిమోట్ కనెక్షన్‌ల ద్వారా బదిలీ చేయబడిన డేటాను రక్షించగలవు (చాప్టర్ 3), ఫైల్ ఎన్‌క్రిప్షన్ డేటాను సర్వర్‌లో నిల్వ చేసినప్పుడు (చాప్టర్ 8) మరియు TLS/SSL ప్రమాణపత్రాలు సైట్‌లు మరియు క్లయింట్ బ్రౌజర్‌ల మధ్య బదిలీ చేయబడిన డేటాను రక్షించగలవు (చాప్టర్ 9) . కానీ కొన్నిసార్లు మీ డేటా విస్తృత శ్రేణి కనెక్షన్‌లలో రక్షించబడాలి. ఉదాహరణకు, పబ్లిక్ హాట్‌స్పాట్‌ల ద్వారా Wi-Fiకి కనెక్ట్ చేస్తున్నప్పుడు మీ బృంద సభ్యులలో కొందరు రోడ్డుపై పని చేయవచ్చు. అటువంటి యాక్సెస్ పాయింట్లన్నీ సురక్షితమైనవని మీరు ఖచ్చితంగా అనుకోకూడదు, కానీ మీ వ్యక్తులకు కంపెనీ వనరులకు కనెక్ట్ కావడానికి ఒక మార్గం అవసరం-అక్కడే VPN సహాయపడుతుంది.

సరిగ్గా రూపొందించబడిన VPN టన్నెల్ రిమోట్ క్లయింట్‌లు మరియు సర్వర్‌ల మధ్య అసురక్షిత నెట్‌వర్క్‌లో ప్రయాణించేటప్పుడు డేటాను దాచిపెట్టే విధంగా ప్రత్యక్ష కనెక్షన్‌ని అందిస్తుంది. అయితే ఏంటి? ఎన్‌క్రిప్షన్‌తో దీన్ని చేయగల అనేక సాధనాలను మీరు ఇప్పటికే చూసారు. VPN యొక్క నిజమైన విలువ ఏమిటంటే, సొరంగం తెరవడం ద్వారా, మీరు రిమోట్ నెట్‌వర్క్‌లను స్థానికంగా ఉన్నట్లుగా కనెక్ట్ చేయవచ్చు. ఒక రకంగా చెప్పాలంటే, మీరు బైపాస్‌ని ఉపయోగిస్తున్నారు.

ఈ విస్తరించిన నెట్‌వర్క్‌ని ఉపయోగించి, నిర్వాహకులు ఎక్కడి నుండైనా తమ సర్వర్‌లలో తమ పనిని నిర్వహించగలరు. కానీ మరీ ముఖ్యంగా, బహుళ స్థానాల్లో విస్తరించి ఉన్న వనరులను కలిగి ఉన్న సంస్థ వాటిని అన్నింటిని కనిపించేలా చేయగలదు మరియు అవి ఎక్కడ ఉన్నా వారికి అవసరమైన అన్ని సమూహాలకు అందుబాటులో ఉంటుంది (మూర్తి 10.1).

సొరంగం భద్రతకు హామీ ఇవ్వదు. కానీ ఎన్క్రిప్షన్ ప్రమాణాలలో ఒకటి నెట్వర్క్ నిర్మాణంలో చేర్చబడుతుంది, ఇది భద్రతా స్థాయిని గణనీయంగా పెంచుతుంది. ఓపెన్ సోర్స్ OpenVPN ప్యాకేజీని ఉపయోగించి సృష్టించబడిన టన్నెల్‌లు మీరు ఇప్పటికే చదివిన అదే TLS/SSL ఎన్‌క్రిప్షన్‌ను ఉపయోగిస్తాయి. OpenVPN అందుబాటులో ఉన్న టన్నెలింగ్ ఎంపిక మాత్రమే కాదు, కానీ ఇది బాగా తెలిసిన వాటిలో ఒకటి. ఇది IPsec ఎన్‌క్రిప్షన్‌ని ఉపయోగించే ప్రత్యామ్నాయ లేయర్ 2 టన్నెల్ ప్రోటోకాల్ కంటే కొంచెం వేగంగా మరియు మరింత సురక్షితమైనదిగా పరిగణించబడుతుంది.

మీ బృందంలోని ప్రతి ఒక్కరూ రోడ్డుపై లేదా వేర్వేరు భవనాల్లో పని చేస్తున్నప్పుడు ఒకరితో ఒకరు సురక్షితంగా కమ్యూనికేట్ చేయాలని మీరు కోరుకుంటున్నారా? దీన్ని చేయడానికి, మీరు అప్లికేషన్ షేరింగ్ మరియు సర్వర్ యొక్క లోకల్ నెట్‌వర్క్ ఎన్విరాన్‌మెంట్‌కు యాక్సెస్‌ని అనుమతించడానికి ఓపెన్‌విపిఎన్ సర్వర్‌ని సృష్టించాలి. ఇది పని చేయడానికి, మీరు చేయాల్సిందల్లా రెండు వర్చువల్ మిషన్లు లేదా రెండు కంటైనర్‌లను అమలు చేయడం: ఒకటి సర్వర్/హోస్ట్‌గా మరియు మరొకటి క్లయింట్‌గా పని చేయడానికి. VPNని రూపొందించడం అనేది సాధారణ ప్రక్రియ కాదు, కాబట్టి పెద్ద చిత్రాన్ని మనసులో ఉంచుకోవడానికి కొన్ని నిమిషాలు కేటాయించడం విలువైనదే.

యాక్షన్ పుస్తకంలో Linux

10.1.1 OpenVPN సర్వర్ కాన్ఫిగరేషన్

మీరు ప్రారంభించడానికి ముందు, నేను మీకు కొన్ని ఉపయోగకరమైన సలహా ఇస్తాను. మీరు దీన్ని మీరే చేయబోతున్నట్లయితే (మరియు నేను మీకు బాగా సిఫార్సు చేస్తున్నాను), మీ డెస్క్‌టాప్‌లో తెరిచిన బహుళ టెర్మినల్ విండోలతో మీరు పని చేయవచ్చు, ప్రతి ఒక్కటి వేరే మెషీన్‌కు కనెక్ట్ చేయబడింది. ఏదో ఒక సమయంలో మీరు విండోలో తప్పు ఆదేశాన్ని నమోదు చేసే ప్రమాదం ఉంది. దీన్ని నివారించడానికి, మీరు కమాండ్ లైన్‌లో ప్రదర్శించబడే మెషీన్ పేరును మీరు ఎక్కడ ఉన్నారో స్పష్టంగా చెప్పే దానికి మార్చడానికి హోస్ట్‌నేమ్ ఆదేశాన్ని ఉపయోగించవచ్చు. మీరు దీన్ని చేసిన తర్వాత, కొత్త సెట్టింగ్‌లు అమలులోకి రావడానికి మీరు సర్వర్ నుండి లాగ్ అవుట్ చేసి తిరిగి లాగిన్ అవ్వాలి. ఇది ఇలా కనిపిస్తుంది:

యాక్షన్ పుస్తకంలో Linux
ఈ విధానాన్ని అనుసరించడం ద్వారా మరియు మీరు పనిచేసే ప్రతి యంత్రానికి తగిన పేర్లను ఇవ్వడం ద్వారా, మీరు ఎక్కడ ఉన్నారో సులభంగా ట్రాక్ చేయవచ్చు.

హోస్ట్ పేరును ఉపయోగించిన తర్వాత, మీరు తదుపరి ఆదేశాలను అమలు చేస్తున్నప్పుడు హోస్ట్ ఓపెన్‌విపిఎన్-సర్వర్ సందేశాలను పరిష్కరించడం సాధ్యం కాదు బాధించేవిగా ఉండవచ్చు. /etc/hosts ఫైల్‌ని సముచితమైన కొత్త హోస్ట్‌నేమ్‌తో అప్‌డేట్ చేయడం సమస్యను పరిష్కరించాలి.

OpenVPN కోసం మీ సర్వర్‌ని సిద్ధం చేస్తోంది

మీ సర్వర్‌లో OpenVPNని ఇన్‌స్టాల్ చేయడానికి, మీకు రెండు ప్యాకేజీలు అవసరం: openvpn మరియు easy-rsa (ఎన్‌క్రిప్షన్ కీ ఉత్పత్తి ప్రక్రియను నిర్వహించడానికి). మీరు చాప్టర్ 2లో చేసినట్లుగా, అవసరమైతే సెంటొస్ వినియోగదారులు ముందుగా ఎపెల్-విడుదల రిపోజిటరీని ఇన్‌స్టాల్ చేయాలి. సర్వర్ అప్లికేషన్‌కు యాక్సెస్‌ను పరీక్షించడానికి, మీరు అపాచీ వెబ్ సర్వర్‌ను కూడా ఇన్‌స్టాల్ చేయవచ్చు (ఉబుంటులో apache2 మరియు CentOSలో httpd).

మీరు మీ సర్వర్‌ని సెటప్ చేస్తున్నప్పుడు, 22 (SSH) మరియు 1194 (OpenVPN యొక్క డిఫాల్ట్ పోర్ట్) మినహా అన్ని పోర్ట్‌లను బ్లాక్ చేసే ఫైర్‌వాల్‌ని సక్రియం చేయాలని నేను సిఫార్సు చేస్తున్నాను. ఈ ఉదాహరణ ఉబుంటులో ufw ఎలా పని చేస్తుందో వివరిస్తుంది, అయితే మీరు అధ్యాయం 9 నుండి CentOS ఫైర్‌వాల్డ్ ప్రోగ్రామ్‌ను ఇప్పటికీ గుర్తుంచుకోవాలని నేను ఖచ్చితంగా అనుకుంటున్నాను:

# ufw enable
# ufw allow 22
# ufw allow 1194

సర్వర్‌లో నెట్‌వర్క్ ఇంటర్‌ఫేస్‌ల మధ్య అంతర్గత రూటింగ్‌ని ప్రారంభించడానికి, మీరు /etc/sysctl.conf ఫైల్‌లో ఒక లైన్ (net.ipv4.ip_forward = 1)ని అన్‌కమెంట్ చేయాలి. ఇది రిమోట్ క్లయింట్‌లను కనెక్ట్ చేసిన తర్వాత అవసరమైన విధంగా దారి మళ్లించడానికి అనుమతిస్తుంది. కొత్త ఎంపిక పని చేయడానికి, sysctl -pని అమలు చేయండి:

# nano /etc/sysctl.conf
# sysctl -p

మీ సర్వర్ ఎన్విరాన్మెంట్ ఇప్పుడు పూర్తిగా కాన్ఫిగర్ చేయబడింది, కానీ మీరు సిద్ధంగా ఉండటానికి ముందు ఇంకా ఒక పని చేయాల్సి ఉంది: మీరు ఈ క్రింది దశలను పూర్తి చేయాలి (మేము వాటిని తదుపరి వివరంగా కవర్ చేస్తాము).

  1. సులభమైన-rsa ప్యాకేజీతో అందించబడిన స్క్రిప్ట్‌లను ఉపయోగించి సర్వర్‌లో పబ్లిక్ కీ ఇన్‌ఫ్రాస్ట్రక్చర్ (PKI) ఎన్‌క్రిప్షన్ కీల సమితిని సృష్టించండి. ముఖ్యంగా, OpenVPN సర్వర్ దాని స్వంత సర్టిఫికేట్ అథారిటీ (CA) వలె కూడా పనిచేస్తుంది.
  2. క్లయింట్ కోసం తగిన కీలను సిద్ధం చేయండి
  3. సర్వర్ కోసం server.conf ఫైల్‌ను కాన్ఫిగర్ చేయండి
  4. మీ OpenVPN క్లయింట్‌ని సెటప్ చేయండి
  5. మీ VPNని తనిఖీ చేయండి

ఎన్క్రిప్షన్ కీలను రూపొందిస్తోంది

విషయాలను సరళంగా ఉంచడానికి, మీరు OpenVPN సర్వర్ రన్ అవుతున్న అదే మెషీన్‌లో మీ కీ ఇన్‌ఫ్రాస్ట్రక్చర్‌ను సెటప్ చేయవచ్చు. అయితే, భద్రతా ఉత్తమ పద్ధతులు సాధారణంగా ఉత్పత్తి విస్తరణల కోసం ప్రత్యేక CA సర్వర్‌ని ఉపయోగించాలని సూచిస్తున్నాయి. ఓపెన్‌విపిఎన్‌లో ఉపయోగం కోసం ఎన్‌క్రిప్షన్ కీ వనరులను ఉత్పత్తి చేసే మరియు పంపిణీ చేసే ప్రక్రియ అంజీర్‌లో వివరించబడింది. 10.2

యాక్షన్ పుస్తకంలో Linux
మీరు OpenVPNని ఇన్‌స్టాల్ చేసినప్పుడు, /etc/openvpn/ డైరెక్టరీ స్వయంచాలకంగా సృష్టించబడుతుంది, కానీ దానిలో ఇంకా ఏమీ లేదు. openvpn మరియు easy-rsa ప్యాకేజీలు మీ కాన్ఫిగరేషన్‌కు ఆధారంగా మీరు ఉపయోగించగల ఉదాహరణ టెంప్లేట్ ఫైల్‌లతో వస్తాయి. ధృవీకరణ ప్రక్రియను ప్రారంభించడానికి, సులభమైన-rsa టెంప్లేట్ డైరెక్టరీని /usr/share/ నుండి /etc/openvpnకి కాపీ చేసి, easy-rsa/ డైరెక్టరీకి మార్చండి:

# cp -r /usr/share/easy-rsa/ /etc/openvpn
$ cd /etc/openvpn/easy-rsa

సులభమైన-rsa డైరెక్టరీ ఇప్పుడు చాలా కొన్ని స్క్రిప్ట్‌లను కలిగి ఉంటుంది. పట్టికలో 10.1 మీరు కీలను సృష్టించడానికి ఉపయోగించే సాధనాలను జాబితా చేస్తుంది.

యాక్షన్ పుస్తకంలో Linux

పై కార్యకలాపాలకు రూట్ అధికారాలు అవసరం, కాబట్టి మీరు sudo su ద్వారా రూట్ అవ్వాలి.

మీరు పని చేసే మొదటి ఫైల్‌ను vars అని పిలుస్తారు మరియు కీలను రూపొందించేటప్పుడు సులభమైన-rsa ఉపయోగించే ఎన్విరాన్‌మెంట్ వేరియబుల్‌లను కలిగి ఉంటుంది. ఇప్పటికే ఉన్న డిఫాల్ట్ విలువలకు బదులుగా మీ స్వంత విలువలను ఉపయోగించడానికి మీరు ఫైల్‌ను సవరించాలి. నా ఫైల్ ఇలా కనిపిస్తుంది (లిస్టింగ్ 10.1).

జాబితా 10.1. ఫైల్ యొక్క ప్రధాన శకలాలు /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY="CA"
export KEY_PROVINCE="ON"
export KEY_CITY="Toronto"
export KEY_ORG="Bootstrap IT"
export KEY_EMAIL="[email protected]"
export KEY_OU="IT"

vars ఫైల్‌ను అమలు చేయడం వలన దాని విలువలు షెల్ పర్యావరణానికి పంపబడతాయి, అక్కడ అవి మీ కొత్త కీల కంటెంట్‌లలో చేర్చబడతాయి. sudo కమాండ్ ఎందుకు పని చేయదు? ఎందుకంటే మొదటి దశలో మనం vars అనే స్క్రిప్ట్‌ని సవరించి, ఆపై దానిని వర్తింపజేస్తాము. వర్తింపజేయడం మరియు vars ఫైల్ దాని విలువలను షెల్ ఎన్విరాన్‌మెంట్‌కు పంపుతుందని అర్థం, అక్కడ అవి మీ కొత్త కీల కంటెంట్‌లలో చేర్చబడతాయి.

అసంపూర్తిగా ఉన్న ప్రక్రియను పూర్తి చేయడానికి కొత్త షెల్ ఉపయోగించి ఫైల్‌ను మళ్లీ అమలు చేయాలని నిర్ధారించుకోండి. ఇది పూర్తయినప్పుడు, /etc/openvpn/easy-rsa/keys/ డైరెక్టరీలో ఏదైనా కంటెంట్‌ను తీసివేయడానికి మరొక స్క్రిప్ట్‌ను క్లీన్-ఆల్‌ను అమలు చేయమని స్క్రిప్ట్ మిమ్మల్ని అడుగుతుంది:

యాక్షన్ పుస్తకంలో Linux
సహజంగానే, తదుపరి దశ క్లీన్-ఆల్ స్క్రిప్ట్‌ను అమలు చేయడం, ఆపై బిల్డ్-సిఎ, రూట్ సర్టిఫికేట్‌ను రూపొందించడానికి pkitool స్క్రిప్ట్‌ని ఉపయోగిస్తుంది. vars ద్వారా అందించబడిన గుర్తింపు సెట్టింగ్‌లను నిర్ధారించమని మీరు అడగబడతారు:

# ./clean-all
# ./build-ca
Generating a 2048 bit RSA private key

తదుపరి బిల్డ్-కీ-సర్వర్ స్క్రిప్ట్ వస్తుంది. ఇది కొత్త రూట్ సర్టిఫికేట్‌తో పాటు అదే pkitool స్క్రిప్ట్‌ను ఉపయోగిస్తుంది కాబట్టి, కీ జత యొక్క సృష్టిని నిర్ధారించడానికి మీరు అదే ప్రశ్నలను చూస్తారు. మీరు ఆమోదించిన ఆర్గ్యుమెంట్‌ల ఆధారంగా కీలు పేరు పెట్టబడతాయి, మీరు ఈ మెషీన్‌లో బహుళ VPNలను అమలు చేస్తే తప్ప, సాధారణంగా సర్వర్‌గా ఉంటుంది, ఉదాహరణకు:

# ./build-key-server server
[...]
Certificate is to be certified until Aug 15 23:52:34 2027 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

OpenVPN కొత్త కనెక్షన్‌ల కోసం ప్రమాణీకరణను చర్చించడానికి Diffie-Hellman అల్గారిథమ్ (బిల్డ్-డిహెచ్ ఉపయోగించి) ద్వారా రూపొందించబడిన పారామితులను ఉపయోగిస్తుంది. ఇక్కడ సృష్టించబడిన ఫైల్ రహస్యంగా ఉండవలసిన అవసరం లేదు, అయితే ప్రస్తుతం సక్రియంగా ఉన్న RSA కీల కోసం బిల్డ్-dh స్క్రిప్ట్‌ని ఉపయోగించి తప్పనిసరిగా రూపొందించబడాలి. మీరు భవిష్యత్తులో కొత్త RSA కీలను సృష్టిస్తే, మీరు Diffie-Hellman ఫైల్‌ను కూడా అప్‌డేట్ చేయాలి:

# ./build-dh

మీ సర్వర్ సైడ్ కీలు ఇప్పుడు /etc/openvpn/easy-rsa/keys/ డైరెక్టరీలో ముగుస్తాయి, కానీ OpenVPNకి ఇది తెలియదు. డిఫాల్ట్‌గా, OpenVPN /etc/openvpn/లో కీల కోసం చూస్తుంది, కాబట్టి వాటిని కాపీ చేయండి:

# cp /etc/openvpn/easy-rsa/keys/server* /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/dh2048.pem /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn

క్లయింట్ ఎన్‌క్రిప్షన్ కీలను సిద్ధం చేస్తోంది

మీరు ఇప్పటికే చూసినట్లుగా, TLS ఎన్‌క్రిప్షన్ జత సరిపోలే కీలను ఉపయోగిస్తుంది: ఒకటి సర్వర్‌లో ఇన్‌స్టాల్ చేయబడింది మరియు ఒకటి రిమోట్ క్లయింట్‌లో ఇన్‌స్టాల్ చేయబడింది. దీని అర్థం మీకు క్లయింట్ కీలు అవసరం. మా పాత స్నేహితుడు pkitool మీకు దీని కోసం ఖచ్చితంగా అవసరం. ఈ ఉదాహరణలో, మేము /etc/openvpn/easy-rsa/ డైరెక్టరీలో ప్రోగ్రామ్‌ను అమలు చేసినప్పుడు, client.crt మరియు client.key అనే ఫైల్‌లను రూపొందించడానికి మేము దానిని క్లయింట్ ఆర్గ్యుమెంట్‌గా పంపుతాము:

# ./pkitool client

కీలు/డైరెక్టరీలో ఇప్పటికీ ఉన్న ఒరిజినల్ ca.crt ఫైల్‌తో పాటు రెండు క్లయింట్ ఫైల్‌లు ఇప్పుడు సురక్షితంగా మీ క్లయింట్‌కి బదిలీ చేయబడాలి. వారి యాజమాన్యం మరియు యాక్సెస్ హక్కుల కారణంగా, ఇది అంత సులభం కాకపోవచ్చు. మీ PC డెస్క్‌టాప్‌లో నడుస్తున్న టెర్మినల్‌లోకి సోర్స్ ఫైల్‌లోని కంటెంట్‌లను (మరియు ఆ కంటెంట్ తప్ప మరేమీ కాదు) మాన్యువల్‌గా కాపీ చేయడం సరళమైన విధానం (టెక్స్ట్‌ని ఎంచుకోండి, దానిపై కుడి క్లిక్ చేసి, మెను నుండి కాపీని ఎంచుకోండి). మీ క్లయింట్‌కి కనెక్ట్ చేయబడిన రెండవ టెర్మినల్‌లో మీరు సృష్టించిన అదే పేరుతో కొత్త ఫైల్‌లో దీన్ని అతికించండి.

కానీ ఎవరైనా కట్ మరియు పేస్ట్ చేయవచ్చు. బదులుగా, అడ్మినిస్ట్రేటర్ లాగా ఆలోచించండి ఎందుకంటే మీరు ఎల్లప్పుడూ కట్/పేస్ట్ ఆపరేషన్‌లు సాధ్యమయ్యే GUIకి యాక్సెస్ కలిగి ఉండరు. ఫైల్‌లను మీ యూజర్ హోమ్ డైరెక్టరీకి కాపీ చేయండి (తద్వారా రిమోట్ scp ఆపరేషన్ వాటిని యాక్సెస్ చేయగలదు), ఆపై ఫైల్‌ల యాజమాన్యాన్ని రూట్ నుండి సాధారణ నాన్-రూట్ యూజర్‌గా మార్చడానికి chownని ఉపయోగించండి, తద్వారా రిమోట్ scp చర్య నిర్వహించబడుతుంది. మీ అన్ని ఫైల్‌లు ప్రస్తుతం ఇన్‌స్టాల్ చేయబడి, యాక్సెస్ చేయగలవని నిర్ధారించుకోండి. మీరు వాటిని కొంచెం తర్వాత క్లయింట్‌కి తరలిస్తారు:

# cp /etc/openvpn/easy-rsa/keys/client.key /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/ca.crt /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/client.crt /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/client.key
# chown ubuntu:ubuntu /home/ubuntu/client.crt
# chown ubuntu:ubuntu /home/ubuntu/ca.crt

పూర్తి సెట్ ఎన్‌క్రిప్షన్ కీలు సిద్ధంగా ఉన్నందున, మీరు VPNని ఎలా సృష్టించాలనుకుంటున్నారో సర్వర్‌కు తెలియజేయాలి. ఇది server.conf ఫైల్‌ని ఉపయోగించి చేయబడుతుంది.

కీస్ట్రోక్‌ల సంఖ్యను తగ్గించడం

చాలా ఎక్కువ టైపింగ్ ఉందా? బ్రాకెట్లతో విస్తరణ ఈ ఆరు ఆదేశాలను రెండుకి తగ్గించడంలో సహాయపడుతుంది. మీరు ఈ రెండు ఉదాహరణలను అధ్యయనం చేసి, ఏమి జరుగుతుందో అర్థం చేసుకోగలరని నేను ఖచ్చితంగా అనుకుంటున్నాను. మరీ ముఖ్యంగా, పదుల లేదా వందల కొద్దీ అంశాలతో కూడిన కార్యకలాపాలకు ఈ సూత్రాలను ఎలా వర్తింపజేయాలో మీరు అర్థం చేసుకోగలరు:

# cp /etc/openvpn/easy-rsa/keys/{ca.crt,client.{key,crt}} /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/{ca.crt,client.{key,crt}}

server.conf ఫైల్‌ని సెటప్ చేస్తోంది

server.conf ఫైల్ ఎలా ఉండాలో మీరు ఎలా తెలుసుకోవచ్చు? మీరు /usr/share/ నుండి కాపీ చేసిన సులభమైన-rsa డైరెక్టరీ టెంప్లేట్ గుర్తుందా? మీరు OpenVPNని ఇన్‌స్టాల్ చేసినప్పుడు, మీరు /etc/openvpn/కి కాపీ చేయగల కంప్రెస్డ్ కాన్ఫిగరేషన్ టెంప్లేట్ ఫైల్ మీకు మిగిలిపోయింది. నేను టెంప్లేట్ ఆర్కైవ్ చేయబడిందని మరియు ఉపయోగకరమైన సాధనాన్ని మీకు పరిచయం చేస్తాను: zcat.

cat కమాండ్‌ని ఉపయోగించి ఫైల్‌లోని టెక్స్ట్ కంటెంట్‌ని స్క్రీన్‌పై ప్రింట్ చేయడం గురించి మీకు ఇప్పటికే తెలుసు, అయితే ఫైల్ gzip ఉపయోగించి కంప్రెస్ చేయబడితే? మీరు ఎప్పుడైనా ఫైల్‌ను అన్‌జిప్ చేయవచ్చు, ఆపై పిల్లి దాన్ని ఆనందంగా అవుట్‌పుట్ చేస్తుంది, అయితే ఇది అవసరమైన దానికంటే ఒకటి లేదా రెండు దశలు ఎక్కువ. బదులుగా, మీరు ఊహించినట్లుగా, ప్యాక్ చేయని వచనాన్ని ఒక దశలో మెమరీలోకి లోడ్ చేయడానికి మీరు zcat ఆదేశాన్ని జారీ చేయవచ్చు. కింది ఉదాహరణలో, స్క్రీన్‌పై వచనాన్ని ముద్రించడానికి బదులుగా, మీరు దానిని server.conf అనే కొత్త ఫైల్‌కి మళ్లిస్తారు:

# zcat 
  /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz 
  > /etc/openvpn/server.conf
$ cd /etc/openvpn

ఫైల్‌తో పాటు వచ్చే విస్తృతమైన మరియు సహాయకరమైన డాక్యుమెంటేషన్‌ను పక్కన పెట్టి, మీరు ఎడిటింగ్ పూర్తి చేసినప్పుడు అది ఎలా ఉంటుందో చూద్దాం. సెమికోలన్ (;) ఓపెన్‌విపిఎన్‌కి తదుపరి పంక్తిని చదవవద్దని లేదా అమలు చేయవద్దని చెబుతుందని గమనించండి (లిస్టింగ్ 10.2).

యాక్షన్ పుస్తకంలో Linux
ఈ సెట్టింగ్‌లలో కొన్నింటిని చూద్దాం.

  • డిఫాల్ట్‌గా, OpenVPN పోర్ట్ 1194లో నడుస్తుంది. మీరు దీన్ని మార్చవచ్చు, ఉదాహరణకు, మీ కార్యకలాపాలను మరింత దాచడానికి లేదా ఇతర సక్రియ సొరంగాలతో వైరుధ్యాలను నివారించడానికి. 1194 ఖాతాదారులతో కనీస సమన్వయం అవసరం కాబట్టి, ఈ విధంగా చేయడం ఉత్తమం.
  • డేటాను ప్రసారం చేయడానికి OpenVPN ట్రాన్స్‌మిషన్ కంట్రోల్ ప్రోటోకాల్ (TCP) లేదా యూజర్ డేటాగ్రామ్ ప్రోటోకాల్ (UDP)ని ఉపయోగిస్తుంది. TCP కొంచెం నెమ్మదిగా ఉండవచ్చు, కానీ ఇది మరింత విశ్వసనీయమైనది మరియు సొరంగం యొక్క రెండు చివర్లలో నడుస్తున్న అప్లికేషన్‌ల ద్వారా అర్థం చేసుకునే అవకాశం ఉంది.
  • మీరు డేటా కంటెంట్‌ను మరియు మరేమీ లేని సరళమైన, మరింత సమర్థవంతమైన IP టన్నెల్‌ని సృష్టించాలనుకున్నప్పుడు మీరు dev tunని పేర్కొనవచ్చు. మరోవైపు, మీరు బహుళ నెట్‌వర్క్ ఇంటర్‌ఫేస్‌లను (మరియు అవి సూచించే నెట్‌వర్క్‌లను) కనెక్ట్ చేయాల్సి ఉంటే, ఈథర్‌నెట్ బ్రిడ్జిని సృష్టిస్తే, మీరు డెవ్ ట్యాప్‌ని ఎంచుకోవాలి. దీని అర్థం ఏమిటో మీకు అర్థం కాకపోతే, తున్ ఆర్గ్యుమెంట్ ఉపయోగించండి.
  • తదుపరి నాలుగు పంక్తులు OpenVPNకి సర్వర్‌లోని మూడు ప్రమాణీకరణ ఫైల్‌ల పేర్లను మరియు మీరు ఇంతకు ముందు సృష్టించిన dh2048 ఎంపికల ఫైల్‌ను అందిస్తాయి.
  • లాగిన్ అయిన తర్వాత క్లయింట్‌లకు IP చిరునామాలను కేటాయించడానికి సర్వర్ లైన్ పరిధి మరియు సబ్‌నెట్ మాస్క్‌ను సెట్ చేస్తుంది.
  • ఐచ్ఛిక పుష్ పరామితి "రూట్ 10.0.3.0 255.255.255.0" రిమోట్ క్లయింట్‌లను సర్వర్ వెనుక ఉన్న ప్రైవేట్ సబ్‌నెట్‌లను యాక్సెస్ చేయడానికి అనుమతిస్తుంది. ఈ పని చేయడానికి సర్వర్‌లోనే నెట్‌వర్క్‌ను సెటప్ చేయడం కూడా అవసరం, తద్వారా ప్రైవేట్ సబ్‌నెట్ OpenVPN సబ్‌నెట్ (10.8.0.0) గురించి తెలుసుకుంటుంది.
  • పోర్ట్-షేర్ లోకల్ హోస్ట్ 80 లైన్, పోర్ట్ 1194లో వచ్చే క్లయింట్ ట్రాఫిక్‌ని పోర్ట్ 80లో వినే స్థానిక వెబ్ సర్వర్‌కి మళ్లించడానికి మిమ్మల్ని అనుమతిస్తుంది. (మీరు మీ VPNని పరీక్షించడానికి వెబ్ సర్వర్‌ని ఉపయోగించబోతున్నట్లయితే ఇది ఉపయోగకరంగా ఉంటుంది.) ఇది మాత్రమే పని చేస్తుంది. అప్పుడు tcp ప్రోటోకాల్ ఎంపిక చేయబడినప్పుడు.
  • సెమికోలన్‌లను (;) తీసివేయడం ద్వారా వినియోగదారు ఎవరూ మరియు సమూహం నోగ్రూప్ లైన్‌లు తప్పనిసరిగా ప్రారంభించబడాలి. రిమోట్ క్లయింట్‌లను ఎవరూ మరియు నోగ్రూప్‌గా అమలు చేయమని బలవంతం చేయడం వలన సర్వర్‌లోని సెషన్‌లు ప్రత్యేకించబడవని నిర్ధారిస్తుంది.
  • ఓపెన్‌విపిఎన్ ప్రారంభించిన ప్రతిసారీ ప్రస్తుత లాగ్ ఎంట్రీలు పాత ఎంట్రీలను ఓవర్‌రైట్ చేస్తాయని లాగ్ నిర్దేశిస్తుంది, అయితే లాగ్-అపెండ్ ఇప్పటికే ఉన్న లాగ్ ఫైల్‌కు కొత్త ఎంట్రీలను జోడిస్తుంది. openvpn.log ఫైల్ /etc/openvpn/ డైరెక్టరీకి వ్రాయబడింది.

అదనంగా, క్లయింట్-టు-క్లయింట్ విలువ కూడా తరచుగా కాన్ఫిగరేషన్ ఫైల్‌కు జోడించబడుతుంది, తద్వారా ఓపెన్‌విపిఎన్ సర్వర్‌తో పాటు బహుళ క్లయింట్లు ఒకరినొకరు చూడగలరు. మీరు మీ కాన్ఫిగరేషన్‌తో సంతృప్తి చెందితే, మీరు OpenVPN సర్వర్‌ని ప్రారంభించవచ్చు:

# systemctl start openvpn

OpenVPN మరియు systemd మధ్య సంబంధం యొక్క మారుతున్న స్వభావం కారణంగా, సేవను ప్రారంభించడానికి క్రింది వాక్యనిర్మాణం కొన్నిసార్లు అవసరం కావచ్చు: systemctl start openvpn@server.

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

$ ip addr
[...]
4: tun0: mtu 1500 qdisc [...]
      link/none
      inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
          valid_lft forever preferred_lft forever

ప్రతిదీ పూర్తిగా పని చేయడం ప్రారంభించే ముందు మీరు సర్వర్‌ను రీబూట్ చేయాల్సి రావచ్చు. తదుపరి స్టాప్ క్లయింట్ కంప్యూటర్.

10.1.2 OpenVPN క్లయింట్‌ను కాన్ఫిగర్ చేస్తోంది

సాంప్రదాయకంగా, సొరంగాలు కనీసం రెండు నిష్క్రమణలతో నిర్మించబడతాయి (లేకపోతే మేము వాటిని గుహలు అని పిలుస్తాము). సర్వర్‌లో సరిగ్గా కాన్ఫిగర్ చేయబడిన OpenVPN ఒక వైపున టన్నెల్‌లోకి మరియు వెలుపల ట్రాఫిక్‌ను నిర్దేశిస్తుంది. కానీ మీకు క్లయింట్ వైపు, అంటే సొరంగం యొక్క మరొక చివరలో నడుస్తున్న కొన్ని సాఫ్ట్‌వేర్ కూడా అవసరం.

ఈ విభాగంలో, నేను OpenVPN క్లయింట్‌గా పనిచేయడానికి కొన్ని రకాల Linux కంప్యూటర్‌లను మాన్యువల్‌గా సెటప్ చేయడంపై దృష్టి పెట్టబోతున్నాను. కానీ ఈ అవకాశం అందుబాటులో ఉన్న ఏకైక మార్గం కాదు. OpenVPN Windows లేదా macOS నడుస్తున్న డెస్క్‌టాప్‌లు మరియు ల్యాప్‌టాప్‌లు, అలాగే Android మరియు iOS స్మార్ట్‌ఫోన్‌లు మరియు టాబ్లెట్‌లలో ఇన్‌స్టాల్ చేయగల మరియు ఉపయోగించగల క్లయింట్ అప్లికేషన్‌లకు మద్దతు ఇస్తుంది. వివరాల కోసం openvpn.net చూడండి.

ఓపెన్‌విపిఎన్ ప్యాకేజీ సర్వర్‌లో ఇన్‌స్టాల్ చేయబడినందున క్లయింట్ మెషీన్‌లో ఇన్‌స్టాల్ చేయబడాలి, అయినప్పటికీ మీరు ఉపయోగిస్తున్న కీలు ఇప్పటికే ఉన్నందున ఇక్కడ ఈజీ-ఆర్‌ఎస్ఎ అవసరం లేదు. మీరు క్లయింట్.conf టెంప్లేట్ ఫైల్‌ను మీరు ఇప్పుడే సృష్టించిన /etc/openvpn/ డైరెక్టరీకి కాపీ చేయాలి. ఈసారి ఫైల్ జిప్ చేయబడదు, కాబట్టి సాధారణ cp కమాండ్ పనిని చక్కగా చేస్తుంది:

# apt install openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf 
  /etc/openvpn/

మీ client.conf ఫైల్‌లోని చాలా సెట్టింగ్‌లు చాలా స్వీయ-వివరణాత్మకంగా ఉంటాయి: అవి సర్వర్‌లోని విలువలతో సరిపోలాలి. మీరు క్రింది ఉదాహరణ ఫైల్ నుండి చూడగలిగినట్లుగా, ప్రత్యేక పరామితి రిమోట్ 192.168.1.23 1194, ఇది క్లయింట్‌కు సర్వర్ యొక్క IP చిరునామాను తెలియజేస్తుంది. మళ్ళీ, ఇది మీ సర్వర్ చిరునామా అని నిర్ధారించుకోండి. మనిషి-ఇన్-ది-మిడిల్ దాడిని నిరోధించడానికి సర్వర్ సర్టిఫికేట్ యొక్క ప్రామాణికతను ధృవీకరించమని మీరు క్లయింట్ కంప్యూటర్‌ను బలవంతం చేయాలి. దీన్ని చేయడానికి ఒక మార్గం లైన్ రిమోట్-సర్ట్-టిఎల్ఎస్ సర్వర్ (లిస్టింగ్ 10.3) జోడించడం.

యాక్షన్ పుస్తకంలో Linux
మీరు ఇప్పుడు /etc/openvpn/ డైరెక్టరీకి వెళ్లి సర్వర్ నుండి ధృవీకరణ కీలను సంగ్రహించవచ్చు. ఉదాహరణలో సర్వర్ IP చిరునామా లేదా డొమైన్ పేరును మీ విలువలతో భర్తీ చేయండి:

యాక్షన్ పుస్తకంలో Linux
మీరు క్లయింట్‌లో OpenVPNని అమలు చేసే వరకు ఉత్తేజకరమైనది ఏమీ జరగదు. మీరు రెండు ఆర్గ్యుమెంట్‌లను పాస్ చేయవలసి ఉన్నందున, మీరు కమాండ్ లైన్ నుండి దీన్ని చేస్తారు. --tls-క్లయింట్ వాదన OpenVPNకి మీరు క్లయింట్‌గా వ్యవహరిస్తారని మరియు TLS ఎన్‌క్రిప్షన్ ద్వారా కనెక్ట్ అవుతారని మరియు మీ కాన్ఫిగరేషన్ ఫైల్‌కి --config పాయింట్లను తెలియజేస్తుంది:

# openvpn --tls-client --config /etc/openvpn/client.conf

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

  • క్లయింట్‌లో OpenVPN ఆపరేషన్ అవుట్‌పుట్‌ను జాగ్రత్తగా చదవండి. ఇది తరచుగా ఏమి చేయలేము మరియు ఎందుకు అనే దానిపై విలువైన సలహాలను కలిగి ఉంటుంది.
  • సర్వర్‌లోని /etc/openvpn/ డైరెక్టరీలో openvpn.log మరియు openvpn-status.log ఫైల్‌లలోని దోష సందేశాలను తనిఖీ చేయండి.
  • OpenVPN-సంబంధిత మరియు సమయానుకూల సందేశాల కోసం సర్వర్ మరియు క్లయింట్‌లోని సిస్టమ్ లాగ్‌లను తనిఖీ చేయండి. (journalctl -ce ఇటీవలి ఎంట్రీలను ప్రదర్శిస్తుంది.)
  • మీరు సర్వర్ మరియు క్లయింట్ మధ్య యాక్టివ్ నెట్‌వర్క్ కనెక్షన్‌ని కలిగి ఉన్నారని నిర్ధారించుకోండి (దీని గురించి మరింత అధ్యాయం 14లో).

రచయిత గురించి

డేవిడ్ క్లింటన్ - సిస్టమ్ అడ్మినిస్ట్రేటర్, ఉపాధ్యాయుడు మరియు రచయిత. అతను Linux సిస్టమ్స్, క్లౌడ్ కంప్యూటింగ్ (ముఖ్యంగా AWS) మరియు డాకర్ వంటి కంటైనర్ టెక్నాలజీలతో సహా అనేక ముఖ్యమైన సాంకేతిక విభాగాల కోసం విద్యా సామగ్రిని నిర్వహించాడు, వ్రాసాడు మరియు సృష్టించాడు. అతను లర్న్ అమెజాన్ వెబ్ సర్వీసెస్ ఇన్ ఎ మంత్ ఆఫ్ లంచ్‌లు (మాన్నింగ్, 2017) అనే పుస్తకాన్ని రాశాడు. అతని అనేక వీడియో శిక్షణా కోర్సులను Pluralsight.comలో చూడవచ్చు మరియు అతని ఇతర పుస్తకాలకు (Linux పరిపాలన మరియు సర్వర్ వర్చువలైజేషన్‌పై) లింక్‌లు ఇక్కడ అందుబాటులో ఉన్నాయి. bootstrap-it.com.

» పుస్తకం గురించి మరిన్ని వివరాలను ఇక్కడ చూడవచ్చు ప్రచురణకర్త యొక్క వెబ్‌సైట్
» విషయాల పట్టిక
» సారాంశం

Khabrozhiteley కోసం కూపన్ ఉపయోగించి 25% తగ్గింపు - linux
పుస్తకం యొక్క పేపర్ వెర్షన్ చెల్లించిన తర్వాత, ఎలక్ట్రానిక్ పుస్తకం ఇ-మెయిల్ ద్వారా పంపబడుతుంది.

మూలం: www.habr.com

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