https://www.synology-wiki.de/api.php?action=feedcontributions&user=Stastka&feedformat=atom - Benutzerbeiträge [de]2024-03-29T00:22:03ZBenutzerbeiträgeMediaWiki 1.39.1https://www.synology-wiki.de/index.php?title=Locale-UTF8&diff=7233Locale-UTF82017-04-26T09:02:20Z<p>Stastka: </p>
<hr />
<div>== Was ist UTF-8? Ein kleine Exkursion: ==<br />
[[wikipedia:de:UTF-8|UTF-8]] ist eine Abkürzung für 8-Bit UCS Transformation Format , wobei UCS für „Universal Character Set“ steht. Sie ist die am meisten verbreiteter Standard Kodierung von Unicode-Zeichen. Bei der UTF-8-Kodierung wird jedem Unicode-Zeichen eine speziell kodierte Bytekette variabler Länge zugeordnet. UTF-8 unterstützt bis zu vier Byte, auf die sich wie bei allen UTF-Formaten alle Unicode-Zeichen abbilden lassen.<br />
<br />
UTF8 ist ein zentraler Bestandteil als Weltweites Zeichenkodierung im Internet. So unterstützen moderne Browser und Email-Client UTF8 Standardmässig. Neben dem Internet empfiehlt es sich auch lokal auf dem Computer/Server mit dieser Kodierung zu arbeiten.<br />
<br />
== Ab DSM 4.3 ==<br />
Synology hat aber der Version DSM 4.3 locale ins System integriert. Man kann mit "locale -a" die vorinstallierten Untersützung anzeigen.<br />
<br />
Man kann im .profile ensprechend die Einträge setzen:<br />
<pre><br />
LANG=de_DE.UTF-8<br />
LC_ALL=de_DE.UTF-8<br />
export LANG LC_ALL <br />
</pre><br />
<br />
== Vor DSM 4.3 ==<br />
<br />
=== Synology NAS und UTF-8 Unterstützung ===<br />
Bei der Dateifreigaben Windows, Mac, Linux besteht bereit eine UTF-8 Unterstützung. Bei FTP muss man in der Systemsteuerung der DMS den UTF8-Support aktivieren. Bei der Shell sieht es anders aus. z.Z. gibt es bei der Standardinstallation keinen UTF-8 Support. Ein Ordner "öäü" sieht dann in der Shell folgendermassen aus: <br />
<pre><br />
öäü<br />
</pre><br />
<br />
Der Grund ist schnell gefunden, es besteht kein UTF-8 Support: <br />
<pre><br />
NAS>locale –a<br />
C<br />
POSIX <br />
</pre><br />
<br />
=== Installation ===<br />
<br />
==== Ziele, Anforderungen und Voraussetzungen ====<br />
Dieses Beschreibung richtet sich an Administratoren, die sich in der [[Die Kommandozeile|Shell auskennen]]. Ziel dieses Beitrages ist es, dass man den UTF-8 Support für die Shell installieren kann. Dazu muuß die für den [[Welchen Prozessortyp besitzt mein System?|Prozessor der DS]] und die Version des DSM passende Toolchain [http://sourceforge.net/projects/dsgpl/files/ heruntergeladen werden].<br />
<br />
===== Beispiel =====<br />
* System: Synology NAS DS211+<br />
* DSM: 4.0 (2198)<br />
Dann ist die passende Toolchain-Datei ''gcc421_glibc25_88f6281-GPL.tgz (Marvell 88F628x Linux 2.6.32)''. Im weiteren gehen wir von diesem Beispiel aus, für andere Systeme heissen die Verzeichnisse ''arm-none-linux-gnueabi/arm-none-linux-gnueabi'' anders. <br />
<br />
ToolChain herunterladen<br />
<pre><br />
wget http://downloads.sourceforge.net/project/dsgpl/DSM%204.0%20Tool%20Chains/Marvell%2088F628x%20Linux%202.6.32/gcc421_glibc25_88f6281-GPL.tgz<br />
</pre><br />
<br />
Enpacken<br />
<pre><br />
tar -zvxf gcc421_glibc25_88f6281-GPL.tgz<br />
</pre><br />
<br />
==== Installation ====<br />
locale Ordner erstellen:<br />
<pre><br />
mkdir /usr/lib/locale<br />
</pre><br />
<br />
Programme kopieren mit der die Daten generiert werden können<br />
<pre><br />
cp arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/bin/locale* /usr/local/bin/<br />
</pre><br />
<br />
<br />
Lokalisierung kopieren<br />
<pre><br />
cp -r arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/share/i18n/ /usr/share<br />
</pre><br />
<br />
<br />
UTF-8 Datei mit dem localedef Tool erzeugen<br />
<br />
Englisch/USA<br />
<pre><br />
/usr/local/bin/localedef -c -f UTF-8 -i en_US en_US.UTF-8<br />
</pre><br />
<br />
Deutsch(Schweiz)<br />
<pre><br />
/usr/local/bin/localedef -c -f UTF-8 -i de_CH de_CH.UTF-8<br />
</pre><br />
<br />
Sollte der Befehl nach ca. 10-20 Sekunden beendet sein und keine Fehlermeldung erscheinen so kann man nun prüfen welche Kodierung verfügbar sind:<br />
<pre><br />
/usr/local/bin/locale –a<br />
C<br />
en_US.utf8<br />
de_CH.utf8<br />
POSIX <br />
</pre><br />
<br />
===== Konfiguration =====<br />
<br />
Ist nun der UTF-8 vorhanden, kann man in seiner Profil-Datei eintragen:<br />
<pre><br />
LANG=de_CH.UTF-8<br />
LC_ALL=de_CH.UTF-8<br />
export LANG LC_ALL <br />
</pre><br />
<br />
Bei Benutzung von Putty muss man die Verbindungsdaten ändern:<br />
<pre><br />
Window>Translation<br />
<br />
Character set translation> "Remote character set:" UTF-8<br />
</pre><br />
<br />
<br />
Verbindet man sich jetzt per Shell kann man den UTF-8 Support testen:<br />
<pre><br />
NAS>locale<br />
LANG=de_CH.UTF-8<br />
LC_CTYPE="de_CH.UTF-8"<br />
LC_NUMERIC="de_CH.UTF-8"<br />
LC_TIME="de_CH.UTF-8"<br />
LC_COLLATE="de_CH.UTF-8"<br />
LC_MONETARY="de_CH.UTF-8"<br />
LC_MESSAGES="de_CH.UTF-8"<br />
LC_PAPER="de_CH.UTF-8"<br />
LC_NAME="de_CH.UTF-8"<br />
LC_ADDRESS="de_CH.UTF-8"<br />
LC_TELEPHONE="de_CH.UTF-8"<br />
LC_MEASUREMENT="de_CH.UTF-8"<br />
LC_IDENTIFICATION="de_CH.UTF-8"<br />
LC_ALL=de_CH.UTF-8<br />
</pre><br />
<br />
Somit sieht der Ordner öäü neu folgendermassen aus: <br />
<pre><br />
öäü<br />
</pre><br />
<br />
<br />
<br />
<br />
<br />
== Anmerkung zu Programmen ==<br />
* Bei WinSCP kann man mittlerweile UTF-8 mit den Protokollen FTP, SFTP, SCP und WebDav verwenden. Näheres unter: http://winscp.net/eng/docs/faq_utf8<br />
* Putty muss man ebenso auf UTF-8 umstellen.<br />
* Interne Programme wie vi sind z.b. deaktiviertem --disable-nls compiliert, deshalb kann man nicht auf eine andere Sprache ändern.</div>Stastkahttps://www.synology-wiki.de/index.php?title=Locale-UTF8&diff=7232Locale-UTF82017-04-26T09:00:17Z<p>Stastka: </p>
<hr />
<div>{{Baustelle|Ab DSM 4.3 sind die locale-Dateien und Programme schon vorinstalliert, es muß nur noch konfiguriert werden. --[[Benutzer:EL Duderino|EL Duderino]] 21:40, 31. Jan. 2014 (CET)}}<br />
<br />
<br />
== Was ist UTF-8? Ein kleine Exkursion: ==<br />
[[wikipedia:de:UTF-8|UTF-8]] ist eine Abkürzung für 8-Bit UCS Transformation Format , wobei UCS für „Universal Character Set“ steht. Sie ist die am meisten verbreiteter Standard Kodierung von Unicode-Zeichen. Bei der UTF-8-Kodierung wird jedem Unicode-Zeichen eine speziell kodierte Bytekette variabler Länge zugeordnet. UTF-8 unterstützt bis zu vier Byte, auf die sich wie bei allen UTF-Formaten alle Unicode-Zeichen abbilden lassen.<br />
<br />
UTF8 ist ein zentraler Bestandteil als Weltweites Zeichenkodierung im Internet. So unterstützen moderne Browser und Email-Client UTF8 Standardmässig. Neben dem Internet empfiehlt es sich auch lokal auf dem Computer/Server mit dieser Kodierung zu arbeiten.<br />
<br />
== Ab DSM 4.3 ==<br />
Synology hat aber der Version DSM 4.3 locale ins System integriert. Man kann mit "locale -a" die vorinstallierten Untersützung anzeigen.<br />
<br />
Man kann im .profile ensprechend die Einträge setzen:<br />
<pre><br />
LANG=de_DE.UTF-8<br />
LC_ALL=de_DE.UTF-8<br />
export LANG LC_ALL <br />
</pre><br />
<br />
== Vor DSM 4.3 ==<br />
<br />
=== Synology NAS und UTF-8 Unterstützung ===<br />
Bei der Dateifreigaben Windows, Mac, Linux besteht bereit eine UTF-8 Unterstützung. Bei FTP muss man in der Systemsteuerung der DMS den UTF8-Support aktivieren. Bei der Shell sieht es anders aus. z.Z. gibt es bei der Standardinstallation keinen UTF-8 Support. Ein Ordner "öäü" sieht dann in der Shell folgendermassen aus: <br />
<pre><br />
öäü<br />
</pre><br />
<br />
Der Grund ist schnell gefunden, es besteht kein UTF-8 Support: <br />
<pre><br />
NAS>locale –a<br />
C<br />
POSIX <br />
</pre><br />
<br />
=== Installation ===<br />
<br />
==== Ziele, Anforderungen und Voraussetzungen ====<br />
Dieses Beschreibung richtet sich an Administratoren, die sich in der [[Die Kommandozeile|Shell auskennen]]. Ziel dieses Beitrages ist es, dass man den UTF-8 Support für die Shell installieren kann. Dazu muuß die für den [[Welchen Prozessortyp besitzt mein System?|Prozessor der DS]] und die Version des DSM passende Toolchain [http://sourceforge.net/projects/dsgpl/files/ heruntergeladen werden].<br />
<br />
===== Beispiel =====<br />
* System: Synology NAS DS211+<br />
* DSM: 4.0 (2198)<br />
Dann ist die passende Toolchain-Datei ''gcc421_glibc25_88f6281-GPL.tgz (Marvell 88F628x Linux 2.6.32)''. Im weiteren gehen wir von diesem Beispiel aus, für andere Systeme heissen die Verzeichnisse ''arm-none-linux-gnueabi/arm-none-linux-gnueabi'' anders. <br />
<br />
ToolChain herunterladen<br />
<pre><br />
wget http://downloads.sourceforge.net/project/dsgpl/DSM%204.0%20Tool%20Chains/Marvell%2088F628x%20Linux%202.6.32/gcc421_glibc25_88f6281-GPL.tgz<br />
</pre><br />
<br />
Enpacken<br />
<pre><br />
tar -zvxf gcc421_glibc25_88f6281-GPL.tgz<br />
</pre><br />
<br />
==== Installation ====<br />
locale Ordner erstellen:<br />
<pre><br />
mkdir /usr/lib/locale<br />
</pre><br />
<br />
Programme kopieren mit der die Daten generiert werden können<br />
<pre><br />
cp arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/bin/locale* /usr/local/bin/<br />
</pre><br />
<br />
<br />
Lokalisierung kopieren<br />
<pre><br />
cp -r arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/share/i18n/ /usr/share<br />
</pre><br />
<br />
<br />
UTF-8 Datei mit dem localedef Tool erzeugen<br />
<br />
Englisch/USA<br />
<pre><br />
/usr/local/bin/localedef -c -f UTF-8 -i en_US en_US.UTF-8<br />
</pre><br />
<br />
Deutsch(Schweiz)<br />
<pre><br />
/usr/local/bin/localedef -c -f UTF-8 -i de_CH de_CH.UTF-8<br />
</pre><br />
<br />
Sollte der Befehl nach ca. 10-20 Sekunden beendet sein und keine Fehlermeldung erscheinen so kann man nun prüfen welche Kodierung verfügbar sind:<br />
<pre><br />
/usr/local/bin/locale –a<br />
C<br />
en_US.utf8<br />
de_CH.utf8<br />
POSIX <br />
</pre><br />
<br />
===== Konfiguration =====<br />
<br />
Ist nun der UTF-8 vorhanden, kann man in seiner Profil-Datei eintragen:<br />
<pre><br />
LANG=de_CH.UTF-8<br />
LC_ALL=de_CH.UTF-8<br />
export LANG LC_ALL <br />
</pre><br />
<br />
Bei Benutzung von Putty muss man die Verbindungsdaten ändern:<br />
<pre><br />
Window>Translation<br />
<br />
Character set translation> "Remote character set:" UTF-8<br />
</pre><br />
<br />
<br />
Verbindet man sich jetzt per Shell kann man den UTF-8 Support testen:<br />
<pre><br />
NAS>locale<br />
LANG=de_CH.UTF-8<br />
LC_CTYPE="de_CH.UTF-8"<br />
LC_NUMERIC="de_CH.UTF-8"<br />
LC_TIME="de_CH.UTF-8"<br />
LC_COLLATE="de_CH.UTF-8"<br />
LC_MONETARY="de_CH.UTF-8"<br />
LC_MESSAGES="de_CH.UTF-8"<br />
LC_PAPER="de_CH.UTF-8"<br />
LC_NAME="de_CH.UTF-8"<br />
LC_ADDRESS="de_CH.UTF-8"<br />
LC_TELEPHONE="de_CH.UTF-8"<br />
LC_MEASUREMENT="de_CH.UTF-8"<br />
LC_IDENTIFICATION="de_CH.UTF-8"<br />
LC_ALL=de_CH.UTF-8<br />
</pre><br />
<br />
Somit sieht der Ordner öäü neu folgendermassen aus: <br />
<pre><br />
öäü<br />
</pre><br />
<br />
<br />
<br />
<br />
<br />
== Anmerkung zu Programmen ==<br />
* Bei WinSCP kann man mittlerweile UTF-8 mit den Protokollen FTP, SFTP, SCP und WebDav verwenden. Näheres unter: http://winscp.net/eng/docs/faq_utf8<br />
* Putty muss man ebenso auf UTF-8 umstellen.</div>Stastkahttps://www.synology-wiki.de/index.php?title=Grundlegende_Befehle_auf_der_Kommandozeile&diff=7132Grundlegende Befehle auf der Kommandozeile2016-06-17T06:50:39Z<p>Stastka: /* Dienste neu starten */</p>
<hr />
<div>[[Category:Linux]]<br />
__TOC__<br />
<br />
==Vorbemerkung==<br />
Wenn man sich z. B. über Telnet in der [[Die Kommandozeile|Kommandozeile]] der DiskStation befindet, kann man mit folgenden Befehlen grundlegende Funktionen ausführen.<br />
<br />
Normalerweise kann man die Bearbeitung der Befehle mit Strg+C abbrechen.<br />
<br />
===Sicherheitshinweis zu TELNET und FTP===<br />
''Telnet ist OK, solange man sich im eigenen Intranet befindet, wenn man sich jedoch aus einem anderen Netzwerk einloggen will sollte man den sicheren SSH Dienst (Port 22) nutzen, bzw. FTPES. Unverschlüsselte Protokolle wie FTP und Telnet sowie deren Ports, Port 20,21 (ftp) und Port 23 (telnet) sollten NIE von außen sichtbar sein. Ausser man setzt FTPES ein, welches die Firmware im Gegensatz zu SFTP (FTP via SSH) von Hause aus bietet''<br />
<br />
Ein schlauer Zug ist es in der SSH config den Port zu verlegen, z.B. auf einen sehr hohen Port, wie 22022 (soweit scannt dann kein Portscanner mehr). Das Problem ist nur dass Synology euch gnadenlos die Einstellung nach jedem Update wieder auf 22 setzen wird. Warum Synology das tut ist mir bis heute ein Rätsel.<br />
<br />
'''Wichtiger als der Port von SSH ist es ein sicheres Passwort zu haben oder gleich nur [[Ssh_mit_Zertifikaten_absichern|Zertifikats-Login]] zuzulassen!'''<br />
<br />
===Midnight Commander===<br />
Kommandozeile Bearbeitung macht man am besten mit dem Midnight Commander, einer Norton Commander klone.<BR><br />
Installation per '[[IPKG|ipkg]] install mc'.<BR><br />
Er enthält 2 Wichtige Komponenten: <br />
# Das Hauptprogramm, als eine Art Verzeichnis Explorer. Man startet Midnight Commander mit dem Befehl:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>mc -c</pre><br />
|-<br />
|}<br />
<br />
# Der Midnight Editor, als Alternative zum vi (vollster Respekt, und tiefste Verbeugung vor vi :q!)<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>mcedit /pfad/zu/datei</pre><br />
|-<br />
|}<br />
<br />
==Dateiverwaltung==<br />
=== Verzeichnisse ===<br />
====In ein Verzeichnis wechseln====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cd /directoryName</pre><br />
|-<br />
|}<br />
<br />
====Wo befinde ich mich?====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>pwd</pre><br />
|-<br />
|}<br />
<br />
====Verzeichnis erstellen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>mkdir /directoryName</pre><br />
|-<br />
|}<br />
<br />
====Verzeichnis anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>dir</pre> <br />
| bzw.<br />
|<pre>ls</pre><br />
|-<br />
|}<br />
<br />
====Größe eines Verzeichnisses mit Unterverzeichnissen anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>du -ah /path/to/dir</pre><br />
|-<br />
|}<br />
<br />
====Anzahl der Dateien eines Verzeichnisses mit Unterverzeichnissen anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>find /path/to/dir -type f | wc -l</pre><br />
|-<br />
|}<br />
find listet alle Files auf (- type f), der Output wird in den wc geschickt, der mit -l die Zeilen zählt. Ausgegeben wird nur die Anzahl der Files.<br />
<br />
=== Dateien ===<br />
====Eine Datei suchen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>find / -name fileName</pre><br />
|-<br />
|}<br />
<br />
====Löschen einer Datei====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>rm fileName</pre><br />
|-<br />
|}<br />
<br />
====Löschen eines Verzeichnisses mit Inhalt====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|1) || <pre>rm -r directoryName</pre><br />
|-<br />
|2) || <pre>rm -Rf directoryName</pre> (laut Thread 58472)<br />
|}<br />
* Achtung: Nur mit größter Vorsicht verwenden!<br />
* Frage: Was stimmt nun wirklich?<br />
<br />
====Umbenennen oder Verschieben einer Datei====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>mv /sourceDirectory/sourceFile /destination</pre><br />
|-<br />
|}<br />
<br />
====Datei kopieren====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cp /sourceDirectory/sourceFile /destination</pre><br />
|-<br />
|}<br />
<br />
====Mehrere Dateien kopieren====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cp /sourceDirectory/*.* /destination</pre><br />
|-<br />
|}<br />
stand 2011 lautet der Befehl:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cp /sourceDirectory/* /destination</pre><br />
|-<br />
|}<br />
<br />
====Ein Verzeichnis mit Unterverzeichnissen kopieren====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cp -r -p /sourceDirectory /destinationpath</pre><br />
|-<br />
|}<br />
<br />
=== tar-Archive (.tar) ===<br />
====Ein nicht-komprimiertes tar-Archiv (.tar) erstellen====<br />
Erstellt ein nicht-komprimiertes tar-Archiv aller Dateien und Unterverzeichnisse im aktuellen Verzeichnis:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tar -cvf archivefilename.tar *</pre><br />
|-<br />
|}<br />
<br />
====Ein komprimiertes tar-Archiv (.tgz) erstellen====<br />
Erstellt ein komprimiertes tar-Archiv aller Dateien und Unterverzeichnisse im aktuellen Verzeichnis:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tar -cvzf archivefilename.tgz *</pre><br />
|-<br />
|}<br />
<br />
====.tar Archive entpacken====<br />
Für nicht-komprimierte .tar Archive:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tar xvf file.tar</pre><br />
|-<br />
|}<br />
Für gzip komprimierte .tar.gz (oder .tgz) Archive:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tar xvzf file.tar.gz</pre><br />
|-<br />
|}<br />
<br />
==System-Verwaltung==<br />
<br />
=== Start und Stopp ===<br />
<br />
====Neustart der Synology Station====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>reboot</pre><br />
|-<br />
|}<br />
<br />
====Herunterfahren der Synology Station====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>poweroff</pre><br />
|-<br />
|}<br />
<br />
=== Prozesse ===<br />
<br />
====Aktuell laufende Prozesse anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>top</pre><br />
|-<br />
|}<br />
<br />
====Alle Prozesse anzeigen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ps -w</pre><br />
|-<br />
|}<br />
<br />
====Einen Prozess beenden====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>kill processID</pre><br />
|-<br />
|}<br />
<br />
====Ein Programm beenden====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>killall programName</pre><br />
|-<br />
|}<br />
<br />
=== Logs ===<br />
<br />
==== System-Logbuch anschauen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>more /var/log/messages</pre><br />
|-<br />
|}<br />
Und wenn man das dynamisch haben will, quasi um eine log in ''realtime'' zu verfolgen<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>tail -f /var/log/messages</pre><br />
|-<br />
|}<br />
<br />
==== System-Start-Logbuch anschauen ====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>dmesg | more</pre><br />
|-<br />
|}<br />
<br />
=== Programme ===<br />
<br />
====Ein IPKG-Programm suchen====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ipkg list fileName</pre><br />
|-<br />
|}<br />
der Befehl "list" such nach einem genauen Pattern. Deswegen empfiehlt sich :<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ipkg list *fileName*</pre><br />
|-<br />
|}<br />
<br />
====Ein IPKG-Programm installieren====<br />
Voraussetzung dafür ist eine Installation von [[IPKG|IPKG]] selbst<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ipkg install fileName</pre><br />
|-<br />
|}<br />
grundsätzlich davor immer '''ipkg update'''<br />
<br />
====Ein IPKG-Programm deinstallieren====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ipkg remove filename</pre><br />
|-<br />
|}<br />
<br />
==Dienste neu starten==<br />
<br />
=== DSM 5.x, DMS 6.x und neuer ===<br />
Dienste/Deamon kann man mit '''synoservicectl''' starten, stoppen, neu starten, neu laden und den status abfragen<br />
<pre><br />
--start Start service => Startet den Dienst <br />
--stop Stop service => Stoppt den Dienst <br />
--restart Restart service => Starten den Dienst neu<br />
--reload Send HUP signal to service => Sendet ein "Hang Up", d.h. Das Betriebssystem sendet ein Signal zum Prozess damit er kontrolliert beenden kann um danach wieder zu starten<br />
--status Query status of service. => Status des Dienstes<br />
</pre><br />
<br />
=== DSM 6.x ===<br />
Das Admin-Interface (DSM) wird ab 6.0 durch den nginx-Dienst betrieben. Um das Webinterface neu zu starten kann man dies wie folgt durchführen:<br />
<pre><br />
synoservicectl --restart nginx<br />
</pre><br />
<br />
=== DSM 5.x ===<br />
<br />
apache<br />
<pre>synoservicectl --restart httpd-user</pre><br />
SMB, Windows Dateidienst<br />
<pre>synoservicectl --restart smbd</pre><br />
SSH Dienst<br />
<pre>synoservicectl --restart sshd</pre><br />
Cron<br />
<pre>synoservicectl --restart crond</pre><br />
NTP, Zeitserver<br />
<pre>synoservicectl --restart ntpd</pre><br />
FTP<br />
<pre>synoservicectl --restart ftpd</pre><br />
Index-Dienst<br />
<pre>synoservicectl --restart synoindexd</pre><br />
<br />
<br />
=== ab DSM 4.x und älter ===<br />
<br />
====apache====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S97apache-user.sh restart</pre><br />
|-<br />
|}<br />
zur Kompatibilität mit anderen LINUX-en kann man sich einen kleinen Script basteln der dann auf '''apachectl [start|restart|stop]''' hört, und der dann auch in der $PATH ist.<BR><br />
(dazu einfach auf der Konsole als root folgende Befehle nacheinander eingeben.)<BR><br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre><br />
touch /usr/local/bin/apachectl<br />
echo "#!/bin/sh">/usr/local/bin/apachectl<br />
echo '/usr/syno/etc/rc.d/S97apache-user.sh $1'>>/usr/local/bin/apachectl<br />
chmod 755 /usr/local/bin/apachectl<br />
</pre><br />
|-<br />
|}<br />
danach kann man den Webserver wie gewohnt mit '''apachectl [start|restart|stop]''' steuern<br />
<br />
====appletalk====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S81atalk.sh restart</pre><br />
|-<br />
|}<br />
<br />
====[[cron]]====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S04crond.sh stop<br />
/usr/syno/etc/rc.d/S04crond.sh start</pre><br />
|}<br />
oder<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>ps |grep crond|grep -v grep|awk '{print $1}'|xargs kill -HUP</pre><br />
|}<br />
<br />
====ftp====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S99ftpd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====index====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S66synoindexd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====iTunes====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S99iTunes.sh restart</pre><br />
|-<br />
|}<br />
<br />
<br />
====ldap====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S10slapd.sh restart</pre><br />
|-<br />
|}<br />
zur Kompatibilität mit anderen LINUX-en kann man sich einen kleinen Script basteln der dann auf '''ldapctl [start|restart|stop]''' hört, und der dann auch in der $PATH ist.<BR><br />
(dazu einfach auf der Konsole als root folgende Befehle nacheinander eingeben.)<BR><br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre><br />
touch /usr/sbin/ldapctl<br />
echo "#!/bin/sh">/usr/sbin/ldapctl<br />
echo "/usr/syno/etc/rc.d/S10slapd.sh \$1">>/usr/sbin/ldapctl<br />
chmod 755 /usr/sbin/ldapctl<br />
</pre><br />
|-<br />
|}<br />
danach kann man den LDAP Server wie gewohnt mit '''ldapctl [start|restart|stop]''' steuern<br />
<br />
====mysql====<br />
DSM < 5.0:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S21mysql.sh restart</pre><br />
|-<br />
|}<br />
DSM ≥ 5.0:<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/share/mysql/mysql.server restart</pre><br />
|-<br />
|}<br />
<br />
====nfs====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S83nfsd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====postgresql====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S20pgsql.sh restart</pre><br />
|-<br />
|}<br />
<br />
====samba====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S80Samba.sh restart</pre><br />
|-<br />
|}<br />
<br />
====SNMP ====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre/usr/syno/etc.defaults/rc.d/S08snmpd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====SSH====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc.defaults/rc.d/S95sshd.sh restart</pre><br />
|-<br />
|}<br />
<br />
====VPN Client====<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>poff -a<br />
pppd file /etc/ppp/peers/connect_*<br />
</pre><br />
|-<br />
|}<br />
Benötigt > DSM 4.0 und das Webinterface zeigt leider nicht an, dass man eine VPN Verbindung benutzt.<br />
<br />
==System Informationen==<br />
<br />
===Systemspeicher===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/meminfo</pre><br />
|-<br />
|}<br />
<br />
===CPU Infos===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/cpuinfo</pre><br />
|-<br />
|}<br />
<br />
===Verwendete Interrupts===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/interrupts</pre><br />
|-<br />
|}<br />
<br />
===Verwendete Dateisysteme===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/filesystems</pre><br />
|-<br />
|}<br />
<br />
===Linux Version===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/version</pre><br />
|-<br />
|}<br />
<br />
===Geräte===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>cat /proc/mdstat</pre><br />
|-<br />
|}<br />
<br />
===Umgebungsvariabeln===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>env</pre><br />
|-<br />
|}<br />
<br />
===Physische und logische Partitionen===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|Für Systeme mit mehreren Laufwerken und erweiterte Infos<br />
<pre>cat /proc/diskstats</pre><br />
oder für alle Systeme<br />
<pre>cat /proc/partitions</pre><br />
|-<br />
|}<br />
<br />
==Sonstiges==<br />
===Terminal/Konsole Bildschirm löschen===<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>clear</pre><br />
|-<br />
|}<br />
<br />
===Einen Dump in eine Datenbank importieren===<br />
<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/mysql/bin/mysql --user=root --password=mein-pw meine-db < /volume1/dir/mein-dump.sql</pre><br />
|-<br />
|}<br />
<br />
mein-pw, meine-db und mein-dump sind dabei entprechend zu ersetzen.<br />
Wenn der Dump utf-8-kodiert ist, kann ein zusätzliches --default-character-set=utf8 notwendig sein.<br />
<br />
==Unnötige Dienste stoppen==<br />
===Konvertierung der Bilder stoppen (convert)===<br />
<br />
Bremst stark das Kopieren der großen Datenmengen und verbraucht Arbeitsspeicher auch wenn Photostation abgeschaltet ist.<br />
<br />
{| border="0" cellpadding="0" style="text-align:left"<br />
|-<br />
|<pre>/usr/syno/etc/rc.d/S77synomkthumbd.sh stop</pre><br />
|-<br />
|}</div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7128OpenVPN härten2016-06-12T12:05:57Z<p>Stastka: /* AES 128 bit vs AES 256 bit */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 und ein Diffie-Hellman von 3072-Bit eingestellt. In der Regel genügen diese Werte und funktionieren auch auf ältere Hardware. Will man eine erhöhte Sicherheit, kann man diese durch hinzufügen von Optionalen Werten zu härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt, deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
===Wichtige Pfade===<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine signifikante Einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen.<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7127OpenVPN härten2016-06-12T12:05:28Z<p>Stastka: /* 3. Cipher (Chiffre) */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 und ein Diffie-Hellman von 3072-Bit eingestellt. In der Regel genügen diese Werte und funktionieren auch auf ältere Hardware. Will man eine erhöhte Sicherheit, kann man diese durch hinzufügen von Optionalen Werten zu härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
===Wichtige Pfade===<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine signifikante Einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen.<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7126OpenVPN härten2016-06-12T12:05:16Z<p>Stastka: /* 5. tls-cipher (Cipher Suite, Chiffrensammlung) */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 und ein Diffie-Hellman von 3072-Bit eingestellt. In der Regel genügen diese Werte und funktionieren auch auf ältere Hardware. Will man eine erhöhte Sicherheit, kann man diese durch hinzufügen von Optionalen Werten zu härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
===Wichtige Pfade===<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine signifikante Einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen.<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7125OpenVPN härten2016-06-12T12:05:07Z<p>Stastka: /* 4. authentication digest (Kryptologische Hashfunktion) */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 und ein Diffie-Hellman von 3072-Bit eingestellt. In der Regel genügen diese Werte und funktionieren auch auf ältere Hardware. Will man eine erhöhte Sicherheit, kann man diese durch hinzufügen von Optionalen Werten zu härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
===Wichtige Pfade===<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine signifikante Einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen.<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7124OpenVPN härten2016-06-12T10:27:41Z<p>Stastka: /* 2. tls-auth */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 und ein Diffie-Hellman von 3072-Bit eingestellt. In der Regel genügen diese Werte und funktionieren auch auf ältere Hardware. Will man eine erhöhte Sicherheit, kann man diese durch hinzufügen von Optionalen Werten zu härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
===Wichtige Pfade===<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine signifikante Einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen.<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7123OpenVPN härten2016-06-12T10:27:29Z<p>Stastka: /* 1. nobody für den Deamon */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 und ein Diffie-Hellman von 3072-Bit eingestellt. In der Regel genügen diese Werte und funktionieren auch auf ältere Hardware. Will man eine erhöhte Sicherheit, kann man diese durch hinzufügen von Optionalen Werten zu härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
===Wichtige Pfade===<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine signifikante Einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen.<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7122OpenVPN härten2016-06-12T10:27:00Z<p>Stastka: /* OpenVPN Standard */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 und ein Diffie-Hellman von 3072-Bit eingestellt. In der Regel genügen diese Werte und funktionieren auch auf ältere Hardware. Will man eine erhöhte Sicherheit, kann man diese durch hinzufügen von Optionalen Werten zu härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
===Wichtige Pfade===<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine signifikante Einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen.<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7121OpenVPN härten2016-06-12T10:20:38Z<p>Stastka: /* Zusammenfassung */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
===Wichtige Pfade===<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine signifikante Einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen.<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7120OpenVPN härten2016-06-12T10:19:49Z<p>Stastka: /* Wichtige Pfade */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
===Wichtige Pfade===<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7119OpenVPN härten2016-06-12T10:19:03Z<p>Stastka: /* AES 128 bit vs AES 256 bit */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
* [https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
* [https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7118OpenVPN härten2016-06-12T10:18:44Z<p>Stastka: /* AES 128 bit vs AES 256 bit */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
[https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
[https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7117OpenVPN härten2016-06-12T10:18:15Z<p>Stastka: /* AES 128 bit vs AES 256 bit */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
[https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
[https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/] Guess why we're moving to 256-bit AES keys, 2013<br />
</div><br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7116OpenVPN härten2016-06-12T10:16:37Z<p>Stastka: /* AES 128 bit vs AES 256 bit */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 Designschwächen enthalten. Man spricht davon das AES-128 stärker ist, als AES-256 (Thema „key schedules“ und Zufallszahlengenerator). <br />
<br />
[https://www.schneier.com/blog/archives/2009/07/another_new_aes.html] Bruce Schneider, 2009<br />
[https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/]<br />
</div><br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7115OpenVPN härten2016-06-12T10:12:26Z<p>Stastka: /* AES 128 bit vs AES 256 bit */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<div style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 designschwächen enthalten. Es gibt sogar Diskussionen das AES-128 stärker ist, als AES-256 (Thema „key schedules“). <br />
<br />
[https://www.schneier.com/blog/archives/2009/07/another_new_aes.html]<br />
</div><br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7114OpenVPN härten2016-06-12T10:11:35Z<p>Stastka: /* Hinweis für die Hardware */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. </span><br />
<br />
==== Wie teste ich den Verlust an Performance? ====<br />
Man kann mit OpenSSL einen kleinen Benchmark durchführen, bei der man sich die unterschiedlichen Schlüssellänge der Algorithmen testen kann. Als Ergebnis erhält man<br />
die Anzahl 1000 bytes pro Sekunde berechnet worden sind. Das Ergebnis kann man dann z.b. in einem Excel in Prozentwerte umrechnen.<br />
<pre><br />
openssl speed sha -elapsed<br />
openssl speed aes -elapsed<br />
</pre><br />
Bei der ds716+ zeigte sich bei einem Vergleich von AES-128 zu AES-256 ein Verlust von ca. 30% der Performance.<br />
<br />
=== AES 128 bit vs AES 256 bit ===<br />
<span style="width:100%; background:#CCFFFF; margin-top:0.5em; border:0px solid #ccc;"><br />
Gegen den AES sind zurzeit keine praktikablen Angriffe bekannt. Deshalb kann man sich fragen, ob der Verlust von bis zu 30% der Performance sinnvoll ist. Ein führender Kryptografie-Experte hat in mehreren Artikeln sich für AES-128 ausgesprochen, da AES-256 designschwächen enthalten. Es gibt sogar Diskussionen das AES-128 stärker ist, als AES-256 (Thema „key schedules“). <br />
<br />
[https://www.schneier.com/blog/archives/2009/07/another_new_aes.html]<br />
</span><br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7113OpenVPN härten2016-06-10T11:03:00Z<p>Stastka: /* Kompatibilität bei wiederaufnahme der Verbindung */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. <br />
Auf meiner alten DS211+ konnte ich keine Probleme feststellen, da diese eine AES-256 (ECB/CBC) Hardwarebeschleunigung hat.</span><br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
Folgende Einstellungen sollten gesetzt sein.<br />
<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7112OpenVPN härten2016-06-10T11:02:02Z<p>Stastka: /* Hinweis für die Hardware */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
<span style="background-color:yellow;">Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. <br />
Auf meiner alten DS211+ konnte ich keine Probleme feststellen, da diese eine AES-256 (ECB/CBC) Hardwarebeschleunigung hat.</span><br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7111OpenVPN härten2016-06-10T10:59:55Z<p>Stastka: /* Hinweis für die Hardware */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. <br />
Auf meiner alten DS211+ konnte ich keine Probleme feststellen, da diese eine AES-256 (ECB/CBC) Hardwarebeschleunigung hat.<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7110OpenVPN härten2016-06-10T10:57:09Z<p>Stastka: /* Hinweis für die Hardware */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. <br />
Auf meiner alten DS211+ konnte ich keine Probleme feststellen, da diese eine AES-256 Hardwareseitiges Modul hat.<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7109OpenVPN härten2016-06-10T10:56:29Z<p>Stastka: /* DSM/Clients */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
=== Hinweis für die Hardware ===<br />
Die hier gemachten Angaben wurden primär auf einer DS716+ getestet. Bei älterer Hardware können Performance-Einbussen auftreten.<br />
Wie bei jedem System muss man jede Einstellung getrennt getestet werden. Auf meiner alten DS211+ konnte ich keine Probleme feststellen, da diese eine AES-256 Hardwareseitiges Modul hat.<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7108OpenVPN härten2016-06-10T10:37:59Z<p>Stastka: /* 4. authentication digest (Kryptologische Hashfunktion) */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
* Sollten Probleme auftreten kann "SHA1" verwendet werden. Auf keinen Fall sollte man MD5, MD4 usw. verwenden, da sie als "gebrochen" gelten.<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7107OpenVPN härten2016-06-10T10:36:46Z<p>Stastka: /* 3. Cipher (Chiffre) */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
* Hinweis 1: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
* Hinweis 2: Bei nicht Intel Prozessoren bez. schwachen CPU ohne AES-NI kann es zu Performance-Einbussen kommen. Man kann den Cipher auf AES-128-CBC setzen<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7106OpenVPN härten2016-06-10T10:34:51Z<p>Stastka: /* 1. nobody für den Deamon */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
= Kompatibilität bei wiederaufnahme der Verbindung =<br />
* persist-tun: TUN/TAP-Device wird nicht geschlossen und neugestartet, wenn der Befehl --ping-restart ausgeführt werden soll. (für IP Änderung bei Mobilefunk)<br />
* persist-key: die Key-Dateien werden nicht neu gelesen, wenn der Befehl --ping-restart ausgeführt werden soll. Der Deamon (mit User nobody) kann bei einem Restart der Verbindung den Key nicht mehr lesen<br />
<pre><br />
persist-tun<br />
persist-key<br />
</pre><br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7105OpenVPN härten2016-06-10T07:48:20Z<p>Stastka: /* DSM/Clients */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+ mit installiertem VPN Packet<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7104OpenVPN härten2016-06-10T07:45:54Z<p>Stastka: /* Zusammenfassung */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+ mit installiertem VPN Packets<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
'''Windows Client:'''<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7103OpenVPN härten2016-06-10T07:45:37Z<p>Stastka: /* Zusammenfassung */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+ mit installiertem VPN Packets<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Windows Client:<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7102OpenVPN härten2016-06-10T07:45:22Z<p>Stastka: </p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+ mit installiertem VPN Packets<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre><br />
<br />
= Zusammenfassung =<br />
Ich habe wie folgt die OpenVPN Konfiguration erweitert, die für meine ds716+, Windows 10 und Android 5.x funktioniert. Eine einbusse der Performance oder erhöhten Batterieverbrauch konnte ich nicht feststellen<br />
'''Server''':<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
user nobody<br />
group nobody<br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
<pre><br />
cipher AES-256-CBC<br />
auth SHA512<br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256<br />
tls-auth hmac.key 1<br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7101OpenVPN härten2016-06-10T07:43:20Z<p>Stastka: /* 5. tls-cipher (Cipher Suite, Chiffrensammlung) */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+ mit installiertem VPN Packets<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher] community.openvpn.net<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7100OpenVPN härten2016-06-10T07:42:24Z<p>Stastka: /* DSM/Clients */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+ mit installiertem VPN Packets<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher]<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7099OpenVPN härten2016-06-10T07:41:39Z<p>Stastka: /* OpenVPN 2.3.2 und älter */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher]<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
* Die Zeile ohne Umbrüche eintragen<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7098OpenVPN härten2016-06-10T07:41:04Z<p>Stastka: /* 5. tls-cipher (Cipher Suite, Chiffrensammlung) */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützt. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher]<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
Folgende Einstellungen habe ich getestet:<br />
== OpenVPN 2.3.2 und älter ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7097OpenVPN härten2016-06-10T07:40:05Z<p>Stastka: /* OpenVPN 2.3.2 und älter */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützen wird. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher]<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
== OpenVPN 2.3.2 und älter ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:<br />
TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
<br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7096OpenVPN härten2016-06-10T07:39:47Z<p>Stastka: /* 5. tls-cipher (Cipher Suite, Chiffrensammlung) */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützen wird. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher]<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard<br />
<br />
== OpenVPN 2.3.2 und älter ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA<br />
</pre><br />
== OpenVPN 2.3.3 und neuer ==<br />
<pre><br />
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 <br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7095OpenVPN härten2016-06-10T07:37:15Z<p>Stastka: /* 2. tls-auth */</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützen wird. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher]<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard</div>Stastkahttps://www.synology-wiki.de/index.php?title=OpenVPN_h%C3%A4rten&diff=7094OpenVPN härten2016-06-10T07:35:47Z<p>Stastka: Die Seite wurde neu angelegt: „=Einleitung OpenVPN Verbindung= Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal.…“</p>
<hr />
<div>=Einleitung OpenVPN Verbindung=<br />
Eine OpenVPN-Verbindung zwischen Server und Client besteht aus zwei Kanälen. Einem Steuer-/Kontrollkanal und einem Datenkanal. Der Client initiiert die Verbindung durch eine TLS-Sitzung innerhalb der Kontrollkanal bei der Anmeldeinformationen ausgetauscht werden. Wurde diese Erfolgreich durchgeführt, wird der Datenkanal etabliert. Im Datenkanal wird sämtlicher Traffic verschlüsselt übertragen.<br />
<br />
==OpenVPN Standard==<br />
Die Standardkonfiguration des OpenVPN auf einem Synology Server ist im Default auf AES 128 (CBC), SHA-1 eingestellt. In der Regel genügt dieser Wert. Will man eine erhöhte Sicherheit, kann man dies härten. Dazu muss man Shell-Zugriff auf seinem Server haben.<br />
<br />
==Voraussetzungen==<br />
* Umgang mit der Konsole (bei Verwendung des SSH-Zuganges)<br />
* Grundkenntnisse im Umgang mit Shell (vi, nano usw.)<br />
<br />
==DSM/Clients==<br />
* getestet mit DS716+ und DS211+<br />
* DSM 6.x<br />
* Windows 10, Android 5.0, OpenVPN 2.3.10<br />
<br />
==Wichtige Pfade==<br />
Folgende Pfade sind für die härtung wichtig, bez. zum testen erforderlich:<br />
<br />
OpenVPN starten/neu starten/stoppen:<br />
<pre><br />
/bin/sh /var/packages/VPNCenter/target/scripts/openvpn.sh (start|restart|stop)<br />
</pre><br />
<br />
Konfiguration, hier werden die jeweiligen zuätzlichen Optionen eingetragen:<br />
<pre><br />
vi /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf<br />
</pre><br />
<br />
=1. nobody für den Deamon=<br />
Standardmässig läuft der OpenVPN Dienst mit dem User root. Dies ist z.b. bei einem Einbruch ins System ein grosses Problem, da damit der Einbrecher hohe Rechte besitzt. Es empfiehlt sich einen neuen Benutzer „openvpn_server“ zu erstellen oder den User/Gruppe „nobody“ zu verwenden: <br />
<br />
Den Benutzer, die Gruppe hinterlegt man in der openvpn.config:<br />
<pre><br />
user nobody<br />
group nobody<br />
</pre><br />
<br />
Nach dem neustart des Dienstes kann man die Berechtigungen kontrollieren:<br />
<br />
<pre><br />
netstat -tlnp | grep openvpn<br />
tcp 0 0 127.0.0.1:1195 0.0.0.0:* LISTEN 10268/openvpn<br />
</pre><br />
<br />
<pre><br />
ps aux | grep openvpn<br />
</pre><br />
<br />
Der OpenVPN Server wird neben dem Hauptprozess (als nobody) auch 2 Childprozesse gestartet. Diese werden benötigt um Routing zu löschen, da der Hauptprozess zu wenige Privilegien hat.<br />
<br />
=2. tls-auth=<br />
Mit einer HMAC Signatur werden alle Pakete die bei der TLS Handshake involviert sind signiert. Werden Pakete ohne die richtige HMAC Signatur gesendet/empfangen werden sie auf der Stelle verworfen. Damit verhindert man:<br />
<br />
* DoS- Attacken oder Port-flooding auf dem OpenVPN UDP port.<br />
* Port scanning um zu verhindern ob der Server UDP Port abhört<br />
* Buffer overflow Sicherheitslecks in the SSL/TLS-Implementation<br />
* SSL/TLS Handshake Initiierung eines nicht-autorisierenden Computers (Grundsätzlich wird die Verbindung fehlschlagen, da das Zertifikat falsch sein wird. Mit der tls-auth Methode wird aber die Verbindung schon an einem früheren Zeitpunkt gekappt)<br />
<br />
Wir generieren wie folgt eine Signatur:<br />
<pre><br />
openvpn --genkey --secret usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key<br />
</pre><br />
<br />
Auf dem OpenVPN Server tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/hmac.key 0<br />
</pre><br />
<br />
Auf dem OpenVPN Client (Windows) tragen wir folgende Zeile ein:<br />
<pre><br />
tls-auth hmac.key 1<br />
</pre><br />
<br />
=3. Cipher (Chiffre)=<br />
Der VPN Datenkanal kann auf der Synology (DS716+) problemlos auf AES 256bit, im CBC Modus umgestellt werden. Im Standard wird Blowfish-128, bez. bei Synology AES 128 verwendet. Um generell herauszufinden, welche Cipher verfügbar sind, kann diese mit folgendem Befehl anzeigen lassen:<br />
<br />
<pre><br />
openvpn --show-ciphers<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
cipher AES-256-CBC<br />
</pre><br />
<br />
Hinweis: Auf Android Geräten ist AES, Blowfish, und DES Ciphers supportet. Gerade AES ist die beste Wahl für Android mit ARM Prozessoren da sie am effizientesten arbeiten.<br />
<br />
=4. authentication digest (Kryptologische Hashfunktion)=<br />
Es empfiehlt sich die Hashfunktion von SHA-1 auf einen SHA-2 Standard anzuheben. Hier kann man SHA-512 verwenden.<br />
<br />
Man kann mit folgenden Befehl alle Digests anzeigen lassen:<br />
<pre><br />
openvpn --show-digests<br />
</pre><br />
<br />
Auf dem OpenVPN Server/Client tragen wir folgende Zeile ein:<br />
<pre><br />
auth SHA512<br />
</pre><br />
<br />
<br />
=5. tls-cipher (Cipher Suite, Chiffrensammlung)=<br />
In der letzten Option legt man die Cipher Suite fest, die der Server unterstützen wird. Dies hilft dabei, dass man keine unsicheren Methoden verwendet.<br />
<br />
Damit man den Kontroll-Kanal mit dem stärksten Chiffrensammlung (cipher suites) einstellen kann muss man sich bewusst sein, das nicht jede Chiffrensammlung in jeder OpenVPN Version verfügbar ist. Die Verschlüsselung AES in GCM Modus mit TLS 1.2 verwendet SHA2, AES und Camellia in CBC Modus verwendet SHA1 über TLS 1.0.<br />
<br />
[https://community.openvpn.net/openvpn/wiki/Hardening#Useof--tls-cipher]<br />
<br />
Eine Auflistung aller Cipher Suiten kann man sich mittels folgendem Befehl holen:<br />
<pre><br />
openvpn --show-tls<br />
</pre><br />
Erklärung:<br />
* CBC = Cipher Block Chaining Mode<br />
* GCM = Galois/Counter Mode<br />
* AES = Advanced Encryption Standard</div>Stastkahttps://www.synology-wiki.de/index.php?title=Hardware_der_Synology_Stations&diff=6940Hardware der Synology Stations2015-11-27T11:37:32Z<p>Stastka: test</p>
<hr />
<div>[[Category:Prozessor-Architektur]]<br />
{| class="wikitable"<br />
|-<br />
! CPU-Architektur !! CPU-Typ !! CPU-Modell (Cores/Threads) !! DS/RS-Modelle !! Takt !! BUS !! FPU !! RAM !! BIOS<br />
! Optware-Pfad !!Linux *) !! MI / II **) !! Passmark CPU-Mark<br />
|-<br />
! rowspan=14 | [[ARM]]<br />
! rowspan="1" |ARM (armv5b)<br />
|FW IXP420 BB||DS101<br>DS101j||266MHz||@133||||64MB<br>32MB|| || || || || ?<br />
|-<br />
! rowspan="1" |Marvell Feroceon ARMv5TE compliant (armv5tejl)<br />
| [http://www.google.de/url?sa=t&rct=j&q=88f5281&source=web&cd=1&ved=0CB8QFjAA&url=http%3A%2F%2Fwww.ocmodshop.com%2Fimages%2Freviews%2Fnetworking%2Fqnap_ts409u%2Fmarvel_88f5281_data_sheet.pdf&ei=oYjBTuW7GcbGtAag44WeAw&usg=AFQjCNG62LvWJeLzHVwJ4X9tfrJ2Ke3E2Q&sig2=rJVpmqiA1qGToTdad_MQxg&cad=rja 88f5281]<br />
| DS107+<br>DS207+<br>CS407<br>RS407||500MHz||32bit@DDR333||Yes<br />
|128MB<br>128MB<br>128MB<br>128MB<br />
|ds107+<br>ds107+<br><br><br>||<br>syno-x07<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh IPKG]||942: 2.6.15<br>844: 2.6.15<br><br><br><br />
|1.5 / 2.0 || ?<br />
|-<br />
! rowspan="4" |Marvell Kirkwood ARMv5TE compliant (Feroceon® family)<br />
||[http://www.marvell.com//embedded-processors/kirkwood/assets/88F6180-003_ver1.pdf 88F6180]<br />
||USB Station 2<br />
||800MHz<br />
||16bit@DDR400<br />
||No <br />
||128MB<br />
||<br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br>via [http://synology.itolosa.fr/install_guide.pdf inofficial Firmware]<br />
||1417: 2.6.32<br />
|| ||?<br />
|-<br />
||[http://www.marvell.com//embedded-processors/kirkwood/assets/88F6281-004_ver1.pdf 88F6281]<br />
||DS109<br>DS110j<br>DS112j<br>DS209<br>DS210j<br>DS211j<br>DS212j<br>DS409<br>DS409slim<br>DS410j<br>DS411j<br>RS409<br />
||1.2GHz<br>800MHz<br>1.0GHz<br>1.2GHz<br>800MHz<br>1.2GHz<br>1.2GHz<br>1.2GHz<br>1.2GHz<br>800MHz<br>1.2GHz<br>1.2GHz<br />
||16bit@DDR800<br />
||No<br />
||128MB<br>128MB<br>128MB<br>256MB<br>128MB<br>128MB<br>256MB<br>256MB<br>128MB<br>128MB<br>256MB<br>128MB<br />
|| <br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br />
||1139: 2.6.24<br>1342: 2.6.32<br><br><br><br><br><br><br><br />
|| ||?<br />
|-<br />
||[http://www.marvell.com/embedded-processors/armada-300/assets/armada_310.pdf 88F6282]<br />
||DS111<br>DS112<br>DS211<br>DS211+<br>DS212<br>DS213air<br>DS411slim<br>DS413j<br>RS212<br />
||1.6GHz<br />
||16bit@DDR3-1066<br />
||No <br />
||256MB<br>256MB<br>256MB<br>512MB<br>256MB<br>256MB<br>512MB<br>512MB<br>256MB<br />
||<br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br />
||[http://download.synology.com/download/ds/userguide/Synology%20NAS%20Server%203rd-Party%20Apps%20Integration%20Guide.pdf 2.6.32]<br />
||4.6/6.4 ||?<br />
|-<br />
||88FR131<br />
||DS112+<BR>DS212+<br>DS213<br>DS411<br />
||2.0GHz<br />
||DDR3 <br />
||No <br />
||512MB <br />
|| <br />
||<br />
||1944: 2.6.32 <br />
|| ||?<br />
|-<br />
! rowspan="3" |Marvell ARMADA ARMv7<br />
||[http://www.marvell.com/embedded-processors/armada-300/assets/Marvell_ARMADA_370_SoC.pdf ARMADA 370 (1C/1T)]<br />
||DS114<br>DS115j<br>DS213j<br>DS214se<br>DS216se<br>DS414slim<br>EDS14<br>RS214<br />
||1.2GHz<br>800MHz<br>1.2GHz<br>800MHz<br>800MHz<br>1.2GHz<br>1.2GHz<br>1.2GHz<br />
||16bit@DDR3 <br />
||Yes <br />
||512MB<br>256MB<br>512MB<br>256MB<br>256MB<br>512MB<br>512MB<br>512MB<br />
|| <br />
||<br />
||3.2.40 <br />
|| ||?<br />
|-<br />
||[http://www.marvell.com/embedded-processors/armada-300/assets/ARMADA_375_SoC-01_product_brief.pdf ARMADA 375 (2C/2T)]<br />
||DS115<br>DS215J<br />
||800MHz<br />
||DDR3 <br />
||Yes <br />
||512MB<br />
|| <br />
||<br />
||3.2.40 <br />
|| <br />
||?<br />
|-<br />
||[http://www.marvell.com/embedded-processors/armada-xp/assets/Marvell-ArmadaXP-SoC-product%20brief.pdf ARMADA XP (2C/2T)]<br />
||DS214<br>DS214+<br>DS414<br>RS814<br>RS815<br />
||1.066GHz<br>1.33GHz<br>1.33GHz<br>1.33GHz<br>1.33GHz<br />
||DDR3 <br />
||Yes <br />
||512MB<br>1GB<br>1GB<br>1GB<br>1GB<br />
|| <br />
||<br />
||3.2.40 <br />
|| <br />
||?<br />
|-<br />
! rowspan="1" |Mindspeed Comcerto 2000 ARMv7<br />
||[http://www.mindspeed.com/products/cpe-processors/comcertoreg-2000 C2200 (2C/2T)]<br />
||DS414j<br />
||1.2GHz<br />
||DDR3 <br />
||Yes <br />
||512MB<br />
|| <br />
||<br />
||3.2.40 <br />
|| <br />
||?<br />
|-<br />
! rowspan="3" |Annapurna Labs Alpine ARMv7 (armv7l)<br />
||AL-212 (2C/2T)<br />
||DS215+<br>DS416<br />
||1.4GHz<br />
||DDR3 <br />
||Yes <br />
||1GB<br />
|| <br />
||<br />
||3.2.40 <br />
|| <br />
||?<br />
|-<br />
||AL-314 (4C/4T)<br />
||DS715<br>DS1515<br />
||1.4GHz<br />
||DDR3 <br />
||Yes <br />
||2GB<br />
|| <br />
||<br />
||3.2.40 <br />
|| <br />
||?<br />
|-<br />
||AL-514 (4C/4T)<br />
||DS2015xs<br />
||1.7GHz<br />
||DDR3 <br />
||Yes <br />
||4GB<br />
|| <br />
||ds2015xs (unofficial)<br>[https://dl.dropboxusercontent.com/u/104542872/Blog/bootstrap-alpine.tgz IPKG]<br>[http://thingshardtofind.blogspot.de/2015/06/optware-ipkg-and-bootstrap-for-synology.html Compile Packages]<br />
||<br />
|| <br />
||<br />
|-<br />
! rowspan="1" |STM Monaco ARM<br />
||[http://www.st.com/st-web-ui/static/active/en/resource/technical/document/data_brief/DM00094054.pdf STiH412 (2C/2T)]<br />
||DS216play<br />
||1.5GHz<br />
||DDR3 <br />
||Yes <br />
||1024MB<br />
|| <br />
||<br />
||3.2.40 <br />
|| <br />
||?<br />
|-<br />
! rowspan="7" | [[PowerPC]]<br />
! rowspan="3" |Freescale PowerPC (ppc_6xx)<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8241FACT.pdf MPC8241]<br>powerpc<br />
||DS101g+<br>DS106e<br>DS106<br>DS106x<br>DS107<br>DS107e<br>DS109j<br>DS207<br>DS207.128<br>DS209j<br>DS406e<br>CS407e<br />
||266MHz||32bit@133||Yes||64MB<br>32MB<br>64MB<br>128MB<br>64MB<br>32MB<br>32MB<br>64MB<br>128MB<br>64MB<br>64MB<br>64MB<br>|| <br>ds106<br>ds106<br>ds106<br>ds107<br><br><br>ds207<br>ds207<br><br><br>ds406<br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]||<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br><br><br><br><br><br>|| || ?<br />
|-<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8241FACT.pdf MPC8241]<br>powerpc<br />
||DS106j<br>DS108j||200MHz||32bit@133||Yes||32MB<br>32MB||ds106<br><br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]||942: 2.4.22<br>942: 2.4.22|| ||?<br />
|-<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8245FACT.pdf MPC8245]<br>powerpc<br />
||CS406<br>RS406||400MHz|| || ||128MB<br>128MB||ds406<br><br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]|| || ||?<br />
|-<br />
! rowspan="4" |Freescale PowerPC (e500v*)<br />
|[http://www.freescale.com/files/netcomm/doc/fact_sheet/MPC8544FS.pdf MPC8533]<br>ppc853x<br />
||DS109+<br>DS209+II<br>DS409+<br>DS509+<br>RS409(RP)+<br />
||1.067GHz<br />
||64bit@DDR533<br />
||Yes<br />
||512MB<br>512MB<br>512MB<br>1GB<br>1GB<br />
||<br><br><br>ds508<br><br>||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]||957: 2.6.24||4.9 / 5.5 ||?<br />
|-<br />
|[http://www.freescale.com/files/netcomm/doc/fact_sheet/MPC8544FS.pdf MPC8533]<br>ppc854x<br />
||DS209+<br>DS408<br>DS508<br>RS408(RP)||800MHz||64bit@DDR533||Yes||512MB<br>512MB<br>512MB<br>512MB|| ||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno0844ppc854x/cross/unstable/ kernel-module]||957: 2.6.24||3.4 / 4.1 ||?<br />
|-<br />
|[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC8533E MPC8533e]<br>ppc853x<br />
||DS110+<br>DS210+<br>DS410<br />
||1.067GHz<br />
||64bit@DDR533<br />
||Yes<br />
||512MB<br>512MB<br>512MB<br />
||?||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]||957: 2.6.24||? ||?<br />
|-<br />
|[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=P1022 P1022]<br>QorIQ (2C/2T)<br />
||DS213+<br>DS413<br />
||1.067GHz<br />
||64bit@DDR533<br />
||Yes<br />
||512MB<br>1GB<br />
||?||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]||2.6.32.12 (#2636 SMP)||?||?<br />
|-<br />
! | [[x86-32]]<br />
! rowspan="1" |Intel Atom<br />
|CE5335 (2C/4T)<br />
||DS214play<br>DS415play<br />
||1.6GHz ||64bit@DDR3-800||Yes||1GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG]|||| || <br />
|-<br />
! rowspan="11" | [[x86-64]]<br />
! rowspan="6" |Intel Atom<br />
|[http://ark.intel.com/products/43517/Intel-Atom-Processor-D410-512K-Cache-1_66-GHz D410] (1C/2T)<br />
||DS710+||1.67GHz||64bit@DDR2-800||Yes||1GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] || 2.6.32.12 (#2166 SMP)|| || 339<br />
|-<br />
|[http://ark.intel.com/products/43098/Intel-Atom-Processor-D510-1M-Cache-1_66-GHz D510] (2C/4T)<br />
||DS411+<br>DS1010+<br>RS810(RP)+||1.67GHz ||64bit@DDR2-800||Yes||1GB<br>1-3GB<br>1-3GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] || 2.6.32.12 (#1613)|| || 658<br />
|-<br />
|[http://ark.intel.com/products/49490/Intel-Atom-Processor-D525-1M-Cache-1_80-GHz D525] (2C/4T)<br />
||DS411+II<br>DS1511+<br>RS2211+<br>DS2411+||1.8GHz||64bit@DDR2-800||Yes||1GB<br>1-3GB<br>1-3GB<br>1-3GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] || || || 715<br />
|-<br />
|[http://ark.intel.com/products/49489/Intel-Atom-Processor-D425-512K-Cache-1_80-GHz D425] (1C/2T) <br />
||DS712+||1.8GHz||64bit@DDR3-800||Yes||1GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG]<br />
| || || 312<br />
|-<br />
|[http://ark.intel.com/products/59683 D2700] (2C/4T)<br />
||DS713+<br>DS412+<br>DS1512+<br>DS1812+<br>DS1513+<br>DS1813+<br>DS2413+<br>RS814(RP)+<br>RS2414(RP)+<br />
||2.13GHz<br />
||64bit@DDR3-800<br />
||Yes<br />
||1-4GB<br>1-4GB<br>1-4GB<br>1-4GB<br>2-4GB<br>2-4GB<br>2-4GB<br>2-4GB<br>2-4GB<br />
|| <br />
||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG]<br />
|||| || 819<br />
|-<br />
|[http://ark.intel.com/products/77981/Intel-Atom-Processor-C2538-2M-Cache-2_40-GHz C2538] (4C/4T)<br />
||DS415+<br>DS1515+<br>DS1815+<br>DS2415+<br>RS815(RP)+<br>RS2416(RP)+<br />
||2.4GHz ||64bit@DDR3(L)-1600||Yes||2-8GB<br>2-16GB<br>2-16GB<br>2-16GB<br>2-16GB<br>2-16GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG]|||| || 2.329<br />
|-<br />
! rowspan="1" |Intel Celeron<br />
|[http://ark.intel.com/de/products/87258/Intel-Celeron-Processor-N3150-2M-Cache-up-to-2_08-GHz N3150] (4C/4T)<br />
||DS716+<br />
||1.6GHz ||64bit@DDR3L-1600||Yes||2-8GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG]|| || || 1.431<br />
|-<br />
! rowspan="1" |Intel Core i3<br />
|[http://ark.intel.com/products/53422/Intel-Core-i3-2100-Processor-3M-Cache-3_10-GHz i3-2100] (2C/4T)<br />
||DS3611xs<br>RS3411xs<br>RS3411(RP)xs||3.1GHz||64bit@DDR3-1333 ECC||Yes||2-8GB|| ||||1944: 2.6.32|| || 3.856<br />
|}<br />
*) bezogen auf die DS-Firmware-Version (uname -a)<br />
**) BYTEmark<br />
MI := Memory Index<br />
II := Integer Index<br />
Baseline (LINUX) AMD K6/233 (je höher der Wert, desto performanter)<br />
***) Dual Core CPU<br />
<br />
==cpuinfo, Memory, Serien-Nummer, …==<br />
===cpuinfo===<br />
Mit dem Kommando '''cat /proc/cpuinfo''' kann man sich anzeigen lassen, welcher Prozessor in der Synology Station verbaut ist. Die Ausgabe sieht ungefähr so aus:<br />
<br />
<pre><br />
Processor : ARM926EJ-Sid(wb) rev 0 (v5l)<br />
BogoMIPS : 499.71<br />
Features : swp half thumb fastmult vfp edsp<br />
CPU implementer : 0x41<br />
CPU architecture: 5TEJ<br />
CPU variant : 0x0<br />
CPU part : 0x926<br />
CPU revision : 0<br />
Cache type : write-back<br />
Cache clean : cp15 c7 ops<br />
Cache lockdown : format C<br />
Cache format : Harvard<br />
I size : 32768<br />
I assoc : 1<br />
I line length : 32<br />
I sets : 1024<br />
D size : 32768<br />
D assoc : 4<br />
D line length : 32<br />
D sets : 256<br />
</pre><br />
<br />
Oder man bekommt folgende Anzeige:<br />
<pre><br />
processor : 0<br />
cpu : e500v2<br />
clock : 1066.560000MHz<br />
revision : 2.2 (pvr 8021 0022)<br />
bogomips : 133.12<br />
timebase : 66660000<br />
platform : MPC8544 DS<br />
Vendor : Freescale Semiconductor<br />
PVR : 0x80210022<br />
SVR : 0x80340011<br />
PLL setting : 0x4<br />
Memory : 512 MB<br />
</pre><br />
<br />
In diesem Fall auf die Seite des Herstellers (in dieser Anzeige Freescale Semiconductor) gehen<br />
und die Prozessortype suchen, die sich hinter der Bezeichnung "platform" verbirgt. <br />
<br />
In diesem Bsp. handelt es sich um einen Power PC Prozessor der Type MPC8544 DS der Firma Freescale Semiconductor. <br />
Dazu passt also das Package für den Power Prozessor mit der Bezeichnung MPC85XX. so<br />
<br />
<pre><br />
Hardware : MV-88fxx81<br />
Revision : 0000<br />
Serial : 0000000000000000<br />
</pre><br />
<br />
===Serien-Nummer===<br />
Die Serien-Nummer kann man sich mit '''cat /proc/sys/kernel/syno_serial''' anzeigen lassen:<br />
<pre><br />
xxxxxxx> cat /proc/sys/kernel/syno_serial<br />
94G3N00147<br />
</pre><br />
<br />
===Memory===<br />
<pre><br />
xxxxxxx> fgrep MemTotal /proc/meminfo<br />
…<br />
</pre><br />
.<br />
==Weblinks==<br />
*[http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have Wiki Synology (englisch): What kind of CPU does my NAS have]<br />
*[http://oinkzwurgl.org/diskstation_hardware Oinkzwurgl: DiskStation Hardware]<br />
*[http://www.nslu2-linux.org/wiki/DS101/HardwareList NSLU2: Hardware-List]<br />
[[Kategorie:Hardware]][[Kategorie:IPKG-Apps]]</div>Stastkahttps://www.synology-wiki.de/index.php?title=Locale-UTF8&diff=4227Locale-UTF82012-03-22T11:55:45Z<p>Stastka: Die Seite wurde neu angelegt: „= Shell: locale UTF-8 Support = == Was ist UTF-8? Ein kleine Exkursion: == UTF-8 ist eine Abkürzung für 8-Bit UCS Transformation Format , wobei UCS für „Un…“</p>
<hr />
<div>= Shell: locale UTF-8 Support =<br />
<br />
== Was ist UTF-8? Ein kleine Exkursion: ==<br />
UTF-8 ist eine Abkürzung für 8-Bit UCS Transformation Format , wobei UCS für „Universal Character Set“ steht. Sie ist die am meisten verbreiteter Standard Kodierung von Unicode-Zeichen. Bei der UTF-8-Kodierung wird jedem Unicode-Zeichen eine speziell kodierte Bytekette variabler Länge zugeordnet. UTF-8 unterstützt bis zu vier Byte, auf die sich wie bei allen UTF-Formaten alle Unicode-Zeichen abbilden lassen.<br />
<br />
UTF8 ist ein zentraler Bestandteil als Weltweites Zeichenkodierung im Internet. So unterstützen moderne Browser und Email-Client UTF8 Standardmässig. Neben dem Internet empfiehlt es sich auch lokal auf dem Computer/Server mit dieser Kodierung zu arbeiten.<br />
<br />
== Synology NAS und UTF-8 Unterstützung ==<br />
Bei der Dateifreigaben Windows, Mac, Linux besteht bereit eine UTF-8 Unterstützung. Bei FTP muss man in der Systemsteuerung der DMS den UTF8-Support aktivieren. Bei der Shell sieht es anders aus. z.Z. gibt es bei der Standardinstallation keinen UTF-8 Support. Ein Ordner "öäü" sieht dann in der Shell folgendermassen aus: <br />
<pre><br />
öäü<br />
</pre><br />
<br />
Der Grund ist schnell gefunden, es besteht kein UTF-8 Support: <br />
<pre><br />
NAS>locale –a<br />
C<br />
POSIX <br />
</pre><br />
<br />
== Installation ==<br />
<br />
=== Ziele und Anforderungen ===<br />
Ziel dieses Beitrages ist es, dass man den UTF-8 Support für die Shell installieren kann.<br />
<br />
==== Voraussetzungen ====<br />
Dieses Beschreibung richtet sich an Administratoren die sich in der Shell auskennen.<br />
<br />
==== System ====<br />
* System: Synology NAS DS211+<br />
* DSM: 4.0 (2198)<br />
* Tool-Chain: gcc421_glibc25_88f6281-GPL.tgz (Marvell 88F628x Linux 2.6.32)<br />
<br />
Sollte ein einderes Modell verwendet werden muss sichergestellen werden, dass die richtige CPU-Architektur verwendet wird.<br />
<br />
==== Installation ====<br />
ToolChain herunterladen<br />
<pre><br />
wget http://downloads.sourceforge.net/project/dsgpl/DSM%204.0%20Tool%20Chains/Marvell%2088F628x%20Linux%202.6.32/gcc421_glibc25_88f6281-GPL.tgz<br />
</pre><br />
<br />
Enpacken<br />
<pre><br />
tar -zvxf gcc421_glibc25_88f6281-GPL.tgz<br />
</pre><br />
<br />
locale Ordner erstellen:<br />
<pre><br />
mkdir /usr/lib/locale<br />
</pre><br />
<br />
Programme kopieren mit der die Daten generiert werden können<br />
<pre><br />
cp ./arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/bin/ locale /opt/bin/<br />
cp ./arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/bin/ localedef /opt/bin/<br />
</pre><br />
<br />
<br />
Lokalisierung kopieren<br />
<pre><br />
cp ./arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/share/i18n/ /usr/share<br />
</pre><br />
<br />
<br />
UTF-8 Datei mit dem localedef Tool erzeugen<br />
<br />
Englisch/USA<br />
<pre><br />
/opt/bin/localedef -c -f UTF-8 -i en_US en_US.UTF-8<br />
</pre><br />
<br />
Deutsch(Schweiz)<br />
<pre><br />
/opt/bin/localedef -c -f UTF-8 -i de_CH de_CH.UTF-8<br />
</pre><br />
<br />
Sollte der Befehl nach ca. 10-20 Sekunden beendet sein und keine Fehlermeldung erscheinen so kann man nun prüfen welche Kodierung verfügbar sind:<br />
<pre><br />
/opt/bin/locale –a<br />
C<br />
en_US.utf8<br />
de_CH.utf8<br />
POSIX <br />
</pre><br />
<br />
Ist nun der UTF-8 vorhanden kann man in seinem Profil-Datei diese eintragen:<br />
<pre><br />
LANG=de_CH.UTF-8<br />
LC_ALL=de_CH.UTF-8<br />
export LANG LC_ALL <br />
</pre><br />
<br />
Die Shell (Putty) kann nun geschlossen werden. Als letzter Punkt muss man bei Putty die Verbindungsdaten ändern:<br />
<pre><br />
Window>Translation<br />
<br />
Character set translation> "Remote character set:" UTF-8<br />
</pre><br />
<br />
<br />
Verbindet man sich jetzt per Shell kann man den UTF-8 Support testen:<br />
<pre><br />
NAS>locale<br />
LANG=de_CH.UTF-8<br />
LC_CTYPE="de_CH.UTF-8"<br />
LC_NUMERIC="de_CH.UTF-8"<br />
LC_TIME="de_CH.UTF-8"<br />
LC_COLLATE="de_CH.UTF-8"<br />
LC_MONETARY="de_CH.UTF-8"<br />
LC_MESSAGES="de_CH.UTF-8"<br />
LC_PAPER="de_CH.UTF-8"<br />
LC_NAME="de_CH.UTF-8"<br />
LC_ADDRESS="de_CH.UTF-8"<br />
LC_TELEPHONE="de_CH.UTF-8"<br />
LC_MEASUREMENT="de_CH.UTF-8"<br />
LC_IDENTIFICATION="de_CH.UTF-8"<br />
LC_ALL=de_CH.UTF-8<br />
</pre><br />
<br />
Somit sieht der Ordner öäü neu folgendermassen aus: <br />
<pre><br />
öäü<br />
</pre><br />
<br />
=== Anmerkung zu WinSCP/SCP ===<br />
Bei WinSCP kann man UTF-8 nur mit den Protokollen FTP oder SFTP verwenden. SCP kann von Haus aus nicht UTF-8. <br />
Näheres unter:<br />
* http://winscp.net/eng/docs/faq_utf8</div>Stastkahttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=3503Modifikationen2011-09-09T18:07:20Z<p>Stastka: </p>
<hr />
<div>{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Der Editor vi]]<br />
##[[Alternativer Editor nano]]<br />
##[[less und vim]]<br />
##[[Synology Toolset]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[SSH ohne Passwort]]<br />
###[[Putty ohne Passwort einloggen]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
###[[DSM Zugriff auf IP-Ebene beschränken]]<br />
###[[Debian auf der DiskStation]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der mySQL-Datenbank über einen cronjob|Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
###[[PS3 Mediaserver]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche_in_der_Mailstation|Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
### [[Hits_der_Photostation_zuruecksetzen|Hits der Photostation zuruecksetzen]]<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng_via_ipkg_installieren|syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein Email verschicken]]<br />
##[[Nmap|Portscanner Nmap]]<br />
#[[3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Aufbau eines Synology Packages (SPK)]]<br />
###[[Aufbau der Datei 'INFO']]<br />
###[[Aufbau der Datei 'application.cfg']]<br />
###[[Aufbau der Datei 'config.conf']]<br />
###[[Integration einer Hilfe in DSM 3|Hilfe in DSM integrieren]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Wake on LAN (WOL) nur mit PHP, auch über das Internet]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[TeamSpeak 3 Server]]<br />
###[[Weave Minimal Server für Firefox Sync]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]] <br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
#Hardware Modifikationen<br />
##[[DiskStation 209+ flüsterleise machen]]<br />
##[[DiskStation 106 automatisch einschalten]]<br />
##[[DiskStation 107 automatisch einschalten]]<br />
##[[DiskStation 211 automatisch einschalten]]<br />
##[[DiskStation 408 automatisch einschalten]]<br />
##[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Stastkahttps://www.synology-wiki.de/index.php?title=Nmap&diff=3502Nmap2011-09-09T15:12:56Z<p>Stastka: Die Seite wurde neu angelegt: „= nmap (ipkg) = Nmap ist ein Werkzeug zum Scannen und Auswerten von Hosts in einem Computernetzwerk und fällt somit in die Kategorie der Portscanner. Für Netzw…“</p>
<hr />
<div>= nmap (ipkg) =<br />
Nmap ist ein Werkzeug zum Scannen und Auswerten von Hosts in einem Computernetzwerk und fällt somit in die Kategorie der Portscanner. <br />
Für Netzwerk-Admins ist es das wichtigste Tool überhaupt. Man kann damit aktive/passiv (TCP-FIN-Scan) sein Netzwerk scannen und ggf. offne Ports aufspüren.<br />
<br />
== Version ==<br />
Diese Seite bezieht sich auf die DS211+, nmap Version:5.35DC1-1<br />
<br />
== Installation ==<br />
<pre><br />
ipkg install nmap<br />
</pre><br />
<br />
<br />
=== Installations-Tipp ===<br />
Sollte nach der installation folgende Fehlermeldung kommen:<br />
<pre><br />
nmap: error while loading shared libraries: liblua.so: cannot open shared object file: No such file or directory<br />
</pre><br />
Muss man die Skriptsprache lua nachinstallieren:<br />
<pre><br />
ipkg install lua<br />
</pre><br />
<br />
== Beispiele ==<br />
Will man alle aktiven Hosts in einem Privaten C-Klasse finden:<br />
<pre><br />
nmap -nsP 192.168.0.0/24<br />
</pre><br />
<br />
Alle offenen Ports eines Hosts finden:<br />
<pre><br />
nmap -sT 192.168.1.55<br />
</pre><br />
<br />
Weitere Beispiele:<br />
* http://nmap.org/man/de/man-examples.html<br />
* http://www.nwlab.net/tutorials/portscanner/nmap-tutorial.html<br />
<br />
== Quellen: ==<br />
* http://de.wikipedia.org/wiki/Nmap</div>Stastkahttps://www.synology-wiki.de/index.php?title=Nail&diff=3207Nail2011-05-31T10:28:30Z<p>Stastka: /* Beispiel für ein Statusmail */</p>
<hr />
<div>= nail (ipkg)=<br />
<br />
== Installation ==<br />
<pre><br />
ipkg install nail<br />
</pre><br />
<br />
== Konfiguration ==<br />
Damit man Mails verschicken kann muss man noch einen SMTP Server angeben:<br />
<br />
<pre>/opt/etc/nail.rc</pre><br />
<br />
=== Konfiguration mit verschlüsselter SMTP Authentifizierung ===<br />
Für einen Mailversand in ein externes Netz (Internet), schickt man Mails über eine verschlüsselte SMTP verbindung.<br />
<pre><br />
set smtp=smtps://<MAILSERVER>:465<br />
set from="linux@domain.ch"<br />
set smtp-auth=login<br />
set smtp-auth-user=<EMAIL><br />
set smtp-auth-password=<PASSWORT><br />
set ssl-verify=ignore<br />
</pre><br />
<br />
==== Anmerkung ====<br />
'''ssl-verify''' kann man auf auf '''ingnor''' setzen wenn man zwar einen eigenen Mailserver bei einem Provider hat, aber kein eigenes Zertifikat. <br />
<br />
=== Konfiguration unverschlüsselt ===<br />
Ist ein Mailserver im internen Netz vorhanden, kann auf eine Verschlüsselung verzichten werden.<br />
<pre><br />
set smtp=smtp://<MAILSERVER><br />
set from="linux@domain.ch"<br />
</pre><br />
<br />
== Beispiel für ein Statusmail ==<br />
Mit Nail kann man Daten als Anhang wie z.B. Logs mitschicken:<br />
<pre><br />
echo "Test! Dies ist nur eine Testmail" | nail -s "Statusinfo" -a /var/log/meindienst.log <EMAIL><br />
</pre><br />
<br />
Weiteres Beispiel: [[Statusmail_von_der_Diskstation]]</div>Stastkahttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=3206Modifikationen2011-05-31T10:26:52Z<p>Stastka: </p>
<hr />
<div>{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Der Editor vi]]<br />
##[[Alternativer Editor nano]]<br />
##[[less und vim]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[SSH ohne Passwort]]<br />
###[[Putty ohne Passwort einloggen]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der mySQL-Datenbank über einen cronjob|Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche_in_der_Mailstation|Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng_via_ipkg_installieren|syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
##[[Nail|Mit Nail ein Email verschicken]]<br />
#[[3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Integration einer Hilfe in DSM 3|Hilfe in DSM integrieren]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[Weave Minimal Server für Firefox Sync]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]] <br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
#Hardware Modifikationen<br />
##[[DiskStation 209+ flüsterleise machen]]<br />
##[[DiskStation 106 automatisch einschalten]]<br />
##[[DiskStation 107 automatisch einschalten]]<br />
##[[DiskStation 408 automatisch einschalten]]<br />
##[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Stastkahttps://www.synology-wiki.de/index.php?title=Nail&diff=3205Nail2011-05-31T10:25:18Z<p>Stastka: Die Seite wurde neu angelegt: „= nail (ipkg)= == Installation == <pre> ipkg install nail </pre> == Konfiguration == Damit man Mails verschicken kann muss man noch einen SMTP Server angeben: …“</p>
<hr />
<div>= nail (ipkg)=<br />
<br />
== Installation ==<br />
<pre><br />
ipkg install nail<br />
</pre><br />
<br />
== Konfiguration ==<br />
Damit man Mails verschicken kann muss man noch einen SMTP Server angeben:<br />
<br />
<pre>/opt/etc/nail.rc</pre><br />
<br />
=== Konfiguration mit verschlüsselter SMTP Authentifizierung ===<br />
Für einen Mailversand in ein externes Netz (Internet), schickt man Mails über eine verschlüsselte SMTP verbindung.<br />
<pre><br />
set smtp=smtps://<MAILSERVER>:465<br />
set from="linux@domain.ch"<br />
set smtp-auth=login<br />
set smtp-auth-user=<EMAIL><br />
set smtp-auth-password=<PASSWORT><br />
set ssl-verify=ignore<br />
</pre><br />
<br />
==== Anmerkung ====<br />
'''ssl-verify''' kann man auf auf '''ingnor''' setzen wenn man zwar einen eigenen Mailserver bei einem Provider hat, aber kein eigenes Zertifikat. <br />
<br />
=== Konfiguration unverschlüsselt ===<br />
Ist ein Mailserver im internen Netz vorhanden, kann auf eine Verschlüsselung verzichten werden.<br />
<pre><br />
set smtp=smtp://<MAILSERVER><br />
set from="linux@domain.ch"<br />
</pre><br />
<br />
== Beispiel für ein Statusmail ==<br />
Mit Nail kann man Daten als Anhang wie z.B. Logs mitschicken:<br />
<pre><br />
echo "Test! Dies ist nur eine Testmail" | nail -s "Statusinfo" -a /var/log/meindienst.log <EMAIL><br />
</pre></div>Stastkahttps://www.synology-wiki.de/index.php?title=Hardware_der_Synology_Stations&diff=3201Hardware der Synology Stations2011-05-25T10:16:49Z<p>Stastka: </p>
<hr />
<div>==Tabelle==<br />
{| border="1" cellpadding="6" cellspacing="0" style="text-align:left"<br />
|-<br />
!width="80"|CPU-Typ<br />
!width="100"|CPU-Modell<br />
!width="80"|DS-Modelle<br />
!width="50"|Takt<br />
!width="100"|BUS<br />
!width="30"|FP<br />
!width="50"|RAM<br />
!width="50"|BIOS<br />
!width="90"|Optware-Pfad<br />
!width="75"|Linux *)<br />
!width="60"|MI / II **)<br />
|-<br />
|ARM (armv5b)||FW IXP420 BB||DS101<br>DS101j||266MHz||@133||||64MB<br>32MB|| || || ||<br />
|-<br />
|Marvell Feroceon ARMv5TE compliant (armv5tejl)|| 88f5281<br />
||DS107+<br>DS107+.128<br>DS207+<br>CS407<br>RS407||500MHz||32bit@DDR333||Yes<br />
||128MB<br>128MB<br>128MB<br>128MB<br>128MB<br />
||ds107+<br>ds107+<br>ds107+<br><br><br>||<br>syno-x07<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh IPKG]||942: 2.6.15<br>942: 2.6.15<br>844: 2.6.15<br><br><br><br />
||1.5 / 2.0<br />
|-<br />
! rowspan="3" |Marvell Kirkwood ARMv5TE compliant (Feroceon® family)<br />
||[http://www.marvell.com/products/processors/embedded/kirkwood/88F6180-003_ver1.pdf 88F6180]<br />
||USBStation2<br />
||800MHz<br />
||16bit@DDR400<br />
||No <br />
||128MB<br />
||<br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br>via [http://synology.itolosa.fr/install_guide.pdf inofficial Firmware]<br />
||1417: 2.6.32<br />
|| <br />
|-<br />
||[http://www.marvell.com/products/processors/embedded/kirkwood/88F6281-004_ver1.pdf 88F6281]<br />
||DS109<br>DS110j<br>DS209<br>DS210j<br>DS211j<br>DS409<br>DS409slim<br>DS410j<br>RS409<br />
||1.2GHz<br>800Mhz<br>1.2GHz<br>800MHz<br>1.2GHz<br>1.2GHz<br>800MHz<br>1.2GHz<br><br />
||16bit@DDR800<br />
||No<br />
||128MB<br>128MB<br>256MB<br>128MB<br>256MB<br>128MB<br>128MB<br>256MB<br />
|| <br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br />
||1139: 2.6.24<br>1342: 2.6.32<br><br><br><br><br><br><br><br />
|| <br />
|-<br />
||[http://www.marvell.com/products/processors/embedded/armada_300/armada_310.pdf 88F6282]<br />
||DS111<br>DS211<br>DS211+<br>DS411slim<br />
||1.6GHz<br />
||16bit@DDR3-1066<br />
||No <br />
||256MB<br>256MB<br>512MB<br />
||<br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br />
||[http://download.synology.com/download/ds/userguide/Synology%20NAS%20Server%203rd-Party%20Apps%20Integration%20Guide.pdf 2.6.32]<br><br><br><br />
||4.6/6.4<br />
|-<br />
! rowspan="3" |Freescale PowerPC (ppc_6xx)<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8241FACT.pdf MPC8241]<br>powerpc<br />
||DS101g+<br>DS106e<br>DS106<br>DS106x<br>DS107<br>DS107e<br>DS109j<br>DS207<br>DS207.128<br>DS209j<br>DS406e<br>CS407e<br />
||266MHz||32bit@133||Yes||64MB<br>32MB<br>64MB<br>128MB<br>64MB<br>32MB<br>32MB<br>64MB<br>128MB<br>64MB<br>64MB<br>64MB<br>|| <br>ds106<br>ds106<br>ds106<br>ds107<br><br><br>ds207<br>ds207<br><br><br>ds406<br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]||<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br><br><br><br><br><br>||<br />
|-<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8241FACT.pdf MPC8241]<br>powerpc<br />
||DS106j<br>DS108j||200MHz||32bit@133||Yes||32MB<br>32MB||ds106<br><br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]||942: 2.4.22<br>942: 2.4.22||<br />
|-<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8245FACT.pdf MPC8245]<br>powerpc<br />
||CS406<br>RS406||400MHz|| || ||128MB<br>128MB||ds406<br><br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]|| || <br />
|-<br />
|Freescale PowerPC||[http://www.freescale.com/files/netcomm/doc/fact_sheet/MPC8544FS.pdf MPC8533]<br>ppc853x<br />
||DS109+<br>DS209+II<br>DS409+<br>DS509+<br>RS409+<br>RS409RP+<br />
||1.06GHz<br />
||64bit@DDR533<br />
||Yes<br />
||512MB<br>512MB<br>512MB<br>1GB<br>1GB<br>1GB<br />
||<br><br><br>ds508<br><br><br>||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]||957: 2.6.24||4.9 / 5.5<br />
|-<br />
|Freescale PowerPC||[http://www.freescale.com/files/netcomm/doc/fact_sheet/MPC8544FS.pdf MPC8533]<br>ppc854x<br />
||DS209+<br>DS408<br>DS508<br>RS408<br>RS408RP||800MHz||64bit@DDR533||Yes||512MB<br>512MB<br>512MB<br>512MB<br>512MB|| ||syno-e500v2<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno0844ppc854x/cross/unstable/ kernel-module]||957: 2.6.24||3.4 / 4.1<br />
|-<br />
|Freescale PowerPC||[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC8533E MPC8533e]<br>ppc853x<br />
||DS110+<br>DS210+<br>DS410<br />
||1.06GHz<br />
||64bit@DDR533<br />
||Yes<br />
||512MB<br>512MB<br>512MB<br />
||?||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]||957: 2.6.24||?<br />
|-<br />
! rowspan="4" |Intel Atom<br />
|D410<br />
||DS710+||1.67GHz||64bit@DDR2-800|| ||1GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] ||?||<br />
|-<br />
|D510<br />
||DS411+||1.67GHz***||64bit@DDR800|| ||1GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] || 2.6.32.12 (#1613)||<br />
|-<br />
|D510<br />
||DS1010+||1.67GHz***||64bit@DDR2-800|| ||1GB-3GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] ||1041||<br />
|-<br />
|D525 <br />
||RS2211+||1.8GHz***||64bit@DDR2-800|| ||1GB-3GB|| ||||||<br />
|-<br />
<br />
|}<br />
*) bezogen auf die DS-Firmware-Version (uname -a)<br />
**) BYTEmark<br />
MI := Memory Index<br />
II := Integer Index<br />
Baseline (LINUX) AMD K6/233 (je höher der Wert, desto performanter)<br />
***) Dual Core CPU<br />
<br />
==cpuinfo==<br />
Mit dem Kommando '''cat /proc/cpuinfo''' kann man sich anzeigen lassen, welcher Prozessor in der Synology Station verbaut ist. Die Ausgabe sieht ungefähr so aus:<br />
<br />
<pre>Processor : ARM926EJ-Sid(wb) rev 0 (v5l)<br />
BogoMIPS : 499.71<br />
Features : swp half thumb fastmult vfp edsp<br />
CPU implementer : 0x41<br />
CPU architecture: 5TEJ<br />
CPU variant : 0x0<br />
CPU part : 0x926<br />
CPU revision : 0<br />
Cache type : write-back<br />
Cache clean : cp15 c7 ops<br />
Cache lockdown : format C<br />
Cache format : Harvard<br />
I size : 32768<br />
I assoc : 1<br />
I line length : 32<br />
I sets : 1024<br />
D size : 32768<br />
D assoc : 4<br />
D line length : 32<br />
D sets : 256<br />
<br />
Oder man bekommt folgende Anzeige:<br />
xxxxx> cat /proc/cpuinfo<br />
processor : 0<br />
cpu : e500v2<br />
clock : 1066.560000MHz<br />
revision : 2.2 (pvr 8021 0022)<br />
bogomips : 133.12<br />
timebase : 66660000<br />
platform : MPC8544 DS<br />
Vendor : Freescale Semiconductor<br />
PVR : 0x80210022<br />
SVR : 0x80340011<br />
PLL setting : 0x4<br />
Memory : 512 MB<br />
xxxxxxx> cat /proc/sys/kernel/syno_serial<br />
94G3N00147<br />
<br />
In diesem Fall auf die Seite des Herstellers (in dieser Anzeige Freescale Semiconductor) gehen<br />
und die Prozessortype suchen, die sich hinter der Bezeichnung "platform" verbirgt. <br />
<br />
In diesem Bsp. handelt es sich um einen Power PC Prozessor der Type MPC8544 DS der Firma Freescale Semiconductor. <br />
Dazu passt also das Package für den Power Prozessor mit der Bezeichnung MPC85XX. so<br />
<br />
Hardware : MV-88fxx81<br />
Revision : 0000<br />
Serial : 0000000000000000</pre><br />
<br />
Die Serien-Nummer kann man sich mit '''cat /proc/sys/kernel/syno_serial''' anzeigen lassen.<br />
<br />
==Weblinks==<br />
*[http://forum.synology.com/wiki/index.php/Is_my_NAS_an_ARM_or_a_PowerPC_CPU_model Wiki Synology (englisch): What kind of CPU does my NAS have]<br />
*[http://oinkzwurgl.org/diskstation_hardware Oinkzwurgl: DiskStation Hardware]<br />
*[http://www.nslu2-linux.org/wiki/DS101/HardwareList NSLU2: Hardware-List]<br />
[[Kategorie:Ipkg|IPKG]]</div>Stastkahttps://www.synology-wiki.de/index.php?title=Hardware_der_Synology_Stations&diff=3200Hardware der Synology Stations2011-05-25T10:11:02Z<p>Stastka: </p>
<hr />
<div>==Tabelle==<br />
{| border="1" cellpadding="6" cellspacing="0" style="text-align:left"<br />
|-<br />
!width="80"|CPU-Typ<br />
!width="100"|CPU-Modell<br />
!width="80"|DS-Modelle<br />
!width="50"|Takt<br />
!width="100"|BUS<br />
!width="30"|FP<br />
!width="50"|RAM<br />
!width="50"|BIOS<br />
!width="90"|Optware-Pfad<br />
!width="75"|Linux *)<br />
!width="60"|MI / II **)<br />
|-<br />
|ARM (armv5b)||FW IXP420 BB||DS101<br>DS101j||266MHz||@133||||64MB<br>32MB|| || || ||<br />
|-<br />
|Marvell Feroceon ARMv5TE compliant (armv5tejl)|| 88f5281<br />
||DS107+<br>DS107+.128<br>DS207+<br>CS407<br>RS407||500MHz||32bit@DDR333||Yes<br />
||128MB<br>128MB<br>128MB<br>128MB<br>128MB<br />
||ds107+<br>ds107+<br>ds107+<br><br><br>||<br>syno-x07<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh IPKG]||942: 2.6.15<br>942: 2.6.15<br>844: 2.6.15<br><br><br><br />
||1.5 / 2.0<br />
|-<br />
! rowspan="3" |Marvell Kirkwood ARMv5TE compliant (Feroceon® family)<br />
||[http://www.marvell.com/products/processors/embedded/kirkwood/88F6180-003_ver1.pdf 88F6180]<br />
||USBStation2<br />
||800MHz<br />
||16bit@DDR400<br />
||No <br />
||128MB<br />
||<br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br>via [http://synology.itolosa.fr/install_guide.pdf inofficial Firmware]<br />
||1417: 2.6.32<br />
|| <br />
|-<br />
||[http://www.marvell.com/products/processors/embedded/kirkwood/88F6281-004_ver1.pdf 88F6281]<br />
||DS109<br>DS110j<br>DS209<br>DS210j<br>DS211j<br>DS409<br>DS409slim<br>DS410j<br>RS409<br />
||1.2GHz<br>800Mhz<br>1.2GHz<br>800MHz<br>1.2GHz<br>1.2GHz<br>800MHz<br>1.2GHz<br><br />
||16bit@DDR800<br />
||No<br />
||128MB<br>128MB<br>256MB<br>128MB<br>256MB<br>128MB<br>128MB<br>256MB<br />
|| <br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br />
||1139: 2.6.24<br>1342: 2.6.32<br><br><br><br><br><br><br><br />
|| <br />
|-<br />
||[http://www.marvell.com/products/processors/embedded/armada_300/armada_310.pdf 88F6282]<br />
||DS111<br>DS211<br>DS211+<br>DS411slim<br />
||1.6GHz<br />
||16bit@DDR3-1066<br />
||No <br />
||256MB<br>256MB<br>512MB<br />
||<br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br />
||[http://download.synology.com/download/ds/userguide/Synology%20NAS%20Server%203rd-Party%20Apps%20Integration%20Guide.pdf 2.6.32]<br><br><br><br />
||4.6/6.4<br />
|-<br />
! rowspan="3" |Freescale PowerPC (ppc_6xx)<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8241FACT.pdf MPC8241]<br>powerpc<br />
||DS101g+<br>DS106e<br>DS106<br>DS106x<br>DS107<br>DS107e<br>DS109j<br>DS207<br>DS207.128<br>DS209j<br>DS406e<br>CS407e<br />
||266MHz||32bit@133||Yes||64MB<br>32MB<br>64MB<br>128MB<br>64MB<br>32MB<br>32MB<br>64MB<br>128MB<br>64MB<br>64MB<br>64MB<br>|| <br>ds106<br>ds106<br>ds106<br>ds107<br><br><br>ds207<br>ds207<br><br><br>ds406<br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]||<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br><br><br><br><br><br>||<br />
|-<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8241FACT.pdf MPC8241]<br>powerpc<br />
||DS106j<br>DS108j||200MHz||32bit@133||Yes||32MB<br>32MB||ds106<br><br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]||942: 2.4.22<br>942: 2.4.22||<br />
|-<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8245FACT.pdf MPC8245]<br>powerpc<br />
||CS406<br>RS406||400MHz|| || ||128MB<br>128MB||ds406<br><br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]|| || <br />
|-<br />
|Freescale PowerPC||[http://www.freescale.com/files/netcomm/doc/fact_sheet/MPC8544FS.pdf MPC8533]<br>ppc853x<br />
||DS109+<br>DS209+II<br>DS409+<br>DS509+<br>RS409+<br>RS409RP+<br />
||1.06GHz<br />
||64bit@DDR533<br />
||Yes<br />
||512MB<br>512MB<br>512MB<br>1GB<br>1GB<br>1GB<br />
||<br><br><br>ds508<br><br><br>||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]||957: 2.6.24||4.9 / 5.5<br />
|-<br />
|Freescale PowerPC||[http://www.freescale.com/files/netcomm/doc/fact_sheet/MPC8544FS.pdf MPC8533]<br>ppc854x<br />
||DS209+<br>DS408<br>DS508<br>RS408<br>RS408RP||800MHz||64bit@DDR533||Yes||512MB<br>512MB<br>512MB<br>512MB<br>512MB|| ||syno-e500v2<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno0844ppc854x/cross/unstable/ kernel-module]||957: 2.6.24||3.4 / 4.1<br />
|-<br />
|Freescale PowerPC||[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC8533E MPC8533e]<br>ppc853x<br />
||DS110+<br>DS210+<br>DS410<br />
||1.06GHz<br />
||64bit@DDR533<br />
||Yes<br />
||512MB<br>512MB<br>512MB<br />
||?||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]||957: 2.6.24||?<br />
|-<br />
! rowspan="4" |Intel Atom<br />
|D410<br />
||DS710+||1.67GHz||64bit@DDR2-800|| ||1GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] ||?||<br />
|-<br />
|D510<br />
||DS411+||1.67GHz||64bit@DDR800|| ||1GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] || 2.6.32.12 (#1613)||<br />
|-<br />
|D510<br />
||DS1010+||1.67GHz***||64bit@DDR2-800|| ||1GB-3GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] ||1041||<br />
|-<br />
|D525 <br />
||RS2211+||1.8GHz***||64bit@DDR2-800|| ||1GB-3GB|| ||||||<br />
|-<br />
<br />
|}<br />
*) bezogen auf die DS-Firmware-Version (uname -a)<br />
**) BYTEmark<br />
MI := Memory Index<br />
II := Integer Index<br />
Baseline (LINUX) AMD K6/233 (je höher der Wert, desto performanter)<br />
***) Dual Core CPU<br />
<br />
==cpuinfo==<br />
Mit dem Kommando '''cat /proc/cpuinfo''' kann man sich anzeigen lassen, welcher Prozessor in der Synology Station verbaut ist. Die Ausgabe sieht ungefähr so aus:<br />
<br />
<pre>Processor : ARM926EJ-Sid(wb) rev 0 (v5l)<br />
BogoMIPS : 499.71<br />
Features : swp half thumb fastmult vfp edsp<br />
CPU implementer : 0x41<br />
CPU architecture: 5TEJ<br />
CPU variant : 0x0<br />
CPU part : 0x926<br />
CPU revision : 0<br />
Cache type : write-back<br />
Cache clean : cp15 c7 ops<br />
Cache lockdown : format C<br />
Cache format : Harvard<br />
I size : 32768<br />
I assoc : 1<br />
I line length : 32<br />
I sets : 1024<br />
D size : 32768<br />
D assoc : 4<br />
D line length : 32<br />
D sets : 256<br />
<br />
Oder man bekommt folgende Anzeige:<br />
xxxxx> cat /proc/cpuinfo<br />
processor : 0<br />
cpu : e500v2<br />
clock : 1066.560000MHz<br />
revision : 2.2 (pvr 8021 0022)<br />
bogomips : 133.12<br />
timebase : 66660000<br />
platform : MPC8544 DS<br />
Vendor : Freescale Semiconductor<br />
PVR : 0x80210022<br />
SVR : 0x80340011<br />
PLL setting : 0x4<br />
Memory : 512 MB<br />
xxxxxxx> cat /proc/sys/kernel/syno_serial<br />
94G3N00147<br />
<br />
In diesem Fall auf die Seite des Herstellers (in dieser Anzeige Freescale Semiconductor) gehen<br />
und die Prozessortype suchen, die sich hinter der Bezeichnung "platform" verbirgt. <br />
<br />
In diesem Bsp. handelt es sich um einen Power PC Prozessor der Type MPC8544 DS der Firma Freescale Semiconductor. <br />
Dazu passt also das Package für den Power Prozessor mit der Bezeichnung MPC85XX. so<br />
<br />
Hardware : MV-88fxx81<br />
Revision : 0000<br />
Serial : 0000000000000000</pre><br />
<br />
Die Serien-Nummer kann man sich mit '''cat /proc/sys/kernel/syno_serial''' anzeigen lassen.<br />
<br />
==Weblinks==<br />
*[http://forum.synology.com/wiki/index.php/Is_my_NAS_an_ARM_or_a_PowerPC_CPU_model Wiki Synology (englisch): What kind of CPU does my NAS have]<br />
*[http://oinkzwurgl.org/diskstation_hardware Oinkzwurgl: DiskStation Hardware]<br />
*[http://www.nslu2-linux.org/wiki/DS101/HardwareList NSLU2: Hardware-List]<br />
[[Kategorie:Ipkg|IPKG]]</div>Stastkahttps://www.synology-wiki.de/index.php?title=Hardware_der_Synology_Stations&diff=3199Hardware der Synology Stations2011-05-25T10:09:49Z<p>Stastka: /* Tabelle */</p>
<hr />
<div>==Tabelle==<br />
{| border="1" cellpadding="6" cellspacing="0" style="text-align:left"<br />
|-<br />
!width="80"|CPU-Typ<br />
!width="100"|CPU-Modell<br />
!width="80"|DS-Modelle<br />
!width="50"|Takt<br />
!width="100"|BUS<br />
!width="30"|FP<br />
!width="50"|RAM<br />
!width="50"|BIOS<br />
!width="90"|Optware-Pfad<br />
!width="75"|Linux *)<br />
!width="60"|MI / II **)<br />
|-<br />
|ARM (armv5b)||FW IXP420 BB||DS101<br>DS101j||266MHz||@133||||64MB<br>32MB|| || || ||<br />
|-<br />
|Marvell Feroceon ARMv5TE compliant (armv5tejl)|| 88f5281<br />
||DS107+<br>DS107+.128<br>DS207+<br>CS407<br>RS407||500MHz||32bit@DDR333||Yes<br />
||128MB<br>128MB<br>128MB<br>128MB<br>128MB<br />
||ds107+<br>ds107+<br>ds107+<br><br><br>||<br>syno-x07<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh IPKG]||942: 2.6.15<br>942: 2.6.15<br>844: 2.6.15<br><br><br><br />
||1.5 / 2.0<br />
|-<br />
! rowspan="3" |Marvell Kirkwood ARMv5TE compliant (Feroceon® family)<br />
||[http://www.marvell.com/products/processors/embedded/kirkwood/88F6180-003_ver1.pdf 88F6180]<br />
||USBStation2<br />
||800MHz<br />
||16bit@DDR400<br />
||No <br />
||128MB<br />
||<br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br>via [http://synology.itolosa.fr/install_guide.pdf inofficial Firmware]<br />
||1417: 2.6.32<br />
|| <br />
|-<br />
||[http://www.marvell.com/products/processors/embedded/kirkwood/88F6281-004_ver1.pdf 88F6281]<br />
||DS109<br>DS110j<br>DS209<br>DS210j<br>DS211j<br>DS409<br>DS409slim<br>DS410j<br>RS409<br />
||1.2GHz<br>800Mhz<br>1.2GHz<br>800MHz<br>1.2GHz<br>1.2GHz<br>800MHz<br>1.2GHz<br><br />
||16bit@DDR800<br />
||No<br />
||128MB<br>128MB<br>256MB<br>128MB<br>256MB<br>128MB<br>128MB<br>256MB<br />
|| <br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br />
||1139: 2.6.24<br>1342: 2.6.32<br><br><br><br><br><br><br><br />
|| <br />
|-<br />
||[http://www.marvell.com/products/processors/embedded/armada_300/armada_310.pdf 88F6282]<br />
||DS111<br>DS211<br>DS211+<br>DS411slim<br />
||1.6GHz<br />
||16bit@DDR3-1066<br />
||No <br />
||256MB<br>256MB<br>512MB<br />
||<br />
||cs08q1armel<br>[http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh IPKG]<br />
||[http://download.synology.com/download/ds/userguide/Synology%20NAS%20Server%203rd-Party%20Apps%20Integration%20Guide.pdf 2.6.32]<br><br><br><br />
||4.6/6.4<br />
|-<br />
! rowspan="3" |Freescale PowerPC (ppc_6xx)<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8241FACT.pdf MPC8241]<br>powerpc<br />
||DS101g+<br>DS106e<br>DS106<br>DS106x<br>DS107<br>DS107e<br>DS109j<br>DS207<br>DS207.128<br>DS209j<br>DS406e<br>CS407e<br />
||266MHz||32bit@133||Yes||64MB<br>32MB<br>64MB<br>128MB<br>64MB<br>32MB<br>32MB<br>64MB<br>128MB<br>64MB<br>64MB<br>64MB<br>|| <br>ds106<br>ds106<br>ds106<br>ds107<br><br><br>ds207<br>ds207<br><br><br>ds406<br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]||<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br>942: 2.4.22<br><br><br><br><br><br>||<br />
|-<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8241FACT.pdf MPC8241]<br>powerpc<br />
||DS106j<br>DS108j||200MHz||32bit@133||Yes||32MB<br>32MB||ds106<br><br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]||942: 2.4.22<br>942: 2.4.22||<br />
|-<br />
|[http://www.freescale.com/files/32bit/doc/fact_sheet/MPC8245FACT.pdf MPC8245]<br>powerpc<br />
||CS406<br>RS406||400MHz|| || ||128MB<br>128MB||ds406<br><br>||ds101g<br>[http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh IPKG]|| || <br />
|-<br />
|Freescale PowerPC||[http://www.freescale.com/files/netcomm/doc/fact_sheet/MPC8544FS.pdf MPC8533]<br>ppc853x<br />
||DS109+<br>DS209+II<br>DS409+<br>DS509+<br>RS409+<br>RS409RP+<br />
||1.06GHz<br />
||64bit@DDR533<br />
||Yes<br />
||512MB<br>512MB<br>512MB<br>1GB<br>1GB<br>1GB<br />
||<br><br><br>ds508<br><br><br>||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]||957: 2.6.24||4.9 / 5.5<br />
|-<br />
|Freescale PowerPC||[http://www.freescale.com/files/netcomm/doc/fact_sheet/MPC8544FS.pdf MPC8533]<br>ppc854x<br />
||DS209+<br>DS408<br>DS508<br>RS408<br>RS408RP||800MHz||64bit@DDR533||Yes||512MB<br>512MB<br>512MB<br>512MB<br>512MB|| ||syno-e500v2<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno0844ppc854x/cross/unstable/ kernel-module]||957: 2.6.24||3.4 / 4.1<br />
|-<br />
|Freescale PowerPC||[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC8533E MPC8533e]<br>ppc853x<br />
||DS110+<br>DS210+<br>DS410<br />
||1.06GHz<br />
||64bit@DDR533<br />
||Yes<br />
||512MB<br>512MB<br>512MB<br />
||?||syno-e500<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh IPKG]||957: 2.6.24||?<br />
|-<br />
! rowspan="4" |Intel Atom<br />
|D410<br />
||DS710+||1.67GHz||64bit@DDR2-800|| ||1GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] ||?||<br />
|-<br />
|D510<br />
||DS411+||1.66GHz||64 bit@DDR800)|| ||1GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] || 2.6.32.12 (#1613)||<br />
|-<br />
|D510<br />
||DS1010+||1.67GHz***||64bit@DDR2-800|| ||1GB-3GB|| ||syno-i686<br>[http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh IPKG] ||1041||<br />
|-<br />
|D525 <br />
||RS2211+||1.8GHz***||64bit@DDR2-800|| ||1GB-3GB|| ||||||<br />
|-<br />
<br />
|}<br />
*) bezogen auf die DS-Firmware-Version (uname -a)<br />
**) BYTEmark<br />
MI := Memory Index<br />
II := Integer Index<br />
Baseline (LINUX) AMD K6/233 (je höher der Wert, desto performanter)<br />
***) Dual Core CPU<br />
<br />
==cpuinfo==<br />
Mit dem Kommando '''cat /proc/cpuinfo''' kann man sich anzeigen lassen, welcher Prozessor in der Synology Station verbaut ist. Die Ausgabe sieht ungefähr so aus:<br />
<br />
<pre>Processor : ARM926EJ-Sid(wb) rev 0 (v5l)<br />
BogoMIPS : 499.71<br />
Features : swp half thumb fastmult vfp edsp<br />
CPU implementer : 0x41<br />
CPU architecture: 5TEJ<br />
CPU variant : 0x0<br />
CPU part : 0x926<br />
CPU revision : 0<br />
Cache type : write-back<br />
Cache clean : cp15 c7 ops<br />
Cache lockdown : format C<br />
Cache format : Harvard<br />
I size : 32768<br />
I assoc : 1<br />
I line length : 32<br />
I sets : 1024<br />
D size : 32768<br />
D assoc : 4<br />
D line length : 32<br />
D sets : 256<br />
<br />
Oder man bekommt folgende Anzeige:<br />
xxxxx> cat /proc/cpuinfo<br />
processor : 0<br />
cpu : e500v2<br />
clock : 1066.560000MHz<br />
revision : 2.2 (pvr 8021 0022)<br />
bogomips : 133.12<br />
timebase : 66660000<br />
platform : MPC8544 DS<br />
Vendor : Freescale Semiconductor<br />
PVR : 0x80210022<br />
SVR : 0x80340011<br />
PLL setting : 0x4<br />
Memory : 512 MB<br />
xxxxxxx> cat /proc/sys/kernel/syno_serial<br />
94G3N00147<br />
<br />
In diesem Fall auf die Seite des Herstellers (in dieser Anzeige Freescale Semiconductor) gehen<br />
und die Prozessortype suchen, die sich hinter der Bezeichnung "platform" verbirgt. <br />
<br />
In diesem Bsp. handelt es sich um einen Power PC Prozessor der Type MPC8544 DS der Firma Freescale Semiconductor. <br />
Dazu passt also das Package für den Power Prozessor mit der Bezeichnung MPC85XX. so<br />
<br />
Hardware : MV-88fxx81<br />
Revision : 0000<br />
Serial : 0000000000000000</pre><br />
<br />
Die Serien-Nummer kann man sich mit '''cat /proc/sys/kernel/syno_serial''' anzeigen lassen.<br />
<br />
==Weblinks==<br />
*[http://forum.synology.com/wiki/index.php/Is_my_NAS_an_ARM_or_a_PowerPC_CPU_model Wiki Synology (englisch): What kind of CPU does my NAS have]<br />
*[http://oinkzwurgl.org/diskstation_hardware Oinkzwurgl: DiskStation Hardware]<br />
*[http://www.nslu2-linux.org/wiki/DS101/HardwareList NSLU2: Hardware-List]<br />
[[Kategorie:Ipkg|IPKG]]</div>Stastkahttps://www.synology-wiki.de/index.php?title=Modifikationen&diff=3198Modifikationen2011-05-24T11:52:38Z<p>Stastka: </p>
<hr />
<div>{|width="100%" height="100%" border=0 cellpadding=5 cellspacing=7 style="border: 1px solid #c0c0c0;background-color:#e0e0e0"<br />
|style="background-color:#c0c0c0; border: 1px solid #a0a0a0; font-size:120%; font-weight: bold"|[[Modifikationen|Modding Themen]]<br />
|-<br />
|<br />
#[[Wichtige Informationen zum Modden der Synology Stations]]<br />
#[[Übersicht über verfügbare 3rd-Party-Apps aus unserer Community]]<br />
#Grundsätzliches zur Hard- und Software des Synology-Servers<br />
##[[Wie funktioniert ein Computer?]]<br />
##[[Platten, RAIDs und Dateisysteme]]<br />
##[[Überblick über Modifizierungen des Synology-Servers]]<br />
##[[Welchen Prozessortyp besitzt mein System?]]<br />
##[[Arbeitsweise der Synology Stations]]<br />
##[[LEDs und Buttons]]<br />
##[[Viren auf dem Synology-Server?]]<br />
#[[Die Kommandozeile]]<br />
##[[Grundlegende Befehle auf der Kommandozeile]]<br />
##[[Der Editor vi]]<br />
##[[Alternativer Editor nano]]<br />
##[[less und vim]]<br />
#[[Wo ist was im Linux-System]]<br />
##[[Dateien im /etc-Verzeichnis|/etc-Verzeichnis]]<br />
##[[Dateien im /dev-Verzeichnis|/dev-Verzeichnis]]<br />
##[[Dateien im /lib-Verzeichnis|/lib-Verzeichnis]]<br />
##[[Dateien im /tmp-Verzeichnis|/tmp-Verzeichnis]]<br />
##[[Dateien im /usr-Verzeichnis|/usr-Verzeichnis]]<br />
##[[Dateien im /var-Verzeichnis|/var-Verzeichnis]]<br />
##[[Dateien im /volume1-Verzeichnis|/volume1-Verzeichnis]]<br />
#[[Nicht unterstützte Konfigurationsänderungen]]<br />
##Systemmanagement<br />
###[[3rd_Party_Applications_absichern|3rd Party Applications vor unberechtigten Zugriffen schützen]]<br />
###[[Cron|Cron konfigurieren]]<br />
###[[Generierung eines eigenen SSL-Zertifikats]]<br />
###[[SSL-Zertifikat von ready2host einbinden]]<br />
###[[Downgrade der Synology-Firmware]]<br />
###[[Mount Bind]]<br />
###[[Gemeinsames Homeverzeichnis für mehrere User]]<br />
###[[User-Apache alle Zugriffe via Browser loggen lassen|Logdatei für den Apache-Server erstellen]]<br />
###[[Anzahl der möglichen Terminalfenster erhöhen]]<br />
###[[ssh_mit_Zertifikaten_absichern|Secure Shell (ssh) Zugriff nur mit Schlüssel]]<br />
###[[SSH ohne Passwort]]<br />
###[[Putty ohne Passwort einloggen]]<br />
###[[Ssh_clients_blocken|PHP Script zum Logfile Scan nach ssh Fehlern]]<br />
###[[Automatisches Herunterfahren wenn kein Ping möglich]]<br />
###[[Statusmail von der Diskstation]]<br />
###[[Aktuellen Status twittern (CPU, RAM, Speicher)]]<br />
##Firmware-Upgrades<br />
###[[Upgrade von DS101g+ auf DS107]]<br />
##Backup Modifikationen<br />
###[[Alternierendes Backup]]<br />
###[[Backup der mySQL-Datenbank über einen cronjob|Backup der MySQL-Datenbank über einen cronjob]]<br />
###[[Backup über RSync auf einen angeschlossenen Datenträger]]<br />
###[[rsnapshot|Backups mit Rsnapshot erstellen]]<br />
###[[Offsite Backup von DS auf WebDAV-Speicher (z.B. von 1und1, GMX, Web.de, Strato, iDisk (MobileMe))]]<br />
### [[Generationsbackup_mit_rsync_und_rsnapshot_im_Netzwerk|Generationsbackup über Netzwerk]]<br />
### [[Verschlüsseltes Backup]]<br />
### [[duplicity|duplicity (SSH/SCP, RSync, FTP, WebDAV, IMAP, Amazon S3 + optionale Verschlüsselung)]]<br />
### [[WebDAV-Speicher mithilfe von davfs2 direkt in die DS einbinden]]<br />
##Download Modifikationen<br />
###[[pyLoad]]<br />
##Multimedia Modifikationen<br />
###[[TwonkyVision]]<br />
###[[Twonky auf der DS211j installieren]]<br />
###[[Swisscenter_auf_Diskstation_installieren|Swisscenter installieren]]<br />
###[[Fuppes]]<br />
##Datenträger Mods<br />
###[[Upgrade eines None-RAID Volume zu RAID1 / RAID5]]<br />
###[[Hartnäckigen USB-Stick mit ext2/3 formatieren und einbinden]]<br />
###[[Verschlüsselte_Container|Verschlüsselte Container auf der DS]]<br />
## <span id="mailstation">Mailstation Mods</span><br />
### Dovecot Server (imap/pop3)<br />
#### [[Externe_Accounts_abrufen|Externe Accounts mit getmail abrufen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_dovecot|Virtuelle User]]<br />
#### [[E-mails_filtern_mit_dovecot-sieve|Dovecot-sieve zum Filtern von E-Mails]]<br />
#### [[Abwesenheitsmeldungen_mit_dovecot-sieve|AutoReply]]<br />
### Postfix Server (smtp)<br />
#### [[SMTP_Dialog_Restriktionen|Client Restriktionen]]<br />
#### [[Virtuelle_E-Mail_Nutzer_mit_postfix|Virtuelle User]]<br />
#### [[Zusaetzliche_Ports_fuer_Postfix|Zusätzliche Ports]]<br />
#### [[Mail-Relay_mit_Postfix|SMTP Relay einrichten]]<br />
#### [[Postgrey_greylisting_fuer_postfix|Greylisting mit postgrey]]<br />
#### [[Postfwd_firewall_fuer_postfix|Postfix Firewall postfwd]]<br />
#### [[Abwesenheitsmeldungen_mit_postfix|Autoreply]]<br />
### Spamassassin<br />
#### [[Externe_Accounts_abrufen#SpamAssassin_installieren_und_einrichten|Spamassassin installieren]]<br />
#### [[Regeln_von_Spamassassin|Die Regeln des Spamassassin]]<br />
#### [[Postfix_und_Spamassassin|Spamfilterung mit Postfix und Spamassassin]]<br />
### Various<br />
#### [[Fehlersuche_in_der_Mailstation|Fehlersuche in der Mailstation]]<br />
#### [[Nuetzliche_Kommandos_fuer_Mailstation|Nützliche Kommandos der Mailstation]]<br />
#### [[Mailinglisten_mit_mailman|Mailing-Listen mit mailman]]<br />
#### [[Getmail_script|getmail nutzen mit Hibernate der Festplatten]]<br />
#### [[Virtuelle_E-Mail_User_erstellen|Script zur Erstellung von virtuellen Nutzern (E-Mail)]]<br />
#### [[Roundcube als Webmail-Client für externen IMAP-Account verwenden]]<br />
## Sonstige Modifikationen<br />
### [[Verteiltes Rechnen mit der DiskStation anhand von distributed.net]]<br />
#[[IPKG]]<br />
##[[Apache IPKG|Alternativer Apache-Server]]<br />
##[[OpenVPN_auf_der_Diskstation|OpenVPN auf einer DS betreiben]]<br />
##[[Streamripper]]<br />
##[[Samba_via_ipkg_installieren|Alternativer Samba-Server]]<br />
##[[Icecast_via_ipkg_installieren|Icecast Server]]<br />
##[[vsFTP installieren|Alternativer FTP Dienst]]<br />
##[[SFTP_SCP|SFTP und SCP]]<br />
##[[SVN-Server installieren|SVN-Server]]<br />
##[[Gitolite|Git + Gitolite installieren]]<br />
##[[TFTP-Daemon einrichten und verwenden]]<br />
##[[Java|Java installieren]]<br />
##[[Xinetd_via_ipkg_installieren|xinetd Daemon via ipkg installieren]]<br />
###[[Xinetd_Beispiel_Eigener_Dienst|Eigener Dienst per xinetd]]<br />
##[[Syslog-ng_via_ipkg_installieren|syslog-ng via ipkg installieren]]<br />
##[[YouGrabber]]<br />
##[[Geschwindigkeitsmessung mit iperf]]<br />
##[[Installation torrentflux-b4rt]]<br />
##[[Bind9 DNS-Server]]<br />
##[[Streaming server (ggrab) für DBox2-Aufnahmen einrichten]]<br />
##[[USB Schaltbare Steckdosenleiste]]<br />
##[[Tinyproxy]]<br />
##[[DHCP-Server]]<br />
##[[MoinMoin-Wiki]]<br />
##[[Inetutils|Inetutils, ftp, tftp, rcp, rsh, ping, ping6]]<br />
#[[3rd-party Applikationen]]<br />
##[[Konfiguration von 3rd-party Applikationen]]<br />
###[[Integration einer Hilfe in DSM 3|Hilfe in DSM integrieren]]<br />
##[[Integration von 3rd-party Applikationen]]<br />
###[[phpMyAdmin als 3rd-Party Applikation|phpMyAdmin]]<br />
###[[phpPgAdmin als 3rd-Party Applikation|phpPgAdmin]]<br />
###[[phpSysInfo als 3rd-Party Applikation|phpSysInfo]]<br />
###[[aMule IP-Filter Download als 3rd-Party Applikation|aMule IP-Filter]]<br />
###[[eXtplorer als 3rd-party Applikation|eXtplorer (Alternative zur File Station)]]<br />
###[[3rd Party Application Manager]]<br />
###[[HttpWakeUp Wake-On-LAN Pakete per Webinterface verschicken]]<br />
###[[Rootkit Hunter als 3rd-Party Applikation|Rootkit Hunter]]<br />
###[[AdminTool]]<br />
###[[TeamSpeak 2 Server]]<br />
###[[Weave Minimal Server für Firefox Sync]]<br />
###[[iStat Server]]<br />
### SqueezeCenter<br />
####[[SqueezeCenter-Existierende-MySQL-Instanz-verwenden|Bestehende Instanz verwenden]] <br />
#Kompilieren eigener Programme<br />
##[[Luadch]]<br />
#Hardware Modifikationen<br />
##[[DiskStation 209+ flüsterleise machen]]<br />
##[[DiskStation 106 automatisch einschalten]]<br />
##[[DiskStation 107 automatisch einschalten]]<br />
##[[DiskStation 408 automatisch einschalten]]<br />
##[[DiskStation 106 WOL Wake-On-LAN Umbau]]<br />
|}</div>Stastkahttps://www.synology-wiki.de/index.php?title=Xinetd_Beispiel_Eigener_Dienst&diff=3197Xinetd Beispiel Eigener Dienst2011-05-24T11:51:05Z<p>Stastka: Die Seite wurde neu angelegt: „= Eigenen Dienst für Xinetd erstellen = Über den Xinet Deamon kann man so ziemlich viel Anstellen. So kann man jede Bash-Ausgabe auch auf den Browser anzeigen l…“</p>
<hr />
<div>= Eigenen Dienst für Xinetd erstellen =<br />
Über den Xinet Deamon kann man so ziemlich viel Anstellen. So kann man jede Bash-Ausgabe auch auf den Browser anzeigen lassen.<br />
Als Beispiel übergebe ich die top-Anzeige direkt auf den Port 8111<br />
<br />
== Zur Anleitung ==<br />
Diese Anleitung bezieht sich auf die DS211+ mit Xinetd 2.3.14-11 <br />
<br />
== Voraussetzung ==<br />
* Shell-Zugang<br />
* Xinetd ([[Xinetd_via_ipkg_installieren|Xinetd via IPKG installieren]])<br />
* vi oder nano<br />
<br />
== /etc/services ==<br />
Port des Dienstes eintragen:<br />
<pre><br />
##Eigener Dienst<br />
topbash 8111/tcp # topbash<br />
</pre><br />
== /opt/etc/xinetd.d/topbash ==<br />
Service Definieren: [USER] durch einen vorhanden Benutzer ersetzen<br />
<pre><br />
service topbash<br />
{<br />
disable = no<br />
socket_type = stream<br />
protocol = tcp<br />
wait = no<br />
user = [USER]<br />
server = /opt/bin/show.bash<br />
}<br />
</pre><br />
<br />
<br />
== /opt/bin/show.bash ==<br />
Bashscript für top (Perl habe ich wegen der Formatierung benutzt)<br />
<pre><br />
#!/bin/bash<br />
date | sed -e 's/$/\r/' | perl -pe 's/\r\n|\n|\r/\r\n/g'<br />
echo "_________________________________________________________________" | sed -e 's/$/\r/' | perl -<br />
pe 's/\r\n|\n|\r/\r\n/g'<br />
topvar=/bin/bash /usr/bin/top -b -n 1 | head -15 | sed -e 's/$/\r/' | perl -pe 's/\r\n|\n|\r/\r\n/g'<br />
<br />
echo $topvar<br />
exit<br />
</pre><br />
<br />
== xinet Deamon ==<br />
Den Xinet Deamon starten, bez. startet neu<br />
<pre><br />
/opt/etc/init.d/S10xinetd<br />
</pre><br />
<br />
== Browser starten ==<br />
'''top''' kann nun direkt im Browser abgefragt werden, ohne sich anzumelden. <br />
http://[IP-ADRESSE]:8111/<br />
<br />
== Fehler finden ==<br />
Fehler können immer wieder auftreten. Hier sind die wichtgsten Befehle um den Xinet Dienst zu prüfen:<br />
<br />
=== Xinet Dienst testen ===<br />
<br />
Über das log kann man sehen ob der Deamon geschlossen (Exiting) wird. Das deutet auf eine falsche Konfiguration hin.<br />
<pre><br />
tail /var/log/messages<br />
<br />
May 24 13:02:40 xinetd[4724]: Exiting...<br />
May 24 13:04:22 xinetd[15315]: Exiting...<br />
</pre><br />
<br />
Mit -d kann man den xinetd im Debug-Modus starten. So sieht man detailierter ob man was falsches konfiguriert hat.<br />
<pre><br />
xinetd -d<br />
</pre><br />
<br />
<br />
=== Ob der Dienst läuft ===<br />
Mit diesem Befehl kann man sehen ob der xinet Deamon überhaupt läuft<br />
<pre><br />
ps -aux | grep xinet<br />
</pre><br />
<br />
=== Port prüfen ===<br />
Mit Netstat kann man schauen ob der Port auch wirklich abgehört wird:<br />
<pre><br />
netstat -tanp | grep 8111<br />
tcp 0 0 0.0.0.0:8111 0.0.0.0:* LISTEN 28368/xinetd<br />
</pre></div>Stastka