ಒಂದು OpenVPN ಕ್ಲೈಂಟ್ ತೆಗೆದುಹಾಕುವುದು: kill, deny ಅಥವಾ ಪ್ರಮಾಣಪತ್ರ ರದ್ದು?
OpenVPN ನ ಮೂರು ಕ್ರಿಯೆಗಳು ಕ್ಲೈಂಟ್ ತೆಗೆದುಹಾಕುತ್ತವೆ, ಆದರೆ ಪ್ರತಿಯೊಂದೂ ಬೇರೆ ಯಾವುದನ್ನೋ ಮುಗಿಸುತ್ತದೆ: ಚಾಲ್ತಿ ಸೆಷನ್, ಒಂದು ಲಾಗಿನ್ ಪ್ರಯತ್ನ, ಅಥವಾ ಮತ್ತೆ ಸಂಪರ್ಕಿಸುವ ಹಕ್ಕು. ಗುರುತಿನ ಪ್ರಕಾರ ಆಯ್ಕೆಮಾಡಿ.
ನಿಮ್ಮ ಟಿಪ್ಪಣಿಯಲ್ಲಿ ಒಂದು common name ಮತ್ತು ಒಂದು ವಿಳಾಸವಿದೆ, ಮತ್ತು ಎಲ್ಲವೂ ಕ್ಲೈಂಟ್ ತೆಗೆದುಹಾಕುವಂತೆ ಕಾಣುವ ಮೂರು ಆದೇಶಗಳಿವೆ. ನೀವು ಬಯಸಿದ್ದನ್ನು ಒಂದೇ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಆಯ್ಕೆ ಈಗ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಸೆಷನ್ ಮುಗಿಸಬೇಕೋ, ಮುಂದಿನ ಲಾಗಿನ್ ನಿರಾಕರಿಸಬೇಕೋ, ಅಥವಾ ಸಂಪರ್ಕಿಸುವ ಹಕ್ಕನ್ನೇ ತೆಗೆದುಕೊಳ್ಳಬೇಕೋ ಎಂಬುದನ್ನು ಅವಲಂಬಿಸಿದೆ. ಏನನ್ನೂ ಮುಟ್ಟುವ ಮೊದಲು ನಿಮಗೆ ನಿಜವಾಗಿ ಇರುವ ಗುರುತನ್ನು ಓದಿ, ಏಕೆಂದರೆ OpenVPN ಕೊಳವು ನಂತರ ಅದೇ ಟನೆಲ್ ವಿಳಾಸವನ್ನು ಇನ್ನೊಂದು ಸೆಷನ್ಗೆ ಕೊಡುತ್ತದೆ.
ನಿಜವಾಗಿ ನಿಮ್ಮ ಬಳಿ ಯಾವ ಗುರುತು ಇದೆ
ಆವೃತ್ತಿ 3 ರ ಸ್ಥಿತಿ ಫೈಲ್ ಸಾಮಾನ್ಯ ಆರಂಭ. CLIENT_LIST ಭಾಗದಲ್ಲಿ common name, ನಿಜವಾದ ವಿಳಾಸ, ಬೈಟ್ ಕೌಂಟರ್ ಮತ್ತು ಸಂಪರ್ಕದ ಸಮಯ ಇರುತ್ತದೆ; ROUTING TABLE ಭಾಗ ವರ್ಚುವಲ್ ವಿಳಾಸವನ್ನು common name ಜೊತೆ ಕೊನೆಯ ಉಲ್ಲೇಖದ ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ನೊಂದಿಗೆ ಜೋಡಿಸುತ್ತದೆ. common name ಸ್ಥಿರ ಗುರುತು. ವರ್ಚುವಲ್ ವಿಳಾಸ ಒಂದು ಹಂಚಿಕೆ, ಮತ್ತು NAT ಹಿಂದಿನ ನಿಜವಾದ ವಿಳಾಸ ಸೆಷನ್ಗಳ ನಡುವೆ ಬದಲಾಗಬಹುದು, ಸರ್ವರ್ನಲ್ಲಿ ಏನೂ ಬದಲಾಗದೆ.
ನಿರ್ವಹಣಾ ಇಂಟರ್ಫೇಸ್ ತನ್ನ status ಆದೇಶದ ಮೂಲಕ ಅಂತಹ ದೃಶ್ಯವನ್ನು ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಸೆಷನ್ಗೆ ಕ್ಲೈಂಟ್ ID ಸೇರಿಸುತ್ತದೆ. client-kill ನಿಖರವಾಗಿ ಆ ID ಯನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ, ಮತ್ತು ಅದು ಟನೆಲ್ ವಿಳಾಸವಲ್ಲ. ಸಂಪರ್ಕದ ಸಮಯದಲ್ಲಿ ಯಾವ common name ಗೆ ಯಾವ ವಿಳಾಸ ಸಿಕ್ಕಿತು ಎಂದು ತಿಳಿಯಬೇಕಿದ್ದರೆ client-connect ಸ್ಕ್ರಿಪ್ಟ್ನ ಪರಿಸರದಲ್ಲಿ ಎರಡೂ ಜೊತೆಗೆ ವಿಶ್ವಾಸಾರ್ಹ ಬಾಹ್ಯ ವಿಳಾಸವೂ ಇರುತ್ತದೆ, ಆದರೆ ಆ ಸ್ಕ್ರಿಪ್ಟ್ OpenVPN ಬಳಕೆದಾರರಾಗಿ ಚಲಿಸುತ್ತದೆ ಮತ್ತು ಬರೆಯಬಹುದಾದ ಲಾಗ್ ಮಾರ್ಗ ಬೇಕು.
| What you hold | Where it came from | What it can act on |
|---|---|---|
| Common name | CLIENT_LIST, or the auth hook | kill, and credential revocation |
| Client ID | status on the management socket | client-kill, that one session |
| Tunnel address | ROUTING TABLE, client-connect environment | Nothing durable, the address is recycled |
ಈಗ ಕೊಲ್ಲು, ಲಾಗಿನ್ನಲ್ಲಿ ನಿರಾಕರಿಸು, ಶಾಶ್ವತವಾಗಿ ರದ್ದುಮಾಡು
ನಿರ್ವಹಣಾ ಇಂಟರ್ಫೇಸ್ ನಲ್ಲಿ ಎರಡೂ ತೆಗೆದುಹಾಕುವ ಆದೇಶಗಳು ಸೆಷನ್-ಕ್ರಿಯೆಗಳು. kill common name ಅಥವಾ ನಿಜವಾದ ವಿಳಾಸ ಮತ್ತು ಪೋರ್ಟ್ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ; client-kill ಕ್ಲೈಂಟ್ ID ತೆಗೆದುಕೊಂಡು ಆ ನಿದರ್ಶನವನ್ನು ತಕ್ಷಣ ಮುಗಿಸುತ್ತದೆ. ಎರಡೂ ತಡೆಯಲ್ಲ: ಮಾನ್ಯ ಪ್ರಮಾಣಪತ್ರ ಮತ್ತು ಗುಪ್ತಪದವಿರುವ ತೆಗೆದುಹಾಕಿದ ಕ್ಲೈಂಟ್ ಕೆಲವು ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮತ್ತೆ ಸಂಪರ್ಕಿಸುತ್ತದೆ, ಇದು ಪರೀಕ್ಷಾ peer ಮತ್ತೆ ಬಳಸುವಾಗ ಒಳ್ಳೆಯದು ಮತ್ತು ಲ್ಯಾಪ್ಟಾಪ್ ಕದ್ದಾಗ ನಿರುಪಯುಕ್ತ.
client-deny ಬೇರೆ ರೀತಿಯ ನಿರ್ಧಾರ. ಸಾಮಾನ್ಯವಾಗಿ ಇದು authentication ಅಥವಾ client-connect ಹುಕ್ನಿಂದ ಜಾರಿಯಾಗುತ್ತದೆ ಮತ್ತು ಕಾರಣದೊಂದಿಗೆ ಸೆಷನ್ ನಿರಾಕರಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಇದು ಲಾಗಿನ್ ನಿರಾಕರಿಸುವ ನೀತಿಗೆ ಹೊಂದುತ್ತದೆ, ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸುವ ನೀತಿಗಲ್ಲ. ದಾಖಲೆಗಳು ಸಹ ಎಚ್ಚರಿಸುತ್ತವೆ ಎಂದರೆ TLS ಮರುಚರ್ಚೆಯ ಸಮಯದಲ್ಲಿ ಜಾರಿಯಾದ ನಿರಾಕರಣೆ ಮರುನಿರ್ಧಾರಿತ ಕೀಲಿಯನ್ನು ಅಮಾನ್ಯಗೊಳಿಸುತ್ತದೆ, ಆದರೆ ಇರುವ ಸೆಷನ್ ಪರಿವರ್ತನಾ ಕಿಟಕಿ ಮುಚ್ಚುವವರೆಗೆ ಚಾಲ್ತಿಯಲ್ಲಿರಬಹುದು. ಕ್ಲೈಂಟ್ ಈಗಲೇ ಹೋಗಬೇಕು ಎಂಬುದೇ ಅಗತ್ಯವಾದರೆ, ದಾಖಲಿತ ಉತ್ತರ client-kill.
ಶಾಶ್ವತ ತೆಗೆದುಹಾಕುವಿಕೆ ಇವೆಲ್ಲದರ ಕೆಳಗಿದೆ. ಪ್ರಮಾಣಪತ್ರ ರದ್ದುಮಾಡಿ ಮತ್ತು crl-verify ಸರ್ವರ್ ನಿಜವಾಗಿ ಮರುಲೋಡ್ ಮಾಡುವ ಪಟ್ಟಿಗೆ ಸೂಚಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ, ccd ಡೈರೆಕ್ಟರಿಯಲ್ಲಿನ ಕ್ಲೈಂಟ್-ನಿರ್ದಿಷ್ಟ ಸಂರಚನಾ ಫೈಲ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ, ಅಥವಾ authentication ಹುಕ್ ಕೇಳುವ backendನಲ್ಲಿ ಖಾತೆ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ. ರದ್ದತಿಯೂ ತಕ್ಷಣವಲ್ಲ: ಡೀಫಾಲ್ಟ್ reneg-sec ಸೆಟ್ಟಿಂಗ್ಗಳೊಂದಿಗೆ ಸ್ಥಾಪಿತ ಸೆಷನ್ ಮರುಚರ್ಚೆಯವರೆಗೆ ಮುಂದುವರಿಯಬಹುದು, ಆದ್ದರಿಂದ ಸೆಷನ್-ಕ್ರಿಯೆ ಮತ್ತು ರುಜುವಾತು-ಕ್ರಿಯೆ ಪರಸ್ಪರ ಪೂರಕ, ಪರ್ಯಾಯವಲ್ಲ.
ನಿರ್ವಹಣಾ ಸಾಕೆಟ್ ಖಾಲಿಯಿದೆಯೇ?
ನಿರ್ವಹಣಾ ಇಂಟರ್ಫೇಸ್ ಒಂದು ಬಾರಿಗೆ ಒಂದು ಕ್ಲೈಂಟ್ಗೆ ಸೇವೆ ಸಲ್ಲಿಸುತ್ತದೆ. GUI ಅಥವಾ ಮೇಲ್ವಿಚಾರಣಾ ಡೀಮನ್ ಈಗಾಗಲೇ ಸಂಪರ್ಕವನ್ನು ಹಿಡಿದಿದ್ದರೆ, ನಿಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್ ಅದರ ಪಕ್ಕದಲ್ಲಿ ಸೇರಲಾರದು, ಮತ್ತು ಕ್ಲೈಂಟ್ ಪ್ರಕಾರ ನೀವು ಸ್ವಚ್ಛ ವೈಫಲ್ಯದ ಬದಲು ಇರುವುದನ್ನು ಹೊರದೂಡಬಹುದು. ಅದರ ಗುಪ್ತಪದ ಆ ಸಾಕೆಟ್ನಲ್ಲಿ ಸ್ಪಷ್ಟ ಪಠ್ಯವಾಗಿ ಚಲಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದರ ಸ್ಥಾನ ಸ್ಥಳೀಯ ವಿಳಾಸ ಅಥವಾ unix ಸಾಕೆಟ್, ಎಂದಿಗೂ ಸಾರ್ವಜನಿಕ ಇಂಟರ್ಫೇಸ್ ಅಲ್ಲ.
ಸಾಕೆಟ್ ತೆಗೆದುಕೊಳ್ಳಲಾಗದಿದ್ದಾಗ, ಇನ್ನೂ ಆಯ್ಕೆಗಳಿವೆ, ಮತ್ತು ಎಲ್ಲವೂ ನಿಧಾನ. ನಿಯಂತ್ರಣ ಇದ್ದರೆ ಮೊದಲು GUI ಸೆಷನ್ ಬಿಡಿ, ಅಥವಾ ರುಜುವಾತು ಪದರದ ಮಾರ್ಗ ಒಪ್ಪಿ ಮುಂದಿನ ಮರುಚರ್ಚೆಗೆ ಕಾಯಿರಿ. ಮಾಡಬಾರದ್ದು ಎಂದರೆ ಒಂದು ಕ್ಲೈಂಟ್ ತೆಗೆದುಹಾಕಲು ಸೇವೆಯನ್ನು ಮರುಪ್ರಾರಂಭಿಸುವುದು, ಏಕೆಂದರೆ ಅದು ಉಳಿದ ಎಲ್ಲಾ ಸೆಷನ್ಗಳನ್ನೂ ಮುಗಿಸುತ್ತದೆ ಮತ್ತು ಈ ಸೆಷನ್ನ ಸ್ಥಿತಿ ಫೈಲ್ನ ಸಾಕ್ಷ್ಯವನ್ನು ನಾಶಮಾಡುತ್ತದೆ.
ಲೈವ್ ಸರ್ವರ್ನಲ್ಲಿ ನಾನು ಚಲಾಯಿಸುವ ಕ್ರಮ
ಸಂಪರ್ಕಿಸಿ, ಪ್ರಸ್ತುತ ಸ್ಥಿತಿ ಓದಿ, ಈಗ ಓದಿದ ID ಮೇಲೆ ಕ್ರಿಯೆ ಮಾಡಿ, ನಂತರ ಅದನ್ನು ಮತ್ತೆ ಓದಿ. ದಾಖಲೆಯಿಂದ ನಕಲಿಸಿದ ಮೌಲ್ಯಗಳು ತಪ್ಪು ವ್ಯಕ್ತಿಯನ್ನು ಕೊಲ್ಲುವ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಮಾರ್ಗ.
status # note the client ID and common name
client-kill 3 # end that session now
kill Test-Client # alternative: by common name
status # confirm the session is goneಮೇಲಿನ ಹೆಸರು ಮತ್ತು ಸಂಖ್ಯೆ ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ಗಳು, ಮತ್ತು ID ಗಳು ಇತರ ಕ್ಲೈಂಟ್ ಸಂಪರ್ಕ ಕಡಿತಗೊಂಡ ನಂತರ ಮತ್ತೆ ಬಳಸಲ್ಪಡುತ್ತವೆ. ಏನನ್ನಾದರೂ ಪೂರ್ಣ ಎಂದು ಬರೆಯುವ ಮೊದಲು ಸಾಲು ಇಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿ, ಮತ್ತು ಸಂಪರ್ಕಿತ ಕ್ಲೈಂಟ್ಗಳ ಸಂಖ್ಯೆ ಒಂದರಿಂದ ಬದಲಾಗಿದೆಯೇ ಹಲವರಿಂದ ಅಲ್ಲವೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.
ಅದು ಹೊರಗೆಯೇ ಉಳಿಯಿತು ಎಂದು ಖಚಿತಪಡಿಸಿ
common name, ಟನೆಲ್ ವಿಳಾಸ, ಬಾಹ್ಯ ವಿಳಾಸ ಮತ್ತು ತೆಗೆದುಹಾಕಿದ ನಿಮಿಷ ದಾಖಲಿಸಿ. ಅದೇ common name ಒಂದು ನಿಮಿಷದ ನಂತರ ಮತ್ತೆ ಕಾಣಿಸಿದರೆ, ಸೆಷನ್-ಕ್ರಿಯೆ ಕೆಲಸ ಮಾಡಿತು ಮತ್ತು ರುಜುವಾತು ಪದರ ಮಾಡಲಿಲ್ಲ, ಇದು ಎಂದಿಗೂ ಜಾರಿಗೆ ಬಾರದ ಆದೇಶದ ದುರಸ್ತಿಗಿಂತ ಸಂಪೂರ್ಣ ಭಿನ್ನ.
ನಂತರ ಕ್ಲೈಂಟ್ ಕಡೆಯಿಂದ ಪರೀಕ್ಷಿಸಿ. ರದ್ದಾದ ಪ್ರಮಾಣಪತ್ರ ಮುಂದಿನ ಹ್ಯಾಂಡ್ಶೇಕ್ನಲ್ಲಿ ವಿಫಲವಾಗಬೇಕು; ಅದು ಇನ್ನೂ ಸಂಪರ್ಕಿಸಿದರೆ, CRL ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಓದಲ್ಪಡುತ್ತಿಲ್ಲ, ಮತ್ತು ಅದೇ ವರದಿ ಮಾಡಲು ಯೋಗ್ಯವಾದ ಶೋಧ. ಏನನ್ನು ಮುಗಿಸಬೇಕು ಎಂಬುದರ ಆಧಾರದ ಮೇಲೆ ಕ್ರಿಯೆ ಆಯ್ಕೆಮಾಡಿ, ಎರಡನೇ status ನೊಂದಿಗೆ ಖಚಿತಪಡಿಸಿ, ಮತ್ತು ಉತ್ತರ ಸೆಷನ್ಗಿಂತ ಹೆಚ್ಚು ಕಾಲ ಉಳಿಯಬೇಕಾದಾಗ ರುಜುವಾತು ಪದರ ಸರಿಪಡಿಸಿ.