Ist die Geschäftskontinuität nicht Teil der Sicherheit?
Andrea Covello
In meinem letzten Post habe ich eine nette kleine Hardware Appliance von PCengines vorgestellt, die als Home Firewall verwendet werden kann.
Ich habe in dem Artikel festgehalten, dass die Appliance für andere Dinge gebraucht werden kann. Eines dieser Szenarios ist ein spezieller Secure Remote Support, das die selbe Hardware und einige Add-on-Module verwendet.
Nehmen wir an, Sie haben ein Gerät bei einem Kunden und sie müssen aus Management- und Konfigurationsgründen darauf zugreifen.
Manchmal ist es nicht möglich, den Remote Access des Kunden zu nutzen. Oder der Access erfüllt nicht alle Ihre Anforderungen.
Ich werde diesen Artikel in zwei Teilen publizieren. Im ersten Teil werden wir die Appliance konfigurieren. Im Zweiten werden wir uns des VPN annehmen und weiteres Feintuning in Sachen Sicherheit vornehmen.
In diesem Miniprojekt werden wir die Remote Access Appliance bauen und sie dann konfigurieren, damit sie sicher im Betrieb ist und nicht zu teuer wird.
Definieren wir die Anforderungen:
Das Design der Appliance ist einfach, aber es ist in der Lage, auf grössere Projekte angepasst zu werden. Aber für den Moment ist folgendes Design relevant:
Vorgesehen ist, die Appliance an ein dediziertes _Remote-Support_-Interface anzuschliessen. Das kann unter anderem über Cross-Over-Kabel geschehen. Dies ermöglicht den Zugriff zum Server über eine lokale Konsolen-Session.
Wenn die APU eingeschaltet wird, sollte sie die folgenden Aktionen ausführen:
Wir nutzen die selbe APU-Hardware-Konfiguration, die in meinem vorherigen Artikel beschrieben wurde:
Komponente | Link | Euro | USD |
---|---|---|---|
Board | PCEngines apu1d4 | 150.00 | 150.00 |
Speicher | PCEngines msata16d | 20.00 | 20.00 |
Stromzufuhr | PCEngines ac12veur2 | 5.00 | 5.00 |
Case | PCEngines case1d2bluu | 10.00 | 10.00 |
Um die mobile Internetverbindung zustande zu bringen, brauchen wir eine Auswahl der folgenden Komponenten:
Komponente | Link | Euro | USD |
---|---|---|---|
UMTS mPCIe card | Ericsson F5521gw | 36.00 | 39.00 |
UMTS mPCIe card | HG Sierra UMTS 3G HSPDA PCI-E MC8775 | 27.00 | 30.00 |
Interne Antenne | Internal GSM/UMTS/LTE/BT/WiFi Antenna | 7.00 | 7.00 |
Externe Antenne | Antenna SMA reverse | 2.00 | 3.00 |
Antennenanschluss | Pigtail cable | 2.00 | 2.00 |
Ich habe diese Konfiguration mit den UMTS mPCIe cards von Sierra und Ericsson mit SIM-Karten von Sunrise und Swisscom getestet. Sie sollte aber mit anderen Modulen einwandfrei funktionieren so lange sie vom Betriebssystem erkannt werden. So sollten auch andere Provider erkannt werden, so lange sie mobilen Datenverkehr auf ihrem Netz erlauben.
Dieses Projekt ist ein Projekt aus Liebe und Leidenschaft, da es so viele Features in ein kleines Paket integriert haben. Werfen wir einen Blick auf ein Feature der Produktbeschreibung:
Der zweite Mini PCI Express Slot in der Mitte ist mit dem SIM-Socket auf der Unterseite des Motherboards verbunden. Die SIM-Karte muss in den Slot eingeführt werden. Die Karte muss in den Slot gedrückt werden, bis es klick macht.
Wir können jedes Mobilabo nutzen, das Datenkonnektivität aktiviert hat, sei das EDGE, UMTS oder LTE. Ich nutze eine zweite SIM-Karte, die über mein normales Sunrise-Abo läuft und mich 5.00 Franken pro Monat kostet. Aber jeder andere Provider geht auch.
In diesem Projekt nutzen wir folgende Software-Komponenten:
Komponente | Link | Bemerkung |
---|---|---|
OS Debian Jessie (8) | APU version | Ein Debian 8 Release das auf APUs ausgelegt ist, das über einen Serial Port auf der APU installiert werden kann. Gute Arbeit von Stanislav Sinyagin und lesen Sie das README Dokument |
openVPN | Quick Start Guide | Wir nutzen das um einen sicheren Tunnel zu unserer Support Appliance zu erstellen. Siehe auch What is openVPN? |
openSSH | Homepage | Für den sicheren Konsolenzugriff nutzen wir diese robuste Software des openBSD-Projekts |
Die Tatsache, dass wir eine normale x64 Debian Distribution nutzen gibt uns fast unendliche Möglichkeiten in der Softwarewahl. Damit werden unsere aktuellen und künftigen Bedürfnisse gedeckt.
Bereiten wir uns also vor auf die Installation nach der hier ausgeführten Anleitung vor. Stellen Sie sicher, dass das Mobilfunkmodul im mPCIe slot 2 eingesteckt ist.
Folgende Schritte wurde in Linux durchgeführt, aber Sie können ihre bevorzugte Umgebung nutzen:
Laden Sie die pcengines-apu-debian-cd 64bit Version herunter:
wget https://github.com/ssinyagin/pcengines-apu-debian-cd/releases/download/8.0-20150503/debian-8.0-amd64-CD-1.iso
Es gibt keinen Weg, die ISO Binary zu verifizieren, aber da sie auf GitHub gehostet ist können die benötigten Konfigurationsdaten heruntergeladen werden und Sie können mit Hilfe des README ihre eigene ISO (32bit oder 64bit) in ihrer vertrauten Umgebung bauen.
dd if=debian-8.0-amd64-CD-1.iso of=/dev/sdb bs=16M
Jetzt benötigen Sie Konsolenzugriff auf Ihre APU Appliance um die Installations des Betriebssystems zu beginnen. Daher konfigurieren Sie den Serial Terminal Access wie hier beschrieben.
Sie sollten nun einen BIOS POST sehen:
PC Engines APU BIOS build date: Apr 5 2014 Reading data from file [bootorder] SeaBIOS (version ?-20140405_120742-frink) SeaBIOS (version ?-20140405_120742-frink) Found coreboot cbmem console @ df150400 Found mainboard PC Engines APU Relocating init from 0x000e8e71 to 0xdf1065e0 (size 39259) Found CBFS header at 0xfffffb90 found file "bootorder" in cbmem CPU Mhz=1001 Found 27 PCI devices (max PCI bus is 05) ... ... Build date: Apr 5 2014 System memory size: 4592 MB Press F12 for boot menu.
Wenn das Installationsmedium erkannt wird, dann sehen Sie das Debian Installer Menu:
┌───────────────────────────────────────┐ │ Debian GNU/Linux installer boot menu │ ├───────────────────────────────────────┤ == > │ Install │ │ Graphical install │ │ Advanced options > │ │ Help │ │ Install with speech synthesis │ │ │ │ │ │ │ │ │ │ │ └───────────────────────────────────────┘
Der Default, Install, wird nach einigen Sekunden ausgewählt, was zu einer automatischen Installation führt. Keine Sorge wegen der Video Error Message, drücken Sie einfach SPACE
.
Undefined video mode number: 314 Press <ENTER> to see video modes available, <SPACE> to continue, or wait 30 sec
Konfigurieren Sie den Hostnamen:
┌─────────────────────┤ [!] Configure the network ├─────────────────────┐ │ │ │ Please enter the hostname for this system. │ │ │ │ The hostname is a single word that identifies your system to the │ │ network. If you don't know what your hostname should be, consult your │ │ network administrator. If you are setting up your own home network, │ │ you can make something up here. │ │ │ │ Hostname: │ │ │ │ bluebrick____________________________________________________________ │ │ │ │ <Go Back> <Continue> │ │ │ └───────────────────────────────────────────────────────────────────────┘
Und jetzt übernimmt der Installer:
┌─────────────────────┤ Installing the base system ├──────────────────────┐ │ │ │ 66% │ │ │ │ Configuring man-db... │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────┤ Select and install software ├─────────────────────┐ │ │ │ 13% │ │ │ │ Running install-firmware... │ │ │ └─────────────────────────────────────────────────────────────────────────┘
Sobald dieser beendet ist, sehen Sie Folgendes:
┌─────────────────────┤ Finishing the installation ├──────────────────────┐ │ │ │ 96% │ │ │ Sent SIGKILL to all processes... │ Requesting system halt │ └───────────────────[ 825.181045] reboot: System halted──────────────────┘
Der Installer initiiert einen Systemhalt (kein Reboot):
Wenn alles gut funktioniert hat, erscheint das GRUB Boot Menu:
GNU GRUB version 2.02~beta2-22 +----------------------------------------------------------------------------+ |*Debian GNU/Linux | | Advanced options for Debian GNU/Linux | | | | | | | | | | | | | | | | | | | | | +----------------------------------------------------------------------------+ Use the ^ and v keys to select which entry is highlighted. Press enter to boot the selected OS, `e' to edit the commands before booting or `c' for a command-line.
Nach einigen Sekunden wird das System starten und Sie sehen den Login-Bildschirm.
Loading Linux 3.16.0-4-amd64 ... Loading initial ramdisk ... [ 0.090336] ..MP-BIOS bug: 8254 timer not connected to IO-APIC [ 3.280512] i8042: No controller found Loading, please wait... fsck from util-linux 2.25.2 /dev/sda5: clean, 20698/971040 files, 247375/3878144 blocks [ 4.836593] systemd-fsck[260]: /dev/sda1: clean, 328/30976 files, 39576/123904 blocks Debian GNU/Linux 8 bluebrick ttyS0 bluebrick login:
Das Standard-Root-Passwort lautet “pcengines” und muss gleich nach dem Login geändert werden.
passwd
Die Systeminstallation ist damit abgeschlossen.
Bevor Sie fortfahren sollten Sie das System updaten und alle Patches mit folgendem Kommando einspielen:
apt-get update && apt-get upgrade -y
Nun können Sie die Mobilfunkmodule konfigurieren
Es geht nun daran, zu verifizieren, dass der Linux Kernel das mPCIe Mobilmodem erkannt hat.
Dabei hilft das folgende command script das alle dem System bekannte Geräte durchsucht und Mobile Modems ausgibt.
for n in `ls /sys/class/*/*{ACM,wdm,usb0}*/device/interface`;do echo $(echo $n|awk -F '/' '{print $5}') : $(cat $n);done
In meinem Fall ist das Ericsson 5521gw Modul installiert.
ttyACM0 : F5521gw Mobile Broadband Modem ttyACM1 : F5521gw Mobile Broadband Data Modem ttyACM2 : F5521gw Mobile Broadband GPS Port cdc-wdm0 : F5521gw Mobile Broadband Device Management cdc-wdm1 : F5521gw Mobile Broadband USIM Port
Sie müssen verifizieren, dass das Modem funktioniert und daher werden wir uns an seinem Managementinterface zu schaffen machen. Es hört dem Gerät auf /dev/ttyACM0 zu. Um das zu tun, installieren Sie das Serial Terminal Tool:
apt-get install picocom
Aber Achtung! Wenn Sie picocom als nested Serial Console Session verwenden wollen, dann könnte das die Session blockieren, da es dieselben Control Commands wie minicom nutzt – CTRL+A. Verbinden Sie sich besser über SSH (openSSH ist standardmässig installiert und aktiviert) oder nutzen Sie eine andere Terminalkonsole wie miniterm.
Verbinden wir das Modem mit dem Serial Port und geben einen Managementbefehl ein:
picocom -b 115200 /dev/ttyACM1 picocom v1.7 port is : /dev/ttyACM1 flowcontrol : none baudrate is : 115200 parity is : none databits are : 8 escape is : C-a local echo is : no noinit is : no noreset is : no nolock is : no send_cmd is : sz -vv receive_cmd is : rz -vv imap is : omap is : emap is : crcrlf,delbs, Terminal ready
Jetzt können wir mit dem Modem Configuration Interface interagieren. Es nutzt das HAYES Command Set.
Menschen wie ich, die schon lange in diesem Business arbeiten erinnern sich an die Tage, an denen wir unsere Analogmodems mit ISPs verbunden haben und dann ein bisschen PSTN hacking betrieben haben.
Wie dem auch sei, tippen Sie einfach at und drücken Sie dann enter und achten Sie darauf, ob das Modem mit einem OK auf den Standardinput reagiert.
at OK
Gut, das Modem funktioniert und hat geantwortet auf unseren Attention (AT) Befehl. Geben Sie ihm nun den Befehl, mehr Informationen auszugeben. Das können Sie mit dem ATI Befehl tun (I steht für Information).
ati3 F5521gw Mobile Broadband Module OK ati7 Modem Configuration Profile Product Type Terminal Adapter Interfaces RS-232, USB Options PPP, RLP, V42bis OK ati9 (1.0ERI1900\\MODEM\\F5521gw5D) OK
Scheint so, als ob wir das Modem für die nächsten Schritte der Konfiguration brauchen.
Hier die wichtigsten Befehle:
Befehl | Beschreibung |
---|---|
AT+CFUN | Setzt das Level der Telefonfunktionalität (0: Minimal, 1: Vollständig, 4: Deaktiviert) |
AT+CPIN=1234 | PIN Code eingeben |
AT+CPWD=“SC”,“old”,“new” | Wechseln Sie den PIN von ‘alt’ auf ‘neu’ |
AT+CLCK=“SC”,0,“1234” | PIN code entfernen |
ATI | Status (Hersteller, Modell, Revision, IMEI, andere Fähigkeiten) |
AT+COPS=? | Vorhandene Netzwerke auflisten 0 – Unbekannt, 2 – Aktuell, 3 – Verboten, Longname, Shortname, Numerische ID, “AcT” |
AT+CSQ | Signalstärke anzeigen. Antwort: +CSQ: |
ATD*99# | Access Point anwählen |
AT+CGDCONT=1,“IP”,“access.point.name” | Definiert den Providerkontext um auf den Datenpaketservice zuzugreifen |
Bevor Sie weiterfahren, stellen Sie sicher, dass der Adapter ein Signal empfängt und die vorhandenen Provider erkennt. Tippen sei at+cops=? ein und warten Sie einige Minuten.
at+cops=? +COPS: (2,"Swisscom","Swisscom","22801",2),(2,"Swisscom","Swisscom","22801",0),(3,"Sunrise","Sunrise","22802",0),(3,"Sunrise","Sunrise","22802",2),(3,"orange CH","ORANGE","22803",0),(3,"orange CH","ORANGE","22803",2) OK
Wie Sie sehen können habe ich aktuell eine Swisscom SIM-Karte installiert, da sie den Code 2 am Anfang hat und die anderen haben Code 3 wie in der obigen Tabellen ausgeführt.
Zuguterletzt prüfen wir die Signalqualität:
at+csq +CSQ: 14,99 OK
Das Signal ist recht gut aber gehen Sie einen Schritt weiter. Verlassen Sie die picocom Terminal Session. Drücken Sie dazu CTRL+A und CTRL+X.
Nun da das Mobilfunkmodul funktioniert und Zugriff auf den Service hat müssen Sie es für den Internetzugriff konfigurieren. Dazu fehlt Ihnen ein wichtiger Part des Stacks: PPP. Das Point to Point Protocol ist die Basis eines jeden IP-Zugriffs über Modems. Daher: Installieren wir es.
root@bluebrick:~# apt-get install ppp Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libpcap0.8 The following NEW packages will be installed: libpcap0.8 ppp 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 471 kB of archives. After this operation, 1,256 kB of additional disk space will be used. Get:1 http://http.debian.net/debian/ jessie/main libpcap0.8 amd64 1.6.2-2 [133 kB] Get:2 http://http.debian.net/debian/ jessie/main ppp amd64 2.4.6-3.1 [338 kB] Fetched 471 kB in 1s (249 kB/s) Selecting previously unselected package libpcap0.8:amd64. (Reading database ... 18828 files and directories currently installed.) Preparing to unpack .../libpcap0.8_1.6.2-2_amd64.deb ... Unpacking libpcap0.8:amd64 (1.6.2-2) ... Selecting previously unselected package ppp. Preparing to unpack .../ppp_2.4.6-3.1_amd64.deb ... Unpacking ppp (2.4.6-3.1) ... Processing triggers for man-db (2.7.0.2-5) ... Processing triggers for systemd (215-17) ... Setting up libpcap0.8:amd64 (1.6.2-2) ... Setting up ppp (2.4.6-3.1) ... Processing triggers for libc-bin (2.19-18) ... Processing triggers for systemd (215-17) ...
Sie benötigen PPP da es uns alle nötigen Werkzeuge bietet, um das Mobilfunkmodem automatisch zu konfigurieren und die Verbindung zum Provider aufzubauen.
Erinnern Sie sich an die Geräte, die vom System als Modem erkannt werden? Nebst ttyACMx war da noch cdc-wdmx. Letzteres Gerät ist zuständig für eine Ethernet-Emulation des Mobilfunkmoduls. Wenn sie folgenden Befehl ausführen, werden Sie das _unkonfigurierte wwan0-Gerät sehen:
ifconfig -a
wwan0 Link encap:Ethernet HWaddr 02:80:37:ec:02:00 BROADCAST MULTICAST MTU:1500 Metric:1 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:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Es gilt jetzt, die richtige Konfiguration zu finden. Starten Sie damit, ein Script zu schreiben, das das Modem initialisiert und die Provider-Parameter enthält, die benötigt werden um auf das Internet zuzugreifen.
Schreiben wir also das Script:
vi /etc/chatscripts/swisscom.F5521gw
Der Inhalt ist Folgender:
ABORT BUSY ABORT 'NO CARRIER' ABORT ERROR TIMEOUT 10 '' AT+CFUN=1 OK \dAT+CGDCONT=1,"IP","gprs.swisscom.ch" OK \d\d\dAT*ENAP=1,1 OK
Funktioniert alles, dann wird das Script folgendes tun:
Gleichzeitig müssen wir ein Script erstellen, welches das Interface herunterfährt.
vi /etc/chatscripts/gsm_off.F5521gw
Der Inhalt soll Folgender sein:
ABORT ERROR TIMEOUT 5 '' AT+CFUN=4 OK
Dieses Script deaktiviert (AT+CFUN=4) die Telefonfunktionalität des Mobilfunkmoduls was dazu führt, dass das Interface keine Daten vom Modem mehr erhält.
Notiz: Einige Provider ändern die AT Command Sequence im obigen Script im PDP Context Setting Command:
Provider | APN | Script Command |
---|---|---|
Swisscom | gprs.swisscom.ch | \dAT+CGDCONT=1,“IP”,“gprs.swisscom.ch” OK |
Sunrise | internet | \dAT+CGDCONT=1,“IP”,“internet” OK |
Salt/Orange | internet | \dAT+CGDCONT=1,“IP”,“internet” OK |
Die Werte anderer Provider können hier eingesehen werden. Finden Sie Ihren Anbieter und ersetzen Sie gprs.swisscom.ch mit dem _DATA APN_-Wert.
Endlich müssen Sie das Netzwerkinterface konfigurieren im Debian Style:
vi /etc/network/interfaces
Fügen Sie der Konfiguration Folgendes hinzu:
# configuration of the GSM/UMTS/LTE modem card allow-hotplug wwan0 iface wwan0 inet dhcp pre-up /usr/sbin/chat -v -f /etc/chatscripts/swisscom.F5521gw >/dev/ttyACM1 </dev/ttyACM1 post-down /usr/sbin/chat -v -f /etc/chatscripts/gsm_off.F5521gw >/dev/ttyACM1 </dev/ttyACM1
Hiermit stellen Sie fest, dass vor dem Start des Interface das Script ausgeführt werden muss, das dem Modem Management Interface sagt, dass die Verbindung zum Provider hergestellt werden muss. Das gleiche gilt für den Shutdown: Nachdem das Interface heruntergefahren ist, soll es das Telefonmodul herunterfahren.
Verifizieren Sie das:
root@bluebrick:~# ifup wwan0 Internet Systems Consortium DHCP Client 4.3.1 Copyright 2004-2014 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/wwan0/02:80:37:ec:02:00 Sending on LPF/wwan0/02:80:37:ec:02:00 Sending on Socket/fallback DHCPDISCOVER on wwan0 to 255.255.255.255 port 67 interval 7 DHCPDISCOVER on wwan0 to 255.255.255.255 port 67 interval 14 DHCPREQUEST on wwan0 to 255.255.255.255 port 67 DHCPOFFER from 10.204.93.241 DHCPACK from 10.204.93.241 bound to 10.204.93.246 -- renewal in 36636 seconds. root@bluebrick:~# root@bluebrick:~# ifconfig wwan0 wwan0 Link encap:Ethernet HWaddr 02:80:37:ec:02:00 inet addr:10.204.93.246 Bcast:10.204.93.247 Mask:255.255.255.248 inet6 addr: fe80::80:37ff:feec:200/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:730 (730.0 B) TX bytes:1332 (1.3 KiB) root@bluebrick:~# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.20.36.1 0.0.0.0 UG 0 0 0 eth0 10.204.93.240 0.0.0.0 255.255.255.248 U 0 0 0 wwan0 172.20.36.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 root@bluebrick:~# root@bluebrick:~# # the interface is brought up manually (ifup wwwan0) # the dhcpclient daemon requests an IP address # the interface is configured (checked with _ifconfig wwan0_) # the routing table has been updated (checked with _route -n_)
Deaktivieren Sie das Interface manuell mit ifdown wwan0.
root@bluebrick:~# ifdown wwan0 Killed old client process Internet Systems Consortium DHCP Client 4.3.1 Copyright 2004-2014 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/wwan0/02:80:37:ec:02:00 Sending on LPF/wwan0/02:80:37:ec:02:00 Sending on Socket/fallback DHCPRELEASE on wwan0 to 10.204.93.241 port 67
Alles läuft optimal. Bis jetzt hat eth0 den Internetzugriff zur Verfügung gestellt. Deswegen müssen Sie eine neue Konfiguration erstellen, die den Internetzugriff über das Mobilfunkmodul testet.
Konfigurieren Sie eth0:
vi /etc/network/interfaces
Ändern Sie die Einstellungen _eth0_s von:
iface eth0 inet dhcp
zu:
iface eth0 inet static address 192.168.69.254 netmask 255.255.255.0
Um die Änderungen zu übernehmen, geben Sie folgenden Befehl ein:
ifdown eth0 && ifup eth0
Das Interface ist jetzt konfiguriert um auf den lokalen Server zuzugreifen (wie von unserem Netzwerkdesign definiert) und der einzige Weg nach draussen ist über den Zugriff auf den IP Zugang des Mobilfunkanbieters. Jetzt sind Sie am Punkt an dem sie zum nächsten Schritt der VPN-Konfiguration übergehen können.
Diese Reise wird im Artikel zum Thema VPN-Konfiguration fortgesetzt, der auch das Feintuning der VPN Konfiguration und der Appliance weitergeht.
Bleiben Sie dran!
Unsere Spezialisten kontaktieren Sie gern!
Andrea Covello
Unsere Spezialisten kontaktieren Sie gern!