మీరు కమ్యూనిటీ పోస్ట్ నుండి ఒక OpenVPN jail ను కాపీ చేసి, fail2ban ను మళ్లీ ప్రారంభించారు, ఏ చిరునామా కూడా ఎప్పుడూ బ్లాక్ కాదు. కారణం దాదాపు ఎప్పుడూ లాగ్ ఫార్మాట్: Access Server స్టాక్ ఫిల్టర్ ఆశించే ప్రామాణీకరణ వైఫల్య పంక్తులను రాయదు. ఫిల్టర్‌ను తాకే ముందు రికార్డులు ఉన్నాయో లేదో నిర్ధారించుకోండి, ఎందుకంటే సేవ ఎప్పుడూ నమోదు చేయని దానితో నమూనా సరిపోలలేదు.

Access Server హోస్ట్‌లో నేను అనుసరించే విధానం ఇది: రికార్డు ఆకారాన్ని నిర్ధారించండి, ఒక యాంకర్ చేసిన వ్యక్తీకరణ రాయండి, దాన్ని నిజమైన లాగ్‌పై పరీక్షించండి, ఆపై దాడికి గురైన ఉపరితలం ప్రకారం jail విభజించి, బ్లాక్ ఫైర్‌వాల్ వరకు చేరుతుందని నిర్ధారించండి.

వైఫల్య రికార్డు ఉనికిలో ఉందని నిర్ధారించండి

Access Server తన నిర్మాణాత్మక పంక్తులను /var/log/openvpnas.log లోకి రాస్తుంది, మరియు క్లయింట్ చిరునామా syslog పంక్తి ప్రారంభంలో కాదు, కోట్లలో ఉన్న real_ip ఫీల్డ్‌లో ఉంటుంది. ఏదైనా నమూనా రాయడానికి ముందు జరిగిందని మీకు తెలిసిన విఫల లాగిన్‌ను వెతకండి:

grep -i 'LOG ERR' /var/log/openvpnas.log | tail -20

ఏమీ కనిపించకపోతే, తదుపరి అనుమానితుడు లాగ్ స్థాయి. Access Server లో /usr/local/openvpn_as/etc/as.conf లో లాగ్-డేటాబేస్ డీబగ్ స్విచ్ ఉంది (DEBUG_LOGDB=1), మరియు దాన్ని మార్చిన తర్వాత సేవను మళ్లీ ప్రారంభించాలి. ఆ స్విచ్‌ను మీ నమూనా సిద్ధమైన తర్వాత మళ్లీ దించాల్సిన నిర్ధారణ సెట్టింగ్‌గా పరిగణించండి, శాశ్వత కాన్ఫిగరేషన్‌గా కాదు.

ఫైల్‌లో ఉన్నప్పుడు ఏ ఉపరితలాలు దానిలో రాస్తాయో గమనించండి. క్లయింట్ పోర్టల్, అడ్మిన్ ఇంటర్‌ఫేస్ మరియు టన్నెల్ ప్రామాణీకరణ వైఫల్యాలు ఒకే ఫైల్‌లో వేర్వేరు మార్కర్లతో వస్తాయి, మరియు ఆ వివరమే తర్వాత jail లేఅవుట్‌ను నిర్ణయిస్తుంది.

real_ip పై ఒక ఫిల్టర్‌ను యాంకర్ చేయండి

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

# /etc/fail2ban/filter.d/openvpnaccess.local
[Definition]
failregex = ^ .*LOG ERR.*"real_ip": "<HOST>".*
ignoreregex =

ప్రారంభ ఖాళీ అలంకారం కాదు. Access Server తన రికార్డులను లోపలికి నెడుతుంది, దానిపై యాంకర్ చేయడం అదే ఫైల్‌లో రాసే సంబంధం లేని సేవల పంక్తులను కూడా క్లెయిమ్ చేయకుండా నిరోధిస్తుంది. మీ రికార్డుల ప్రారంభంలో దానికి బదులుగా సమయ ముద్ర ఉంటే ఆ ఉపసర్గను సరిపోల్చండి, కానీ మీరు క్లెయిమ్ చేయాలనుకుంటున్న ప్రతి రికార్డులో నిజంగా ఉన్న దానిపై యాంకర్ చేయండి.

ఉపరితలం ప్రకారం ఖచ్చితత్వం అవసరమైనప్పుడు, అదే పంక్తిలో ఉపరితల మార్కర్ (WEB_CLIENT, WEB_ADMIN లేదా VPN) అడిగి మరింత ఇరుకు చేయండి. ఒక పదంతో భిన్నమైన మూడు ఫిల్టర్ల కంటే మూడు నమూనాలతో ఉన్న ఒక ఫిల్టర్ ఆడిట్ చేయడం సులభం.

jail ను ప్రారంభించే ముందు వ్యక్తీకరణను పరీక్షించండి

ఉత్పత్తి లాగ్‌పై నడపని ఫిల్టర్‌ను ఎప్పుడూ ప్రారంభించవద్దు. నమోదిత పరీక్ష ఫిల్టర్‌ను రెండుసార్లు పంపుతుంది, ఒకసారి లోడ్ చేయడానికి మరియు ఒకసారి వర్తించడానికి, తప్పిన పంక్తుల నివేదికే చదవదగిన భాగం:

fail2ban-regex --print-all-missed /var/log/openvpnas.log \
  /etc/fail2ban/filter.d/openvpnaccess.local \
  /etc/fail2ban/filter.d/openvpnaccess.local > missed.txt

మొదటి దశలో నిర్ధారించిన వైఫల్యాలతో సరిపోలికల సంఖ్యను పోల్చండి. సున్నా సరిపోలికలు అంటే నమూనా తప్పు; ప్రామాణీకరణ వైఫల్యాలు కాని పంక్తులపై సరిపోలికలు అంటే అది చాలా విశాలం. క్లెయిమ్ చేయకూడదని మీరు ఎంచుకున్న ప్రతి పంక్తిని వివరించగలిగే వరకు missed.txt చదవండి.

లాగ్ పెద్దది అయితే ఈ పరీక్షను కాపీపై చేయండి, మరియు Access Server యొక్క ఏదైనా అప్‌గ్రేడ్ తర్వాత దాన్ని మళ్లీ నడపండి. లాగ్ ఫార్మాట్ మీరు సరిపోల్చే ఇంటర్‌ఫేస్, మరియు అది స్థిరమైన API కాదు.

jail లను ఉపరితలం ప్రకారం విభజించండి, డెమన్ ప్రకారం కాదు

ఒక Access Server అనేక ప్రామాణీకరణ ఉపరితలాలను అందిస్తుంది: 943/tcp పై క్లయింట్ మరియు అడ్మిన్ వెబ్ ఇంటర్‌ఫేస్‌లు, మరియు చాలా అమలుల్లో 1194/udp లేదా 443/tcp పై టన్నెల్. అన్నింటినీ కవర్ చేసే ఒకే jail టన్నెల్‌పై ఊహల ప్రయత్నాలను మీ అడ్మిన్ మార్గం కూడా అయిన చిరునామాను బ్లాక్ చేయనిస్తుంది, మరియు ఏ ఉపరితలం నిజంగా దాడిలో ఉందో దాచుతుంది. ప్రతి ఉపరితలానికి దాని సొంత పోర్ట్ మరియు పరిమితులతో వేరే jail ఇవ్వండి:

# /etc/fail2ban/jail.d/openvpnaccess.local
[openvpnas-web-client]
enabled  = true
port     = 943
protocol = tcp
filter   = openvpnaccess
logpath  = /var/log/openvpnas.log
maxretry = 3
findtime = 10m
bantime  = 1h
[openvpnas-tunnel]
enabled  = true
port     = 443
protocol = udp
filter   = openvpnaccess
logpath  = /var/log/openvpnas.log
maxretry = 5
findtime = 10m
bantime  = 1h

చిన్న కౌంటర్లు మరియు చిన్న బ్లాక్‌తో ప్రారంభించండి, ఒక వారం నిజమైన ట్రాఫిక్‌ను గమనించిన తర్వాత వాటిని పెంచండి. పంచుకున్న కార్యాలయ చిరునామాపై ఉదార పరిమితి ఒక NAT వెనుక ఉన్న ప్రతి వినియోగదారుని శిక్షిస్తుంది, మరియు టన్నెల్ ఉపరితలంపై దూకుడైన బ్లాక్ రాత్రిపూట గడువు ముగిసిన నిల్వ చేసిన ఆధారాలతో ఉన్న చట్టబద్ధ క్లయింట్లను డిస్‌కనెక్ట్ చేస్తుంది.

బ్లాక్, backend మరియు దుష్ప్రభావాలను తనిఖీ చేయండి

మళ్లీ ప్రారంభించిన తర్వాత, jail ఉనికిలో ఉందని మరియు లెక్కిస్తోందని నిర్ధారించే వేగవంతమైన మార్గం స్టేటస్ అవుట్‌పుట్:

fail2ban-client status
fail2ban-client status openvpnas-tunnel

తర్వాత బ్లాక్ మీరు నిజంగా నడిపే ఫైర్‌వాల్ వరకు చేరుతుందని నిర్ధారించండి, ఎందుకంటే ఎవరూ అమలు చేయని backend కోసం సెట్ చేసిన jail ఏమీ రక్షించదు. iptables చర్యతో చిరునామాలు jail పేరుతో ఉన్న గొలుసులో కనిపిస్తాయి (f2b-openvpnas-tunnel); nftables చర్యతో అవి fail2ban యొక్క సొంత పట్టికలోని సెట్‌లోకి వస్తాయి. ఊహించడం బదులు మీ హోస్ట్ ఉపయోగించేదాన్ని తనిఖీ చేయండి.

రెండు దుష్ప్రభావ తనిఖీలు బ్లాక్ కంటే ముఖ్యమైనవి. మొదట, real_ip క్లయింట్ చిరునామా అని మరియు లోడ్ బ్యాలెన్సర్ లేదా రివర్స్ ప్రాక్సీ కాదని నిర్ధారించండి; ప్రాక్సీ వెనుక ప్రతి బ్లాక్ ప్రాక్సీపై పడుతుంది మరియు మొత్తం సేవను తనతో పాటు కూలుస్తుంది. రెండవది, అన్‌బ్లాక్ విధానాన్ని రాసి ఉంచండి, ఎందుకంటే 02:00 కి పరిమితిని దాటే చిరునామా సాధారణంగా డ్యూటీలో ఉన్న ఇంజనీర్‌ది: fail2ban-client set openvpnas-tunnel unbanip 203.0.113.24.

ట్యూన్ చేసేటప్పుడు పరిమితిని గుర్తుంచుకోండి. Fail2ban ఒక ప్రామాణీకరణ ఉపరితలంపై వేగ పరిమితి, యాక్సెస్ నియంత్రణ పొర కాదు. ఇది MFA, ప్రతి ఖాతా పరిమితులు లేదా అడ్మిన్ ఇంటర్‌ఫేస్‌ను పబ్లిక్ ఇంటర్నెట్ నుండి దూరంగా ఉంచడానికి ప్రత్యామ్నాయం కాదు, మరియు Access Server కు దాని సొంత autoban సెట్టింగ్‌లు ఉన్నాయి, ఒకే పోర్ట్‌పై రెండు వేగ పరిమితులను పేర్చే ముందు వాటిని తనిఖీ చేయడం విలువైనది.

సంబంధిత వ్యాసాలు