ನೀವು ಸಮುದಾಯ ಪೋಸ್ಟ್‌ನಿಂದ ಒಂದು 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 ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಹೊಂದಿದೆ, ಅವನ್ನು ಒಂದೇ ಪೋರ್ಟ್‌ನಲ್ಲಿ ಎರಡು ದರ ಮಿತಿಗಳನ್ನು ಜೋಡಿಸುವ ಮೊದಲು ಪರಿಶೀಲಿಸುವುದು ಯೋಗ್ಯ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು