Kategori Mobile

iptables für Snom 870

Montag, Januar 20th, 2014

Wie in meinem früheren Post über das Snom 870 erwähnt, fehlen auf dem Snom 870 mit aktueller Firmware (V8.7.3.25) die Kernelmodule für iptables.

Auf dem Snom läuft ein Linux 2.6.19. Der geneigte Linux-Nutzer weiß, dass man diese Module cross-compilen kann.

Wie geht das?
Zunächst lädt man sich von Snom „Necessary tools to compile snom710,720,760,821,870,Vision und MeetingPoint sources“ herunter und entpackt diese.
Danach benötigt man den Linux-Kernel mit der Version 2.6.19 (aus dem Kernel-Git oder direkt von http://kernel.org).
Anschließend kopiert man die Sourcen der iptables-Module des Vanilla-Kernels in den entsprechenden Ordner des Snom-Kernels, und bearbeitet mit seinem Lielingstool die Config des Snom-Kernels um die Module zu kompilieren.
Anschließnd fügt man Toolchain und Compiler seinem Path hinzu

export PATH=/pfad/zu/necessary/tools/firmware/toolchain/CodeSourcery/Sourcery_G++_Lite/libexec/gcc/arm-none-linux-gnueabi/4.2.0:/pfad/zu/necessary/toolsfirmware/toolchain/CodeSourcery/Sourcery_G++_Lite/bin/:$PATH

Anschließend kann man die Module mit

make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm modules

kompilieren und mit

make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm modules_install INSTALL_MOD_PATH=/pfad/zu/modules
an seine Lieblingsstelle kopieren.

Die Module kann man nun auf das snom nach /lib/modules/KERNELVERSION/kernel laden.
Zuletzt muss man die /lib/modules/KERNELVERSION/modules.dep anpassen, damit mit module korrekt geladen werden können.


kernel/net/ipv4/netfilter/ipt_ecn.ko:
kernel/net/ipv4/netfilter/ip_tables.ko:
kernel/net/ipv4/netfilter/ip_conntrack_proto_sctp.ko:
kernel/net/ipv4/netfilter/ip_nat.ko:kernel/net/ipv4/netfilter/ip_conntrack.ko
kernel/net/ipv4/netfilter/ipt_TCPMSS.ko:
kernel/net/ipv4/netfilter/arpt_mangle.ko:
kernel/net/ipv4/netfilter/ipt_CLUSTERIP.ko:
kernel/net/ipv4/netfilter/ipt_tos.ko:
kernel/net/ipv4/netfilter/ipt_ttl.ko:
kernel/net/ipv4/netfilter/ipt_hashlimit.ko:
kernel/net/ipv4/netfilter/ip_nat_h323.ko:
kernel/net/ipv4/netfilter/ip_nat_pptp.ko:
kernel/net/ipv4/netfilter/ip_nat_snmp_basic.ko:
kernel/net/ipv4/netfilter/ipt_SAME.ko:
kernel/net/ipv4/netfilter/ipt_owner.ko:
kernel/net/ipv4/netfilter/iptable_nat.ko:
kernel/net/ipv4/netfilter/ip_nat_tftp.ko:
kernel/net/ipv4/netfilter/ip_conntrack.ko:
kernel/net/ipv4/netfilter/ip_conntrack_h323.ko:
kernel/net/ipv4/netfilter/iptable_raw.ko:
kernel/net/ipv4/netfilter/ipt_addrtype.ko:
kernel/net/ipv4/netfilter/ip_conntrack_pptp.ko:
kernel/net/ipv4/netfilter/ip_conntrack_ftp.ko:
kernel/net/ipv4/netfilter/ip_conntrack_netbios_ns.ko:
kernel/net/ipv4/netfilter/ip_conntrack_irc.ko:
kernel/net/ipv4/netfilter/ipt_ah.ko:
kernel/net/ipv4/netfilter/arp_tables.ko:
kernel/net/ipv4/netfilter/ip_conntrack_sip.ko:
kernel/net/ipv4/netfilter/ipt_recent.ko:
kernel/net/ipv4/netfilter/ip_nat_amanda.ko:
kernel/net/ipv4/netfilter/ipt_ULOG.ko:
kernel/net/ipv4/netfilter/ipt_REDIRECT.ko:
kernel/net/ipv4/netfilter/ipt_REJECT.ko:
kernel/net/ipv4/netfilter/ip_conntrack_tftp.ko:
kernel/net/ipv4/netfilter/ip_nat_ftp.ko:
kernel/net/ipv4/netfilter/iptable_filter.ko:
kernel/net/ipv4/netfilter/ip_nat_irc.ko:
kernel/net/ipv4/netfilter/ipt_NETMAP.ko:
kernel/net/ipv4/netfilter/ip_conntrack_amanda.ko:
kernel/net/ipv4/netfilter/ip_nat_sip.ko:
kernel/net/ipv4/netfilter/ipt_ECN.ko:
kernel/net/ipv4/netfilter/ipt_LOG.ko:
kernel/net/ipv4/netfilter/arptable_filter.ko:
kernel/net/ipv4/netfilter/ipt_iprange.ko:
kernel/net/ipv4/netfilter/iptable_mangle.ko:
kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko:
kernel/net/ipv4/netfilter/ipt_TOS.ko:
kernel/net/ipv4/netfilter/ipt_TTL.ko:

Es sind wahrscheinlich nicht alle Abhängigkeiten damit abgedeckt, aber für viele Zwecke reichen diese.

SSH auf einem Snom 870

Sonntag, Oktober 20th, 2013

Hatte ich doch ursprünglich eigentlich nur vor auf meinem neuen Snom 870 (ein IP-Telefon) einfach einen VPN-Router nach der Anleitung im SNOM-Wiki (wiki.snom.com) aufzusetzen.
Da die Anleitung ziemlich unverständlich ist, dauerte es erstmal bis das ich überhaupt Skripte mit dem VPN ausführen konnte.

  1.  Man muss in der OpenVPN-Config die Script-Security auf 3 system setzen. (Danke an den Blog-Inhaber)
    script-security 3 system
  2. Man sollte unbedingt im SNOM einen NC-Listening-Server angeben um die Logs vom OpenVPN-Deamon lesen zu können.
  3. Man erwate nicht, dass das Script aus dem Snom-Wiki funktioniert. Nach einigen Versuchen klappte es dann. Mein Skript sah aber nun so aus.
  4. while true ; do nc -l -p 8080 -c /bin/bash ; done

Mit einer primitiven Shell (ohne stderr und ohne Readline) ließ es sich herausfinden, dass auf dem SNOM 870 ein SSH-Server installiert ist. Es fehlten allerdings die Host-Keys. Zwar lassen sich die theoretisch auch auf dem SNOM anlegen, aber ich würde empfehlen diese auf einem anderen Computer anzulegen und über einen USB-Stick auf das Gerät zu schieben und unter /etc/ssh abzulegen.
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

Ein 16 GB vFAT formatierter USB-Stick ließ sich problemlos mounten.
Zum starten des ssh-servers genügt es dann einfach

/usr/bin/sshd

zu starten.
Da ich mir unsicher war, was passiert, wenn ich root ein Passwort gebe, habe ich kurzer Hand meinen SSH-Public-Key per

ssh-copy-id root@snom870

auf das Gerät geschoben.

Ein anschließendes Umsehen auf dem Gerät war sehr ernüchternd: Weder die Switch-Config

/proc/driver/switch_api

noch iptables waren auf dem Gerät.

Ein

cat /proc/cpuinfo

verriert mir aber, dass es sich um eine ARM-CPU handelt, wie sie auch in vielen Android-Smartphone zu finden ist.
Die meisten Android-System-Binarys (also keine APK-Dateien) lassen sich auf dem Gerät ausführen.

EDIT:
Um auf das Snom zu kommen ruft man einfach nc ip_snom870 8080 auf. Telnet eignet sich dafür nicht so sehr.
Zum Automatischen starten des sshd kann man einfach in der /etc/init.d/rcS, die Funktion startUpDaemons um folgende Zeilen ergänzen:

display "Start sshd" ".."
/usr/sbin/sshd