เปเบเบทเปเบญเบ, เบชเบฐเบเบฒเบเบเบต!
เบกเบตเบซเบผเบฒเบเบงเบดเบเบตเบเบตเปเบเบฐเปเบเบทเปเบญเบกเบเปเปเบเบฒเบเปเบฎเบทเบญเบเปเบเบซเบฒเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบซเปเบญเบเบเบฒเบเบเบญเบเบเปเบฒเบ. เบซเบเบถเปเบเปเบเบเบฑเปเบเปเบกเปเบเบเบฒเบเบเปเบฒเปเบเป Microsoft Remote Desktop Gateway. เบเบตเปเปเบกเปเบ RDP เบเปเบฒเบ HTTP. เบเปเบญเบเบเปเปเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบชเปเบฒเบเบฑเบเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒ RDGW เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบขเบนเปเบเบตเปเบเบตเป, เบเปเบญเบเบเปเปเบขเบฒเบเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเบกเบฑเบเบเบตเบซเบผเบทเบเปเปเบเบต, เปเบซเปเบเบทเบงเปเบฒเบกเบฑเบเปเบเบฑเบเปเบเบทเปเบญเบเบกเบทเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ. เบเปเบญเบเบเปเบญเบเบเบฒเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบปเบเบเปเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ RDGW เบเบญเบเบเปเบฒเบเบเบฒเบเบญเบดเบเปเบเบตเปเบเบฑเบเบเบตเปเบเบปเปเบงเบฎเปเบฒเบ. เปเบกเบทเปเบญเบเปเบญเบเบเบฑเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ RDGW, เบเปเบญเบเบเบฑเบเบเบตเบเบฑเบเปเบเบเบฑเบเบงเบปเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบญเบเปเบ, เปเบเบเบชเบฐเปเบเบฒเบฐเปเบกเปเบเบเบฒเบเบเบปเบเบเปเบญเบเบฅเบฐเบซเบฑเบเบเปเบฒเบ brute force. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฐโเบซเบฅเบฒเบโเปเบโเบเบตเปโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเปโเปเบเปโเบเบญเบโเบซเบฒโเบเบปเบโเบเบงเบฒเบกโเปเบโเบซเบเบถเปเบโเปเบโเบญเบดเบโเปเบเบตโเปเบเบฑเบโเบเปเบฝเบงโเบเบฑเบโเบงเบดโเบเบตโเบเบฒเบโเปเบฎเบฑเบโเปเบเบงโเบเบตเปโ. เปเบฅเปเบง, เปเบเบปเปเบฒเบเบฐเบเปเบญเบเปเบฎเบฑเบเบกเบฑเบเปเบญเบ.
RDGW เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบเปเปเบกเบตเบเบฒเบเบเบปเบเบเปเบญเบเปเบเป. เปเบกเปเบเปเบฅเปเบง, เบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบตเบเปเบเบตเบเปเบเปเบเปเบงเบเบเบฒเบเปเบเปเบเบญเบเปเบเบปเปเบฒเบเบฑเบเปเบเบทเบญเบเปเบฒเบเบชเบตเบเบฒเบงเปเบฅเบฐเบกเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบต. เปเบเปเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบเบนเปเบเปเบฅเบดเบซเบฒเบเบเบตเปเบเบทเบเบเปเบญเบเบซเบผเบทเบเบนเปเบเปเบฝเบงเบเบฒเบเบเปเบฒเบเบเบงเบฒเบกเบเบญเบเปเบเบเปเปเบกเบนเบเบเปเปเบชเบฐเบเบฒเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบกเบฑเบเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบซเบผเบตเบเปเบงเบฑเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบดเบเบเบฑเบเบเบต, เปเบกเบทเปเบญเบเบฐเบเบฑเบเบเบฒเบเบเบตเปเบเปเปเบชเบปเบเปเบเบเบทเปเบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบตเบเบญเบเบเปเบฅเบดเบชเบฑเบเปเบเบเบญเบกเบเบดเบงเปเบเบตเบขเบนเปเปเบฎเบทเบญเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฝเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเบเบญเบเบฅเบฒเบง.
เบงเบดเบเบตเบเบตเปเบเบตเปเบเบเบฒเบเบเบปเบเบเปเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบฒเบเปเบเบเบฒเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบญเบเปเบกเปเบเบเปเบฒเบเบเบปเบงเปเบเบเบเปเบฒเบเป, เบฅเบฐเบเบปเบเบเบฒเบเปเบเบตเบเปเบเป, เปเบฅเบฐ WAFs เบญเบทเปเบเป. เบเปเปเบซเปเบเบทเปเปเบงเปเบงเปเบฒ RDGW เบเบฑเบเปเบเบฑเบ http, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบเบฝเบเปเบเปเบเปเปเบญเบปเบฒเบเบฒเบเปเบเปเปเบเบเบดเปเบชเบเบฅเบฐเบซเบงเปเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเปเบเปเบฅเบฐเบญเบดเบเปเบเบตเปเบเบฑเบ.
เบเปเบญเบเบฎเบนเปเบงเปเบฒเบกเบต F5, A10, Netscaler (ADC). เปเบเบเบฒเบเบฐเปเบเบฑเบเบเบนเปเปเบเบดเปเบเปเบเบเบฅเบฐเบเบปเบเบซเบเบถเปเบเบเบญเบเบฅเบฐเบเบปเบเปเบซเบผเบปเปเบฒเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเปเบงเบปเปเบฒเบงเปเบฒเบกเบฑเบเบเปเปเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเบฑเปเบเบเปเบฒเบเบฒเบเบเปเบญเบเบเบฑเบเบเปเบฒเบเบเบฑเบ brute force เปเบเบฅเบฐเบเบปเบเปเบซเบผเบปเปเบฒเบเบตเป. เปเบฅเบฐเปเบกเปเบเปเบฅเปเบง, เบฅเบฐเบเบปเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบฑเบเบเบฐเบเบปเบเบเปเบญเบเบเปเบฒเบเบเบฒเบเปเบเบเปเปเบฒเบเปเบงเบกเปเบเป.
เปเบเปเบเปเปเปเบกเปเบเบเบธเบเปเบเปเบฅเบดเบชเบฑเบเบชเบฒเบกเบฒเบเบเบทเปเบเบฒเบเปเบเปเปเบเบเบฑเปเบเบเปเบฒเบง (เปเบฅเบฐเบเบญเบเบซเบฒเบเบนเปเบเปเบฅเบดเบซเบฒเบเบชเปเบฒเบฅเบฑเบเบฅเบฐเบเบปเบเบเบฑเปเบเบเปเบฒเบง :), เปเบเปเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบเบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบนเปเบฅเบเบงเบฒเบกเบเบญเบเปเบเปเบเป!
เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบฑเบเบซเบกเบปเบเบเบตเปเบเบฐเบเบดเบเบเบฑเปเบ HAProxy เบชเบฐเบเบฑเบเบเบฃเบตเปเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฃเบต. เบเปเบญเบเปเบเปเบเบปเบเบชเบญเบเปเบ Debian 10, haproxy version 1.8.19 เปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบตเปเบซเบกเบฑเปเบเบเบปเบ. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฑเบโเปเบเปโเบเบปเบโเบชเบญเบโเบกเบฑเบโเปเบโเบชเบฐโเบเบฑเบ 2.0.xx เบเบฒเบ repository เบเบฒเบโเบเบปเบโเบชเบญเบโ.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบญเบญเบเบเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒ debian เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบขเบนเปเบเบญเบเบเบญเบเปเบเบเบเบญเบเบเบปเบเบเบงเบฒเบกเบเบตเป. เปเบเบเบซเบเปเป: เปเบเบญเบดเบเปเบเบตเปเบเบเบชเบตเบเบฒเบง, เบเบดเบเบเบธเบเบขเปเบฒเบเบเบปเบเปเบงเบฑเปเบเบเบญเบ 443, เปเบเบญเบดเบเปเบเบตเปเบเบเบชเบตเบเบตเปเปเบเบปเปเบฒ - เบญเบตเบเบเบฒเบกเบเบฐเปเบเบเบฒเบเบเบญเบเปเบเบปเปเบฒ, เบเบปเบงเบขเปเบฒเบ, เบเบดเบเบเบธเบเบขเปเบฒเบเบเบปเบเปเบงเบฑเปเบเบเบญเบ 22. เปเบเบตเบเบเบฝเบเปเบเปเบชเบดเปเบเบเบตเปเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ (VRRP เบเบปเบงเบขเปเบฒเบ, เบชเปเบฒเบฅเบฑเบ ip เบฅเบญเบ).
เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เบเปเบญเบเปเบเปเบเบฑเปเบเบเปเบฒ haproxy เปเบเบฎเบนเบเปเบเบ SSL bridging (aka http mode) เปเบฅเบฐเปเบเบตเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเปเบเบทเปเบญเปเบเบดเปเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบทเปเบเบเบฒเบเปเบ RDP. เบชเบฐเบเบฑเปเบเปเบเบทเปเบญเปเบงเบปเปเบฒ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบขเบนเปเปเบเบเบฒเบ. เบเบฑเปเบเบเบฑเปเบ, เปเบชเบฑเปเบเบเบฒเบ /RDWeb เบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบเบเบปเบเบเบงเบฒเบก "เบเบฑเบเบซเบกเบปเบ" เบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒ RDGateway เปเบกเปเบเบซเบฒเบเปเบ. เบเบฑเบเปเบปเบเบเบฑเปเบเปเบกเปเบ /rpc/rpcproxy.dll เปเบฅเบฐ /remoteDesktopGateway/. เปเบโเบเปโเบฅเบฐโเบเบตโเบเบตเป, เบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบ GET/POST เบกเบฒเบโเบเบฐโเบเบฒเบโเบเปเปโเปเบเปโเบเบทเบโเบเปเบฒโเปเบเป; เบเบฐโเปเบเบโเบเบญเบโเปเบเบปเบฒโเปเบเบปเปเบฒโเบเบญเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบ RDG_IN_DATA, RDG_OUT_DATA เบเบทเบโเบเปเบฒโเปเบเป.
เบเปเปเบซเบผเบฒเบเบเบฒเบเปเบ, เปเบเปเบขเปเบฒเบเบซเบเปเบญเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ.
เปเบซเปเบเบปเบเบชเบญเบ.
เบเปเบญเบเปเบเบตเบ mstsc, เปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เปเบเบดเปเบเบชเบตเปเบเปเปเบเบดเบเบเบฒเบ 401 (เบเปเปเปเบเปเบฎเบฑเบเบญเบฐเบเบธเบเบฒเบ) เปเบเบเบฑเบเบเบถเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบชเปเบเบทเปเบเบนเปเปเบเป / เบฅเบฐเบซเบฑเบเบเปเบฒเบเบเบญเบเบเปเบญเบเปเบฅเบฐเปเบเบดเปเบเบเปเบฒเบเบญเบ 200.
เบเปเบญเบเบเบดเบเบกเบฑเบ, เปเบฅเบตเปเบกเบเบปเปเบเบกเบฑเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เปเบฅเบฐเปเบเบเบฑเบเบเบถเบเบเปเบญเบเปเบซเบฑเบเบชเบตเปเบเปเปเบเบดเบเบเบฒเบ 401 เบเบฝเบงเบเบฑเบ. เบเปเบญเบเปเบชเปเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ / เบฅเบฐเบซเบฑเบเบเปเบฒเบเบเบดเบเปเบฅเบฐเปเบซเบฑเบเบชเบตเปเบเปเปเบเบดเบเบเบฒเบ 401 เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ. เบเบฑเปเบเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเบญเบเบเปเบญเบเบเบฒเบ. เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฑเบ.
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบ url เปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ, เปเบฅเบฐเบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ 401 เปเบ haproxy, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเบฑเบ (เบเปเปเบเบฑเบเบเบปเบงเบเบดเบ, เปเบเปเบเบฑเบ) เบเบฑเบเบซเบกเบปเบ 4xx เบเบงเบฒเบกเบเบดเบเบเบฒเบ. เบเบญเบเบเบฒเบเบเบตเปเบเบฑเบเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒ.
เปเบเบเปเบเบทเปเบญเปเบเปเปเบฅเปเบงเบเบญเบเบเบฒเบเบเบปเบเบเปเบญเบเบเบฐเปเบเบฑเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฑเบเบเปเบฒเบเบงเบ 4xx เบเปเปเบเบดเบเบเบฒเบ (เปเบ backend) เบเปเปเบซเบเปเบงเบเปเบงเบฅเบฒเปเบฅเบฐเบเปเบฒเบกเบฑเบเปเบเบตเบเบเบญเบเปเบเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฐเบเบดเปเบชเบ (เบขเบนเปเบเปเบฒเบเบซเบเปเบฒ) เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเบตเปเบกเปเบเบตเบกเบเบฑเบเบซเบกเบปเบเบเบฒเบ 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
เบเปเปเปเบกเปเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบตเบเบตเปเบชเบธเบ, เปเบซเปเบกเบฑเบเบชเบฑเบเบชเบปเบ. เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฑเบเบขเบนเปเปเบ backend เปเบฅเบฐเบเบฑเบเปเบ frontend.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฐเบเบดเบเบฑเบเบเปเปเบเบนเปเปเบเบกเบเบตเบขเปเบฒเบเบซเบเบฒเบเบเบฒเบเปเบฅเบฐเบฅเบธเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป 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. เบเปเบญเบเบเปเปเปเบเบปเปเบฒเปเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบ, เบเบปเบงเบขเปเบฒเบ
http-request deny deny_status 429 เบเปเบฒ { sc_http_err_rate(0) gt 4 }
เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเปเบฎเบฑเบเบเบฐเบกเบฒเบ 10 เบเบงเบฒเบกเบเบดเบเบเบฒเบเบเปเบญเบเบเบตเปเบกเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบ.
เบเปเบญเบเบชเบฑเบเบชเบปเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฑเบเบเบปเบงเปเบฅเบ. เบญเบฒเบเบฒเบเบเบญเบ haproxy, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเบตเปเบเบเปเบฒเบซเบฒเบเบงเปเบฒเบเปเบฒเบเบเบฐเบเบญเบเบเปเบฒเบเบฐเปเบเบปเปเบฒ, เปเบเปเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒ, เปเบฎเบฑเบเปเบซเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบตเบเบถเปเบ.
เปเบเบเปเบฒเปเบซเบฑเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบฐเบเปเบฒเบงเบดเบเบตเบญเบทเปเบเปเบเบทเปเบญเบเบปเบเบเปเบญเบ RD Gateway, เบกเบฑเบเบเบฐเปเบเบฑเบเบซเบเปเบฒเบชเบปเบเปเบเบเบตเปเบเบฐเบชเบถเบเบชเบฒ.
เบเปเบฝเบงเบเบฑเบ Windows Remote Desktop Client (mstsc), เบกเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเบชเบฑเบเปเบเบเบงเปเบฒเบกเบฑเบเบเปเปเปเบเปเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ TLS1.2 (เบขเปเบฒเบเบซเบเปเบญเบเปเบ Windows 7), เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเบเปเบญเบเบญเบญเบเบเบฒเบ TLS1; เบเปเปเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบฅเบฐเบซเบฑเบเบเบฐเบเบธเบเบฑเบ, เบชเบฐเบเบฑเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฑเบเบเปเบญเบเบญเบญเบเบเบฒเบเบญเบฑเบเปเบเบปเปเบฒ.
เบชเปเบฒเบฅเบฑเบเบเบนเปเบเบตเปเบเปเปเปเบเบปเปเบฒเปเบเบซเบเบฑเบ, เบเบฝเบเปเบเปเบฎเบฝเบเบฎเบนเป, เปเบฅเบฐเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบเปเบเบต, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเปเบซเปเบเปเบฒเบ 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
เปเบเบฑเบเบซเบเบฑเบเบชเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบ backend? เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเบงเบฒเบกเบเบปเบเบเบฒเบเบเปเปเบเบงเบฒเบกเบเบดเบ. Haproxy เบเบฑเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบชเบญเบเบเปเบงเบ ip เบชเบตเบเบฒเบงเบเบตเปเปเบฅเบทเปเบญเบเปเบเป.
เบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบญเบกเบเบดเบงเปเบเบต: เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ "เบชเบญเบ gig, เบชเบญเบเปเบเบ, เปเบเบก PC." เบญเบตเบโเบเบฒเบก
เปเบญเบเบฐเบชเบฒเบเบญเปเบฒเบเบญเบตเบ:
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com