DS9/Setup: Unterschied zwischen den Versionen
(→OpenVPN: Uplink-Konfiguration) |
(→Benutzerkonten: Skript) |
||
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 12: | Zeile 12: | ||
# Installation vornehmen | # Installation vornehmen | ||
# GRUB neu konfigurieren, um das Zielsystem zu starten | # GRUB neu konfigurieren, um das Zielsystem zu starten | ||
== Dienste == | |||
* Cronie (vorinstalliert) | |||
* NTP | |||
* OpenSSH | |||
* Haveged | |||
* OpenVPN | |||
pacman -S ntp openssh haveged openvpn | |||
systemctl enable ntpd.service sshd.service haveged.service | |||
== Netzwerk == | |||
Für die Konfiguration der Netzwerkschnittstellen (Interfaces) habe ich ''netcfg'' verwendet. Für das reguläre Interface des Servers folgende Konfiguration in <tt>/etc/network.d/lan</tt>: | |||
CONNECTION='ethernet' | |||
DESCRIPTION='LAN via DHCP' | |||
INTERFACE='eth0' | |||
IP='dhcp' | |||
== OpenVPN == | == OpenVPN == | ||
Das Paket ''openvpn'' installieren, Zertifikate einrichten und zwei Konfigurationen anlegen: eine für Verbindungen durch [[Queen|Queens]] und eine für den Uplink zu einem Anonymisierungsdienst. | Das Paket ''openvpn'' installieren, Zertifikate einrichten und zwei Konfigurationen anlegen: eine für Verbindungen durch [[Queen|Queens]] und eine für den Uplink zu einem Anonymisierungsdienst ([https://www.vpntunnel.com VPN Tunnel]). | ||
Die Zertifikate habe ich per easy-rsa erzeugt. | Die Zertifikate habe ich per [https://wiki.archlinux.org/index.php/Create_a_Public_Key_Infrastructure_Using_the_easy-rsa_Scripts easy-rsa] erzeugt. | ||
Im folgenden die Inhalte der Datei <tt>/etc/openvpn/ds9.conf</tt> | Im folgenden die Inhalte der Datei <tt>/etc/openvpn/ds9.conf</tt> | ||
Zeile 58: | Zeile 78: | ||
push "redirect-gateway def1" | push "redirect-gateway def1" | ||
Für den Uplink über eine weitere VPN-Verbindung habe ich folgende Konfiguration in <tt>/etc/openvpn/vpntunnel.conf</ | Für den Uplink über eine weitere VPN-Verbindung habe ich folgende Konfiguration in <tt>/etc/openvpn/vpntunnel.conf</tt> verwendet: | ||
; Gehe in den Client-Modus | ; Gehe in den Client-Modus | ||
Zeile 101: | Zeile 121: | ||
; Setze Kompression voraus | ; Setze Kompression voraus | ||
comp-lzo | comp-lzo | ||
== Routing == | |||
Der Server soll allen Traffic, der durch das Queen-Interface (tunff) eingeht und unser Freifunk-Subnetz verlassen soll, durch den Uplink-Tunnel (tunse) routen. | |||
Dazu habe ich eine Regel zum Routen über eine eigene Tabelle konfiguriert: | |||
ip rule add from 172.22.0.0/16 table freifunk | |||
… und in dieser Tabelle eine Default-Route über <tt>tunse</tt> eingetragen: | |||
ip route replace default dev tunse table freifunk | |||
Anschließend habe ich das Routing und NAT aktiviert: | |||
/proc/sys/net/ipv4/ip_forward | |||
iptables -t nat -A POSTROUTING -o tunse -j MASQUERADE | |||
… und per Firewall-Konfiguration gesichert: | |||
iptables -P FORWARD DROP | |||
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT | |||
iptables -A FORWARD -o tunse -j ACCEPT | |||
iptables -A FORWARD -j REJECT | |||
== Persistenz == | |||
Damit die Konfiguration der OpenVPN-Verbindungen, das Routing und die Firewall-Regeln beim Booten übernommen werden, habe ich folgende Schritte durchgeführt. | |||
''netcfg''-Konfiguration in <tt>/etc/network.d/ds9</tt>: | |||
CONNECTION="openvpn" | |||
INTERFACE="ignore" | |||
OVPN_CONFIG="/etc/openvpn/ds9.conf" | |||
OVPN_PID_FILE="/tmp/openvpn.ds9.pid" | |||
OVPN_FLAGS="" | |||
POST_UP="ip rule add from 172.22.0.0/16 table freifunk" | |||
Dienst aktivieren: | |||
systemctl enable netcfg@ds9.service | |||
''netcfg''-Konfiguration in <tt>/etc/network.d/vpntunnel</tt>: | |||
CONNECTION="openvpn" | |||
INTERFACE="ignore2" | |||
OVPN_CONFIG="/etc/openvpn/vpntunnel.conf" | |||
OVPN_PID_FILE="/tmp/openvpn.vpntunnel.pid" | |||
OVPN_FLAGS="" | |||
# Fünf Sekunden warten, bis das (Interface) hoffentlich erschienen ist | |||
POST_UP="sleep 5; ip route replace default dev tunse table freifunk" | |||
Dienst aktivieren: | |||
systemctl enable netcfg@vpntunnel.service | |||
Die Firewall-Konfiguration in eine Datei schreiben und beim Booten laden: | |||
iptables-save > /etc/iptables/iptables.rules | |||
systemctl enable iptables.service | |||
== Benutzerkonten == | |||
Für die Authentifizierung habe ich vorerst PAM verwendet. | |||
Die Benutzer habe ich ohne Shell und ohne Home-Verzeichnis angelegt und Passwörter vergeben: | |||
useradd -s /bin/false -d / [Benutzername] | |||
passwd [Benutzername] | |||
Zum Anlegen weiterer Konten gibt es ein Skript (für den Vereinsvorstand): | |||
adduser [Benutzername] | |||
Das Passwort wird generiert und angezeigt. |
Aktuelle Version vom 15. Juli 2013, 11:53 Uhr
Installation DS9: Gedächtnisprotokoll von nomaster.
Basissystem
Hetzner stellt keine vServer mit vorinstalliertem Arch Linux zur Verfügung. Die Installation klappte jedoch über einen Umweg.
- Rescue System booten
- Festplatte partitionieren
- Das Arch-Linux-ISO auf eine Partition kopieren
- GRUB installieren und für das Booten des ISO konfigurieren
- Von der Festplatte neu starten
- Installation vornehmen
- GRUB neu konfigurieren, um das Zielsystem zu starten
Dienste
- Cronie (vorinstalliert)
- NTP
- OpenSSH
- Haveged
- OpenVPN
pacman -S ntp openssh haveged openvpn systemctl enable ntpd.service sshd.service haveged.service
Netzwerk
Für die Konfiguration der Netzwerkschnittstellen (Interfaces) habe ich netcfg verwendet. Für das reguläre Interface des Servers folgende Konfiguration in /etc/network.d/lan:
CONNECTION='ethernet' DESCRIPTION='LAN via DHCP' INTERFACE='eth0' IP='dhcp'
OpenVPN
Das Paket openvpn installieren, Zertifikate einrichten und zwei Konfigurationen anlegen: eine für Verbindungen durch Queens und eine für den Uplink zu einem Anonymisierungsdienst (VPN Tunnel).
Die Zertifikate habe ich per easy-rsa erzeugt.
Im folgenden die Inhalte der Datei /etc/openvpn/ds9.conf
# Authentifiziere per PAM plugin /usr/lib/openvpn/openvpn-auth-pam.so system-auth username-as-common-name # Erzeuge Tunnel-Interface dev tunff # Finde Zertifikate und Schlüssel ca /etc/openvpn/ds9.ca cert /etc/openvpn/ds9.crt client-cert-not-required dh /etc/openvpn/dh1024.pem key /etc/openvpn/ds9.key duplicate-cn tls-server # Setze Kompression per LZO voraus comp-lzo # Erhalte Verbindung aufrecht keepalive 10 120 # Behalte Schlüssel im Speicher persist-key # Halte Tunnel-Interface offen persist-tun # Passe Paketgrößen automatisch an mssfix # Verteile IP-Adressen aus unserem Subnetz server 172.22.133.0 255.255.255.0 # Teile den Clients mit, ihren Traffic über uns zu routen push "redirect-gateway def1"
Für den Uplink über eine weitere VPN-Verbindung habe ich folgende Konfiguration in /etc/openvpn/vpntunnel.conf verwendet:
; Gehe in den Client-Modus client ; Erzeuge Tunnel-Interface dev tunse ; Hole keine Routen vom Server route-nopull ; Verwende UDP-Protokoll proto udp ; Setze Vorgaben des Providers float nobind ; Finde Zertifikate ca /etc/openvpn/vpntunnel.crt ns-cert-type server cipher BF-CBC ; Verbinde zu einem zufällig gewählten Server remote-random remote anna.vpntunnel.se 10010 remote anna.vpntunnel.se 10020 remote anna.vpntunnel.se 1194 ; Versuche unendlich lang dich zu verbinden resolv-retry infinite ; Lies Benutzernamen und Passwort aus Datei auth-user-pass /etc/openvpn/vpntunnel.txt ; Behalte Schlüssel im Speicher persist-key ; Halte Tunnel-Interface offen persist-tun ; Setze Kompression voraus comp-lzo
Routing
Der Server soll allen Traffic, der durch das Queen-Interface (tunff) eingeht und unser Freifunk-Subnetz verlassen soll, durch den Uplink-Tunnel (tunse) routen.
Dazu habe ich eine Regel zum Routen über eine eigene Tabelle konfiguriert:
ip rule add from 172.22.0.0/16 table freifunk
… und in dieser Tabelle eine Default-Route über tunse eingetragen:
ip route replace default dev tunse table freifunk
Anschließend habe ich das Routing und NAT aktiviert:
/proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o tunse -j MASQUERADE
… und per Firewall-Konfiguration gesichert:
iptables -P FORWARD DROP iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -o tunse -j ACCEPT iptables -A FORWARD -j REJECT
Persistenz
Damit die Konfiguration der OpenVPN-Verbindungen, das Routing und die Firewall-Regeln beim Booten übernommen werden, habe ich folgende Schritte durchgeführt.
netcfg-Konfiguration in /etc/network.d/ds9:
CONNECTION="openvpn" INTERFACE="ignore" OVPN_CONFIG="/etc/openvpn/ds9.conf" OVPN_PID_FILE="/tmp/openvpn.ds9.pid" OVPN_FLAGS="" POST_UP="ip rule add from 172.22.0.0/16 table freifunk"
Dienst aktivieren:
systemctl enable netcfg@ds9.service
netcfg-Konfiguration in /etc/network.d/vpntunnel:
CONNECTION="openvpn" INTERFACE="ignore2" OVPN_CONFIG="/etc/openvpn/vpntunnel.conf" OVPN_PID_FILE="/tmp/openvpn.vpntunnel.pid" OVPN_FLAGS="" # Fünf Sekunden warten, bis das (Interface) hoffentlich erschienen ist POST_UP="sleep 5; ip route replace default dev tunse table freifunk"
Dienst aktivieren:
systemctl enable netcfg@vpntunnel.service
Die Firewall-Konfiguration in eine Datei schreiben und beim Booten laden:
iptables-save > /etc/iptables/iptables.rules systemctl enable iptables.service
Benutzerkonten
Für die Authentifizierung habe ich vorerst PAM verwendet.
Die Benutzer habe ich ohne Shell und ohne Home-Verzeichnis angelegt und Passwörter vergeben:
useradd -s /bin/false -d / [Benutzername] passwd [Benutzername]
Zum Anlegen weiterer Konten gibt es ein Skript (für den Vereinsvorstand):
adduser [Benutzername]
Das Passwort wird generiert und angezeigt.