smanettando un pò ho visto che al suo interno c'è un anima Linux, BusyBox.
Dopo aver configurato (da interfaccia web...) il router ho provato a vedere con un port scan la situazione delle porte e dei relativi serivizi avviati e con mia grande incredulità ho scoperto quanto segue:
(perdonate ma ero da una macchina win...)
D:\Programmi\nmap-4.10>nmap -sS 192.168.1.1 -p 1-65535
Starting Nmap 4.10 ( http://www.insecure.org/nmap ) at 2006-08-21 22:28 ora lega
le Europa occidentale
Interesting ports on 192.168.1.1:
Not shown: 65531 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
80/tcp open http
MAC Address: xx:xx:xx:xx:xx (D-Link)
Nmap finished: 1 IP address (1 host up) scanned in 27.704 seconds
D:\Programmi\nmap-4.10>nmap -sS myexternalipaddress -p 1-65535
Starting Nmap 4.10 ( http://www.insecure.org/nmap ) at 2006-08-21 22:30 ora lega
le Europa occidentale
Interesting ports on myexternalipaddress:
Not shown: 65530 closed ports
PORT STATE SERVICE
21/tcp open ftp (..azz, aggiungo io!!!)
22/tcp open ssh (..azz, aggiungo io!!!)
23/tcp open telnet (..azz, aggiungo io!!!)
80/tcp open http (..azz, aggiungo io!!!)
Nmap finished: 1 IP address (1 host up) scanned in 26.625 seconds
Non male...
Obiettivo immediato, chiudere o quantomento filtrare le porte aperte sull'interfaccia pubblica del router, nas0
(riporto un ifconfig):
# ifconfig
br0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ASYMMTU:1500
RX packets:268492 errors:0 dropped:0 overruns:0 frame:0
TX packets:256427 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:131389989 (125.3 Mb) TX bytes:86254493 (82.2 Mb)
br1 Link encap:Ethernet HWaddr 00:00:00:00:00:00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ASYMMTU:1500
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ASYMMTU:1500
RX packets:268571 errors:0 dropped:0 overruns:0 frame:0
TX packets:256383 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:131405969 (125.3 Mb) TX bytes:86208004 (82.2 Mb)
Base address:0x2800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1 ASYMMTU:0
RX packets:36 errors:0 dropped:0 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9152 (8.9 kb) TX bytes:9152 (8.9 kb)
nas0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx
inet addr:xx.xx.xx.xx Bcast:xx.xx.xx.xx Mask:255.255.248.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ASYMMTU:1500
RX packets:120109 errors:0 dropped:0 overruns:0 frame:0
TX packets:131308 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:77189801 (73.6 Mb) TX bytes:124255468 (118.4 Mb)
wlan0 Link encap:Ethernet HWaddr xx.xx.xx.xx.xx
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ASYMMTU:1500
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:129 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:32166 (31.4 kb)
In quanto digitando da browser http://myexternalipaddress mi viene restituita la maschera di login all'interfaccia di amministrazione del router!!!!!!
E da shell posso tranquillamente provare ad accedere ai servizi ssh e telnet, anch'essi esposti sull'interfaccia pubblica, quindi passibile di attacchi forza bruta (ad esempio)
Googlando un pò ho visto che il router utilizza iptables per la gestione delle regole di firewalling. Bene, premetto che per pigrizia non ho mai studiato attentamente iptables...mi sa che è giunto il momento per farlo!
Comunque, ho subito aggiunto le seguenti istruzioni:
# iptables -I INPUT -s 0.0.0.0/0 -p TCP --dport 22 -j DROP
# iptables -I INPUT -s 0.0.0.0/0 -p TCP --dport 21 -j DROP
Infatti dando iptables -nL ora ottengo:
# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 (prima non c'erano queste due righe)
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
CFG tcp -- 192.168.1.6 0.0.0.0/0 tcp dpt:80 Records Packet's Source Interface
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
pingflood icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8 state NEW
synflood tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x03/0x03
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x06
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x00
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x37
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x3F
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x29
DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT 2 -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8082
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:161
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8 state NEW
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
target prot opt source destination
TCPMSS tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS set 1360
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
pingflood icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8 state NEW
synflood tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x03/0x03
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x06
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x00
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x37
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x3F
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x29
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:23
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20
DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:500
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:520
DROP icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT 2 -- 0.0.0.0/0 0.0.0.0/0
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8 state NEW
ACCEPT udp -- 0.0.0.0/0 192.168.1.6 udp dpt:4772
ACCEPT tcp -- 0.0.0.0/0 192.168.1.6 tcp dpt:4662
DROP all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 3
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 state INVALID
Chain pingflood (2 references)
target prot opt source destination
RETURN icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8 limit: avg 1/sec burst 5
REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain synflood (2 references)
target prot opt source destination
RETURN tcp -- 0.0.0.0/0 0.0.0.0/0 limit: avg 15/sec burst 25
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset
Infatti:
D:\Programmi\nmap-4.10>nmap -P0 192.168.1.1
Starting Nmap 4.10 ( http://www.insecure.org/nmap ) at 2006-08-21 22:57 ora lega
le Europa occidentale
Interesting ports on 192.168.1.1:
Not shown: 1675 closed ports
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp filtered ssh
23/tcp open telnet
80/tcp open http
MAC Address: xx:xx:xx:xx (D-Link)
Nmap finished: 1 IP address (1 host up) scanned in 2.297 seconds
D:\Programmi\nmap-4.10>nmap -P0 myexternalipaddress
Starting Nmap 4.10 ( http://www.insecure.org/nmap ) at 2006-08-21 23:05 ora lega
le Europa occidentale
Interesting ports on myexternalipaddress:
Not shown: 1675 closed ports
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp filtered ssh
23/tcp open telnet
80/tcp open http
Nmap finished: 1 IP address (1 host up) scanned in 2.094 seconds
Vi posto anche i listing dei processi:
# ps aux
PID Uid VmSize Stat Command
1 root 1284 S init
2 root S [keventd]
3 root S [ksoftirqd_CPU0]
4 root S [kswapd]
5 root S [bdflush]
6 root S [kupdated]
7 root S [mtdblockd]
28 root 2844 S /usr/bin/cm_pc
29 root 1672 S /usr/sbin/diap
31 root 1284 S init
32 root 3748 S /usr/bin/cm_logic -m /dev/ticfg -c /etc/config.xml
52 root 1216 S /usr/sbin/thttpd -g -d /usr/www -u root -p 80 -c /cg
68 root 608 S /usr/bin/cm_klogd /dev/klog
69 root 636 S /sbin/dproxy -c /etc/resolv.conf -d
74 root 640 S /usr/sbin/ddnsd
186 root 680 S /usr/sbin/udhcpc -i nas0 -x
193 root 1292 S /usr/sbin/upnpd nas0 br0
208 root 1292 S /usr/sbin/upnpd nas0 br0
209 root 1292 S /usr/sbin/upnpd nas0 br0
211 root 1292 S /usr/sbin/upnpd nas0 br0
213 root 1292 S /usr/sbin/upnpd nas0 br0
214 root 1292 S /usr/sbin/upnpd nas0 br0
341 root 628 R /sbin/utelnetd
342 root 1288 S -sh
343 root 1284 R ps aux
Ora la mia domanda è: come posso fare per filtrare o meglio impedire l'accesso alla porta 80 dall'esterno che da diritto all'interfaccia di configurazione del router?
Vorrei che fosse accessibile solo da un set di indirizzi specifici della mia LAN interna.
Idem per telnet.
Vi ringrazio per l'aiuto che saprete darmi!
P.S. dal list di iptables sopra riportato notate qualcosa di particolare che non va e che andrebbe cambiato?
P.S.2: ma io mi chiedo, com'è possibile che i produttori di hw mettano in commercio dei prodotti con delle impostazioni di default del genere?!?!?

Scusate la lunghezza del post , ma ho cercato di essere il più preciso possibile.
Grazie ancora in anticipo!