Archiv der Kategorie: ICT

Konfigurieren von Zeiteinstellungen in einer Windows-Domäne

Innerhalb einer Domäne ist es wichtig, dass alle Computer die gleiche Zeit verwenden. Wenn sich ein Client mit einer mehrere Minuten abweichenden Zeit mit einem Server verbinden möchte, wird die Verbindung aus Sicherheitsgründen abgelehnt. Standardmässig wird daher die Zeit der Clients automatisch mit einem Domänencontroller abgeglichen, bei mehreren Domänencontrollern mit dem PDC (primary domain controller).

Um herauszufinden, welcher DC im Moment der PDC ist, kann man an der Kommandozeile den Befehl Netdom query fsmo eingeben.

image

Neu kann man auch die Domänencontroller und auch den PDC virtualisieren. Standardmässig wird aber die Zeit eines Hyper-V-Gastes mit dem Hyper-V-Host (also dem physikalischen Server) synchronisiert. Man sollte also nicht den PDC mit einem Zeitserver im Internet synchronisieren und gleichzeitig mit dem Hyper-V-Host, sondern die Zeitsynchronisierung mit dem Host deaktivieren und den PDC konfigurieren, wie wenn er nicht virtualisiert wäre.

image

Nun muss man auf dem PDC die Kommandozeile als Administrator ausführen. Dafür bin ich der Anleitung auf diesem empfehlenswerten Blog gefolgt.

Alle w32 Einstellungen zurücksetzen
net stop w32time
w32tm /unregister
w32tm /unregister
w32tm /register
net start w32time

image

W32 konfigurieren, die gewünschten NTP Server zu verwenden. Wenn man mehrere eintragen möchte, muss man sie in Anführungszeichen setzen und mit einem Leerzeichen voneinander trennen.
w32tm /config /syncfromflags:manual /manualpeerlist:”0.ch.pool.ntp.org 1.ch.pool.ntp.org 2.ch.pool.ntp.org 3.ch.pool.ntp.org” /reliable:yes /update

Nachtrag:
Von Vorteil ergänzt man die manualpeerlist mit 0x8, was Probleme mit nicht Microsoft Zeitservern löst. 0x8 bedeutet: „send request as client mode“. Das Problem wird in diesem Microsoft Supportartikel beschrieben. Korrekt würde es also heissen:

w32tm /config /syncfromflags:manual /manualpeerlist:”0.ch.pool.ntp.org,0x8 1.ch.pool.ntp.org,0x8 2.ch.pool.ntp.org,0x8 3.ch.pool.ntp.org,0x8” /reliable:yes /update

Vielen Dank an Jorge (siehe unten bei den Kommentaren) für diesen Hinweis.

Die Konfiguration updaten und den Service neu starten.
w32tm /config /update
net stop w32time
net start w32time

image

Die Zeit mit den neu eingetragenen NTP Servern synchronisieren
w32tm /resync /rediscover

image

Die neue Konfiguration überprüfen
w32tm /query /status
w32tm /query /peers
w32tm /query /configuration

Wenn man auf der Firewall auch die ausgehenden Zugriffe detailliert regelt, muss man noch eine Firewallregel für ausgehenden NTP Verkehr vom PDC aus eintragen.

Apple Mail Problem mit Exchange Reverse Proxy

Wir haben unseren ISA Server durch eine Sophos UTM ersetzt. Statt den Exchangeserver über die Firewall direkt ins Internet zu stellen, kann die Sophos UTM als Reverse Proxy auftreten, der die Anfragen aus dem Internet entgegen nimmt und dann an Exchange im internen Netzwerk weitergibt. ISA konnte dies auch und war mit ein Grund, wieso wir vorher ISA eingesetzt haben.

Sophos macht Werbung damit, dass sich die UTM als Ersatz für TMG (Nachfolger von ISA) eignen würde:
image

Im Zusammenhang mit Exchange hat auch alles gut ausgesehen, die Einrichtung war einfach, das Forum gibt schnell und kompetent Antwort, Outlook Web Access, Outlook Anywhere und ActiveSync funktionieren ohne Probleme.

Leider gibt es doch ein Problem. Wir haben einige Lehrkräfte, die sich von zuhause mit ihrem Mac auf den Exchangeserver verbinden. Wenn eine Lehrkraft über Apple Mail eine Mail verschickt, kann es vorkommen (nur manchmal), dass die Absenderadresse vertauscht wird. Das grösste Problem dabei ist, dass der vertauschte Absender die Mail unter seinen gesendeten Objekten findet, was natürlich ein absolutes No-Go ist. Wenn plötzlich Mails von anderen gelesen werden können, ist das Vertrauen in das schuleigene Mailsystem schnell dahin.

Ich habe dann recherchiert und eine Anfrage an das Sophos Forum gestellt. Auf den Technet Seiten von Microsoft bin ich dann auf ein ähnliches Problem gestossen. Auch da war das Problem der Reverse Proxy, aber als Reverse Proxy wurde ein Apache Webserver eingesetzt. Daher konnte ich den dort beschriebenen Workaround nicht bei uns einsetzen. Hier muss ich warten, bis Sophos das gelöst hat. Bei einem so grossen Problem kann ich aber nicht einfach abwarten. Also musste ich eine andere “Lösung” des Problems suchen.

Der einzig sinnvolle Weg im Moment war, die Kommunikation mit Apple Mail zu unterbinden. Wir bieten ja auch noch Outlook Web Access und ActiveSync für unsere Lehrpersonen an, um die Mails von zuhause zu bearbeiten. Dazu kommt sogar noch ein Zugang über einen Remotedesktopserver, um von zuhause aus zu arbeiten, was auch mit der neuen MacOS App funktioniert. Apple Mail kommuniziert mit Exchange über EWS und nicht über Mapi wie bei Outlook Anywhere. EWS wird aber auch sonst benötigt und kann nicht einfach deaktiviert werden. Mit set-organizationconfig lässt sich ab Exchange 2010 SP1 der Zugang zu EWS detaillierter konfigurieren. Leider funktioniert das unter Exchange 2007 noch nicht. Da musste ich noch was anderes suchen. Microsoft hat im Technet einen Artikel “Using URL Rewrite to block certain clients from Exchange” veröffentlicht. Damit kann man erreichen, dass der IIS, der die Seiten für den Exchangeserver ausliefert, für gewisse Bedingungen eine Fehlermeldung statt der Seite ausliefert. 

Nach der Installation vom URL Rewrite Module 2.0 findet man im IIS Manager einen neuen Eintrag “URL Rewrite”. Weil Apple Mail ja auf EWS zugreift, muss man dieses Verzeichnis auswählen (ansonsten könnte man ja mit einem Mac z.B. auch nicht mehr auf Outlook Web Access kommen) und eine neue Anforderungsblockierungsregel hinzufügen. 

image

Unter Protokollierung findet man den Speicherort der Logfiles vom IIS. Standardmässig ist das %SystemDrive%\inetpub\logs\LogFiles. Dort sieht man, dass sich der User-Agent mal als Mac+OS+X und manchmal als Mac_OS_X zu erkennen gibt.
image

Somit kann man in der Anforderungsblockierungsregel den Zugriff aufgrund des Benutzer-Agent-Header blockieren, wenn er dem Muster *Mac* entspricht. Falls sich nun ein Mac mit Apple Mail mit dem Exchange Server verbinden möchte, bekommt er HTTP 403 als Antwort und kann sich somit nicht verbinden.

image

Im IIS Log findet man weiterhin die Anfragen von Apple Mail Clients, aber neu mit der Antwort 403.
image

Trotzdem hoffe ich natürlich, dass Sophos das Problem mit dem Reverse Proxy bald lösen kann.

Nachtrag
Gemäss diesem Forumsbeitrag arbeitet Sophos an einem Fix. “We are working on a fix. Mantis 27287: Outlook anywhere connection with WAF didn’t work for Mac Clients
At the moment, we do not support Outlook Anywhere connections for Mac clients”

Nachtrag 2
In diesem Forumsbeitrag gibt es noch weitere Informationen. Da wird auch bestätigt, dass es im Moment keine WAF Unterstützung für Mac gibt, unabhängig vom Client.

Typo3 Seiten aus Backup wieder herstellen

Um die bestehenden Webseiten auf den neuen (virtuellen) Server zu übertragen, muss man gleich vorgehen, wie wenn man die Webseiten aus einem Backup wiederherstellen müsste. (Denjenigen, die diesen Vorgang lieber als Video Anleitung ansehen, kann ich die Anleitung von jweiland.net empfehlen.) Wichtig ist bei einer Wiederherstellung die Version von Typo3. Entweder muss es die gleiche sein, die auch auf dem alten Server installiert war oder man muss nach der Wiederherstellung die gleichen Schritte durchführen, wie nach einem normalen Upgrade von Typo3. Ein Backup aus dem man wiederherstellen kann, sollte die Datenbanken und die Verzeichnisse mit den Daten sichern (oder jetzt neu dann eine virtuelle Maschine, die man als ganzes komfortabel sichern und wiederherstellen kann).

Installation von Typo3
Als erstes habe ich die gleiche Version der Typo3 Source Dateien installiert, die auch auf dem alten Server benutzt wurde. In diesem Beitrag ist beschrieben, wie man Typo3 installiert.

Datenbank importieren
Um die Datenbank importieren zu können, muss man zuerst eine Datenbank mit dem gleichen Namen anlegen und dann den Dump aus dem Backup in diese importieren. 
mysql –u root –p db_name < dumpfilename.sql
Die nötigen Befehle sind hier aufgeführt.

Daten kopieren
Nun kann man die Daten in das richtige Verzeichnis verschieben. Am einfachsten geht das mit dem Midnight Commander (geht natürlich auch auf der shell mit cp oder auch mit dem Filemanager von Webmin). Zur Sicherheit sollte man im Stammverzeichnis noch überprüfen, ob der Symlink zu den Typo3 Sources auch ans richtige Ort zeigt. Genaueres zum verschieben findet man hier.

Am Schluss sollte man überprüfen, ob alles richtig funktioniert. Ausserdem macht es vielleicht gerade Sinn, die Typo3 Version mal wieder auf eine neuere Version anzuheben. Auf dem neuen Server sollte natürlich auch wieder ein Backup eingerichtet und getestet werden. Linux auf einem Hyper-V-Host kann gemäss meinen Tests problemlos als ganze virtuelle Maschine über DPM wiederhergestellt werden.

Typo3 installieren

In den System-Voraussetzungen heisst es, dass man GraphicsMagick oder Imagemagick 6 oder neuer installieren muss, wenn man die integrierte Bildbearbeitung zurückgreifen möchte.

Installieren kann man Imagemagick durch den Befehl
sudo apt-get install imagemagick

image

image

Wenn nicht bereits installiert, wird auch noch php5-gd benötigt.
sudo apt-get install php5-gd

Eine Typo3 Installation besteht aus 2 “Teilen”. Zum einen aus der “Typo3 Source” und zum anderen aus den eigentlichen Dateien für die Webseite (da gibt es verschiedene Packages).

Wenn man mehrere Seiten betreibt, kann es sinnvoll sein, diese beiden Teile zu trennen und die Source Dateien an einen separaten Ort zu speichern. So belegen die Source Dateien nur einmal Speicherplatz aber der Hauptvorteil liegt darin, dass man Upgrades am Source Code viel einfacher handhaben kann. Das Trennen der beiden Teile ist in der Datei INSTALL.txt im Stammverzeichnis der Installation unter „Installation:recommended“ beschrieben.

Für eine neue leere Installation lädt man das Blank Package mit den Source Dateien und einem leeren Skelett für die neue Seite herunter. Bei einem Upgrade nur noch das Source Packet. Den Link zur Datei kann man von der Homepage kopieren.

image

Nun kann man das Verzeichnis mit wget herunterladen. Mit einem Rechtsklick kann man die vorher kopierte Verknüpfung in Putty einfügen. Die Endung „?download” sollte man aber löschen, damit die tar.gz Datei heruntergeladen wird.

image

Das Archiv kann man nun entpacken:
sudo tar –xzvpf blankpackage-6.1.7.tar.gz
wobei man hier die Bedeutung der einzelnen Schalter findet.
Durch das Anfügen von z.B. –C /opt kann man direkt in das Verzeichnis /opt entpacken.

Nach dem Entpacken kann man die Dateien verschieben. Dazu verwende ich den Midnight Commander. Diesen kann man durch sudo apt-get install mc installieren und mit sudo mc starten. Mit der Taste F6 kann man vom linken Fenster ins rechte verschieben, im unteren Bild ins Verzeichnis /var/www.

image

Die Source Dateien verschiebe ich ins Verzeichnis /opt und der Rest des Blankpackages wird auf den Namen des Webseitenprojekts umbenannt.

Wenn die Sourcedateien nicht am gleichen Ort wie die restlichen Dateien von Typo3 liegen, muss man den symbolischen Link (symlink) auf den neuen Ort “umbiegen”. Dies kann man mit dem Kommando ln (sudo ln –sf /opt/typo3_src-6.1.7/ /var/www/…/typo3_src) erreichen oder auch ganz komfortabel mit dem Filemanager von Webmin.

image

image

Nun muss man noch die Berechtigungen und Besitzer von bestimmten Ordnern anpassen. In der INSTALL.txt sind die benötigten Befehle aufgeführt.

image

image

Wenn man nun die Seite aufruft, bekommt man folgende Meldung, dass das Install Tool geschützt sei.

image

Nachdem man so eine Datei erstellt hat, kann man die Installation beginnen.

image

Man muss sich mit einer Datenbank verbinden und die Tabellen importieren, wird dabei aber schön vom Assistenten geführt und kann eigentlich nicht viel falsch machen.

Nach der vollständigen Installation sollte man alles überprüfen, z.B. ob alle Bildbearbeitungstests funktionieren. Bei mir gab es da einen Fehler mit Imagemagick bei “Combining images”.

image

Um das zu beheben, muss man unter “All Configuration” den Befehl combine auf composite ändern, weil die neueren Versionen von Imagemagick diesen verwenden.

image

Nun hat man eine leere Seite, jetzt muss man sie noch mit Inhalten füllen.

virtuelle Hosts mit Apache

Bei uns laufen die Webseiten von verschiedenen Schulgemeinden. Apache bietet eine Möglichkeit, dies über virtuelle Hosts zu realisieren. Diese verwalte ich mit Webmin.

Unter Servers –> Apache Webserver –> Create virtual host kann man für jede eigene Seite einen virtuellen Host angeben.

image

Wenn man nun den virtuellen Host auswählt, kann man unter “Networking and Addresses” die virtuellen Servernamen eintragen.

image

Webmin zur Linux Server Verwaltung installieren

Ein Linuxserver kann komplett auf der Komandozeile (shell) verwaltet werden. Viel komfortabler ist es aber, dies auf einer grafischen Oberfläche zu machen. Ich habe mich da für Webmin entschieden und in den letzten Jahren keine Probleme damit gehabt. Darum werde ich Webmin auch auf dem neuen Server wieder einsetzen.

Webmin is a web-based interface for system administration for Unix. Using any browser that supports tables and forms (and Java for the File Manager module), you can setup user accounts, Apache, DNS, file sharing and so on. (Quelle:http://www.webmin.com/intro.html).

Alternativ zu einer manuellen Installation, kann man Webmin wie hier beschrieben auch über das Paketverwaltungstool “apt” verwalten. Dazu muss man in /etc/apt/sources.list die Zeile für das Repository eintragen. Ich verwende als Editor dazu nano.

Also nano mit “sudo nano /etc/apt/sources.list” starten und ganz zuunterst die Zeile  
deb http://download.webmin.com/download/repository sarge contrib
hinzufügen.

image

image

Wenn man nun mit ctrl+x nano verlässt, wird man noch gefragt, ob man die Änderungen speichern möchte, was man mit y bestätigt.

image

Zum Speichern muss man dann noch den Dateinamen mit der Entertaste bestätigen.

image

Damit man nachher nicht bei jedem apt-get update eine Fehlermeldung wegen dem fehlenden PGP-Schlüssel erhält…

image

…kann man den fehlenden Schlüssel mit
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

installieren. Die mit wget heruntergeladene Schlüsseldatei kann nach dem Import wieder gelöscht werden.

Nun kann webmin normal mit apt installiert werden.
sudo apt-get update
sudo apt-get install webmin

image

Nach erfolgreicher Installation kann man sich mit Webmin über https://server-ip-adresse:10000 verbinden.

image

Obwohl ja viele Administratoren webmin verwenden, ist es eine zusätzliche Anwendung, die auch angegriffen werden könnte. Sicher macht es daher Sinn, webmin wie alle anderen Anwendungen aktuell zu halten. Zusätzlich kann man den Port 10’000 für den Zugriff auf webmin vom Internet her auf der Firewall geschlossen lassen.

Linux auf Hyper-V-Cluster

Wir betreiben ja in unserer DMZ immer noch unseren eigenen Webserver. Da wir als Ersatz für unsere alten Server einen Hyper-V-Cluster/Failovercluster gekauft haben, wollte ich auch den alten Webserver durch einen virtuellen Server auf dem Cluster ersetzen.

Netzwerk
Damit der Webserver weiterhin in der DMZ und nicht im internen Netzwerk steht, muss man ihm einen eigenen Netzwerkanschluss auf den Hyper-V-Hosts zuweisen, der für nichts anderes benutzt wird.

image

Diesen kann man dann mit der DMZ bei der Firewall verbinden. Somit ist gewährleistet, dass der ins Internet exponierte Webserver durch die Firewall vom Rest des internen Netzwerks getrennt ist.

Installation
Um den neuen Server zu installieren, kann man im Failovercluster-Manager “Virtuelle Computer…” –> “Neuer virtueller Computer…” erstellen und den Clusterknoten auswählen, auf dem dieser primär laufen soll.

Als Speicherort muss das CSV (Cluster Shared Volume) ausgewählt sein, auf das alle Clusterknoten Zugriff haben.

image

Für Linux muss Generation 1 ausgewählt werden.

image

Der Arbeitsspeicher kann auch später jederzeit angepasst werden.

image

Hier muss nun eben der Netzwerkadapter ausgewählt werden, der ausschliesslich für die DMZ verwendet und auch so verbunden wird.

image

Für die virtuelle Festplatte habe ich die Standardwerte verwendet.

image

Für den Webserver verwende ich wieder Ubuntu Server in der LTS (long time support) Version, den ich schon für den alten Webserver benutzt habe.

image 

image

Am Schluss bekommt man eine Warnung wegen der virtuellen DVD. Das ISO ist nicht auf dem CSV abgelegt, somit kann die Maschine kein Failover durchführen, da der Pfad auf dem zweiten Knoten nicht verfügbar wäre. Dies macht aber nichts, da ich die DVD nach der Installation eh entferne.

image

Nun kann man den Server starten und installieren.

image   image

Als Land habe ich Schweiz ausgewählt, als Tastaturmodell “ch”. Danach muss man in vielen Dialogen das Netzwerk manuell einrichten, einen Rechnernamen vergeben und ein Benutzerkonto anlegen. 

Jetzt kann man die Festplatten partitionieren lassen.

image

Aktualisierungen sollen nicht automatisch installiert werden, das möchte ich lieber manuell ausführen und kontrollieren.

image

Im nächsten Dialogfeld kann man zusätzliche Software-Sammlungen installieren. Für die Webseite benötige ich den LAMP Server (LAMP steht für Linux, Apache, MySQL, PHP). Der OpenSSH Server wird für einen Zugang auf die Konsole benötigt. Der Mailserver wird benötigt, damit der Inhalt von Formularen als Mail verschickt werden können. Mit Samba biete ich einen Zugang über eine Windowsfreigabe an. So können auf einen Rutsch z.B. sehr viele Bilder auf den Webserver übertragen werden. Aus Sicherheitsgründen öffne ich auf der Firewall die Ports für SSH und Samba nur vom internen Netzwerk. Es soll möglichst nur das notwendigste vom Internet her erreichbar sein.

image

Für MySQL muss man nun noch ein Root Passwort vergeben und für Postfix werden die Mailinformationen abgefragt. Am Schluss muss man noch bestätigen, dass Grub in den MBR installiert werden darf.

image

Die CD wird automatisch “ausgeworfen”. Nun kann man neu starten.

image

Nach dem Neustart empfiehlt sich ein:

sudo apt-get update
sudo apt-get dist-upgrade

um den Server mit den neuesten Updates zu versorgen.

MySQL Befehle

Nur so als Gedankenstütze, damit ich nicht immer im Internet nachforschen muss.

mysql --user=root --password=verysecure
Stellt eine Verbindung zum MySQL Server her. Danach wird in der shell mysql> vorangestellt. Befehle müssen mit einem Semikolon (;) abgeschlossen werden. Wenn man kein Passwort angibt, wird man nach der Eingabe des Befehls danach gefragt.

mysql> show databases;
Zeigt die vorhandenen MySQL-Datenbanken an.

mysql> CREATE DATABASE db_name;
Erstellt eine neuen Datenbank db_name.

mysql> CREATE DATABASE IF NOT EXISTS db_name;
Überprüft vor dem Erstellen einer neuen Datenbank, ob bereits eine mit dem gleichen Namen existiert.

mysql> DROP DATABASE db_name;
Löscht eine ganze Datenbank.

mysql> DROP DATABASE IF EXISTS db_name;
Überprüft vor dem Löschen einer Datenbank, ob eine Datenbank mit dem Namen existiert.

mysql> CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘password’;
Erstellt einen neuen User newuser mit dem Passwort password. Dieser neue User hat aber keine Berechtigungen auf irgendeine Datenbank.

mysql> GRANT [type of permission] ON [database name].[table name] TO ‘newuser’@’localhost’;
Wenn bei type of permission  ALL PRIVILEGES gesetzt wird, bekommt der User alle Berechtigungen auf die Datenbank. Um Berechtigungen auf alle Datenbanken und deren Tabellen zu geben, kann man den Stern verwenden (*.*)
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘newuser’@’localhost’;
Nachdem die Berechtigungen verändert wurden, sollten man sie abschliessen durch
mysql> FLUSH PRIVILEGES;

mysql> REVOKE [type of permission] ON [database name].[table name] FROM ‘newuser’@’localhost’;
Entfernt die Berechtigungen vom Benutzer (analog zu GRANT).

mysql>DROP USER ‘newuser’@’localhost’;
Löscht den Benutzer

mysql> select user, host from mysql.user;
Erstellt eine Liste mit User und Host.

mysql> show grants for ‘newuser’@’localhost’;
Zeigt die Berechtigungen für den entsprechenden Benutzer auf localhost.

mysql> QUIT
Beendet die Verbindung zum MySQL-Server.

Mit dem Programm mysqldump kann man Sicherungen einer MySQL-Datenbank erstellen

Das Programm mysqldump kann direkt auf der shell ausgeführt werden, man muss sich also nicht mit dem Datenbankserver verbinden.

mysqldump --user=root --password=verysecure db_name > dumpfilename.sql
Erstellt ein Backup der Datenbank in die Datei dumpfilename.sql.

mysqldump --user=root --password=verysecure db_name | gzip > /Verzeichnispfad/dumpfilename.gz
Erstellt ein komprimiertes Backup der Datenbank in die Datei dumpfilename.gz. Dies kann sinnvoll bei automatisierten Backups sein.

mysql --user=root --password=verysecure db_name < dumpfilename.sql
Spielt das Backup aus der Datei dumpfilename.sql in die Datenbank db_name. Die Datenbank muss vorher erstellt werden.

Access Control Lists (ACL) auf HP Switch

In grösseren Netzwerken sollte aus Performance- und Sicherheitsüberlegungen mit VLAN’s gearbeitet werden. Für einen ersten Überblick zu VLAN’s bietet sich der Blog Schulnetz.info von Edi Pfisterer an. Später wird man sich mit der Anleitung des eigenen Switches auseinandersetzen müssen, die dann aber oft viel technischer verfasst ist.

Hier habe ich bereits ein paar Befehle zusammengefasst, die ich immer mal wieder benötige. Neu kann unser Switch nun auch mit ACL’s umgehen. VLAN’s ohne ACL’s bringen (nur) mehr Performance, weil Broadcastverkehr eingeschränkt wird.
(Broadcasts sind Datenpakete, die ins ganze Netzwerk gesendet werden, weil nicht bekannt ist, an welcher Adresse sich der Empfänger befindet. Je mehr solcher Broadcasts durch das Netzwerk übermittelt werden, desto weniger “Platz” hat es auf der verwendeten Leitung für “Nutzverkehr”, das Netzwerk wird also langsamer).

Wenn Datenverkehr von VLAN zu VLAN übermittelt werden muss, spricht man von Routing. Häufig wird Routing benötigt, um z.B. auf das VLAN mit den Servern zu kommen. Mit eingestelltem Routing bringen VLAN’s also nur weniger Broadcastverkehr, aber keinen Sicherheitsgewinn. Dafür werden ACL’s benötigt, in denen angegeben werden kann, was genau von einem VLAN in das andere darf. Unser neuer Switch kann nun auch mit ACL’s umgehen. So gibt es Zugangspunkte in unserem Netzwerk, die aus Sicherheitsüberlegungen nicht von allen VLAN’s aus zugänglich sein sollten (wie z.B. die Hyper-V-Hosts oder die Verwaltungswebseiten von Servern und Storage, …). Trotzdem wäre es praktisch, wenn ich zur Verwaltung Zugang von meinem Rechner aus hätte und nicht einen Verwaltungsrechner nur für diesen Zweck einsetzen müsste.

Die folgenden Dinge treffen für unseren HP Switch zu. Bei anderen Herstellern muss man zu deren Dokumentation greifen.

Eine ACL (Access Control List) besteht aus einer oder mehreren ACE(s) (Access Control Entry). HP unterscheidet zwischen “standard ACLs” und “extended ACLs”. Bei den “standard ACLs” werden nur die “source addresses” (SA) betrachtet, also sind nur Regeln möglich, die den Verkehr VON xy regeln. Besser geeignet für meine Vorhaben sind die “extended ACLs”, die den Verkehr VON xy NACH uv regeln können.

image

(config)# ip access-list extended <name-str>
Mit diesem Befehl kann man eine extended ACL bearbeiten oder neu erstellen, falls es noch keine ACL mit diesem Namen gibt. Falls der <name-str> Leerzeichen enthält, muss man den Namen in einfache oder doppelte Anführungszeichen setzen. Die Namen dürfen aus 64 Zeichen (alphanumeric) bestehen.

(config-ext-nacl)# deny ip any host 192.168.1.15
Erstellt eine ACE die den Verkehr von allen Netzwerken zum Host 192.168.1.15 verhindert.
image

Um eine neue ACE in eine bereits bestehende Liste einzufügen, kann man einfach die gewünschte Zahl voranstellen, also z.B. 15 deny ip any host 192.168.1.15.

# show access-list
Zeigt eine Übersicht über die eingetragenen ACLs.

# show access-list config
Zeigt Konfigurationsdetails der eingetragenen ACLs an.

#show access-list vlan <vid>
Zeigt die ACLs an, die dem angegebenen VLAN zugeordnet sind.

# vlan <vid> ip access-group <identifier> <in out>
Ordnet eine ACL einem VLAN zu. Wenn man “no” dem Befehl voranstellt, wird die Zuordnung wieder gelöscht. <identifier> muss mit dem Namen (oder der Nummer) der ACL ersetzt werden.
image

Implicit Deny
Wenn eine ACL einem Port oder einem VLAN zugeordnet ist, werden alle nicht explizit erlaubten Fälle abgelehnt.
image

Konkret
Viel einfacher wäre es gewesen, alle Verwaltungsadressen in ein eigenes VLAN zu stecken, aber wie so oft ist man schlauer, wenn alles schon gemacht ist und eine Änderung aufwendig wird. Unsere Server sind im gleichen Subnetz/VLAN wie die Hyper-V-Hosts und die Verwaltungswebseiten von Storage/Hyper-V-Hosts. Also müssen alle Clients aus ihren VLANS Zugang zum Server-VLAN haben, aber nicht zu den einzelnen dieser Ausnahmen. Dies kann mit den ACLs erreicht werden.

Die ACL kann so angelegt werden:
ip access-list extended „Server out“
deny ip any host 192.168.13.25
deny ip any host 192.168.13.28
deny ip any host 192.168.13.35
deny ip any host 192.168.13.36
deny ip any host 192.168.13.50
deny ip any host 192.168.13.51
permit ip any any
exit

Nun muss die ACL noch dem entsprechenden Server VLAN zugewiesen werden
vlan 207 ip access-group “Server out” out