MS Remote Desktop Gateway, HAProxy แƒ“แƒ แƒžแƒแƒ แƒแƒšแƒ˜แƒก แƒฃแƒฎแƒ”แƒจแƒ˜ แƒซแƒแƒšแƒ

แƒ›แƒ”แƒ’แƒแƒ‘แƒ แƒ”แƒ‘แƒ, แƒ’แƒแƒ›แƒแƒ แƒฏแƒแƒ‘แƒ!

แƒกแƒแƒฎแƒšแƒ˜แƒ“แƒแƒœ แƒแƒคแƒ˜แƒกแƒ˜แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒกแƒ—แƒแƒœ แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ’แƒ–แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก. แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜แƒ Microsoft Remote Desktop Gateway-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ”แƒก แƒแƒ แƒ˜แƒก RDP HTTP-แƒ–แƒ”. แƒแƒ  แƒ›แƒ˜แƒœแƒ“แƒ แƒจแƒ”แƒ•แƒ”แƒฎแƒ แƒแƒฅ แƒ—แƒแƒ•แƒแƒ“ RDGW-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก, แƒแƒ  แƒ›แƒ˜แƒœแƒ“แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒ, แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒ”แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒแƒœ แƒชแƒฃแƒ“แƒ˜, แƒ›แƒแƒ“แƒ˜ แƒ›แƒ˜แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ›แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒก. แƒ›แƒกแƒฃแƒ แƒก แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ RDGW แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ“แƒแƒชแƒ•แƒแƒ–แƒ” แƒ‘แƒแƒ แƒแƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒกแƒ’แƒแƒœ. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ” RDGW แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ›แƒแƒจแƒ˜แƒœแƒ•แƒ” แƒ“แƒแƒ•แƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ“แƒ˜ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒแƒ–แƒ”, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒžแƒแƒ แƒแƒšแƒ˜แƒก แƒฃแƒฎแƒ”แƒจแƒ˜ แƒซแƒแƒšแƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒแƒชแƒ•แƒแƒ–แƒ”. แƒ’แƒแƒ›แƒ˜แƒ™แƒ•แƒ˜แƒ แƒ“แƒ, แƒ แƒแƒ› แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒจแƒ˜ แƒ•แƒ”แƒ  แƒ•แƒ˜แƒžแƒแƒ•แƒ” แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ แƒ”แƒก. แƒ™แƒแƒ แƒ’แƒ˜, แƒจแƒ”แƒœ แƒ—แƒ•แƒ˜แƒ—แƒแƒœ แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒก แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ.

แƒ—แƒแƒ•แƒแƒ“ RDGW-แƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒแƒ แƒแƒœแƒแƒ˜แƒ แƒ˜ แƒ“แƒแƒชแƒ•แƒ. แƒ“แƒ˜แƒแƒฎ, แƒ˜แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ•แƒšแƒ˜แƒœแƒ“แƒ”แƒก แƒจแƒ˜แƒจแƒ•แƒ”แƒšแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒ— แƒ—แƒ”แƒ—แƒ  แƒฅแƒกแƒ”แƒšแƒจแƒ˜ แƒ“แƒ แƒ˜แƒก แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ•แƒ แƒแƒ“ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒจแƒ”แƒแƒฌแƒฃแƒฎแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒก แƒแƒœ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒ˜แƒกแƒขแƒก. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ”แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ˜แƒชแƒ˜แƒšแƒแƒ— แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒ“แƒแƒ‘แƒšแƒแƒ™แƒ•แƒ˜แƒก แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฃแƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒ”แƒšแƒ›แƒ แƒ“แƒแƒ˜แƒ›แƒแƒฎแƒกแƒแƒ•แƒ แƒ แƒ™แƒแƒ แƒžแƒแƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ˜ แƒกแƒแƒฎแƒšแƒ˜แƒก แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒ–แƒ”, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜ แƒจแƒ”แƒชแƒ•แƒแƒšแƒ แƒžแƒแƒ แƒแƒšแƒ˜.

แƒจแƒ˜แƒ“แƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ” แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ’แƒแƒœ แƒ“แƒแƒชแƒ•แƒ˜แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒ’แƒ–แƒแƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒฅแƒกแƒ˜, แƒกแƒแƒ’แƒแƒ›แƒแƒ›แƒชแƒ”แƒ›แƒšแƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒกแƒฎแƒ•แƒ WAF-แƒ”แƒ‘แƒ˜. แƒ’แƒแƒ•แƒ˜แƒฎแƒกแƒ”แƒœแƒแƒ—, แƒ แƒแƒ› RDGW แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• http แƒแƒ แƒ˜แƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒก แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒก แƒจแƒ”แƒ”แƒ แƒ—แƒ”แƒ‘แƒแƒก แƒจแƒ˜แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒก แƒจแƒแƒ แƒ˜แƒก.

แƒ›แƒ” แƒ•แƒ˜แƒชแƒ˜ แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒ›แƒแƒ’แƒแƒ แƒ˜ F5, A10, Netscaler(ADC). แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒแƒ› แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜, แƒ›แƒ” แƒ•แƒ˜แƒขแƒงแƒ•แƒ˜, แƒ แƒแƒ› แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒ› แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ–แƒ” แƒฃแƒฎแƒ”แƒจแƒ˜ แƒซแƒแƒšแƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒแƒชแƒ•แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ“แƒ˜แƒแƒฎ, แƒ”แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒ’แƒ˜แƒชแƒแƒ•แƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒกแƒ˜แƒœแƒฏแƒ˜แƒก แƒฌแƒงแƒแƒšแƒ“แƒ˜แƒ“แƒแƒ‘แƒ˜แƒกแƒ’แƒแƒœ.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒแƒก แƒแƒ  แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ˜แƒซแƒ˜แƒœแƒแƒก แƒแƒกแƒ”แƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ (แƒ“แƒ แƒ›แƒแƒซแƒ”แƒ‘แƒœแƒแƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜ แƒแƒกแƒ”แƒ—แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก :), แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก แƒ›แƒแƒ— แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒ–แƒ แƒฃแƒœแƒแƒœ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒแƒ–แƒ”!

แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ HAProxy-แƒ˜แƒก แƒฃแƒคแƒแƒกแƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฃแƒคแƒแƒกแƒ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒš แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒ–แƒ”. แƒ›แƒ” แƒ’แƒแƒ›แƒแƒ•แƒชแƒแƒ“แƒ” Debian 10, แƒฐแƒแƒžแƒ แƒแƒฅแƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ 1.8.19 แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒจแƒ˜. แƒ›แƒ” แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒ›แƒแƒ•แƒชแƒแƒ“แƒ” แƒ˜แƒก 2.0.xx แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒ–แƒ” แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒ“แƒแƒœ.

แƒ—แƒแƒ•แƒแƒ“ แƒ“แƒ”แƒ‘แƒ˜แƒแƒœแƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒก แƒ’แƒแƒ แƒ”แƒ— แƒ“แƒแƒ•แƒขแƒแƒ•แƒ”แƒ‘แƒ—. แƒ›แƒแƒ™แƒšแƒ”แƒ“: แƒ—แƒ”แƒ—แƒ  แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ–แƒ” แƒ“แƒแƒฎแƒฃแƒ แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒžแƒแƒ แƒขแƒ˜แƒก 443-แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ, แƒœแƒแƒชแƒ แƒ˜แƒกแƒคแƒ”แƒ  แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ–แƒ” - แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒแƒกแƒ”แƒ•แƒ” แƒ“แƒแƒฎแƒฃแƒ แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ’แƒแƒ แƒ“แƒ แƒžแƒแƒ แƒขแƒ˜แƒกแƒ 22-แƒ˜แƒกแƒ. แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒก, แƒ แƒแƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒกแƒ—แƒ•แƒ˜แƒก (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, VRRP, แƒ›แƒชแƒฃแƒ แƒแƒ•แƒ˜ IP-แƒกแƒ—แƒ•แƒ˜แƒก).

แƒฃแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ”แƒก แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ, แƒ›แƒ” แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ” แƒฐแƒแƒžแƒ แƒแƒฅแƒกแƒ˜ SSL แƒฎแƒ˜แƒ“แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ (aka http แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜) แƒ“แƒ แƒฉแƒแƒ•แƒ แƒ—แƒ” แƒจแƒ”แƒกแƒ•แƒšแƒ, แƒ แƒแƒ› แƒ›แƒ”แƒœแƒแƒฎแƒ แƒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒแƒ“แƒ RDP-แƒจแƒ˜. แƒแƒกแƒ” แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒจแƒฃแƒแƒจแƒ˜ แƒ›แƒแƒ•แƒฎแƒ•แƒ“แƒ˜. แƒแƒกแƒ” แƒ แƒแƒ›, RDGateway-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก โ€žแƒงแƒ•แƒ”แƒšแƒโ€œ แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ /RDWeb แƒ’แƒ–แƒ แƒแƒ™แƒšแƒ˜แƒ. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒแƒช แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒแƒ แƒ˜แƒก /rpc/rpcproxy.dll แƒ“แƒ /remoteDesktopGateway/. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ GET/POST แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ; แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒขแƒ˜แƒžแƒ˜ RDG_IN_DATA, RDG_OUT_DATA.

แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒแƒ แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒ˜แƒœแƒช แƒ แƒแƒฆแƒแƒช.

แƒ›แƒแƒ“แƒ˜ แƒ’แƒแƒ›แƒแƒ•แƒชแƒแƒ“แƒแƒ—.

แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒ˜ mstsc, แƒ›แƒ˜แƒ•แƒ“แƒ˜แƒ•แƒแƒ  แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ”, แƒ•แƒœแƒแƒฎแƒแƒ• แƒแƒ—แƒฎ 401 (แƒแƒ แƒแƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒš) แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒจแƒ˜, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ•แƒ˜แƒงแƒ•แƒแƒœ แƒฉแƒ”แƒ›แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก/แƒžแƒแƒ แƒแƒšแƒก แƒ“แƒ แƒ•แƒœแƒแƒฎแƒแƒ• แƒžแƒแƒกแƒฃแƒฎแƒก 200.

แƒ•แƒ—แƒ˜แƒจแƒแƒ•, แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘ แƒ“แƒ แƒšแƒแƒ’แƒ˜แƒœแƒ”แƒ‘แƒจแƒ˜ แƒ•แƒฎแƒ”แƒ“แƒแƒ• แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒแƒ—แƒฎ 401 แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก. แƒจแƒ”แƒ•แƒ˜แƒงแƒ•แƒแƒœ แƒแƒ แƒแƒกแƒฌแƒแƒ  แƒšแƒแƒ’แƒ˜แƒœ/แƒžแƒแƒ แƒแƒšแƒก แƒ“แƒ แƒ˜แƒกแƒ”แƒ• แƒ•แƒœแƒแƒฎแƒแƒ• แƒแƒ—แƒฎ 401 แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒช แƒ›แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒแƒ˜ แƒแƒ›แƒแƒก แƒ“แƒแƒ•แƒ˜แƒญแƒ”แƒ แƒ—.

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒงแƒ แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก url-แƒ˜แƒก แƒ“แƒแƒ“แƒ’แƒ”แƒœแƒ แƒ“แƒ แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒแƒ  แƒ•แƒ˜แƒชแƒ˜ แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒ˜แƒญแƒ˜แƒ แƒ 401 แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒฐแƒแƒžแƒ แƒแƒฅแƒกแƒ˜แƒจแƒ˜, แƒ“แƒแƒ•แƒ˜แƒญแƒ”แƒ  (แƒแƒ แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒ“แƒแƒ•แƒ˜แƒญแƒ”แƒ , แƒ›แƒแƒ’แƒ แƒแƒ› แƒ“แƒแƒ•แƒ—แƒ•แƒšแƒ˜) แƒงแƒ•แƒ”แƒšแƒ 4xx แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก. แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒแƒ“.

แƒ“แƒแƒชแƒ•แƒ˜แƒก แƒแƒ แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ˜แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒ—แƒ•แƒšแƒ˜แƒ— 4xx แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒก (backend-แƒ–แƒ”) แƒ“แƒ แƒแƒ˜แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ–แƒ” แƒ“แƒ แƒ—แƒฃ แƒ˜แƒก แƒแƒฆแƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš แƒšแƒ˜แƒ›แƒ˜แƒขแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒฃแƒแƒ แƒ•แƒงแƒแƒคแƒ— (แƒคแƒ แƒแƒœแƒ”แƒœแƒขแƒ–แƒ”) แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก แƒแƒ› ip-แƒ“แƒแƒœ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒ˜แƒ—. .

แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒฃแƒ แƒแƒ“, แƒ”แƒก แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ“แƒแƒชแƒ•แƒ แƒžแƒแƒ แƒแƒšแƒ˜แƒก แƒฃแƒฎแƒ”แƒจแƒ˜ แƒซแƒแƒšแƒ˜แƒกแƒ’แƒแƒœ, แƒ”แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ“แƒแƒชแƒ•แƒ 4xx แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฃ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ˜แƒ—แƒฎแƒแƒ•แƒ— แƒแƒ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒš url-แƒก (404), แƒ›แƒแƒจแƒ˜แƒœ แƒ“แƒแƒชแƒ•แƒแƒช แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก.

แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒกแƒ˜ แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜ แƒ’แƒ–แƒแƒ แƒ“แƒแƒ—แƒ•แƒแƒšแƒแƒ— แƒ‘แƒ”แƒฅแƒ”แƒœแƒ“แƒ˜ แƒ“แƒ แƒจแƒ”แƒแƒขแƒงแƒแƒ‘แƒ˜แƒœแƒแƒ— แƒ—แƒฃ แƒ แƒแƒ˜แƒ›แƒ” แƒ–แƒ”แƒ“แƒ›แƒ”แƒขแƒ˜ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ:

frontend fe_rdp_tsc
    bind *:443 ssl crt /etc/haproxy/cert/desktop.example.com.pem
    mode http
    ...
    default_backend be_rdp_tsc


backend be_rdp_tsc
    ...
    mode http
    ...

    #ัะพะทะดะฐั‚ัŒ ั‚ะฐะฑะปะธั†ัƒ, ัั‚ั€ะพะบะพะฒัƒัŽ, 1000 ัะปะตะผะตะฝั‚ะพะฒ, ะฟั€ะพั‚ัƒั…ะฐะตั‚ ั‡ะตั€ะตะท 15 ัะตะบ, ะทะฐะฟะธัะฐั‚ัŒ ะบะพะป-ะฒะพ ะพัˆะธะฑะพะบ ะทะฐ ะฟะพัะปะตะดะฝะธะต 10 ัะตะบ
    stick-table type string len 128 size 1k expire 15s store http_err_rate(10s)
    #ะทะฐะฟะพะผะฝะธั‚ัŒ ip
    http-request track-sc0 src
    #ะทะฐะฟั€ะตั‚ะธั‚ัŒ ั http ะพัˆะธะฑะบะพะน 429, ะตัะปะธ ะทะฐ ะฟะพัะปะตะดะฝะธะต 10 ัะตะบ ะฑะพะปัŒัˆะต 4 ะพัˆะธะฑะพะบ
    http-request deny deny_status 429 if { sc_http_err_rate(0) gt 4 }
	
	...
    server rdgw01 192.168.1.33:443 maxconn 1000 weight 10 ssl check cookie rdgw01
    server rdgw02 192.168.2.33:443 maxconn 1000 weight 10 ssl check cookie rdgw02

แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ•แƒแƒ แƒ—แƒฃแƒšแƒแƒ—. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒ—แƒ•แƒšแƒ˜แƒ— แƒฃแƒ™แƒแƒœแƒ แƒ›แƒฎแƒแƒ แƒ”แƒก แƒ“แƒ แƒ“แƒแƒ•แƒ‘แƒšแƒแƒ™แƒแƒ•แƒ— แƒฌแƒ˜แƒœแƒ แƒ›แƒฎแƒแƒ แƒ”แƒก.

แƒ—แƒแƒ•แƒ“แƒแƒ›แƒกแƒฎแƒ›แƒ”แƒšแƒก แƒฃแƒฎแƒ”แƒจแƒแƒ“ แƒ›แƒแƒ•แƒ”แƒฅแƒชแƒ”แƒ•แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒ•แƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒ— แƒ›แƒ˜แƒก TCP แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก.

frontend fe_rdp_tsc
    bind *:443 ssl crt /etc/haproxy/cert/ertelecom_ru_2020_06_11.pem
    mode http
    ...
    #ัะพะทะดะฐั‚ัŒ ั‚ะฐะฑะปะธั†ัƒ ip ะฐะดั€ะตัะพะฒ, 1000 ัะปะตะผะตะฝั‚ะพะฒ, ะฟั€ะพั‚ัƒั…ะฝะตั‚ ั‡ะตั€ะตะท 15 ัะตะบ, ัะพั…ั€ัะฝัั‚ัŒ ะธะท ะณะปะพะฑะฐะปัŒะฝะพะณะพ ัั‡ั‘ั‚ั‡ะธะบะฐ
    stick-table type ip size 1k expire 15s store gpc0
    #ะฒะทัั‚ัŒ ะธัั‚ะพั‡ะฝะธะบ
    tcp-request connection track-sc0 src
    #ะพั‚ะบะปะพะฝะธั‚ัŒ tcp ัะพะตะดะธะฝะตะฝะธะต, ะตัะปะธ ะณะปะพะฑะฐะปัŒะฝั‹ะน ัั‡ั‘ั‚ั‡ะธะบ >0
    tcp-request connection reject if { sc0_get_gpc0 gt 0 }
	
    ...
    default_backend be_rdp_tsc


backend be_rdp_tsc
    ...
    mode http
    ...
	
    #ัะพะทะดะฐั‚ัŒ ั‚ะฐะฑะปะธั†ัƒ ip ะฐะดั€ะตัะพะฒ, 1000 ัะปะตะผะตะฝั‚ะพะฒ, ะฟั€ะพั‚ัƒั…ะฝะตั‚ ั‡ะตั€ะตะท 15 ัะตะบ, ัะพั…ั€ะฐะฝัั‚ัŒ ะบะพะป-ะฒะพ ะพัˆะธะฑะพะบ ะทะฐ 10 ัะตะบ
    stick-table type ip size 1k expire 15s store http_err_rate(10s)
    #ะผะฝะพะณะพ ะพัˆะธะฑะพะบ, ะตัะปะธ ะบะพะป-ะฒะพ ะพัˆะธะฑะพะบ ะทะฐ 10 ัะตะบ ะฟั€ะตะฒั‹ัะธะปะพ 8
    acl errors_too_fast sc1_http_err_rate gt 8
    #ะฟะพะผะตั‚ะธั‚ัŒ ะฐั‚ะฐะบัƒ ะฒ ะณะปะพะฑะฐะปัŒะฝะพะผ ัั‡ั‘ั‚ั‡ะธะบะต (ัƒะฒะตะปะธั‡ะธั‚ัŒ ัั‡ั‘ั‚ั‡ะธะบ)
    acl mark_as_abuser sc0_inc_gpc0(fe_rdp_tsc) gt 0
    #ะพะฑะฝัƒะปะธั‚ัŒ ะณะปะพะฑะฐะปัŒะฝั‹ะน ัั‡ั‘ั‚ั‡ะธะบ
    acl clear_as_abuser sc0_clr_gpc0(fe_rdp_tsc) ge 0
    #ะฒะทัั‚ัŒ ะธัั‚ะพั‡ะฝะธะบ
    tcp-request content track-sc1 src
    #ะพั‚ะบะปะพะฝะธั‚ัŒ, ะฟะพะผะตั‚ะธั‚ัŒ, ั‡ั‚ะพ ะฐั‚ะฐะบะฐ
    tcp-request content reject if errors_too_fast mark_as_abuser
    #ั€ะฐะทั€ะตัˆะธั‚ัŒ, ัะฑั€ะพัะธั‚ัŒ ั„ะปะฐะถะพะบ ะฐั‚ะฐะบะธ
    tcp-request content accept if !errors_too_fast clear_as_abuser
	
    ...
    server rdgw01 192.168.1.33:443 maxconn 1000 weight 10 ssl check cookie rdgw01
    server rdgw02 192.168.2.33:443 maxconn 1000 weight 10 ssl check cookie rdgw02

แƒ˜แƒ’แƒ˜แƒ•แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒแƒ•แƒแƒ–แƒ˜แƒแƒœแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ— แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก http 429 (แƒซแƒแƒšแƒ˜แƒแƒœ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ)

frontend fe_rdp_tsc
    ...
    stick-table type ip size 1k expire 15s store gpc0
    http-request track-sc0 src
    http-request deny deny_status 429 if { sc0_get_gpc0 gt 0 }
    ...
    default_backend be_rdp_tsc

backend be_rdp_tsc
    ...
    stick-table type ip size 1k expire 15s store http_err_rate(10s)
    acl errors_too_fast sc1_http_err_rate gt 8
    acl mark_as_abuser sc0_inc_gpc0(fe_rdp_tsc) gt 0
    acl clear_as_abuser sc0_clr_gpc0(fe_rdp_tsc) ge 0
    http-request track-sc1 src
    http-request allow if !errors_too_fast clear_as_abuser
    http-request deny deny_status 429 if errors_too_fast mark_as_abuser
    ...

แƒ•แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘: แƒ•แƒ˜แƒจแƒ•แƒ”แƒ‘ mstsc-แƒก แƒ“แƒ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘ แƒžแƒแƒ แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ— แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒก. แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ 10 แƒฌแƒแƒ›แƒจแƒ˜ แƒ›แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒฃแƒ™แƒแƒœ แƒ“แƒ mstsc แƒฃแƒจแƒ•แƒ”แƒ‘แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก. แƒ แƒแƒ’แƒแƒ แƒช แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒจแƒ˜ แƒฉแƒแƒœแƒก.

แƒแƒฎแƒกแƒœแƒ-แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒจแƒแƒ แƒก แƒ•แƒแƒ  แƒฐแƒแƒžแƒ แƒแƒฅแƒกแƒ˜แƒ˜แƒก แƒแƒกแƒขแƒแƒขแƒ˜แƒกแƒ’แƒแƒœ. แƒแƒ  แƒ›แƒ”แƒกแƒ›แƒ˜แƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒแƒขแƒแƒ›
http-แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒฃแƒแƒ แƒงแƒแƒก deny_status 429 if { sc_http_err_rate(0) gt 4 }
แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒฃแƒจแƒ•แƒแƒ— แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 10 แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ, แƒกแƒแƒœแƒแƒ› แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก.

แƒ“แƒแƒ‘แƒœแƒ”แƒฃแƒšแƒ˜ แƒ•แƒแƒ  แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒœแƒฃแƒ›แƒ”แƒ แƒแƒชแƒ˜แƒแƒจแƒ˜. แƒฐแƒแƒžแƒ แƒแƒฅแƒกแƒ˜แƒ˜แƒก แƒแƒกแƒขแƒแƒขแƒ”แƒ‘แƒ, แƒ›แƒแƒฎแƒแƒ แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ˜, แƒ—แƒฃ แƒจแƒ”แƒ›แƒแƒ•แƒกแƒ”แƒ‘แƒ—, แƒจแƒ”แƒ›แƒ˜แƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ—, แƒ’แƒแƒ›แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ—.

แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ›แƒแƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ— RD Gateway-แƒ˜แƒก แƒ“แƒแƒชแƒ•แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒ’แƒ–แƒ”แƒ‘แƒ˜, แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ.

แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ Windows Remote Desktop Client-แƒก (mstsc), แƒแƒฆแƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ, แƒ แƒแƒ› แƒ›แƒแƒก แƒแƒ  แƒแƒฅแƒ•แƒก TLS1.2 แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ (แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› Windows 7-แƒจแƒ˜), แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ TLS1-แƒ˜แƒก แƒ“แƒแƒขแƒแƒ•แƒ”แƒ‘แƒ; แƒแƒ  แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒ แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒจแƒ˜แƒคแƒ แƒ”แƒ‘แƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ›แƒ”แƒช แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ แƒซแƒ•แƒ”แƒšแƒ˜แƒก แƒ“แƒแƒขแƒแƒ•แƒ”แƒ‘แƒ.

แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒกแƒแƒช แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ”แƒกแƒ›แƒ˜แƒก, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒฌแƒแƒ•แƒšแƒแƒ‘แƒก แƒ“แƒ แƒฃแƒ™แƒ•แƒ” แƒกแƒฃแƒ แƒก แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒก, แƒ›แƒ” แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒ›แƒ—แƒ”แƒš แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก.

แƒฐแƒแƒžแƒ แƒแƒฅแƒกแƒ˜.แƒ™แƒแƒœแƒค

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
        #ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE
-RSA-AES256-GCM-SHA384
        ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
        #ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
        ssl-default-bind-options no-sslv3
        ssl-server-verify none


defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  15m
        timeout server  15m
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http


frontend fe_rdp_tsc
    bind *:443 ssl crt /etc/haproxy/cert/dektop.example.com.pem
    mode http
    capture request header Host len 32
    log global
    option httplog
    timeout client 300s
    maxconn 1000

    stick-table type ip size 1k expire 15s store gpc0
    tcp-request connection track-sc0 src
    tcp-request connection reject if { sc0_get_gpc0 gt 0 }

    acl rdweb_domain hdr(host) -i beg dektop.example.com
    http-request deny deny_status 400 if !rdweb_domain
    default_backend be_rdp_tsc


backend be_rdp_tsc
    balance source
    mode http
    log global

    stick-table type ip size 1k expire 15s store http_err_rate(10s)
    acl errors_too_fast sc1_http_err_rate gt 8
    acl mark_as_abuser sc0_inc_gpc0(fe_rdp_tsc) gt 0
    acl clear_as_abuser sc0_clr_gpc0(fe_rdp_tsc) ge 0
    tcp-request content track-sc1 src
    tcp-request content reject if errors_too_fast mark_as_abuser
    tcp-request content accept if !errors_too_fast clear_as_abuser

    option forwardfor
    http-request add-header X-CLIENT-IP %[src]

    option httpchk GET /
    cookie RDPWEB insert nocache
    default-server inter 3s    rise 2  fall 3
    server rdgw01 192.168.1.33:443 maxconn 1000 weight 10 ssl check cookie rdgw01
    server rdgw02 192.168.2.33:443 maxconn 1000 weight 10 ssl check cookie rdgw02


frontend fe_stats
    mode http
    bind *:8080
    acl ip_allow_admin src 192.168.66.66
    stats enable
    stats uri /stats
    stats refresh 30s
    #stats admin if LOCALHOST
    stats admin if ip_allow_admin

แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒฃแƒ™แƒแƒœแƒ แƒžแƒšแƒแƒœแƒ–แƒ”? แƒ˜แƒ›แƒ˜แƒขแƒแƒ›, แƒ แƒแƒ› แƒแƒกแƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒขแƒแƒšแƒ”แƒ แƒแƒœแƒขแƒแƒ‘แƒ. Haproxy-แƒก แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒก แƒแƒ แƒ˜ แƒ›แƒชแƒฃแƒ แƒแƒ•แƒ˜ แƒ—แƒ”แƒ—แƒ แƒ˜ IP-แƒ˜แƒ—.

แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒ—แƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜: แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒ˜แƒฌแƒงแƒแƒ— โ€žแƒแƒ แƒ˜ แƒ™แƒแƒœแƒชแƒ”แƒ แƒขแƒ˜, แƒแƒ แƒ˜ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜, แƒกแƒแƒ—แƒแƒ›แƒแƒจแƒ แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒ˜แƒ—โ€œ. แฒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— แƒ•แƒ˜แƒ™แƒ˜แƒžแƒ”แƒ“แƒ˜แƒ แƒ”แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ“แƒแƒ–แƒแƒ’แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜:

rdp-gateway-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ HAProxy-แƒ“แƒแƒœ
แƒ”แƒ แƒ—แƒแƒ“แƒ”แƒ แƒ—แƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ แƒ•แƒ˜แƒžแƒแƒ•แƒ”, แƒกแƒแƒ“แƒแƒช แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒฌแƒฃแƒฎแƒ”แƒ‘แƒ“แƒœแƒ”แƒœ แƒžแƒแƒ แƒแƒšแƒ˜แƒก แƒฃแƒฎแƒ”แƒจแƒ˜ แƒซแƒแƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ