UFW నियమాలతో OpenVPN గేట్వేను ఒక LAN కు పరిమితం చేయండి
టన్నెల్ క్లయింట్లు ఒక సబ్నెట్ను మాత్రమే చేరుకోనివ్వండి, మరేదీ కాదు. UFW ముందస్తు అంగీకారాలకు ముందు కాపలా గొలుసులు, ఒక మార్గ అనుమతి, మరియు సరిహద్దును నిరూపించే పరీక్షలు.
ఫైర్వాల్ ఫైల్ తెరవకముందే అనుమతిని నిర్ణయించండి: ప్రామాణీకృత క్లయింట్లు ఒక నిర్దిష్ట సబ్నెట్కు కనెక్షన్లు తెరవవచ్చు, మరియు క్లయింట్ అదనపు మార్గాలను ఇన్స్టాల్ చేసినా గేట్వే ప్రతి ఇతర ట్రాన్సిట్ మార్గాన్ని తిరస్కరించాలి. ఆ వాక్యమే రూపకల్పన, మరియు క్రింది ప్రతి నియమం దానిని అమలు చేయడానికే ఉంది. దీని కంటే విస్తృతమైనది, ఉదాహరణకు మొత్తం ప్రైవేట్ చిరునామా స్థలం, టన్నెల్ ద్వారా ఇంటర్నెట్కు వెళ్లడం లేదా సమపీర్ల మధ్య ట్రాఫిక్, తన స్వంత నిర్ణయం అవసరమయ్యే వేరే రూపకల్పన. నియమాలు ఉద్దేశపూర్వకంగా బోరింగ్గా ఉంటాయి, ఎందుకంటే తెలివైన ఫైర్వాల్ అనేది తర్వాత ఎవరూ ఆడిట్ చేయలేనిది.
మొదట టోపాలజీని మరియు అనుమతిని రాయండి
ఉదాహరణ ఉపయోగించేది వినియోగదారు స్థలంలోని TUN పరికరానికి అని పేరున్న Community OpenVPNtun0 సర్వర్, క్లయింట్ పూల్ 10.77.0.0/24, మరియు ఒక కలిపిన సబ్నెట్ 192.168.60.0/24 lan0 పై. IPv4 ఫార్వర్డింగ్ ఇప్పటికే పనిచేస్తుంది మరియు LAN కు పూల్ వైపు తిరిగి వెళ్లే మార్గం ఇప్పటికే ఉంది, కాబట్టి ఇక్కడ ఏదీ వాటి మధ్య అనువాదంపై ఆధారపడదు.
ఈ హోస్ట్పై ఫైర్వాల్ UFW యాజమాన్యంలో ఉంది, మరియు ఏ కంటైనర్ నియమ సమూహం లేదా ప్రత్యేక nftables పట్టిక ముందస్తు అంగీకార మార్గాన్ని ఇన్స్టాల్ చేయకూడదు. ఫిల్టర్ను దాటవేసే ఫ్లో-ఆఫ్లోడ్ షార్ట్కట్ కాపలా గొలుసులను కేవలం అలంకారంగా మారుస్తుంది, కాబట్టి ఏదీ క్రియాశీలంగా లేదని నిర్ధారించుకోండి. OpenVPN యొక్క సొంత client-to-client ఫార్వర్డింగ్ను నిలిపివేత స్థితిలో ఉంచండి, ఎందుకంటే ఆపరేటింగ్ సిస్టమ్ ఫిల్టర్ను ఎప్పుడూ దాటని సమపీర్ల మధ్య ట్రాఫిక్ దానితో పరిమితం చేయలేము. బాహ్య శ్రోత మరియు పరిపాలనా నియమాలు ఉన్నట్లే ఉంటాయి, ఎందుకంటే ఈ మార్పు ఫైర్వాల్ను భర్తీ చేయడం బదులు డీక్రిప్ట్ చేసిన టన్నెల్ ట్రాఫిక్ను నియంత్రిస్తుంది.
కాపలాదారులను UFW ముందస్తు అంగీకారాలకు ముందు ఉంచండి
మార్గ అనుమతి తర్వాత తిరస్కారం కఠినమైన సరిహద్దుకు సరిపోదు. స్టాక్ before నియమాలు ఏ వినియోగదారు నియమాన్ని చూసే ముందే స్థాపిత ట్రాఫిక్ను మరియు కొన్ని ICMPలను అంగీకరిస్తాయి, కాబట్టి గత వారం అనుమతించిన ఫ్లో కొత్త గమ్యస్థాన పరిమితి వెలుపల ఉండిపోవచ్చు, దానికి ఇంకా స్థితి ఉందని మాత్రమే. UFW ఫైళ్లను బ్యాకప్ చేయండి మరియు సవరణకు ముందు బ్యాండ్ వెలుపలి కన్సోల్ను తెరిచి ఉంచండి.
ఫైల్లోని *filter విభాగంలో /etc/ufw/before.rules, ఉన్న ప్రకటనల పక్కన మరియు ఏ నియమ పంక్తికి ముందైనా రెండు గొలుసులను ప్రకటించండి.
:vpn-src-guard - [0:0]
:vpn-reply-guard - [0:0]ప్రకటనల తర్వాత వెంటనే, మరియు ఇన్పుట్ మరియు ఫార్వర్డింగ్ అనుమతులకు ముందు, వాటిలోకి దూకి అవి ఏమి అనుమతిస్తాయో నిర్వచించండి.
-A ufw-before-input -i tun0 -j DROP
-A ufw-before-forward -i tun0 -j vpn-src-guard
-A ufw-before-forward -o tun0 -j vpn-reply-guard
-A vpn-src-guard -o lan0 -d 192.168.60.0/24 -s 10.77.0.0/24 -m conntrack --ctdir ORIGINAL -j RETURN
-A vpn-src-guard -j DROP
-A vpn-reply-guard -i lan0 -d 10.77.0.0/24 -s 192.168.60.0/24 -m conntrack --ctstate RELATED,ESTABLISHED --ctdir REPLY -j RETURN
-A vpn-reply-guard -j DROPవిభాగంలో మిగిలిన భాగాన్ని మరియు దాని COMMIT పంక్తిని ఉంచండి. రెండవ ఫిల్టర్ పట్టికను అతికించడం లేదా సంబంధం లేని నియమాలను తొలగించడం ఫైర్వాల్ మార్పు అంతరాయంగా మారే మార్గం, మరియు ఫైల్ ముఖ్యమైన ఏకైక కాపీ కావడానికి ఒక రీబూట్ మాత్రమే దూరం.
ప్రతి కాపలాదారు ఏమి అనుమతిస్తుంది మరియు ఏమి తిరస్కరిస్తుంది చదవండి
మొదటి గొలుసు ప్రాసెసింగ్ను కొనసాగిస్తుంది మూలం పూల్లో ఉన్నప్పుడు, గమ్యం ఆ ఒక సబ్నెట్ అయినప్పుడు, నిష్క్రమణ ఇంటర్ఫేస్ LAN అయినప్పుడు మరియు ప్యాకెట్ తన ఫ్లో యొక్క అసలు దిశలో ప్రయాణించినప్పుడు మాత్రమే. టన్నెల్ నుండి వచ్చే మిగతావన్నీ విసర్జించబడతాయి, పూల్ వెలుపలి మూలం మరియు అనుమతించిన సబ్నెట్కు ఆవల ఉన్న ఏ గమ్యమైనా సహా.
సమపీర్ ప్యాకెట్ tun0 లోకి ప్రవేశించి దాని నుండి బయటకు వెళ్తుంది, కాబట్టి గమ్య తనిఖీకి చేరుకోకముందే అది LAN ఇంటర్ఫేస్ పరీక్షలో విఫలమవుతుంది. LAN నుండి క్లయింట్ల వైపు కొత్త కనెక్షన్లు కూడా ప్రతిస్పందన దిశ పరీక్షలో విఫలమవుతాయి, ఇది డిఫాల్ట్గా రివర్స్ కాల్బ్యాక్ మార్గాన్ని మూసివేస్తుంది.
RETURN లక్ష్యం సాధారణ UFW విధానాన్ని అమలులో ఉంచుతుంది. ఈ గొలుసులు ఫిల్టర్ చేస్తాయి, మరియు తర్వాత మీరు జోడించే మార్గ అనుమతి మిగిలిన ప్యాకెట్ అంగీకరించబడుతుందో లేదో ఇంకా నిర్ణయిస్తుంది. ఆ విభజనే తర్వాత అనుమతించిన సబ్నెట్ను ఒకే చోట మార్చడానికి అనుమతిస్తుంది. కాపలాదారులు ప్యాకెట్లను నేరుగా అంగీకరించి ఉంటే, ప్రతి భవిష్యత్ నియమం రెండుసార్లు జోడించాల్సి ఉండేది.
సబ్నెట్కు అధికారం ఇవ్వండి మరియు పక్క తలుపులు మూసివేయండి
మొదట మార్గ అనుమతిని ప్రివ్యూ చేయండి, ఆపై వర్తింపజేయడానికి ప్రివ్యూ జెండాను తీసివేయండి: sudo ufw --dry-run route allow in on tun0 out on lan0 from 10.77.0.0/24 to 192.168.60.0/24. ఆ తర్వాత వినియోగదారు నియమాల క్రమాన్ని సమీక్షించండి, ఎందుకంటే మునుపటి తిరస్కారం తర్వాతి అనుమతిని ఇంకా ఓడిస్తుంది. మొత్తం సబ్నెట్కు అనుమతి కూడా తప్పు ఆకారం, ఒక హోస్ట్ యొక్క HTTPS పోర్టు మాత్రమే చేరుకోగలిగి ఉండాలి అన్నప్పుడు.
ఇన్పుట్ విసర్జన ఏమి చేస్తుందో గమనించండి: టన్నెల్ క్లయింట్లు గేట్వేపైనే ఏ సేవకూ చేరుకోలేరు, దాని LAN చిరునామాకు కట్టబడిన DNS శ్రోతతో సహా. అక్కడ DNS హోస్ట్ చేయడానికి విసర్జనకు ముందు ఉద్దేశపూర్వక మినహాయింపు మరియు సవరించిన అనుమతి ఒప్పందం అవసరం. UFW IPv6 నిర్వహిస్తే, tun0 కోసం before6.rules ఫైల్లో కూడా సరిపోయే విసర్జనలను జోడించండి, ఎందుకంటే IPv4 గమ్యాల జాబితా IPv6 ప్యాకెట్ల గురించి ఏమీ చెప్పదు.
ప్రివ్యూను కాదు, లోడ్ అయిన విధానాన్ని ధృవీకరించండి
మళ్లీ లోడ్ను ప్రివ్యూ చేయండి, నిర్వహణ విండోలో వర్తింపజేయండి, మరియు ప్రత్యక్ష నియమ సమూహాన్ని చదవండి.
sudo ufw --dry-run reload
sudo ufw show rawటన్నెల్ కాపలాదారులు డిఫాల్ట్ స్థితి మరియు ICMP అనుమతులకు ముందు కనిపిస్తాయని నిర్ధారించుకోండి. సాధారణ ufw status చేతితో సవరించిన before నియమాలను చూపదు, అందుకే ఆపరేటర్లు నియమం లేదని నిర్ధారణకు వస్తారు, నిజానికి అది లోడ్ అయి ఉంటుంది. ముక్క కోసం వెతకడం బదులు ముడి జాబితాను పై నుండి క్రిందకు చదవండి. కాపలాదారులు స్థితి అనుమతి తర్వాత కనిపిస్తే, సరిహద్దు ఫైల్ సూచించినది చేయడం లేదు.
తర్వాత వచనాన్ని కాదు, ప్రవర్తనను పరీక్షించండి. అనుమతించిన హోస్ట్కు కొత్త కనెక్షన్ తెరిచి ప్రతిస్పందనను గమనించండి, సబ్నెట్ వెలుపలి గమ్యానికి హానిలేని అభ్యర్థనను పంపి అది చనిపోతుందని నిర్ధారించుకోండి, సమపీర్ కనెక్షన్ ప్రయత్నించండి, గేట్వేలో స్థానిక సేవను ప్రయత్నించండి, మరియు అడగని LAN-నుండి-క్లయింట్ కనెక్షన్ ప్రయత్నించండి. మార్పుకు ముందు ఉన్న పరిధి వెలుపలి ఒక ఫ్లోను చేర్చండి, మరియు యంత్రం యొక్క మొత్తం ట్రాకింగ్ పట్టికను ఖాళీ చేయడం బదులు ఆ ఫ్లోను మాత్రమే తొలగించండి.
నియమాల పక్కన పరిమితులను నమోదు చేయండి: ఇది ట్రాన్సిట్ను పరిమితం చేస్తుంది, మరేదీ కాదు. ఇది క్లయింట్ తన స్వంత ఇంటర్నెట్ కనెక్షన్ను ఉపయోగించకుండా ఆపదు, అనుమతించిన LAN హోస్ట్ ట్రాఫిక్ను ముందుకు పంపకుండా ఆపదు, మరియు అనుమతించిన సేవల్లోని ప్రామాణీకరణను భర్తీ చేయదు.