áá°áááºáá»ááºážáá»á¬áž áááºá¹ááá¬áá«á
á¡áááºá០ááá·áºáá¯á¶ážáá¯ááºáááºážááœááºááá¯á· áá»áááºáááºááẠáááºážáááºážáá»á¬ážá
áœá¬ááŸááááºá áááºážááá¯á·áá²ááŸáá
áºáá¯ááŸá¬ Microsoft Remote Desktop Gateway ááá¯á¡áá¯á¶ážááŒá¯áááºááŒá
áºáááºá áááºážááẠHTTP ááẠRDP ááŒá
áºáááºá á€áá±áá¬ááœáẠRDGW ááá¯ááºááá¯ááºááá·áºááœááºážááŒááºážá¡áá±á«áº ááááá»ááºáá«á á¡áááºááŒá±á¬áá·áº áá±á¬ááºážáááºááŒá
áºá
á±á ááá¯ážáááºááŒá
áºá
á± áááœá±ážááœá±ážááá¯áá«á áááºážá¡á¬áž á¡áá±ážááááºážáááááá¬áá»á¬ážáá²á០áá
áºáá¯á¡ááŒá
Ạáááºáá¶ááŒáá«á
áá¯á·á áááºá RDGW áá¬áá¬ááᯠááá±á¬ááºážáá±á¬á¡ááºáá¬áááºá០áá¬ááœááºááŒááºážá¡ááŒá±á¬ááºáž ááŒá±á¬ááŒááá¯áá«áááºá RDGW áá¬áá¬ááᯠá
áááºáááºááŸááºáá±á¬á¡áá«á á¡áá°ážáááŒáá·áº á
áá¬ážááŸááºááᯠbrute force á០áá¬ááœááºááŒááºážá¡ááœáẠáá¯á¶ááŒá¯á¶áá±ážá¡ááœáẠáá»áœááºá¯ááºáá»ááºáá»ááºáž á
áá¯ážááááºáá¬áá«áááºá áá®ááá¯áá¯ááºáá¯á¶áá¯ááºáááºážáá²á· áááºáááºáá²á· á¡ááºáá¬áááºááŸá¬ áá±á¬ááºážáá«ážááœá± ááŸá¬áááœá±á·ááá¯á· á¡á¶á·ááŒááœá¬ážáááºá áá±á¬ááºážááŒá®á áááºááá¯ááºááá¯ááºáá¯ááºááááá·áºáááºá
RDGW ááá¯ááºááá¯ááºááœáẠáááºááá·áºá¡áá¬á¡ááœááºá០áááŸááá«á áá¯ááºáá²á·á áááºážááᯠá¡ááŒá°áá±á¬ááºááœááºáááºáá
áºáá¯ááá¯á· ááá¬á¡ááºáá¬áá±á·á
áºááŒáá·áº ááááœá±á·ááá¯ááºááŒá®áž áááºážááẠáá±á¬ááºážááœááºá
áœá¬áá¯ááºáá±á¬ááºááá¯ááºáááºááŒá
áºáááºá ááá¯á·áá±á¬áº áááºážááẠááŸááºáááºáá±á¬ á
á®áá¶ááá·áºááœá²áá° ááá¯á·ááá¯áẠááááºážá¡áá»ááºá¡ááẠáá¯á¶ááŒá¯á¶áá±áž á¡áá°ážáá»áœááºážáá»ááºáá°ááᯠá
áááºá¡ááŸá±á¬áá·áºá¡ááŸááºááŒá
áºá
á±áááºá ááá¯á·á¡ááŒááºá ááááááºááœááºáááºáááºážáá
áºáŠážááẠáááºážáá¡áááºááœááºááŒá°áá¬ááŸá áá±á¬áºááá¯ááááºá¡áá±á¬áá·áºáá
áºáá¯á¡ááœáẠá
áá¬ážááŸááºááᯠááŸááºáá¬ážááŒá®ážáá±á¬áẠáááºážáá
áá¬ážááŸááºááᯠááŒá±á¬ááºážáá²ááá·áºá¡áá« á¡áá±á¬áá·áºááááºááá¯á·ááŒááºážá¡ááŒá±á¡áá±ááᯠááŸá±á¬ááºááŸá¬ážááá¯ááºáááºááŒá
áºáááºá
á¡ááœááºážá¡áááºážá¡ááŒá áºáá»á¬ážááᯠááŒááºááááºáááºážáá»ááºá០áá¬ááœááºááẠáááºážáááºážáá±á¬ááºážááŸá¬ ááá±á¬ááºá á®áá»á¬ážá áá¯ááºáá±ááŒááºážá áá áºáá»á¬ážááŸáá·áº á¡ááŒá¬ážáá±á¬ WAF áá»á¬ážááŸáááá·áºááŒá áºáááºá RDGW ááẠhttp ááŒá áºáá±áá²ááŒá áºáááºá ááá¯á·áá±á¬áẠá¡ááœááºážááá¯ááºážáá¬áá¬áá»á¬ážááŸáá·áº á¡ááºáá¬áááºááŒá¬ážááœáẠá¡áá°ážááŒá¯ááŒá±ááŸááºážáá»ááºáá áºáá¯ááᯠááááºááá¯ážááẠáá±á¬ááºážááá¯ááá¯ááºááŒáá«á áá¯á·á
F5, A10, Netscaler(ADC) ááœá±ááŸááááºááá¯áᬠáá»áœááºáá±á¬áºáááá«áááºá á€á áá áºáá»á¬ážáá²á០áá áºáá¯á á á®áá¶ááá·áºááœá²áá°áá áºáŠážá¡áá±ááŒáá·áºá á€á áá áºáá»á¬ážááœáẠbrute force ááᯠáá¬ááœááºáááºáááºáž ááŒá áºááá¯ááºáááºáᯠáá»áœááºá¯ááºááŒá±á¬áá«áááºá áá¯ááºáááºá áá®á áá áºááœá±á áááºážááᯠáááºáá°á·ááá¯áááᯠáá±ááœáŸááºážááá¯ážááŸá¯ááá± áá¬ááœááºáá±ážáááá·áºáááºá
ááá¯á·áá±á¬áº áá¯áá¹ááá®ááá¯ááºážááẠááá¯ááá¯á·áá±á¬ááŒá±ááŸááºážáá»ááºááᯠáááºáá°ááẠáááºááá¯ááºáááºááá¯ááºáá« (ááá¯áá²á·ááá¯á·áá±á¬á áá áºá¡ááœáẠá á®áá¶ááá·áºááœá²áá°ááá¯ááŸá¬áá« :) ááá¯á·áá±á¬áº áá áºáá»áááºáááºážááœáẠáááºážááá¯á·ááẠáá¯á¶ááŒá¯á¶áá±ážááᯠááá¯á áá¯ááºááá¯ááºáááºá
á¡ááá²á·áááºáááºááŸá¯á áá áºááœáẠHAProxy á á¡ááá²á·áá¬ážááŸááºážááᯠááá·áºááœááºážááẠáá¯á¶ážáááŒá áºááá¯ááºáááºá Stable repository ááœáẠDebian 10á haproxy áá¬ážááŸááºáž 1.8.19 ááœáẠá ááºážáááºáá²á·áááºá á ááºážáááºááá¯ááŸá±á¬ááºáá¬ááá± áá¬ážááŸááºáž 2.0.xx ááŸá¬áááºáž á ááºážáááºáá²á·áá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠá€áá±á¬ááºážáá«ážá áá±á¬ááºá¡ááŒááºáááºááœáẠdebian ááᯠáááºáááºáá¬ážáá«áááºá á¡ááá¯áá»á¯ááº- á¡ááŒá°áá±á¬ááºá¡ááºáá¬áá±á·á áºááœááºá áá®ážááá¯ážáá±á¬ááºáá»ááºááŸá¬ááŒááºáá±á«áºááŸá port 443 ááŸááœá²á á¡áá¬á¡á¬ážáá¯á¶ážááá¯ááááºáá« - á¥ááá¬á ááá·áºáá°áá«áá¡áá á¥ááá¬á port 22 ááŸááœá²á á¡áá¬á¡á¬ážáá¯á¶ážááá¯áááºáž ááááºáá«á á¡áá¯ááºá¡ááœáẠááá¯á¡ááºááá·áºá¡áá¬ááá¯áᬠááœáá·áºáá« (á¥ááᬠVRRPá floating ip á¡ááœááº)á
ááááŠážá áœá¬á áá»áœááºá¯ááºááẠSSL áá±á«ááºážáá°ážáá¯áẠ(aka http áá¯ááº) ááœáẠhaproxy ááᯠconfigure áá¯ááºááŒá®áž RDP ááœááºááŒá áºáá»ááºáá±áááºáá»á¬ážááá¯ááŒáá·áºááẠáá±á¬á·ááºá¡ááºááá¯ááœáá·áºáá¬ážáááºá áá«áá²á· ááŒá±á¬ááááºááá¯ááẠá¡áááºááŸá¬ áá±á¬ááºááœá¬ážáááºá ááá¯á·ááŒá±á¬áá·áºá RDGateway á áá áºááá·áºááœááºážááŒááºážááá¯ááºáᬠâá¡á¬ážáá¯á¶ážâ áá±á¬ááºážáá«ážáá»á¬ážááœáẠáááºááŸááºáá¬ážááá·áº /RDWeb áááºážááŒá±á¬ááºážááẠáá»á±á¬ááºáá¯á¶ážáá±áá«áááºá á¡á²áá®ááŸá¬ á¡á¬ážáá¯á¶ážá /rpc/rpcproxy.dll áá²á· /remoteDesktopGateway/ áá«á á€ááá á¹á ááœááºá áá¯á¶ááŸáẠGET/POST áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážáááŒá¯áá«á áááºážááá¯á·á ááá¯ááºááá¯áẠáá±á¬ááºážááá¯áá»ááºá¡áá»áá¯ážá¡á á¬áž RDG_IN_DATAá RDG_OUT_DATA ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
ááááºááá»á¬ážáá±ááá·áº á¡áááºážáá¯á¶ážáá±á¬á· áá áºáá¯áá¯áá±á«á·á
á ááºážááŒáá·áºáá¡á±á¬ááºá
áá»áœááºá¯ááºááẠmstsc ááá¯ááœáá·áºáá«á áá¬áá¬ááá¯á·ááœá¬ážáá«á ááŸááºáááºážáá»á¬ážááœáẠ401 (ááœáá·áºááŒá¯áá»ááºáááŸááá²) á¡ááŸá¬ážáá±ážáá¯ááá¯ááŒáá·áºáá«á ááá¯á·áá±á¬áẠáá»áœááºá¯ááºáá¡áá¯á¶ážááŒá¯áá°á¡áááº/á áá¬ážááŸááºááᯠááá¯ááºááá·áºáᬠáá¯á¶á·ááŒááºáá»áẠ200 ááá¯ááŒáá·áºáá«á
áááºážááá¯ááááºááá¯ááºáááºá ááŒááºá áá«á ááŸááºáááºážáá»á¬ážááœáẠáá°áá®áá±á¬ 401 á¡ááŸá¬ážáá±ážáá¯ááᯠáá»áœááºá¯ááºááœá±á·ááŒááºááá«áááºá áá»áœááºá¯ááºááẠááŸá¬ážááœááºážáá±á¬ login/password ááá¯ááá¯ááºááá·áºáᬠ401 á¡ááŸá¬ážáá±ážáá¯ááᯠáááºáá¶ááœá±á·ááŒááºááááºááŒá áºáá«áááºá áá«áá²ááá¯á¡ááºáá«áááºá áá«á áá«ááá¯á·áááºážáááºá
áá±á¬á·ááºá¡áẠurl ááá¯áá¯á¶ážááŒááºáááºáááŒá áºááá¯ááºáá«á ááá¯á·á¡ááŒááºá haproxy ááœáẠ401 error ááá¯áááºááá¯á·áááºážááááºááá¯áá»áœááºá¯ááºááááá±á¬ááŒá±á¬áá·áº 4xx á¡ááŸá¬ážá¡á¬ážáá¯á¶ážááᯠ(á¡ááŸááºááááºáááºážááŒááºážááá¯ááºáá±á¬áºáááºážáá±ááœááºááŒááºáž) ááá¯áááºážáá«áááºá ááŒá¿áá¬ááŒá±ááŸááºážáááºáááºáž ááá·áºáá±á¬áºáááºá
áá¬ááœááºááŸá¯á á¡ááŸá áºáá¬áááŸá¬ á¡áá»áááºáá°áá áºáá áºáá¯áá»áŸáẠ4xx á¡ááŸá¬ážá¡ááœááºážáá»á¬áž (áá±á¬ááºááœááºááœááº) á¡áá±á¡ááœááºááᯠáá±ááœááºáááºááŒá áºááŒá®áž áááºážááẠáááºááŸááºáá¬ážááá·áºááá·áºáááºáá»ááºáááºáá»á±á¬áºááœááºáá«á áááºááŸááºáá¬ážááá·áºá¡áá»áááºá¡ááœáẠဠip á០áá±á¬ááºáááºáá»áááºáááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠ(ááŸá±á·áááºážááœááº) áááºáá»áá«á .
áááºážááá¬á¡áá áááºážááẠá áá¬ážááŸááºá¡á¬áž brute force ááŸáá¬ááœááºáááºááá¯ááºáá«á áááºážááẠ4xx á¡ááŸá¬ážáá»á¬ážááá¯áá¬ááœááºáá±ážáááá·áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠáááºááŸáááŒááºážáááŸááá±á¬ url (404) ááᯠáááŒá¬áá áá±á¬ááºážááá¯áá«áá á¡áá¬á¡ááœááºáááºáááºáž á¡áá¯ááºááŒá áºáááá·áºáááºá
á¡ááá¯ážááŸááºážáá¯á¶ážááŸáá·áº á¡áááá±á¬ááºáá¯á¶ážáááºážáááºážááŸá¬ backend ááá¯ááá·áºááœááºážááŒá®áž á¡ááá¯áá áºá á¯á¶áá áºáá¬áá±á«áºáá¬áá«á ááŒááºáááºáááºááŒáááºááŒá áºáááº-
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 ááẠá¡ááŸá¬ážáá áºáá¯áá±ážáááºá ááŸááºáááºážáá»á¬ážááœáẠááœá±á·ááŒááºááá¯ááºááá²á·ááá¯á·á
ááŸááºážáááºážáá»ááºá áá»áœááºáá±á¬áºá haproxy master áá²á· áá±ážáááºá á¥ááᬠáá«áá¬ážááááºáá°ážá
http-request deny_status 429 if { sc_http_err_rate(0) gt 4 }
á¡áá¯ááºááá¯ááºááẠá¡ááŸá¬áž 10 áá±á¬ááºáá¯ááºááœáá·áºááŒá¯áá«á
áá±á¬ááºáá¬ááœá±áá²á· áá¶áá«ááºááœá±ááᯠááŸá¯ááºáá±áááºá haproxy áááá¬ááŒá®ážá áááºážáá«á·ááá¯ááŒáá·áºá áœááºá ááŒááºáá±ážá áá«á·ááá¯ááá¯áá±á¬ááºážá¡á±á¬ááºáá¯ááºáááºáá«áá»á±á¬áºáááá·áºáááºá
ááŸááºáá»ááºáá»á¬ážááœáẠáááºááẠRD Gateway ááá¯áá¬ááœááºáááºá¡ááŒá¬ážáááºážáááºážáá»á¬ážááá¯á¡ááŒá¶ááŒá¯ááá¯ááºáááºá áááºážáááºáá±á·áá¬áááºá áááºáááºá á¬ážáááá·áºáááºá
Windows Remote Desktop Client (mstsc) ááŸáá·áºáááºáááºá áááºážááẠTLS1.2 (á¡áááºážáá¯á¶áž Windows 7 ááœááº) ááᯠááá¶á·ááá¯ážáá±ážááŒá±á¬ááºáž áááááŒá¯ááá·áºáá±á¬ááŒá±á¬áá·áº áá»áœááºá¯ááºááẠTLS1 ááᯠááœááºááœá¬áá²á·ááá«áááºá áááºááŸá cipher ááᯠááá¶á·ááá¯ážáá±ážáá²á·á¡ááœáẠá¡áá±á¬ááºážááœá±ááá¯áááºáž áá¬ážáá²á·ááááºá
áá¬ááŸáá¬ážááááºá áááºáá°áá±áá¯á¶áá²á· áá±á¬ááºážáá±á¬ááºážáá¯ááºáá»ááºáá±áá°ááœá±á¡ááœááºáá±á¬á· config áá áºáá¯áá¯á¶ážááᯠáááºáá±ážáá«áááºá
haproxy.conf
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 ááẠfloating white ip ááŒáá·áº ááŸá áºáá¯ááᯠáááºáá®ážááá¯ááºáááºá
ááœááºááŒá°áá¬á¡áááºážá¡ááŒá
áºáá»á¬áž- " two gig, two cores, gaming PC" ááŒáá·áº á
áááºááá¯ááºáá«áááºá á¡á
ááá·áºááºáá»á¬áž
source: www.habr.com