Server web in internet

  • 6 Risposte
  • 265 Visite

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline uomoukko

  • Nuovo Iscritto
  • *
  • 43
    • github.com/uomoukko
Server web in internet
« il: 26 Luglio 2020, 07:33 »
Ciao... Mi chiedevo se fosse possibile abilitare il server web del DGA4130 in modo da farlo funzionare anche in internet ma ovviamente
con un set di pagine diverse e magari con diverso file di log in modo da non causare problemi di sicurezza.
Mi chiedevo anche se fosse opportuno disabilitare lato internet l'esecuzione di tutti i cgi-bin che potrebbero risultare dannosi
se eseguiti da un utente malintenzionato in modo da lasciare il minimo indispensabile.
Per fare un lavoro del genere, a spanne credo che si debba intervenire su /etc/nginx/nginx.conf per cambiare la root del server su internet
e su /etc/config/firewall per aprire la porta 80 su internet
Tra parentesi vedo che una seconda root e' stata gia' messa su 192.168.1.1:8080 e collegandomi restituisce il messaggio:
"You have been intercepted for an unknown reason"
Un'alternativa potrebbe essere quella di installare un altro web server per non disturbare il nginx ma vorrei evitare se non e' necessario.
Qualcuno ha gia' provato questa cosa?

Online FrancYescO

  • VIP
  • *****
  • 2580
Re:Server web in internet
« Risposta #1 il: 26 Luglio 2020, 09:30 »
Le soluzioni son quelle che hai citato, magari puoi utilizzare la classica configurazione con i virtualserver di nginx per mettere la cartella adatta a quello che vuoi servire da internet

Quello sulla porta 8080 dovrebbe esserequalcosa del parental control, o dell'interceptor che interviene quando non c' connesso (disattivato di default su Tim)

Offline uomoukko

  • Nuovo Iscritto
  • *
  • 43
    • github.com/uomoukko
Re:Server web in internet
« Risposta #2 il: 28 Luglio 2020, 20:59 »
Allora… fatte un po' di prove.
per aprire il web server su internet basta aggiungere questa regola al file /etc/config/firewall

Codice: [Seleziona]
config rule 'rule7z'
option name 'open_port_80'
option src 'wan'
option proto 'tcp'
option dest_port '80'
option family 'ipv4'
option target 'ACCEPT'

e fin qua tutto ok. Funziona. Con questa modifica
il pannello di controllo del modem viene esposto (pericolosamente) su internet..
I dolori vengono quando si configura nginx
Io ho provato ad aggiungere questo al file /etc/nginx/nginx.conf

Codice: [Seleziona]
# questa e' la parte aggiunta come primo server virtuale
server {
listen       miocomputer.dyndns.com:80;
server_name  miocomputer.dyndns.com;
root         /zzz;
location = / {
index index.html;
}
}

# segue la parte originale
server {
# ipv4
listen       80;
listen       443 ssl;
# ipv6
listen       [::]:80;
listen       [::]:443 ssl;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
        ...
dare sempre il comando # nginx -t per testare la configurazione
e poi il comando # nginx -s reload per riavviare il web server

Sembra che il  dns dinamico funzioni…. ma ho sempre paura che un utente esterno
possa accedere al pannello di configurazione del modem.
Ad esempio cosa succede quando un utente esterno si collega usando l'ip numerico
e il  dns dinamico non e' sincronizzato per vari motivi?

« Ultima modifica: 28 Luglio 2020, 21:13 da uomoukko »

Online FrancYescO

  • VIP
  • *****
  • 2580
Re:Server web in internet
« Risposta #3 il: 28 Luglio 2020, 21:12 »
Metti la regola su nginx di allow solo da ip privati

Offline uomoukko

  • Nuovo Iscritto
  • *
  • 43
    • github.com/uomoukko
Re:Server web in internet
« Risposta #4 il: 29 Luglio 2020, 22:05 »
Ehm… sembrava andare tutto discretamente ma.…
da rete locale riesco a connettermi a 192.168.1.1 port 80  e vedo giustamente la pagina del modem
riesco a connettermi (da fuori) all'ip dinamico/numerico del mio computer e vedo giustamente la pagina esterna
riesco a connettermi dal DGA4130 (telnet miocomputer.dyndns.com 80) e (facendo "GET / HTTP/1.0")
vedo giustamente la pagina esterna
pero'
dai computer collegato in lan non riesco a connettermi all'ip dinamico/numerico del mio computer
nemmeno da cmd infatti facendo un "telnet miocomputer.dyndns.com 80" mi da Connection refused
quindi non e' colpa di nginx ma c'e' chiaramente una regola REJECT nel firewall che ferma tutto.
La regola che ho aggiunto per aprire la porta 80 e' scritta due post piu' su. Non basta per la lan?
Eppure le altre porte le apro normalmente con lo stesso tipo di regola…. e da lan funzionano,
cioe' se (per fare un esperimento) apro la porta 23 (e abilito telnetd)
e da cmd di Windows faccio telnet miocomputer.dyndns.com mi si apre (giustamente) il login
e allora dove ho sbagliato?

P.S. sull'access.log (che salvo sulla chiavetta usb) vedo parecchi tentativi di exploit, il piu' gettonato sembra il ThinkPHP
« Ultima modifica: 29 Luglio 2020, 22:09 da uomoukko »

Online FrancYescO

  • VIP
  • *****
  • 2580
Re:Server web in internet
« Risposta #5 il: 30 Luglio 2020, 00:52 »
Quella roba si chiama NAT loopback, Che io ricordi disabilitato su firmware Tim

Offline uomoukko

  • Nuovo Iscritto
  • *
  • 43
    • github.com/uomoukko
Re:Server web in internet
« Risposta #6 il: 03 Agosto 2020, 19:56 »
capitolo finale (credo).
Ieri ho notato con orrore che riavviando il modem tutti le mie paure si erano avverate
ovvero il modem rispondeva da remoto con la pagina del modem locale.
Per fortuna avevo cambiato la password di default altrimenti mi sarei preoccupato
Allora prima di gettare la spugna ho provato questa configurazione:

Codice: [Seleziona]
   
 server {
   listen       80;                                              #era listen miocomputer.dyndns.org:80;
   root         /zzz/htdocs;
   add_header X-Real-IP $remote_addr;                                                                                                             
   access_log   /tmp/run/mountd/sda1/m/nginx/access.log;
   error_log   /tmp/run/mountd/sda1/m/nginx/error.log;
   location = / {
          index index.html;
    }
                                                                                                                                         }                                                                                                                                                                                                                                                                                             
 server {
     # ipv4
     listen       192.168.1.1:80;                                 #era listen  80;
     listen       192.168.1.1:443 ssl;                         #era listen 443 ssl;
     # ipv6
     # listen       [::]:80;
     # listen       [::]:443 ssl;                                                                                                                                                                                                                                                                 
      ssl_certificate /etc/nginx/server.crt;
      ssl_certificate_key /etc/nginx/server.key;
      ........ ecc ecc.....

con questa configurazione non ho problemi perche' solo con l'ip di lan 192.168.1.1
viene attivata la pagina di configurazione del modem
e qualsiasi altra configurazione mi porta alla pagina pubblica

Noto anche che il problema dell'altra volta (telnet miocomputer.dyndns.org 80 fatto da LAN)
che restituiva "connection refused" adesso funziona perfettamente e giustamente
restituisce la pagina web pubblica. Boh? A questo punto non so se c'entri il riavvio
del modem o questa modifica della configurazione di nginx.

Caso chiuso? Spero proprio di si.
« Ultima modifica: 03 Agosto 2020, 20:05 da uomoukko »