Bekijk de volledige versie : dropbear WAN Oleq
moormaster
05-08-2007, 01:28
Hi,
ich hab es geschafft, dropbear auf meinem wl500gP unter Oleq's firmware zu aktivieren:
mkdir -p /usr/local/etc/dropbear
dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
dropbear -p 2222
Vom lokalen Netz aus kann ich mich auch unter diesem Port einloggen. Nur vom Internet aus ist der ssh Dienst nicht erreichbar. Also habe ich versucht, den Port in den iptables freizugeben:
iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
Das scheint jedoch absolut keinen Unterschied zu machen. Der Eintrag wird jetzt zwar bei iptables --list mit angezeigt aber ich kann mich trotzdem nicht vom Internet aus einloggen. Der Port ist nach wie vor zu.
Ich fange auf meinem Rechner die syslog Messages vom Router ab und sehe so normaler Weise, wenn die Firewall im Router etwas blockt. Beim Verbindungsversuch zum ssh Server erscheinen jedoch keine Log-Nachrichten, welche bestätigen würden, dass die Firewall im Router diese Packete geblockt hat.
Auf meine anderen öffentlichen Dienste kann ich ohne Probleme zugreifen (aber die laufen ja auch nicht auf dem Router selbst).
Hat jemand eine Idee, was noch fehlt?
Port ist offen, aber wohin soll er das packet denn schicken ?
probiers mal damit ;)
iptables -t nat -A PREROUTING -i $1 -p tcp --dport 2222 -j DNAT --to-destination $4:2222
$1 = (WAN-Interface)-> ppp0 (Internet)
$4 (LAN-IPAddress)-> 192.168.1.1 (Router IP)
moormaster
05-08-2007, 11:25
Thx aber auch dies führt mich nicht zu der Lösung... Wieso muss der Router eigentlich Port 2222 erst zu sich selbst weiterleiten, wenn das Packet sich schon bei ihm befindet?
Ich glaube das Problem (allerdings noch nicht die Lösung) gefunden zu haben... Es ist nicht so, dass iptables den Port blockt, sondern ich habe einen DMZ zu einer bestimmten IP eingerichtet. Zu diesem scheint der Port jedes Mal durchgeleitet zu werden.
Schalte ich den DMZ aus, ist dropbear vollkommen ohne zusätzlichen iptables Eintrag vom Inet aus
erreichbar.
Der FTP Server auf dem Router selbst ist aber aber auch bei aktiviertem DMZ noch immer erreichbar.
Wie also muss iptables konfiguriert werden, dass auch Port 2222 vom DMZ ausgeschlossen wird (sofern aktiv) und zum lokalen dropbear Daemon geleitet werden kann?
ok ganz ohne iptables Eintrag gehts doch nicht... aber dennoch muss ich Port 2222 irgendwie vom DMZ ausschliessen. Meine anderen Port forwardings sowie andere Dienste des Routers (wie FTP) sind ja schliesslich auch weiterhin erreichbar trotz DMZ.
kay per dmz ich glaub dann musst du dafür nen Virtual Server erstellen per web config. der sollte ne höhere berechtigung als iptables haben.
"Wieso muss der Router eigentlich Port 2222 erst zu sich selbst weiterleiten, wenn das Packet sich schon bei ihm befindet?"
Aber nicht in jedemfall weiß der das es für ihn ist. so ist es nähmlich bei mir. hab keine dmz sondern hab per iptables alles mühselig weitergeleitet
moormaster
05-08-2007, 13:08
kay per dmz ich glaub dann musst du dafür nen Virtual Server erstellen per web config. der sollte ne höhere berechtigung als iptables haben.
"Wieso muss der Router eigentlich Port 2222 erst zu sich selbst weiterleiten, wenn das Packet sich schon bei ihm befindet?"
Aber nicht in jedemfall weiß der das es für ihn ist. so ist es nähmlich bei mir. hab keine dmz sondern hab per iptables alles mühselig weitergeleitet
Thx jetzt gehts so, wie ich es haben wollte :D
Allerdings reicht bei mir folgender iptables Eintrag aus:
iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
moormaster
10-09-2007, 17:22
Nach längerer Zeil ist mir nun ein neues Problem aufgefallen...
undzwar hab ich ein Script, was bei post-boot ausgeführt werden soll, damit dropbear startet:
#!/bin/sh
mkdir -p /usr/local/etc/dropbear
if ! [ -f /usr/local/etc/dropbear/dropbear_dss_host_key ] || ! [ -f /usr/local/e tc/dropbear/dropbear_rsa_host_key ]
then
dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
echo rsa/dss keys generated.
else
echo rsa/dss keys already exist -> ok
fi
iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
if ! ps | grep -q dropbear | grep -qv grep
then
dropbear -p 2222
echo dropbear started
else
echo dropbear already started -> ok
fi
insbesondere geht es dabei um den iptables-Befehl... dieser funktioniert an sich ordnungsgemäß... Ein Problem gibt es allerding... Ich habe ein weiteres Script, welches zum Zeitpunk X per cron gestartet wird, um die Verbindung zu trennen (damit der 24h Disconnect nicht zur falschen Zeit kommt).
per
killall -1 pppd
wird die Verbindung getrennt und kurz darauf wieder aufgebaut. Das Problem ist, dass der Eintrag in der INPUT table von den iptables danach immer verschwindet, der eigentlich Port 2222 für dropbear erlauben sollte.
Gibt es vielleicht bessere Möglichkeiten, die Verbindung zu trennen, ohne dass iptables verändert werden?
Oder würde es etwas bringen, den iptables... Befehl in post-firewall unterzubringen?
moormaster
10-09-2007, 23:27
Habs nochmal ausprobiert... ich hab das Script, was dropbear startet einfach ins post-firewall startup-Script gelegt... nun bleibt der iptables Eintrag erhalten.