From 3f40192d551556c6eed2d1bb5270f34a90ae376b Mon Sep 17 00:00:00 2001 From: Thomas Lynch Date: Sat, 17 Sep 2022 19:22:27 +1000 Subject: [PATCH 1/2] Update README with new env vars Remove dataplaneapi junk --- README.MD | 7 +++---- docker-compose.yml | 1 - haproxy/Dockerfile | 5 ----- haproxy/dataplaneapi.hcl | 29 ----------------------------- haproxy/haproxy.cfg | 4 ---- img/captcha.png | Bin 36025 -> 23045 bytes img/nocaptcha.png | Bin 30447 -> 21289 bytes 7 files changed, 3 insertions(+), 43 deletions(-) delete mode 100644 haproxy/dataplaneapi.hcl diff --git a/README.MD b/README.MD index 87edb20..6c846ad 100644 --- a/README.MD +++ b/README.MD @@ -18,7 +18,6 @@ Improvements in this fork: - Choose protection modes "none", "pow" or "pow+captcha" per-domain or per-domain+path, with paths taking priority. - Whitelist IPs/subnets. - Maintenance mode page for selected domains. -- Include dataplaneapi, to sync map files to disk if edited during runtime. - In POW only mode, provide instructions and an encoded script to find the solution. - Many bugfixes. @@ -32,10 +31,11 @@ Add some env vars to docker-compose file: - RECAPTCHA_SECRET - your recaptcha secret key - CAPTCHA_COOKIE_SECRET - random string, a salt for captcha cookies - POW_COOKIE_SECRET - different random string, a salt for pow cookies +- HMAC_COOKIE_SECRET - different random string, a salt for pow cookies - RAY_ID - string to identify the HAProxy node by - BUCKET_DURATION - how long between bucket changes, invalidating cookies -- BACKEND_NAME - name of backend to build from hosts.map -- SERVER_PREFIX - prefix of server names used in server-template +- BACKEND_NAME - Optional, name of backend to build from hosts.map +- SERVER_PREFIX - Optional, prefix of server names used in server-template Add a domain name + backend IP to `haproxy/hosts.map` like: ```plain @@ -58,7 +58,6 @@ Before installing the tool, ensure that HAProxy is built with Lua support and ve - Copy [haproxy.cfg](haproxy/haproxy.cfg) to /etc/haproxy - Edit the `lua-load` directive to be the absolute path to [register.lua](src/scripts/register.lua) - Edit the paths of challenge.js and worker.js in the `http-request return` directive to the absolut path to the respective files in the haproxy/js folder -- Copy [dataplaneapi.hcl](haproxy/dataplaneapi.hcl) to /etc/haproxy - Copy or link [scripts](src/scripts) to /etc/haproxy/scripts - Copy or link [libs](src/libs) to /etc/haproxy/libs (or a path where Lua looks for modules). - Copy the map files from the haproxy folder to /etc/haproxy diff --git a/docker-compose.yml b/docker-compose.yml index 84feedd..b517855 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,6 @@ services: - ./haproxy/blocked.map:/etc/haproxy/blocked.map - ./haproxy/whitelist.map:/etc/haproxy/whitelist.map - ./haproxy/maintenance.map:/etc/haproxy/maintenance.map - - ./haproxy/dataplaneapi.hcl:/etc/haproxy/dataplaneapi.hcl - ./haproxy/trace.txt:/etc/haproxy/trace.txt - ./src/scripts/:/etc/haproxy/scripts/ - ./src/libs/:/etc/haproxy/libs/ diff --git a/haproxy/Dockerfile b/haproxy/Dockerfile index 945995c..cec691b 100644 --- a/haproxy/Dockerfile +++ b/haproxy/Dockerfile @@ -37,11 +37,6 @@ RUN set -eux; \ ; \ rm -rf /var/lib/apt/lists/*; \ \ - wget -O dataplaneapi_2.4.4_Linux_x86_64.tar.gz https://github.com/haproxytech/dataplaneapi/releases/download/v2.4.4/dataplaneapi_2.4.4_Linux_x86_64.tar.gz; \ - tar -zxvf dataplaneapi_2.4.4_Linux_x86_64.tar.gz; \ - chmod +x build/dataplaneapi; \ - cp build/dataplaneapi /usr/local/bin/; \ - \ wget -O haproxy.tar.gz "$HAPROXY_URL"; \ # echo "$HAPROXY_SHA256 *haproxy.tar.gz" | sha256sum -c; \ mkdir -p /usr/src/haproxy; \ diff --git a/haproxy/dataplaneapi.hcl b/haproxy/dataplaneapi.hcl deleted file mode 100644 index 97a9094..0000000 --- a/haproxy/dataplaneapi.hcl +++ /dev/null @@ -1,29 +0,0 @@ -config_version = 2 - -name = "meet_bedbug" - -mode = "single" - -dataplaneapi { - user "admin" { - insecure = true - password = "adminpwd" - } - - transaction { - transaction_dir = "/tmp/haproxy" - } - - advertised {} -} - -haproxy { - config_file = "/etc/haproxy/haproxy.cfg" - haproxy_bin = "/usr/local/sbin/haproxy" - - reload { - reload_delay = 5 - reload_cmd = "service haproxy reload" - restart_cmd = "service haproxy restart" - } -} diff --git a/haproxy/haproxy.cfg b/haproxy/haproxy.cfg index 5135127..22e77cc 100644 --- a/haproxy/haproxy.cfg +++ b/haproxy/haproxy.cfg @@ -13,10 +13,6 @@ defaults timeout client 50000ms timeout server 50000ms -program api - command dataplaneapi -f /etc/haproxy/dataplaneapi.hcl --update-map-files - no option start-on-reload - frontend http-in bind *:80 diff --git a/img/captcha.png b/img/captcha.png index 3fe498e397601032115dbd2ae4882791c3a00471..19545a729b771cba01cee64703b7ae880fad0b10 100644 GIT binary patch literal 23045 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 S4+ZwlkcO(xy;7A&FaHO`$pD=I literal 36025 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
MSRkI|R6(pVUh0)Id5 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

>_P#}3gdyi!=k#&1TW^-K0N7cqA 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 a;z8PfnyeH4aScddLPiFr`bE07VgCjjd7Kdd literal 30447 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 DMT2bo From 0af1a740ab9cc8b90f043ef1f48383befa77b9f4 Mon Sep 17 00:00:00 2001 From: Thomas Lynch Date: Sun, 18 Sep 2022 01:41:02 +1000 Subject: [PATCH 2/2] Make captcha submission automatic and not require clicking a "submit" form button --- docker-compose.yml | 7 ++- haproxy/js/challenge.js | 120 +++++++++++++++++++++++++-------------- src/scripts/hcaptcha.lua | 5 +- 3 files changed, 83 insertions(+), 49 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b517855..890b369 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,8 +24,11 @@ services: - ./haproxy/js/:/var/www/js/ - ./haproxy/html/maintenance.html:/var/www/html/maintenance.html environment: - - RECAPTCHA_SECRET=6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe - - RECAPTCHA_SITEKEY=6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI + # These are the hcaptcha and recaptcha test keys, not leaking any dont worry :^) + - HCAPTCHA_SITEKEY=20000000-ffff-ffff-ffff-000000000002 + - HCAPTCHA_SECRET=0x0000000000000000000000000000000000000000 + #- RECAPTCHA_SECRET=6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe + #- RECAPTCHA_SITEKEY=6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI - CAPTCHA_COOKIE_SECRET=changeme - POW_COOKIE_SECRET=changeme - HMAC_COOKIE_SECRET=changeme diff --git a/haproxy/js/challenge.js b/haproxy/js/challenge.js index 954c26e..651d257 100644 --- a/haproxy/js/challenge.js +++ b/haproxy/js/challenge.js @@ -1,51 +1,83 @@ +function finishRedirect() { + window.location=location.search.slice(1)+location.hash || "/"; +} + function finishPow(combined, answer) { document.cookie='z_ddos_pow='+combined+'#'+answer+';expires=Thu, 31-Dec-37 23:55:55 GMT; path=/; SameSite=Strict; '+(location.protocol==='https:'?'Secure=true; ':''); - const submitButton = document.querySelector('input[type=submit]') - if (submitButton) { - //button is shown only if captcha is enabled - submitButton.disabled = false; - submitButton.value = 'Submit'; - } else { - window.location=location.search.slice(1)+location.hash || "/"; + const hasCaptchaForm = document.querySelector('form'); + if (!hasCaptchaForm) { + finishRedirect(); } } -const combined = document.querySelector('[data-pow]').dataset.pow; -const [_userkey, challenge, _signature] = combined.split("#"); -const start = Date.now(); -if (window.Worker && crypto.subtle) { - const threads = Math.min(4,Math.ceil(window.navigator.hardwareConcurrency/2)); - let finished = false; - const messageHandler = (e) => { - if (finished) { return; } - finished = true; - workers.forEach(w => w.terminate()); - const [workerId, answer] = e.data; - console.log('Worker', workerId, 'returned answer', answer, 'in', Date.now()-start+'ms'); - const dummyTime = 5000 - (Date.now()-start); - window.setTimeout(() => finishPow(combined, answer), dummyTime); - } - const workers = []; - for (let i = 0; i < threads; i++) { - const shaWorker = new Worker('/js/worker.js'); - shaWorker.onmessage = messageHandler; - workers.push(shaWorker); - } - workers.forEach((w, i) => w.postMessage([challenge, i, threads])); -} else { - console.warn('No webworker or crypto.subtle support, using legacy method in main/UI thread!'); - function sha256(ascii){function rightRotate(value,amount){return(value>>>amount)|(value<<(32-amount))};var mathPow=Math.pow;var maxWord=mathPow(2,32);var lengthProperty='length';var i,j;var result='';var words=[];var asciiBitLength=ascii[lengthProperty]*8;var hash=sha256.h=sha256.h||[];var k=sha256.k=sha256.k||[];var primeCounter=k[lengthProperty];var isComposite={};for(var candidate=2;primeCounter<64;candidate+=1){if(!isComposite[candidate]){for(i=0;i<313;i+=candidate){isComposite[i]=candidate}hash[primeCounter]=(mathPow(candidate,.5)*maxWord)|0;k[primeCounter++]=(mathPow(candidate,1/3)*maxWord)|0}}ascii+='\x80';while(ascii[lengthProperty]%64-56){ascii+='\x00';}for(i=0;i>8){return;}words[i>>2]|=j<<((3-i)%4)*8}words[words[lengthProperty]]=((asciiBitLength/maxWord)|0);words[words[lengthProperty]]=(asciiBitLength);for(j=0;j>>3))+w[i-7]+(rightRotate(w2,17)^rightRotate(w2,19)^(w2>>>10)))|0);var temp2=(rightRotate(a,2)^rightRotate(a,13)^rightRotate(a,22))+((a&hash[1])^(a&hash[2])^(hash[1]&hash[2]));hash=[(temp1+temp2)|0].concat(hash);hash[4]=(hash[4]+temp1)|0}for(i=0;i<8;i+=1){hash[i]=(hash[i]+oldHash[i])|0}}for(i=0;i<8;i+=1){for(j=3;j+1;j-=1){var b=(hash[i]>>(j*8))&255;result+=((b<16)?0:'')+b.toString(16)}}return result} - const challengeIndex = parseInt(challenge[0], 16)*2; - let i = 0 - , result; - while(true) { - result = sha256(challenge+i); - if (result.substring(challengeIndex, challengeIndex+4) === '0041'){ - console.log('Main thread found solution:', i, result); - break; +const powFinished = new Promise((resolve, reject) => { + window.addEventListener('DOMContentLoaded', (event) => { + const combined = document.querySelector('[data-pow]').dataset.pow; + const [_userkey, challenge, _signature] = combined.split("#"); + const start = Date.now(); + if (window.Worker && crypto.subtle) { + const threads = Math.min(4,Math.ceil(window.navigator.hardwareConcurrency/2)); + let finished = false; + const messageHandler = (e) => { + if (finished) { return; } + finished = true; + workers.forEach(w => w.terminate()); + const [workerId, answer] = e.data; + console.log('Worker', workerId, 'returned answer', answer, 'in', Date.now()-start+'ms'); + const dummyTime = 5000 - (Date.now()-start); + window.setTimeout(() => { + finishPow(combined, answer); + resolve(); + }, dummyTime); + } + const workers = []; + for (let i = 0; i < threads; i++) { + const shaWorker = new Worker('/js/worker.js'); + shaWorker.onmessage = messageHandler; + workers.push(shaWorker); + } + workers.forEach((w, i) => w.postMessage([challenge, i, threads])); + } else { + console.warn('No webworker or crypto.subtle support, using legacy method in main/UI thread!'); + function sha256(ascii){function rightRotate(value,amount){return(value>>>amount)|(value<<(32-amount))};var mathPow=Math.pow;var maxWord=mathPow(2,32);var lengthProperty='length';var i,j;var result='';var words=[];var asciiBitLength=ascii[lengthProperty]*8;var hash=sha256.h=sha256.h||[];var k=sha256.k=sha256.k||[];var primeCounter=k[lengthProperty];var isComposite={};for(var candidate=2;primeCounter<64;candidate+=1){if(!isComposite[candidate]){for(i=0;i<313;i+=candidate){isComposite[i]=candidate}hash[primeCounter]=(mathPow(candidate,.5)*maxWord)|0;k[primeCounter++]=(mathPow(candidate,1/3)*maxWord)|0}}ascii+='\x80';while(ascii[lengthProperty]%64-56){ascii+='\x00';}for(i=0;i>8){return;}words[i>>2]|=j<<((3-i)%4)*8}words[words[lengthProperty]]=((asciiBitLength/maxWord)|0);words[words[lengthProperty]]=(asciiBitLength);for(j=0;j>>3))+w[i-7]+(rightRotate(w2,17)^rightRotate(w2,19)^(w2>>>10)))|0);var temp2=(rightRotate(a,2)^rightRotate(a,13)^rightRotate(a,22))+((a&hash[1])^(a&hash[2])^(hash[1]&hash[2]));hash=[(temp1+temp2)|0].concat(hash);hash[4]=(hash[4]+temp1)|0}for(i=0;i<8;i+=1){hash[i]=(hash[i]+oldHash[i])|0}}for(i=0;i<8;i+=1){for(j=3;j+1;j-=1){var b=(hash[i]>>(j*8))&255;result+=((b<16)?0:'')+b.toString(16)}}return result} + const challengeIndex = parseInt(challenge[0], 16)*2; + let i = 0 + , result; + while(true) { + result = sha256(challenge+i); + if (result.substring(challengeIndex, challengeIndex+4) === '0041'){ + console.log('Main thread found solution:', i, result); + break; + } + ++i; + } + const dummyTime = 5000 - (Date.now()-start); + window.setTimeout(() => { + finishPow(combined, i); + resolve(); + }, dummyTime); } - ++i; - } - const dummyTime = 5000 - (Date.now()-start); - window.setTimeout(() => finishPow(combined, i), dummyTime); + }); +}); + +function onCaptchaSubmit(callback) { + const captchaElem = document.querySelector('[data-sitekey]'); + captchaElem.insertAdjacentHTML('afterend', `

`); + captchaElem.remove(); + powFinished.then(() => { + fetch('/bot-check', { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: new URLSearchParams({ + 'h-captcha-response': callback, + 'g-recaptcha-response': callback, + }), + redirect: 'manual', + }).then(res => { + finishRedirect(); + }) + }); } + diff --git a/src/scripts/hcaptcha.lua b/src/scripts/hcaptcha.lua index a465ff2..754a40b 100644 --- a/src/scripts/hcaptcha.lua +++ b/src/scripts/hcaptcha.lua @@ -88,6 +88,7 @@ local body_template = [[ + %s @@ -102,7 +103,6 @@ local body_template = [[

Security and Performance by haproxy-protection

Vey ID: %s

- ]] @@ -146,9 +146,8 @@ local captcha_section_template = [[ Please solve the captcha to continue.
-
+
-
]]