TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಪರಿಚಯ

ಮೊದಲ ಭಾಗದಲ್ಲಿ ಲೇಖನಗಳು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ SNI (eSNI) ಕಾರ್ಯವಿಧಾನದ ಸಂಕ್ಷಿಪ್ತ ವಿವರಣೆಯನ್ನು ನಾವು ನೀಡಿದ್ದೇವೆ. ಅದರ ಆಧಾರದ ಮೇಲೆ, ಆಧುನಿಕ ಡಿಪಿಐ ಸಿಸ್ಟಮ್‌ಗಳಿಂದ (ಬೀಲೈನ್ ಡಿಪಿಐ ಮತ್ತು ನಿಷೇಧಿತ ಆರ್‌ಕೆಎನ್ ರೂಟ್ ಟ್ರ್ಯಾಕರ್‌ನ ಉದಾಹರಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು) ಪತ್ತೆಹಚ್ಚುವಿಕೆಯಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳುವುದು ಹೇಗೆ ಎಂದು ಅವರು ತೋರಿಸಿದರು ಮತ್ತು ಈ ಕಾರ್ಯವಿಧಾನದ ಆಧಾರದ ಮೇಲೆ ಡೊಮೇನ್ ಮುಂಭಾಗದ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಅನ್ವೇಷಿಸಿದರು.

ಲೇಖನದ ಎರಡನೇ ಭಾಗದಲ್ಲಿ, RedTeam ತಜ್ಞರಿಗೆ ಅವರ ಕಷ್ಟಕರ ಕೆಲಸದಲ್ಲಿ ಉಪಯುಕ್ತವಾದ ಹೆಚ್ಚು ಪ್ರಾಯೋಗಿಕ ವಿಷಯಗಳಿಗೆ ನಾವು ಹೋಗುತ್ತೇವೆ. ಕೊನೆಯಲ್ಲಿ, ನಿರ್ಬಂಧಿಸಲಾದ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಪಡೆಯುವುದು ನಮ್ಮ ಗುರಿಯಲ್ಲ (ಅಂತಹ ಕ್ಷುಲ್ಲಕ ವಿಷಯಗಳಿಗಾಗಿ ನಾವು ಉತ್ತಮ ಹಳೆಯ VPN ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ). ಅದೃಷ್ಟವಶಾತ್, ಪ್ರತಿ ರುಚಿ, ಬಣ್ಣ ಮತ್ತು ಬಜೆಟ್‌ಗೆ ಅವರು ಹೇಳಿದಂತೆ ವಿವಿಧ ರೀತಿಯ VPN ಪೂರೈಕೆದಾರರು ಇದ್ದಾರೆ.

ನಾವು ಆಧುನಿಕ RedTeam ಉಪಕರಣಗಳಿಗೆ ಡೊಮೇನ್-ಮುಂಭಾಗದ ಕಾರ್ಯವಿಧಾನವನ್ನು ಅನ್ವಯಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ, ಉದಾಹರಣೆಗೆ, ಕೋಬಾಲ್ಟ್ ಸ್ಟ್ರೈಕ್, ಎಂಪೈರ್, ಇತ್ಯಾದಿ. ಮತ್ತು ಆಧುನಿಕ ವಿಷಯ ಫಿಲ್ಟರಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು ಅನುಕರಿಸಲು ಮತ್ತು ತಪ್ಪಿಸಿಕೊಳ್ಳಲು ಅವರಿಗೆ ಹೆಚ್ಚುವರಿ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ನೀಡುತ್ತೇವೆ.

ಕಳೆದ ಬಾರಿ ನಾವು eSNI ಕಾರ್ಯವಿಧಾನವನ್ನು OpenSSL ಲೈಬ್ರರಿಗೆ ಅಳವಡಿಸಿದ್ದೇವೆ ಮತ್ತು ಅದನ್ನು ಪರಿಚಿತ ಕರ್ಲ್ ಉಪಯುಕ್ತತೆಯಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಿ ಬಳಸಿದ್ದೇವೆ. ಆದರೆ, ಅವರು ಹೇಳಿದಂತೆ, ನೀವು ಕೇವಲ ಒಂದು ಕೋಳಿಯಿಂದ ತೃಪ್ತರಾಗುವುದಿಲ್ಲ. ಸಹಜವಾಗಿ, ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಗಳಲ್ಲಿ ಇದೇ ರೀತಿಯದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನಾನು ಬಯಸುತ್ತೇನೆ. ಆದರೆ, ದುರದೃಷ್ಟವಶಾತ್, ಇಂಟರ್ನೆಟ್‌ನಾದ್ಯಂತ ತ್ವರಿತ ಹುಡುಕಾಟವು ನಮ್ಮನ್ನು ನಿರಾಶೆಗೊಳಿಸುತ್ತದೆ, ಏಕೆಂದರೆ eSNI ಕಾರ್ಯವಿಧಾನಕ್ಕೆ ಬೆಂಬಲವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ GOLANG ನಲ್ಲಿ ಮಾತ್ರ ಅಳವಡಿಸಲಾಗಿದೆ. ಹೀಗಾಗಿ, ನಮಗೆ ಹೆಚ್ಚಿನ ಆಯ್ಕೆ ಇಲ್ಲ: ಒಂದೋ ನಾವು ಪ್ಯಾಚ್ ಮಾಡಿದ OpenSSL ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಶುದ್ಧ C ಅಥವಾ C++ ನಲ್ಲಿ ಬರೆಯುತ್ತೇವೆ ಅಥವಾ CloudFlare ನಿಂದ ಪ್ರತ್ಯೇಕ GOLANG ಫೋರ್ಕ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ ಮತ್ತು ಅಲ್ಲಿ ನಮ್ಮ ಸಾಧನಗಳನ್ನು ಪೋರ್ಟ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ. ತಾತ್ವಿಕವಾಗಿ, ಮತ್ತೊಂದು ಆಯ್ಕೆ ಇದೆ, ಹೆಚ್ಚು ಕ್ಲಾಸಿಕ್, ಆದರೆ ಅದೇ ಸಮಯದಲ್ಲಿ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ - ಪೈಥಾನ್ಗಾಗಿ eSNI ಬೆಂಬಲವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು. ಎಲ್ಲಾ ನಂತರ, https ಅನ್ನು ನಿರ್ವಹಿಸಲು ಪೈಥಾನ್ OpenSSL ಅನ್ನು ಸಹ ಬಳಸುತ್ತದೆ. ಆದರೆ ನಾವು ಈ ಆಯ್ಕೆಯನ್ನು ಬೇರೊಬ್ಬರ ಅಭಿವೃದ್ಧಿಗೆ ಬಿಡುತ್ತೇವೆ ಮತ್ತು ಗೋಲಾಂಗ್‌ನಲ್ಲಿನ ಅನುಷ್ಠಾನದಲ್ಲಿ ನಾವೇ ತೃಪ್ತರಾಗುತ್ತೇವೆ, ವಿಶೇಷವಾಗಿ ನಮ್ಮ ಪ್ರೀತಿಯ ಕೋಬಾಲ್ಟ್ ಸ್ಟ್ರೈಕ್ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಪರಿಕರಗಳಿಂದ (ಬಾಹ್ಯ C2 ಚಾನಲ್) ನಿರ್ಮಿಸಲಾದ ಸಂವಹನ ಚಾನಲ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಸಂಪೂರ್ಣವಾಗಿ ಸಮರ್ಥವಾಗಿದೆ. - ನಾವು ಲೇಖನದ ಕೊನೆಯಲ್ಲಿ ಈ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇವೆ.

ಹೆಚ್ಚು ಪ್ರಯತ್ನಿಸಿ...

ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಪಿವೋಟ್ ಮಾಡಲು ನಮ್ಮ ಅಭಿವೃದ್ಧಿಯು ಗೋದಲ್ಲಿ ಅಳವಡಿಸಲಾದ ಸಾಧನಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ - ಸುರಂಗ rsockstunಜಾಗತಿಕ ಸ್ಥಿರತೆಯನ್ನು ಅಡ್ಡಿಪಡಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿರುವ ಅತ್ಯಂತ ದುರುದ್ದೇಶಪೂರಿತ ಸಾಫ್ಟ್‌ವೇರ್ ಎಂದು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಮತ್ತು ಸಿಮ್ಯಾಂಟೆಕ್‌ನ ಪರಿಕರಗಳ ಮೂಲಕ ಇದೀಗ ಪತ್ತೆಹಚ್ಚಲಾಗಿದೆ.

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಈ ಸಂದರ್ಭದಲ್ಲಿಯೂ ಹಿಂದಿನ ಬೆಳವಣಿಗೆಯನ್ನು ಬಳಸುವುದು ಉತ್ತಮ. ಆದರೆ ಇಲ್ಲಿ ಒಂದು ಸಣ್ಣ ಸಮಸ್ಯೆ ಉದ್ಭವಿಸುತ್ತದೆ. ವಾಸ್ತವವಾಗಿ, ಆರಂಭದಲ್ಲಿ rsockstun ಸರ್ವರ್‌ನೊಂದಿಗೆ ಸಿಂಕ್ರೊನಸ್ SSL ಸಂವಹನ ಚಾನಲ್‌ನ ಬಳಕೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಇದರರ್ಥ ಸಂಪರ್ಕವನ್ನು ಒಮ್ಮೆ ಸ್ಥಾಪಿಸಲಾಗಿದೆ ಮತ್ತು ಸುರಂಗದ ಕಾರ್ಯಾಚರಣೆಯ ಸಂಪೂರ್ಣ ಅವಧಿಗೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. ಮತ್ತು, ನೀವು ಅರ್ಥಮಾಡಿಕೊಂಡಂತೆ, https ಪ್ರೋಟೋಕಾಲ್ ಈ ಕಾರ್ಯಾಚರಣೆಯ ಕ್ರಮಕ್ಕಾಗಿ ಉದ್ದೇಶಿಸಿಲ್ಲ - ಇದು ವಿನಂತಿ-ಪ್ರತಿಕ್ರಿಯೆ ಮೋಡ್‌ನಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಅಲ್ಲಿ ಪ್ರತಿ ಹೊಸ http ವಿನಂತಿಯು ಹೊಸ tcp ಸಂಪರ್ಕದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.

ಈ ಯೋಜನೆಯ ಮುಖ್ಯ ಅನನುಕೂಲವೆಂದರೆ ಕ್ಲೈಂಟ್ ಹೊಸ http ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುವವರೆಗೆ ಸರ್ವರ್ ಕ್ಲೈಂಟ್‌ಗೆ ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಆದರೆ, ಅದೃಷ್ಟವಶಾತ್, ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಹಲವು ಆಯ್ಕೆಗಳಿವೆ - http ಪ್ರೋಟೋಕಾಲ್ ಮೂಲಕ ಡೇಟಾವನ್ನು ಸ್ಟ್ರೀಮಿಂಗ್ ಮಾಡುವುದು (ಎಲ್ಲಾ ನಂತರ, ನಾವು ಹೇಗಾದರೂ ನಮ್ಮ ನೆಚ್ಚಿನ ಟಿವಿ ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಮತ್ತು https ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಪೋರ್ಟಲ್‌ಗಳಿಂದ ಸಂಗೀತವನ್ನು ಕೇಳಲು ನಿರ್ವಹಿಸುತ್ತೇವೆ, ಆದರೆ ವೀಡಿಯೊ ಮತ್ತು ಆಡಿಯೊವನ್ನು ರವಾನಿಸುವುದು ಬೇರೇನೂ ಅಲ್ಲ ಸ್ಟ್ರೀಮಿಂಗ್ ಡೇಟಾಕ್ಕಿಂತ). HTTP ಪ್ರೋಟೋಕಾಲ್ ಮೂಲಕ ಪೂರ್ಣ ಪ್ರಮಾಣದ TCP ಸಂಪರ್ಕದ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಅನುಕರಿಸುವ ತಂತ್ರಜ್ಞಾನಗಳಲ್ಲಿ ಒಂದಾದ WebSockets ತಂತ್ರಜ್ಞಾನವಾಗಿದೆ, ಕ್ಲೈಂಟ್ ಮತ್ತು ವೆಬ್ ಸರ್ವರ್ ನಡುವೆ ಪೂರ್ಣ ಪ್ರಮಾಣದ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಸಂಘಟಿಸುವುದು ಇದರ ಮುಖ್ಯ ಮೂಲತತ್ವವಾಗಿದೆ.

ಅದೃಷ್ಟವಶಾತ್ ನಮಗೆ (ಹುರ್ರೇ!!!), ಈ ತಂತ್ರಜ್ಞಾನವನ್ನು ಎಲ್ಲಾ ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ ಸುಂಕದ ಯೋಜನೆಗಳಲ್ಲಿ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸೇರಿಸಲಾಗಿದೆ ಮತ್ತು eSNI ಸಂಯೋಜನೆಯಲ್ಲಿ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಡೊಮೇನ್-ಮುಂಭಾಗವನ್ನು ಬಳಸಲು ಮತ್ತು ಆಧುನಿಕ DPI ಗಳಿಂದ ಮರೆಮಾಡಲು ನಮ್ಮ ಸುರಂಗಮಾರ್ಗವನ್ನು ಕಲಿಸಲು ನಾವು ಇದನ್ನು ನಿಖರವಾಗಿ ಬಳಸುತ್ತೇವೆ.

WebSockets ಬಗ್ಗೆ ಸ್ವಲ್ಪ

ಮೊದಲನೆಯದಾಗಿ, ನಾವು ವೆಬ್‌ಸಾಕೆಟ್‌ಗಳ ಬಗ್ಗೆ ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಮತ್ತು ಸರಳ ಪದಗಳಲ್ಲಿ ಮಾತನಾಡುತ್ತೇವೆ ಇದರಿಂದ ನಾವು ಏನು ಕೆಲಸ ಮಾಡುತ್ತೇವೆ ಎಂಬ ಕಲ್ಪನೆ ಎಲ್ಲರಿಗೂ ಇರುತ್ತದೆ.

ವೆಬ್‌ಸಾಕೆಟ್ ತಂತ್ರಜ್ಞಾನವು ಸ್ಥಾಪಿತ TCP ಸಂಪರ್ಕವನ್ನು ಮುರಿಯದೆಯೇ http ಸಂಪರ್ಕದಿಂದ ಪ್ರಮಾಣಿತ ನೆಟ್‌ವರ್ಕ್ ಸಾಕೆಟ್ ಸ್ಟ್ರೀಮಿಂಗ್‌ಗೆ ತಾತ್ಕಾಲಿಕವಾಗಿ ಬದಲಾಯಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಕ್ಲೈಂಟ್ ವೆಬ್‌ಸಾಕೆಟ್‌ಗೆ ಬದಲಾಯಿಸಲು ಬಯಸಿದಾಗ, ಅದು ತನ್ನ http ವಿನಂತಿಯಲ್ಲಿ ಹಲವಾರು http ಹೆಡರ್‌ಗಳನ್ನು ಹೊಂದಿಸುತ್ತದೆ. ಅಗತ್ಯವಿರುವ ಎರಡು ಹೆಡರ್ - ಸಂಪರ್ಕ: ನವೀಕರಿಸಿ и ಅಪ್‌ಗ್ರೇಡ್: ವೆಬ್‌ಸಾಕೆಟ್. ಅವನು ವೆಬ್‌ಸಾಕೆಟ್ ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿಯನ್ನು ಬಲವಂತವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು (ಸೆಕೆಂಡ್-ವೆಬ್ಸಾಕ್ಸೆಟ್-ಆವೃತ್ತಿ: 13) ಮತ್ತು ಬೇಸ್ 64 ವೆಬ್‌ಸಾಕೆಟ್ ಐಡೆಂಟಿಫೈಯರ್ (ಸೆಕೆಂಡ್-ವೆಬ್ಸಾಕೆಟ್-ಕೀ: DAGDJSiREI3+KjDfwxm1FA==) ಸರ್ವರ್ ಅವರಿಗೆ http ಕೋಡ್ 101 ಸ್ವಿಚಿಂಗ್ ಪ್ರೋಟೋಕಾಲ್‌ಗಳೊಂದಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ ಮತ್ತು ಹೆಡರ್‌ಗಳನ್ನು ಸಹ ಹೊಂದಿಸುತ್ತದೆ ಸಂಪರ್ಕ, ಅಪ್ಗ್ರೇಡ್ и ಸೆಕೆಂಡ್-ವೆಬ್ಸಾಕೆಟ್-ಸ್ವೀಕರಿಸಿ. ಸ್ವಿಚಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕೆಳಗಿನ ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ನಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿ ಪ್ರದರ್ಶಿಸಲಾಗಿದೆ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಇದರ ನಂತರ, ವೆಬ್‌ಸಾಕೆಟ್ ಸಂಪರ್ಕದ ಸ್ಥಾಪನೆಯು ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಪರಿಗಣಿಸಬಹುದು. ಕ್ಲೈಂಟ್ ಮತ್ತು ಸರ್ವರ್ ಎರಡರಿಂದಲೂ ಯಾವುದೇ ಡೇಟಾವನ್ನು ಈಗ http ಜೊತೆಗೆ ಒದಗಿಸಲಾಗುವುದಿಲ್ಲ, ಆದರೆ WebSocket ಹೆಡರ್‌ಗಳೊಂದಿಗೆ (ಅವು ಬೈಟ್ 0x82 ನೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತವೆ). ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸಲು ಕ್ಲೈಂಟ್‌ನಿಂದ ವಿನಂತಿಗಾಗಿ ಈಗ ಸರ್ವರ್ ಕಾಯಬೇಕಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ಟಿಸಿಪಿ ಸಂಪರ್ಕವು ಮುರಿದುಹೋಗಿಲ್ಲ.

ವೆಬ್‌ಸಾಕೆಟ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಗೋಲಾಂಗ್ ಹಲವಾರು ಗ್ರಂಥಾಲಯಗಳನ್ನು ಹೊಂದಿದೆ. ಅವುಗಳಲ್ಲಿ ಅತ್ಯಂತ ಜನಪ್ರಿಯವಾಗಿವೆ ಗೊರಿಲ್ಲಾ ವೆಬ್‌ಸಾಕೆಟ್ ಮತ್ತು ಪ್ರಮಾಣಿತ ವೆಬ್‌ಸಾಕೆಟ್. ನಾವು ಎರಡನೆಯದನ್ನು ಬಳಸುತ್ತೇವೆ, ಏಕೆಂದರೆ ... ಇದು ಸರಳವಾಗಿದೆ, ಚಿಕ್ಕದಾಗಿದೆ ಮತ್ತು ಅವರು ಹೇಳಿದಂತೆ ಸ್ವಲ್ಪ ವೇಗವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.

rsockstun ಕ್ಲೈಂಟ್ ಕೋಡ್‌ನಲ್ಲಿ, ನಾವು net.dial ಅಥವಾ tls.dial ಕರೆಗಳನ್ನು ಅನುಗುಣವಾದ WebSocket ಕರೆಗಳೊಂದಿಗೆ ಬದಲಾಯಿಸಬೇಕಾಗಿದೆ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ನಮ್ಮ ಸುರಂಗದ ಕ್ಲೈಂಟ್ ಅನ್ನು ಸಾರ್ವತ್ರಿಕವಾಗಿ ಮಾಡಲು ನಾವು ಬಯಸುತ್ತೇವೆ ಮತ್ತು ನೇರ SSL ಸಂಪರ್ಕದ ಮೂಲಕ ಮತ್ತು WebSockset ಪ್ರೋಟೋಕಾಲ್ ಮೂಲಕ ಕೆಲಸ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಇದಕ್ಕಾಗಿ ನಾವು ಪ್ರತ್ಯೇಕ ಕಾರ್ಯವನ್ನು ರಚಿಸುತ್ತೇವೆ func connectForWsSocks(ವಿಳಾಸ ಸ್ಟ್ರಿಂಗ್, ಪ್ರಾಕ್ಸಿ ಸ್ಟ್ರಿಂಗ್) ದೋಷ {…} ಸಾದೃಶ್ಯದ ಮೂಲಕ connectForSocks() ಮತ್ತು ಕ್ಲೈಂಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವಾಗ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸರ್ವರ್ ವಿಳಾಸವು ws: ಅಥವಾ wss: (ಸುರಕ್ಷಿತ ವೆಬ್‌ಸಾಕೆಟ್‌ನ ಸಂದರ್ಭದಲ್ಲಿ) ಪ್ರಾರಂಭವಾದರೆ ವೆಬ್ ಸಾಕೆಟ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನಾವು ಅದನ್ನು ಬಳಸುತ್ತೇವೆ.

ಸುರಂಗದ ಸರ್ವರ್ ಭಾಗಕ್ಕಾಗಿ, ವೆಬ್ ಸಾಕೆಟ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನಾವು ಪ್ರತ್ಯೇಕ ಕಾರ್ಯವನ್ನು ಸಹ ಮಾಡುತ್ತೇವೆ. ಇದು http ವರ್ಗದ ನಿದರ್ಶನವನ್ನು ರಚಿಸುತ್ತದೆ ಮತ್ತು http ಸಂಪರ್ಕ ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಹೊಂದಿಸುತ್ತದೆ (wsHandler ಕಾರ್ಯ):

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಮತ್ತು WebSocket ಕನೆಕ್ಷನ್ ಹ್ಯಾಂಡ್ಲರ್‌ನಲ್ಲಿ ನಾವು ಎಲ್ಲಾ ಸಂಪರ್ಕ ಪ್ರಕ್ರಿಯೆಯ ತರ್ಕವನ್ನು (ಪಾಸ್‌ವರ್ಡ್ ಬಳಸಿ ಕ್ಲೈಂಟ್ ದೃಢೀಕರಣ, yamux ಸೆಶನ್ ಅನ್ನು ಹೊಂದಿಸುವುದು ಮತ್ತು ಕೊನೆಗೊಳಿಸುವುದು) ಇರಿಸುತ್ತೇವೆ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ನಾವು ಯೋಜನೆಯನ್ನು ಕಂಪೈಲ್ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ಸರ್ವರ್ ಭಾಗವನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ:

./rsockstun –listen ws:127.0.0.1:8080 –pass P@ssw0rd

ತದನಂತರ ಕ್ಲೈಂಟ್ ಭಾಗ:

./rsockstun -connect ws:127.0.0.1:8080 –pass P@ssw0rd

ಮತ್ತು ನಾವು ಸ್ಥಳೀಯ ಹೋಸ್ಟ್‌ನಲ್ಲಿ ಕೆಲಸವನ್ನು ಪರಿಶೀಲಿಸುತ್ತೇವೆ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಡೊಮೇನ್ ಮುಂಭಾಗಕ್ಕೆ ಹೋಗೋಣ

ನಾವು ವೆಬ್‌ಸಾಕೆಟ್‌ಗಳನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ ಎಂದು ತೋರುತ್ತದೆ. ಈಗ ನಾವು ನೇರವಾಗಿ eSNI ಮತ್ತು ಡೊಮೇನ್ ಮುಂಭಾಗಕ್ಕೆ ಹೋಗೋಣ. ಮೊದಲೇ ಹೇಳಿದಂತೆ, DoH ಮತ್ತು eSNI ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನಾವು ಕಂಪನಿಯಿಂದ ವಿಶೇಷ ಗೋಲಾಂಗ್ ಶಾಖೆಯನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕಾಗಿದೆ ಕ್ಲೌಡ್ಫಲೇರ್. ನಮಗೆ eSNI ಬೆಂಬಲದೊಂದಿಗೆ ಶಾಖೆಯ ಅಗತ್ಯವಿದೆ (pwu/esni).

ನಾವು ಅದನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಕ್ಲೋನ್ ಮಾಡುತ್ತೇವೆ ಅಥವಾ ಅನುಗುಣವಾದ ಜಿಪ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ ಮತ್ತು ಕುಗ್ಗಿಸಬೇಡಿ:

git clone -b pwu/esni https://github.com/cloudflare/tls-tris.git

ನಂತರ ನಾವು GOROOT ಡೈರೆಕ್ಟರಿಯನ್ನು ನಕಲಿಸಬೇಕು, ಕ್ಲೋನ್ ಮಾಡಿದ ಶಾಖೆಯಿಂದ ಅನುಗುಣವಾದ ಫೈಲ್ಗಳನ್ನು ಬದಲಾಯಿಸಿ ಮತ್ತು ಅದನ್ನು ಮಾಸ್ಟರ್ ಆಗಿ ಹೊಂದಿಸಿ. ಈ ತಲೆನೋವಿನಿಂದ ಡೆವಲಪರ್ ಅನ್ನು ಉಳಿಸಲು, ಕ್ಲೌಡ್‌ಫ್ಲೇರ್‌ನ ವ್ಯಕ್ತಿಗಳು ವಿಶೇಷ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸಿದ್ಧಪಡಿಸಿದ್ದಾರೆ - _dev/go.sh. ನಾವು ಅದನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ. ಮೇಕ್‌ಫೈಲ್‌ನೊಂದಿಗೆ ಸ್ಕ್ರಿಪ್ಟ್ ಎಲ್ಲವನ್ನೂ ಸ್ವತಃ ಮಾಡುತ್ತದೆ. ಕೇವಲ ವಿನೋದಕ್ಕಾಗಿ, ವಿವರಗಳಿಗಾಗಿ ನೀವು ಮೇಕ್‌ಫೈಲ್‌ನಲ್ಲಿ ನೋಡಬಹುದು.

ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಚಲಾಯಿಸಿದ ನಂತರ, ಯೋಜನೆಯನ್ನು ಕಂಪೈಲ್ ಮಾಡುವಾಗ, ಸ್ಕ್ರಿಪ್ಟ್ ಸಿದ್ಧಪಡಿಸಿದ ಸ್ಥಳೀಯ ಡೈರೆಕ್ಟರಿಯನ್ನು ನಾವು GOROOT ಎಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕಾಗುತ್ತದೆ. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" go build ….

ಮುಂದೆ, ಅಪೇಕ್ಷಿತ ಡೊಮೇನ್‌ಗಾಗಿ ಸಾರ್ವಜನಿಕ eSNI ಕೀಗಳನ್ನು ವಿನಂತಿಸುವ ಮತ್ತು ಪಾರ್ಸಿಂಗ್ ಮಾಡುವ ಕಾರ್ಯವನ್ನು ನಾವು ಸುರಂಗದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾಗಿದೆ. ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ಇವು ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ ಫ್ರಂಟ್‌ಎಂಡ್ ಸರ್ವರ್‌ಗಳಿಂದ ಸಾರ್ವಜನಿಕ eSNI ಕೀಗಳಾಗಿವೆ. ಇದನ್ನು ಮಾಡಲು, ನಾವು ಮೂರು ಕಾರ್ಯಗಳನ್ನು ರಚಿಸುತ್ತೇವೆ:

func makeDoTQuery(dnsName string) ([]byte, error)
func parseTXTResponse(buf []byte, wantName string) (string, error)
func QueryESNIKeysForHost(hostname string) ([]byte, error)

ಕಾರ್ಯಗಳ ಹೆಸರುಗಳು, ತಾತ್ವಿಕವಾಗಿ, ತಮಗಾಗಿ ಮಾತನಾಡುತ್ತವೆ. tls-tris ನ ಭಾಗವಾಗಿರುವ esni_query.go ಫೈಲ್‌ನಿಂದ ನಾವು ವಿಷಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ. ಮೊದಲ ಕಾರ್ಯವು DoH (DNS-over-HTTPS) ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ DNS ಸರ್ವರ್‌ಗೆ ವಿನಂತಿಯೊಂದಿಗೆ ನೆಟ್‌ವರ್ಕ್ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಎರಡನೆಯದು ಪ್ರಶ್ನೆ ಫಲಿತಾಂಶಗಳನ್ನು ಪಾರ್ಸ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಡೊಮೇನ್‌ನ ಸಾರ್ವಜನಿಕ ಕೀಗಳ ಮೌಲ್ಯಗಳನ್ನು ಪಡೆಯುತ್ತದೆ, ಮತ್ತು ಮೂರನೆಯದು a ಮೊದಲ ಎರಡು ಧಾರಕ.

ಮುಂದೆ, ನಮ್ಮ ಹೊಸದಾಗಿ ರಚಿಸಲಾದ ಕಾರ್ಯಕ್ಕೆ ನಾವು ವೆಬ್ ಸಾಕೆಟ್ ಸಂಪರ್ಕವನ್ನು ಸೇರಿಸುತ್ತೇವೆ ಸಂಪರ್ಕForWsSocks ಡೊಮೇನ್‌ಗಾಗಿ eSNI ಕೀಗಳನ್ನು ವಿನಂತಿಸಲು ಕ್ರಿಯಾತ್ಮಕತೆ. ಸರ್ವರ್ ಭಾಗವು ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಸ್ಥಳದಲ್ಲಿ, ನಾವು TLS ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿಸುತ್ತೇವೆ ಮತ್ತು ನಕಲಿ "ಕವರ್ ಡೊಮೇನ್" ಹೆಸರನ್ನು ಸಹ ಹೊಂದಿಸುತ್ತೇವೆ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಆರಂಭದಲ್ಲಿ, tls-tris ಶಾಖೆಯನ್ನು ಡೊಮೇನ್ ಮುಂಭಾಗದ ಬಳಕೆಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿಲ್ಲ ಎಂದು ಇಲ್ಲಿ ಗಮನಿಸಬೇಕು. ಆದ್ದರಿಂದ, ಇದು ನಕಲಿ ಸರ್ವರ್ ಹೆಸರಿಗೆ ಗಮನ ಕೊಡುವುದಿಲ್ಲ (ಕ್ಲೈಂಟ್-ಹಲೋ ಪ್ಯಾಕೆಟ್‌ನ ಭಾಗವಾಗಿ ಖಾಲಿ ಸರ್ವರ್ ನೇಮ್ ಕ್ಷೇತ್ರವನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತದೆ). ಇದನ್ನು ಸರಿಪಡಿಸಲು, ನಾವು TlsConfig ರಚನೆಗೆ ಅನುಗುಣವಾದ FakeServerName ಕ್ಷೇತ್ರವನ್ನು ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ. ನಾವು ರಚನೆಯ ಪ್ರಮಾಣಿತ ಸರ್ವರ್ ನೇಮ್ ಕ್ಷೇತ್ರವನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಇದನ್ನು ಆಂತರಿಕ tls ಕಾರ್ಯವಿಧಾನಗಳು ಬಳಸುತ್ತವೆ ಮತ್ತು ಅದು ಮೂಲದಿಂದ ಭಿನ್ನವಾಗಿದ್ದರೆ, tls ಹ್ಯಾಂಡ್‌ಶೇಕ್ ದೋಷದೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ. TlsConfig ರಚನೆಯ ವಿವರಣೆಯು ಫೈಲ್‌ನಲ್ಲಿದೆ tls/common.go - ನಾವು ಅದನ್ನು ಸರಿಪಡಿಸಬೇಕಾಗಿದೆ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಾವು ಫೈಲ್‌ಗೆ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಬೇಕಾಗುತ್ತದೆ tls/handshake_client.goTLS ಹ್ಯಾಂಡ್‌ಶೇಕ್ ಅನ್ನು ರಚಿಸುವಾಗ ನಮ್ಮ FakeServerName ಕ್ಷೇತ್ರವನ್ನು ಬಳಸಲು:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಅಷ್ಟೇ! ನೀವು ಯೋಜನೆಯನ್ನು ಕಂಪೈಲ್ ಮಾಡಬಹುದು ಮತ್ತು ಕೆಲಸವನ್ನು ಪರಿಶೀಲಿಸಬಹುದು. ಆದರೆ ನೀವು ಸ್ಕ್ಯಾನ್ ಅನ್ನು ರನ್ ಮಾಡುವ ಮೊದಲು, ನೀವು ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ ಖಾತೆಯನ್ನು ಹೊಂದಿಸಬೇಕಾಗುತ್ತದೆ. ಸರಿ, ಅದನ್ನು ಹೊಂದಿಸಿ ಎಂದು ನಾನು ಹೇಗೆ ಹೇಳಬಲ್ಲೆ - ಕ್ಲೌಡ್‌ಫ್ಲೇರ್‌ನಲ್ಲಿ ಖಾತೆಯನ್ನು ರಚಿಸಿ ಮತ್ತು ಅದಕ್ಕೆ ನಿಮ್ಮ ಡೊಮೇನ್ ಅನ್ನು ಲಿಂಕ್ ಮಾಡಿ. DoH, WebSocket ಮತ್ತು ESNI ಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕ್ಲೌಡ್‌ಫ್ಲೇರ್‌ನಲ್ಲಿ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸೇರಿಸಲಾಗಿದೆ. DNS ದಾಖಲೆಗಳನ್ನು ನವೀಕರಿಸಿದ ನಂತರ, ನೀವು eSNI ಕೀಗಳನ್ನು ಪ್ರಶ್ನಿಸುವ ಮೂಲಕ ಡೊಮೇನ್‌ನ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಪರಿಶೀಲಿಸಬಹುದು:

dig +short txt _esni.df13tester.info 

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ನಿಮ್ಮ ಡೊಮೇನ್‌ಗೆ ಹೋಲುವ ಏನನ್ನಾದರೂ ನೀವು ನೋಡಿದರೆ, ಎಲ್ಲವೂ ನಿಮಗಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದರ್ಥ ಮತ್ತು ನೀವು ಪರೀಕ್ಷೆಗೆ ಮುಂದುವರಿಯಬಹುದು.

ಆರಂಭ Ubuntu ಉದಾಹರಣೆಗೆ, ಡಿಜಿಟಲ್ ಓಷನ್‌ನಲ್ಲಿ VPS. PS: ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ, ನಮ್ಮ ಪೂರೈಕೆದಾರರಿಂದ ನಾವು ಸ್ವೀಕರಿಸಿದ VPS IP ವಿಳಾಸವು ರೋಸ್ಕೊಮ್ನಾಡ್ಜೋರ್‌ನ ಕಪ್ಪುಪಟ್ಟಿಗೆ ಸೇರಿದೆ. ಆದ್ದರಿಂದ ನಿಮಗೂ ಇದೇ ರೀತಿಯ ಏನಾದರೂ ಸಂಭವಿಸಿದರೆ ಆಶ್ಚರ್ಯಪಡಬೇಡಿ. ನನ್ನ VPS ಅನ್ನು ಪ್ರವೇಶಿಸಲು ನಾನು VPN ಅನ್ನು ಬಳಸಬೇಕಾಗಿತ್ತು.

ನಾವು ಈಗಾಗಲೇ ಕಂಪೈಲ್ ಮಾಡಿದ rsockstun ಅನ್ನು VPS ಗೆ ನಕಲಿಸುತ್ತೇವೆ (ಇದು ಗೋಲಾಂಗ್‌ನ ಮತ್ತೊಂದು ಸೌಂದರ್ಯವಾಗಿದೆ - ನೀವು ಯೋಜನೆಯನ್ನು ನಿಮ್ಮದೇ ಆದ ಮೇಲೆ ಕಂಪೈಲ್ ಮಾಡಬಹುದು ಮತ್ತು ಅದನ್ನು ಯಾವುದೇ ಲಿನಕ್ಸ್‌ನಲ್ಲಿ ಚಲಾಯಿಸಬಹುದು, ಸಿಸ್ಟಮ್‌ನ ಬಿಟ್ ಸಾಮರ್ಥ್ಯವನ್ನು ಮಾತ್ರ ಗಮನಿಸಿ) ಮತ್ತು ಸರ್ವರ್ ಭಾಗವನ್ನು ಪ್ರಾರಂಭಿಸಿ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ತದನಂತರ ಕ್ಲೈಂಟ್ ಭಾಗ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ನಾವು ನೋಡುವಂತೆ, ಕ್ಲೈಂಟ್ ವೆಬ್‌ಸಾಕೆಟ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ ಮುಂಭಾಗದ ಸರ್ವರ್ ಮೂಲಕ ಸರ್ವರ್‌ಗೆ ಯಶಸ್ವಿಯಾಗಿ ಸಂಪರ್ಕಗೊಂಡಿದೆ. ಸುರಂಗವು ನಿಖರವಾಗಿ ಸುರಂಗದಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು, ನೀವು ಸ್ಥಳೀಯ ಸಾಕ್ಸ್ 5 ಮೂಲಕ ಕರ್ಲ್ ವಿನಂತಿಯನ್ನು ಮಾಡಬಹುದು, ಸರ್ವರ್‌ನಲ್ಲಿ ತೆರೆಯಿರಿ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಸಂವಹನ ಚಾನಲ್‌ನಲ್ಲಿ ಡಿಪಿಐ ಏನು ನೋಡುತ್ತದೆ ಎಂಬುದನ್ನು ಈಗ ನೋಡೋಣ:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಮೊದಲಿಗೆ, ಟನೆಲರ್, DoH ಕಾರ್ಯವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು, ಗಮ್ಯಸ್ಥಾನ ಡೊಮೇನ್‌ಗಾಗಿ eSNI ಕೀಗಳಿಗಾಗಿ ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ DNS ಸರ್ವರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸುತ್ತದೆ (ಪ್ಯಾಕೆಟ್‌ಗಳು ಸಂಖ್ಯೆ. 1-19), ಮತ್ತು ನಂತರ ಮುಂಭಾಗದ ಸರ್ವರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸುತ್ತದೆ ಮತ್ತು ಡೊಮೇನ್ ಹಿಂದೆ ಅಡಗಿಕೊಂಡು TLS ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ. www.google.com (ಕ್ಲೈಂಟ್ ಪ್ರಾರಂಭವಾದಾಗ ಯಾವುದೇ ನಕಲಿ ಡೊಮೇನ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದಿದ್ದಾಗ ಇದು ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯವಾಗಿದೆ). ನಿಮ್ಮ ನಕಲಿ ಡೊಮೇನ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು, ನೀವು -fronfDomain ಪ್ಯಾರಾಮೀಟರ್ ಅನ್ನು ಬಳಸಬೇಕು:

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಈಗ ಇನ್ನೊಂದು ವಿಷಯ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, CloudFalre ಖಾತೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಹೊಂದಿಕೊಳ್ಳುವ SSL ಗೆ ಹೊಂದಿಸಲಾಗಿದೆ. ಇದರರ್ಥ ಕ್ಲೈಂಟ್‌ಗಳಿಂದ ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ ಮುಂಭಾಗದ ಸರ್ವರ್‌ಗಳಿಗೆ https ವಿನಂತಿಗಳನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡದ (http) ನಮ್ಮ ಸರ್ವರ್‌ಗೆ ಫಾರ್ವರ್ಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಅದಕ್ಕಾಗಿಯೇ ನಾವು ಸುರಂಗದ ಸರ್ವರ್ ಭಾಗವನ್ನು ಅಲ್ಲದ ssl ಮೋಡ್‌ನಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ (-listen ws:0.0.0.0), ಮತ್ತು ಅಲ್ಲ (-listen wss:0.0.0.0).

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಪೂರ್ಣ ಎನ್‌ಕ್ರಿಪ್ಶನ್ ಮೋಡ್‌ಗೆ ಬದಲಾಯಿಸಲು, ನೀವು ಆಯ್ಕೆ ಮಾಡಬೇಕು ಪೂರ್ಣಅಥವಾ ಪೂರ್ಣ (ಕಟ್ಟುನಿಟ್ಟಾದ) ಸರ್ವರ್‌ನಲ್ಲಿ ನಿಜವಾದ ಪ್ರಮಾಣಪತ್ರವಿದ್ದರೆ. ಮೋಡ್ ಅನ್ನು ಬದಲಾಯಿಸಿದ ನಂತರ, ನಾವು https ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು CloudFlare ನಿಂದ ಸಂಪರ್ಕಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಸುರಂಗದ ಸರ್ವರ್ ಬದಿಗೆ ಸ್ವಯಂ-ಸಹಿ ಪ್ರಮಾಣಪತ್ರವನ್ನು ರಚಿಸಲು ಮರೆಯಬೇಡಿ.

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಜಿಜ್ಞಾಸೆಯ ಓದುಗರು ಕೇಳುತ್ತಾರೆ: “ಕ್ಲೈಂಟ್ ಬಗ್ಗೆ ಏನು? Windows"ಎಲ್ಲಾ ನಂತರ, ಟನೆಲರ್‌ನ ಮುಖ್ಯ ಬಳಕೆಯು ಬಹುಶಃ ಕಾರ್ಪೊರೇಟ್ ಯಂತ್ರಗಳು ಮತ್ತು ಸರ್ವರ್‌ಗಳಿಂದ ಬ್ಯಾಕ್-ಎಂಡ್ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸುವುದಾಗಿದೆ, ಮತ್ತು ಅವು ಸಾಮಾನ್ಯವಾಗಿ ಯಾವಾಗಲೂ ವಿಂಡೋಸ್ ಆಗಿರುತ್ತವೆ. ವಿಂಡೋಸ್‌ಗಾಗಿ ಟನೆಲರ್ ಅನ್ನು ನಾನು ಹೇಗೆ ಕಂಪೈಲ್ ಮಾಡುವುದು, ವಿಶೇಷವಾಗಿ ನಿರ್ದಿಷ್ಟ TLS ಸ್ಟ್ಯಾಕ್‌ನೊಂದಿಗೆ?" ಈಗ ನಾವು ಗೋಲಾಂಗ್ ಎಷ್ಟು ಅನುಕೂಲಕರವಾಗಿದೆ ಎಂಬುದನ್ನು ಪ್ರದರ್ಶಿಸುವ ಮತ್ತೊಂದು ವೈಶಿಷ್ಟ್ಯವನ್ನು ಪರಿಚಯಿಸುತ್ತೇವೆ. GOOS=windows ನಿಯತಾಂಕವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ನಾವು ಕಾಲಿಯಿಂದ ನೇರವಾಗಿ ವಿಂಡೋಸ್‌ಗಾಗಿ ಕಂಪೈಲ್ ಮಾಡುತ್ತೇವೆ:

GOARCH=amd64 GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" GOOS=windows  go build -ldflags="-s -w"

ಅಥವಾ 32-ಬಿಟ್ ಆವೃತ್ತಿ:

GOARCH=386 GOROOT="/opt/tls-tris/_dev/GOROOT/linux_amd64" GOOS=windows  go build -ldflags="-s -w"

ಎಲ್ಲಾ! ಮತ್ತು ಹೆಚ್ಚಿನ ತೊಂದರೆಗಳ ಅಗತ್ಯವಿಲ್ಲ. ಇದು ನಿಜವಾಗಿಯೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ!

TLS 1.3 ಆಧರಿಸಿ ಡೊಮೇನ್ ಮುಂಭಾಗ. ಭಾಗ 2

ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್‌ನಿಂದ ಅನಗತ್ಯ ಕಸವನ್ನು ತೆಗೆದುಹಾಕಲು –w ಮತ್ತು –s ಕಂಪೈಲರ್ ಫ್ಲ್ಯಾಗ್‌ಗಳು ಅಗತ್ಯವಿದೆ, ಇದು ಒಂದೆರಡು ಮೆಗಾಬೈಟ್‌ಗಳಷ್ಟು ಚಿಕ್ಕದಾಗಿದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಗಾತ್ರವನ್ನು ಮತ್ತಷ್ಟು ಕಡಿಮೆ ಮಾಡಲು UPX ಅನ್ನು ಬಳಸಿಕೊಂಡು ಅದನ್ನು ಪ್ಯಾಕ್ ಮಾಡಬಹುದು.

ಬದಲಿಗೆ ತೀರ್ಮಾನದ

ಲೇಖನದಲ್ಲಿ, ಗೊಲಾಂಗ್‌ನಲ್ಲಿ ಬರೆಯಲಾದ ಸುರಂಗದ ಉದಾಹರಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು, TLS 1.3 ಪ್ರೋಟೋಕಾಲ್‌ನ ಬದಲಿಗೆ ಆಸಕ್ತಿದಾಯಕ ವೈಶಿಷ್ಟ್ಯದ ಮೇಲೆ ಅಳವಡಿಸಲಾಗಿರುವ ಹೊಸ ಡೊಮೇನ್-ಫ್ರಂಟಿಂಗ್ ತಂತ್ರಜ್ಞಾನದ ಬಳಕೆಯನ್ನು ನಾವು ಸ್ಪಷ್ಟವಾಗಿ ಪ್ರದರ್ಶಿಸಿದ್ದೇವೆ. ಅದೇ ರೀತಿಯಲ್ಲಿ, ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ ಸರ್ವರ್‌ಗಳ ಮೂಲಕ ಕೆಲಸ ಮಾಡಲು ಗೋಲಾಂಗ್‌ನಲ್ಲಿ ಬರೆಯಲಾದ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪರಿಕರಗಳನ್ನು ನೀವು ಅಳವಡಿಸಿಕೊಳ್ಳಬಹುದು, ಉದಾಹರಣೆಗೆ ಮೆರ್ಲಿನ್ - ಪ್ರಸಿದ್ಧ C2, ಅಥವಾ ಟೀಮ್‌ಸರ್ವರ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ eSNI ಡೊಮೇನ್-ಮುಂಭಾಗವನ್ನು ಬಳಸಲು ಕೋಬಾಲ್ಟ್‌ಸ್ಟ್ರೈಕ್ ಬೀಕನ್ ಅನ್ನು ಒತ್ತಾಯಿಸಿ ಬಾಹ್ಯ C2 ಚಾನಲ್, ಗೋಲಾಂಗ್‌ನಲ್ಲಿ ಅಥವಾ ಸ್ಟ್ಯಾಂಡರ್ಡ್ C++ ನಲ್ಲಿ OpenSSL ನ ಪ್ಯಾಚ್ ಮಾಡಿದ ಆವೃತ್ತಿಯನ್ನು ಬಳಸಿ, ನಾವು ಲೇಖನದ ಕೊನೆಯ ಭಾಗದಲ್ಲಿ ಮಾತನಾಡಿದ್ದೇವೆ. ಸಾಮಾನ್ಯವಾಗಿ, ಕಲ್ಪನೆಗೆ ಯಾವುದೇ ಮಿತಿಗಳಿಲ್ಲ.

ಟನೆಲರ್ ಮತ್ತು ಕ್ಲೌಡ್‌ಫ್ಲೇರ್‌ನೊಂದಿಗಿನ ಉದಾಹರಣೆಯನ್ನು ಪರಿಕಲ್ಪನೆಯ ರೂಪದಲ್ಲಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಮತ್ತು ಈ ರೀತಿಯ ಡೊಮೇನ್ ಮುಂಭಾಗದ ದೀರ್ಘಾವಧಿಯ ನಿರೀಕ್ಷೆಗಳ ಬಗ್ಗೆ ಹೇಳುವುದು ಇನ್ನೂ ಕಷ್ಟ. ಈ ಸಮಯದಲ್ಲಿ, ಕ್ಲೌಡ್‌ಫ್ಲೇರ್ ಮಾತ್ರ eSNI ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಮತ್ತು ಸೈದ್ಧಾಂತಿಕವಾಗಿ, ಈ ರೀತಿಯ ಮುಂಭಾಗವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದರಿಂದ ಮತ್ತು ಉದಾಹರಣೆಗೆ, SNI ಮತ್ತು eSNI ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ tls ಸಂಪರ್ಕಗಳನ್ನು ಮುರಿಯುವುದನ್ನು ಯಾವುದೂ ತಡೆಯುವುದಿಲ್ಲ. ಸಾಮಾನ್ಯವಾಗಿ, ಭವಿಷ್ಯವು ಹೇಳುತ್ತದೆ. ಆದರೆ ಇದೀಗ, "kremlin.ru ನ ಕವರ್" ಅಡಿಯಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ನಿರೀಕ್ಷೆಯು ಸಾಕಷ್ಟು ಆಕರ್ಷಕವಾಗಿ ಕಾಣುತ್ತದೆ. ಹೌದಲ್ಲವೇ?

ನವೀಕರಿಸಿದ ಟನೆಲರ್ ಕೋಡ್, ಹಾಗೆಯೇ ಕಂಪೈಲ್ ಮಾಡಲಾದ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ exe ಫೈಲ್‌ಗಳು ಯೋಜನೆಯ ಪ್ರತ್ಯೇಕ ಶಾಖೆಯಲ್ಲಿವೆ GitHub. GitHub ನಲ್ಲಿನ ಪ್ರಾಜೆಕ್ಟ್ ಪುಟದಲ್ಲಿ ಸಾಧ್ಯವಿರುವ ಎಲ್ಲಾ ಸುರಂಗಮಾರ್ಗ ಸಮಸ್ಯೆಗಳ ಕುರಿತು ಸಮಸ್ಯೆಯನ್ನು ಬರೆಯುವುದು ಉತ್ತಮ.

ಮೂಲ: www.habr.com

DDoS ರಕ್ಷಣೆ, VPS VDS ಸರ್ವರ್‌ಗಳೊಂದಿಗೆ ಸೈಟ್‌ಗಳಿಗೆ ವಿಶ್ವಾಸಾರ್ಹ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಖರೀದಿಸಿ 🔥 DDoS ರಕ್ಷಣೆ, VPS VDS ಸರ್ವರ್‌ಗಳೊಂದಿಗೆ ವಿಶ್ವಾಸಾರ್ಹ ವೆಬ್‌ಸೈಟ್ ಹೋಸ್ಟಿಂಗ್ ಅನ್ನು ಖರೀದಿಸಿ | ProHoster