CE L'HO FATTAAAAAAA, MA DA WINDzozZ.... ora vi spiego:
MATERIALI OCCORRENTI:- Firmware tutti, almeno ad oggi fino al AGTHF_1.1.2_001
quindi non state ad usare vecchi firmware se no dovrete fare upgrade
- un dominio tipo let's encrypt
con data scadenza valida e quindi le relative chiavi pubbliche e private
- il settaggio dynamic dns sul proprio modem di casa che ridiriga
il dominio in questione sull'Ip dinamico del proprio modem di casa
- una scheda di rete aggiuntiva con VLAN ID,
- Windows con Linux WSL per far girare nginproxy e tch-exploit-linux,
- Modifiche al registro di Windows per Internet Connection Sharing,
- nginxproxy,
- tch-exploit-linux.
PROCEDIMENTO:Ho scaricato nginxproxy, compilato staticamente da @imdadani che ho estratto su windows WSL.
(ah, ricordatevi di aggiungere nobody su /etc/group se non ce l'avete
e ricordatevi di lanciarlo da root perché lega pure la porta 80 anche se non serve)
Nella cartella conf ci copiate il file di certificato pubblico multiplo e quello di chiave privata.
i nomi non hanno alcuna rilevanza. Ricordatevi però che sotto le rispettive voci
ssl_certificate ci metterete il file con la catena di certificati (cert.pem da me)
ssl_certificate_key ci metterete la chiave privata (key.pem da me)
La chiave pubblica, la mia, sono 3 blocchi che iniziano con -----BEGIN CERTIFICATE-----
che contengono i tre certificati della mia catena di certificazione che parte da ISRG Root X1, continua con R3 e infine
www.miodominio.com.
La chiave privata è un unico blocco che inizia con -----BEGIN RSA PRIVATE KEY-----
Editate nginx.conf per specificare i nomi delle chiavi che userete.
Sempre nella nginx.conf settate, nella
listen la PORT LAN sulla quale avete ridiretto la connessione ACS che
arriverà sul modem che fornisce internet, e andrà al pc locale
tramite port-forward.
io avevo ridiretto la porta WAN TCP x.x.x.x:8443 sulla LAN TCP 192.168.1.30:8443
dove 192.168.1.30 è l'Ip del pc con Windows usato per il sbloccare il modem.
Quindi il mio nginx dovra' ascoltare la porta LAN 8443. Ci metto quindi
listen 8443 ssl default_server;
listen [::]:8443 ssl default_server;
Tutto bello ma come verifico di non aver sbagliato?
Sempre in nginx.conf, modifico temporaneamente il proxy_pass
e lo faccio puntare ad un server qualsiasi, ma che sia
httpproxy_pass http://www.slackware.com;
Proviamo? Dal pc di casa eseguo:
openssl s_client -connect
www.miodominio.com:8443GET / HTTP/1.0 (due volte invio)
a questo punto la richiesta di connessione (SSL) su
https://www.miodominio.com:8443arriva all'IP pubblico del mio modem-internet e tramite
port-forward del modem-internet va sulla porta locale (SSL)
https://192.168.1.30:8443che è gestita da nginxproxy che praticamente
trasforma https in http e ridirige su
http://www.slackware.com sulla porta 80
Quindi se tutto funziona, dopo i due INVIO,
dovrete veder passare i codici html della pagina di
www.slackware.com.
Rimettete pure proxy_pass
http://localhost:4346; nella conf. di nginxproxy.
(il numero di porta può essere cambiato, ma deve corrispondere allo stesso
numero di porta nel successivo comando tch-exploit-linux)Avevo già una scheda di rete USB funzionante sotto Windows con VLAN ID modificabile
Ho connesso la LAN/WAN del DGA4331 sul connettore della scheda di rete USB
e gli ho assegnato (Proprietà-Configura-Avanzate) VLAN ID 83
Disabilito momentaneamente la scheda di rete che va su Internet.
Se non l'ho fatto prima RESETTO il modem alle impostazioni di fabbrica
questo perché un modem con configurazione estesa ha il cwmp disabilitato.
Dal menù del modem: Gateway-Configurazione-Reset
Se è già stato resettato riavvio il DGA4331, ma non è necessario:
basta scollegare e ricollegare il cavo WAN/LAN per far riassegnare gli IP
Adesso devo fornire due IP, uno per entrambi i lati del cavo
che collega il pc al DGA4331.
Uso un mio programma DHCP che ascolta i mac-address e assegna
degli IP prestabiliti, che quindi sono sempre gli stessi
sempre 58.162.0.12 per il mac corrispondente al DGA4331
e sempre 58.162.0.1 per il mac corrispondente alla scheda-usb con VLAN lato pc
Vengono assegnati due Ip dinamici, ma senza lease, quindi l'IP dura un tempo infinito.
Il programma poi tramite option 43 manda solo al DGA4331 (58.162.0.12)
il comando di connessione a
https://www.miodominio.com:8443Credo si possa fare la stessa cosa con tch-exploit-linux usando l'opzione --dhcponly
# ./tch-exploit-linux --acsurl="
https://www.miodominio.com:8443/" --ip="58.162.0.1" --dhcponly
Aspetto che il mio programma mi segnali che ha dato l'ACK
alla richiesta DHCP su entrambi i lati, (quindi i due IP sono confermati),
e noto che non appena il modem riceve l'IP accende di verde Power Linea
e finalmente anche Web (che inizia a lampeggiare)
Infatti il modem ha ricevuto insieme all'Ip anche l'opzione 43
che lo comanda di collegarsi.
Allora abilito la scheda di rete che mi da internet,
quella che avevo prima disabilitato, e poi la condivido
(Proprietà-Condivisione-Consenti ad altri utenti di collegarsi...)
avendo l'accortezza di aver settato le chiavi di registro di Windows
così da far condividere Internet tramite routing su IP 58.162.0.1
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters]
"ScopeAddress"="58.162.0.1"
"ScopeAddressBackup"="58.162.0.1"
così l'IP della scheda sul pc viene ad essere identico a quello
che gli ho dato io via mio DHCP). Ma questa condivisione mi attiva
un secondo DHCP di Windows che assegna ip su 58.162.0.X
e che quindi potrebbe far cambiare l'IP del modem,
(ma non del pc, 58.162.0.1 perché è fissato dalla condivisione internet)
Test eventuale: se io dal pc facendo ping 58.162.0.12 sento la risposta,
significa che il modem DGA4331 è ancora con quell'IP quindi proseguo,
se no eventualmente rifaccio la procedura.
Nota aggiuntiva: Se dovessi rifar tutto e quindi ri-DISABILITARE lato pc
la scheda di rete collegata al DGA4331, ho notato che disabilitando
la scheda di rete condivisa, il DHCP di Windows rimane ATTIVO.
Quindi PRIMA tolgo la Condivisione, POI disabilito la scheda di rete)Adesso, sempre da WSL, dopo aver precedentemente estratto
tch-exploit-linux, lo lancio:
# ./tch-exploit-linux --port=4346 --ip="58.162.0.1"
Quindi ricapitolando, l'opzione 43 del DHCP comanda il modem
in 58.162.0.12 di collegarsi al
https://www.miodominio.com:8443la connessione viene ridiretta dal port-forward a
https://192.168.1.30:8443la connessione viene presa da nginxproxy che a sua volta la
dirotta in
http://192.168.1.30:4346e questa connessione viene gestita da tch-exploit-linux
Alla fine vedrete scorrere un sacco di scritte verdi,
vedrete passare il file in bash che modifica il dropbear ecc
>>> .STS REQUEST
poi vedrete questo
*** PRESS AND HOLD THE WPS BUTTON ON YOUR GATEWAY ***
Toccate il tasto WPS con un tocco breve, se funziona non si deve accendere
la luce gialla del WPS e nemmeno rossa ma vedrete
>>>WPS CALLBACK
e poi All done
A questo punto tch-exploit SI FERMA e restituisce il prompt
Questo è il segno che tutto è andato bene.
Cambiate i cavi, e collegatevi alla porta LAN del DGA4331
che vi assegnerà un IP 192.168.1.x e lanciate ssh
$ ssh 192.168.1.1 -l root
[email protected]'s password:
BusyBox v1.31.0 () built-in shell (ash)
_______ __ __ __
|_ _|.-----.----.| |--.-----.|__|.----.-----.| |.-----.----.
| | | -__| __|| | || || __| _ || || _ | _|
|___| |_____|____||__|__|__|__||__||____|_____||__||_____|__|
N E X T G E N E R A T I O N G A T E W A Y
--------------------------------------------------------------------
NG GATEWAY SIGNATURE DRINK
--------------------------------------------------------------------
* 1 oz Vodka Pour all ingredients into mixing
* 1 oz Triple Sec tin with ice, strain into glass.
* 1 oz Orange juice
--------------------------------------------------------------------

Nota finale: la procedura una volta avviata è facile,
riesce alla primae soprattutto è ripetibile.
Infatti dopo aver provato col firmware 1.0.1 ho messo config estesa
per fare gli aggiornamenti del firmware, poi ho aggiornato alla 1.1.2_001,
poi ho resettato per togliere la config estesa
e ho ottenuto di nuovo il root YEAH!