Server Installation: Unterschied zwischen den Versionen
(→Nagios: wieder eingefuegt, Unterseite einsparen) |
(Merge) |
||
Zeile 1: | Zeile 1: | ||
+ | == Gateway Server == | ||
+ | |||
+ | Kurzer Leitfaden für das Aufsetzen neuer Vereinsgateways. | ||
+ | |||
+ | === Basisinstallation === | ||
+ | |||
+ | Allgemeines zur Grundinstallation und zum Monitoring siehe [[Server Installation]]. | ||
+ | |||
+ | === Konfiguration === | ||
+ | |||
+ | ==== Netzwerk-Geräte ==== | ||
+ | |||
+ | * Externe und Intern IP in /etc/network/interfaces konfigurieren. Dabei eth0=extern und eth1=intern | ||
+ | * lege gatewaysetup.sh und iptables_dnat.autogenerated in /etc/network ab | ||
+ | * lege ein helper script zum konditionalen aufruf von /etc/network/gatewaysetup.sh in /etc/init.d/gatewaysetup (siehe z.B. izumi setup) | ||
+ | * linke /etc/init.d/gatewaysetup auf /etc/rcS.d/S40gatewaysetup | ||
+ | * Das Script /etc/network/if-up.d/openvpn starten OVPN | ||
+ | |||
+ | ==== Routing / OLSR ==== | ||
+ | |||
+ | * OLSR /etc/olsrd.conf, Defaults mit: | ||
+ | UseHysteresis no | ||
+ | LinkQualityLevel 2 | ||
+ | Interface "eth1" { <defaults> } | ||
+ | Hna4 | ||
+ | { | ||
+ | # ipkg repositories | ||
+ | 195.56.146.238 255.255.255.255 | ||
+ | 212.91.225.42 255.255.255.255 | ||
+ | # downloads.openwrt.org | ||
+ | 78.24.191.177 255.255.255.255 | ||
+ | } | ||
+ | |||
+ | * WAN-Routing /etc/network/ip-up.d/gatewaysetup.sh (Kopie besorgen) | ||
+ | |||
+ | ==== SSH-Server ==== | ||
+ | |||
+ | * ggf. neue Schlüssel erstellen in /etc/ssh/ | ||
+ | ** RSA-Host-Key per ''ssh-keygen -b 2048 -t rsa -f ssh_host_rsa_key'' | ||
+ | ** DSA-Host-Key per ''ssh-keygen -b 2048 -t dsa -f ssh_host_dsa_key'' | ||
+ | * Einige änderungen in /etc/ssh/sshd_config | ||
+ | |||
+ | PermitRootLogin without-password | ||
+ | #RSAAuthentication yes | ||
+ | #PasswordAuthentication no | ||
+ | |||
+ | ==== VPN-Server ==== | ||
+ | |||
+ | * OpenVPN: | ||
+ | ** openvpn + openssl installieren | ||
+ | ** zwei Instanzen aufbauen: <system> = opennet_ugw (Usergateway-VPN) | opennet_users (User-VPN) | ||
+ | ** /etc/openvpn/<system>/openssl.cnf als Kopie besorgen, Leserechte setzen (''chmod go-rwx <system>'') | ||
+ | ** /etc/openvpn/opennet_<system>.conf anpassen (Kopie besorgen), key + cert anpassen | ||
+ | ** Csr/Key erstellen: ''openssl req -days 3650 -nodes -new -keyout <hostname>.key -out <hostname>.csr -extensions server -config openssl.cnf'' | ||
+ | *** opennet_users - Subject: C=DE, ST=Mecklenburg-Vorpommern, L=Rostock, O=Opennet, OU=Gateways, CN=<hostname>.on/emailAddress=admin@opennet-initiative.de | ||
+ | *** opennet_ugw - Subject: C=DE, ST=Mecklenburg-Vorpommern, L=Rostock, O=OpenNet, OU=user gateways, CN=<hostname>.on/emailAddress=admin@opennet-initiative.de | ||
+ | ** Csr absenden und unterschreiben lassen, Crt einspielen, Leserechte setzen (''chmod go-rw *.key'') | ||
+ | ** Diffie hellman PEM: ''openssl dhparam -out /etc/openvpn/dh2048.pem 2048'' | ||
+ | |||
+ | * automatische ACL Aktualisierung: | ||
+ | ** Nutzer openvpn-acl anlegen + absichern | ||
+ | ** SSH Schlüsselpaar erzeugen: ''su openvpn-acl; cd .ssh/; ssh-keygen -t rsa'' (Sicherstellen, das $home und .ssh vorhanden sind!) | ||
+ | ** SSH Public Key (id_rsa.pub) in opennetca@ratte:.ssh/authorized_keys hinzufügen | ||
+ | ** cronttab für openvpn-acl mit "*/10 * * * * rsync -rt --delete --safe-links opennetca@139.30.3.52:'opennet_users opennet_users_disabled' /etc/openvpn/acl" | ||
+ | |||
+ | * notwendige Anpassung /etc/init.d/openvpn (wegen Schreibrechten Connect-Skript) | ||
+ | # changed mathias mahnke to cd to "$CONFIG_DIR/run | ||
+ | # needed to run openvpn scripts | ||
+ | # (original hack by sebastian hagen) | ||
+ | $DAEMON $OPTARGS --writepid /var/run/openvpn.$NAME.pid \ | ||
+ | $DAEMONARG $STATUSARG --cd $CONFIG_DIR/run \ | ||
+ | --config $CONFIG_DIR/$NAME.conf || STATUS=1 | ||
+ | |||
+ | ==== Nameserver ==== | ||
+ | |||
+ | * Erforderliche Pakete installieren: bind9 | ||
+ | * falls noch kein rndc-Key - rndc absichern per ''rndc-conf -a'' | ||
+ | * mkdir /var/log/bind; chown bind /var/log/bind | ||
+ | * /etc/bind/named.conf.options: | ||
+ | |||
+ | <pre> | ||
+ | key dnskey.opennet { | ||
+ | algorithm hmac-md5; | ||
+ | secret "<<<<Key von anderem Gateway holen>>>>"; | ||
+ | }; | ||
+ | |||
+ | server 139.30.241.202 { | ||
+ | keys dnskey.opennet; | ||
+ | }; | ||
+ | options { | ||
+ | directory "/var/cache/bind"; | ||
+ | auth-nxdomain no; # conform to RFC1035 | ||
+ | allow-recursion { any; }; # allow queries from non-localhost | ||
+ | listen-on-v6 { any; }; # activate IPv6 | ||
+ | check-names slave ignore; # ignoriert unterstrich in Domainnamen vom ON | ||
+ | }; | ||
+ | logging { | ||
+ | channel logfile { | ||
+ | file "/var/log/bind/named.log" versions 2 size 1M; | ||
+ | print-time yes; | ||
+ | # syslog local2; | ||
+ | print-category yes; | ||
+ | print-severity yes; | ||
+ | severity info; | ||
+ | }; | ||
+ | |||
+ | category default { logfile; }; | ||
+ | category general { logfile; }; | ||
+ | # category queries { null; }; | ||
+ | # category lame-servers { null; }; | ||
+ | # category update { null; }; | ||
+ | }; | ||
+ | </pre> | ||
+ | |||
+ | * /etc/bind/named.conf.local: | ||
+ | |||
+ | <pre> | ||
+ | // on - forward (includes vpn) | ||
+ | zone "on." { | ||
+ | type slave; | ||
+ | file "db.on"; | ||
+ | masters {139.30.241.202;}; | ||
+ | }; | ||
+ | |||
+ | //on - reverse | ||
+ | |||
+ | zone "168.192.in-addr.arpa" { | ||
+ | type slave; | ||
+ | file "db.192.168"; | ||
+ | masters {139.30.241.202;}; | ||
+ | }; | ||
+ | |||
+ | //on-vpn - reverse | ||
+ | zone "1.10.in-addr.arpa" { | ||
+ | type slave; | ||
+ | file "db.10.1"; | ||
+ | masters {139.30.241.202;}; | ||
+ | }; | ||
+ | |||
+ | //on-ugw - reverse | ||
+ | zone "2.10.in-addr.arpa" { | ||
+ | type slave; | ||
+ | file "db.10.2"; | ||
+ | masters {139.30.241.202;}; | ||
+ | }; | ||
+ | </pre> | ||
+ | |||
+ | * lokale Namensauflösung /etc/resolv.conf: | ||
+ | search on | ||
+ | nameserver 127.0.0.1 | ||
+ | * Überschreiben der Namensauflösung durch ppp-Einwahl unterbinden - /etc/ppp/peers/provider: | ||
+ | #usepeerdns | ||
+ | * Nameserver starten: ''/etc/init.d/bind9 start'' | ||
+ | * Funktion prüfen: ''ps aux|grep bind'' und ''rndc status'' | ||
+ | * Fehlermeldungen suchen: ''grep named /var/log/daemon.log|tail -20'' bzw. tail /var/log/bind/named.log (falls Logfile vorhanden) | ||
+ | * Zonen-Transfer manuell durchführen: ''rndc retransfer on'' | ||
+ | |||
+ | ==== Webserver ==== | ||
+ | |||
+ | * apache2 installieren | ||
+ | ** in /etc/apache2/ports.conf eintragen: Listen 80 | ||
+ | ** Default-Site deaktivieren: #RedirectMatch ^/$ /apache2-default/ | ||
+ | ** Default-Site unter /var/www/apache2-default ggf. löschen | ||
+ | ** CGI-BIN deaktivieren: /etc/apache2/mods-enabled/cgi.load löschen; ggf. in sites-enabled/ den cgi-bin Eintrag löschen | ||
+ | ** Server-Signature per "ServerSignature Off" in "sites-enabled/000-default" deaktivieren | ||
+ | |||
+ | ==== Timeserver ==== | ||
+ | |||
+ | * ntpdate und ntpd installieren | ||
+ | * beide beim Systemstart starten lassen (zur Sicherheit zuerst ntpdate, dann ntpd) | ||
+ | * Wenn beim Aufruf von ntp-keygen die Fehlermeldung ''RAND_load_file /root/.rnd not found or empty'' kommt kann man sich mit ''dd if=/dev/random of=/root/.rnd bs=512 count=1'' helfen. | ||
+ | |||
+ | sudo su | ||
+ | mkdir -p /etc/ntp | ||
+ | chmod go-rx /etc/ntp | ||
+ | cd /etc/ntp | ||
+ | ntp-keygen -M | ||
+ | chmod go-rxw * | ||
+ | chmod go+rx /etc/ntp | ||
+ | ln -sf ntpkey_MD5key* keys | ||
+ | |||
+ | * In /etc/ntp.conf sind dann folgende Einträge erforderlich: | ||
+ | |||
+ | keys /etc/ntp/keys | ||
+ | keysdir /etc/ntp/ | ||
+ | trustedkey 10 | ||
+ | requestkey 10 | ||
+ | restrict 127.0.0.1 | ||
+ | |||
+ | * Das Script [[Gateway_Installation/ntpdrehash]] als /usr/local/bin/ntpdrehash ablegen: | ||
+ | |||
+ | * Und schliesslich /etc/ppp/ip-up.d/70ntpdrehash anlegen: | ||
+ | |||
+ | #!/bin/sh | ||
+ | /usr/local/bin/ntpdrehash | ntpdc & | ||
+ | |||
+ | ==== MTA (Mail Transfer) ==== | ||
+ | |||
+ | Es ist sinnvoll einen MTA zu konfigurieren damit Statusmeldungen per Mail an unser administratives Postfach ''noc@opennet-initiative.de'' geschickt werden können. Wir benutzen dazu einen gemeinsamen Relayhost mit SMTP Auth unter postfix auf jedem Gateway. | ||
+ | |||
+ | '''Benötigte Pakete:''' postfix (''bei der Debian installation '''Satellite system''' auswählen'') | ||
+ | |||
+ | Konfiguriert wird Postfix über ''/etc/postfix/main.cf''. | ||
+ | |||
+ | <pre> | ||
+ | # hostname/domain definition | ||
+ | # myhostname = <host> # (nicht zwingend erforderlich. Inhalt von /etc/hostname wird verwendet) | ||
+ | mydomain= opennet-initiative.de | ||
+ | |||
+ | # Sollte mit dem DNS Namen fuer unsere ip uebereinstimmen | ||
+ | # Ist nicht zwingend erforderlich wenn wir smtp-auth verwenden | ||
+ | # smtp_helo_name = defaultroute=$(route -n|grep ^0.0.0.0); defaultif=${defaultroute##* }; ipaddr=$(ifconfig $defaultif|grep "inet addr"); ipaddr2=${ipaddr##*inet addr:}; dig -x ${ipaddr2%% *} | ||
+ | #smtp_helo_name = FQDN.opennet-initiative.de | ||
+ | |||
+ | # myorigin wird an lokal generierte Mails angehaengt. Sollte deswegen eine Domain sein die | ||
+ | # Mails empfangen kann und wo es Postfaecher fuer root, cron usw. gibt. | ||
+ | myorigin = $mydomain | ||
+ | |||
+ | # Aliase für lokale User | ||
+ | alias_maps = hash:/etc/aliases | ||
+ | |||
+ | # Postfix ist nur fuer localhost zuständig | ||
+ | mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 | ||
+ | inet_interfaces = loopback-only | ||
+ | # IPv6 | ||
+ | inet_protocols = all | ||
+ | |||
+ | # alle Mails sollen über unseren Relayhost gesendet werden | ||
+ | # (mit Dynamischen IP's und ohne PTR-Record sollte man lieber keine Mails versenden) | ||
+ | relayhost = relayhost.opennet-initiative.de | ||
+ | |||
+ | # Zum authentifizieren beim Relayhost benötigen wir SMTP Auth | ||
+ | # ''/etc/postfix/sasl_passwd'' hat folgendes Format | ||
+ | # hostname user:pass | ||
+ | # Wichtig: es muss libsasl2-2 und libsasl2-modules installiert sein | ||
+ | # | ||
+ | smtp_sasl_auth_enable = yes | ||
+ | smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd | ||
+ | smtp_sasl_security_options = | ||
+ | smtp_use_tls = yes # der relayhost erlaubt smtp-auth nur verschlüsselt | ||
+ | </pre> | ||
+ | |||
+ | Mail-Namen in /etc/mailname anlegen: | ||
+ | <host>.opennet-initiative.de | ||
+ | |||
+ | Alias-Namen in /etc/aliases anlegen: | ||
+ | postmaster: root | ||
+ | abuse: root | ||
+ | admin: root | ||
+ | root: noc@opennet-initiative.de | ||
+ | |||
+ | Die Datei ''/etc/postfix/sasl/passwd'' anlegen und aktuellen Inhalt besorgen (z.B. von einem schon bestehenden Gateway). Danach noch die Datenbank Version der Datei mit postmap generieren und Zugriffsrechte setzen. | ||
+ | |||
+ | postmap /etc/postfix/sasl/passwd | ||
+ | chown root.root /etc/postfix/sasl/passwd*; | ||
+ | chmod 600 /etc/postfix/sasl/passwd* | ||
+ | |||
+ | Zudem ist noch eine kleine Änderung an ''/etc/postfix/master.cf'' notwendig. Damit legen wir fest das Postfix nur am lo-Interface lauscht: | ||
+ | |||
+ | sed -i -e "s/\(^smtp.*smtpd.*$\)/127.0.0.1:\1/" master.cf | ||
+ | |||
+ | Damit Nachrichten an den Nutzer ''root'' generell weitergeleitet werden, in die /etc/aliases den Eintrag ''root: noc@opennet-initiative.de'' setzen. | ||
+ | |||
+ | '''Häufig benötigte Kommandos:''' | ||
+ | |||
+ | * Konfiguraion neuladen: postfix reload | ||
+ | * Default Konfiguration ausgeben: postconf -d | ||
+ | * Nach Änderungen an /etc/aliases: postalias /etc/aliases | ||
+ | * Warteschlange prüfen: postqueue -p oder mailq | ||
+ | * Warteschlange manipolieren siehe ''man postsuper'' | ||
+ | * Versandlogging erfolgt über mail.* nach: /var/log/mail.log | ||
+ | * Fehler werden nach /var/log/syslog geschrieben | ||
+ | * Versand prüfen: echo "testmail" > mailx -s testmail <user> (z.B. <user>=root) | ||
+ | |||
+ | ==== Policy Routing ==== | ||
+ | |||
+ | Für Server wird inzwischen Policy Routing verwendet, um die lokalen Routen (z.B. zum Default-GW) von den Opennet-internen OLSR Routen zu trennen. | ||
+ | |||
+ | * Paket ''iproute'' installieren | ||
+ | |||
+ | * /etc/iproute2/rt_tables ergänzen: | ||
+ | 250 hardroutes | ||
+ | |||
+ | * /etc/network/if-up.d/policy_routing.sh erstellen, ggf. Interface anpassen | ||
+ | #!/bin/sh | ||
+ | if [ $IFACE = 'eth0' ] ; then | ||
+ | # leave those to olsr | ||
+ | ip route add throw 192.168.0.0/16 table hardroutes | ||
+ | ip route add throw 10.0.0.0/8 table hardroutes | ||
+ | # everything else, send through the gateway to the rest of the world | ||
+ | ip route add 0.0.0.0/0 via $IF_GATEWAY table hardroutes | ||
+ | ip rule add table hardroutes pref 10 | ||
+ | fi | ||
+ | |||
+ | * bei User-GW Server in /etc/network/interfaces ergänzen: | ||
+ | auto lo:0 | ||
+ | iface lo:0 inet static | ||
+ | address 192.168.0.247 | ||
+ | netmask 255.255.255.255 | ||
+ | |||
+ | ==== VPN-Status ==== | ||
+ | |||
+ | * Original-Skript http://pablohoffman.com/software/vpnstatus/vpnstatus.txt | ||
+ | * leicht angepasst für Opennet Bedürfnisse | ||
+ | * Zugriff in openvpn-conf erlauben: ''management localhost <port>'' | ||
+ | |||
+ | == Dienste Server == | ||
+ | |||
=== Basisinstallation === | === Basisinstallation === | ||
Zeile 123: | Zeile 431: | ||
[[Kategorie:Server]] | [[Kategorie:Server]] | ||
[[Kategorie:Anleitungen]] | [[Kategorie:Anleitungen]] | ||
+ | [[Kategorie:Konfiguration]] |
Version vom 9. Oktober 2011, 19:46 Uhr
Inhaltsverzeichnis |
Gateway Server
Kurzer Leitfaden für das Aufsetzen neuer Vereinsgateways.
Basisinstallation
Allgemeines zur Grundinstallation und zum Monitoring siehe Server Installation.
Konfiguration
Netzwerk-Geräte
- Externe und Intern IP in /etc/network/interfaces konfigurieren. Dabei eth0=extern und eth1=intern
- lege gatewaysetup.sh und iptables_dnat.autogenerated in /etc/network ab
- lege ein helper script zum konditionalen aufruf von /etc/network/gatewaysetup.sh in /etc/init.d/gatewaysetup (siehe z.B. izumi setup)
- linke /etc/init.d/gatewaysetup auf /etc/rcS.d/S40gatewaysetup
- Das Script /etc/network/if-up.d/openvpn starten OVPN
Routing / OLSR
- OLSR /etc/olsrd.conf, Defaults mit:
UseHysteresis no LinkQualityLevel 2 Interface "eth1" { <defaults> } Hna4 { # ipkg repositories 195.56.146.238 255.255.255.255 212.91.225.42 255.255.255.255 # downloads.openwrt.org 78.24.191.177 255.255.255.255
}
- WAN-Routing /etc/network/ip-up.d/gatewaysetup.sh (Kopie besorgen)
SSH-Server
- ggf. neue Schlüssel erstellen in /etc/ssh/
- RSA-Host-Key per ssh-keygen -b 2048 -t rsa -f ssh_host_rsa_key
- DSA-Host-Key per ssh-keygen -b 2048 -t dsa -f ssh_host_dsa_key
- Einige änderungen in /etc/ssh/sshd_config
PermitRootLogin without-password #RSAAuthentication yes #PasswordAuthentication no
VPN-Server
- OpenVPN:
- openvpn + openssl installieren
- zwei Instanzen aufbauen: <system> = opennet_ugw (Usergateway-VPN) | opennet_users (User-VPN)
- /etc/openvpn/<system>/openssl.cnf als Kopie besorgen, Leserechte setzen (chmod go-rwx <system>)
- /etc/openvpn/opennet_<system>.conf anpassen (Kopie besorgen), key + cert anpassen
- Csr/Key erstellen: openssl req -days 3650 -nodes -new -keyout <hostname>.key -out <hostname>.csr -extensions server -config openssl.cnf
- opennet_users - Subject: C=DE, ST=Mecklenburg-Vorpommern, L=Rostock, O=Opennet, OU=Gateways, CN=<hostname>.on/emailAddress=admin@opennet-initiative.de
- opennet_ugw - Subject: C=DE, ST=Mecklenburg-Vorpommern, L=Rostock, O=OpenNet, OU=user gateways, CN=<hostname>.on/emailAddress=admin@opennet-initiative.de
- Csr absenden und unterschreiben lassen, Crt einspielen, Leserechte setzen (chmod go-rw *.key)
- Diffie hellman PEM: openssl dhparam -out /etc/openvpn/dh2048.pem 2048
- automatische ACL Aktualisierung:
- Nutzer openvpn-acl anlegen + absichern
- SSH Schlüsselpaar erzeugen: su openvpn-acl; cd .ssh/; ssh-keygen -t rsa (Sicherstellen, das $home und .ssh vorhanden sind!)
- SSH Public Key (id_rsa.pub) in opennetca@ratte:.ssh/authorized_keys hinzufügen
- cronttab für openvpn-acl mit "*/10 * * * * rsync -rt --delete --safe-links opennetca@139.30.3.52:'opennet_users opennet_users_disabled' /etc/openvpn/acl"
- notwendige Anpassung /etc/init.d/openvpn (wegen Schreibrechten Connect-Skript)
# changed mathias mahnke to cd to "$CONFIG_DIR/run # needed to run openvpn scripts # (original hack by sebastian hagen) $DAEMON $OPTARGS --writepid /var/run/openvpn.$NAME.pid \ $DAEMONARG $STATUSARG --cd $CONFIG_DIR/run \ --config $CONFIG_DIR/$NAME.conf || STATUS=1
Nameserver
- Erforderliche Pakete installieren: bind9
- falls noch kein rndc-Key - rndc absichern per rndc-conf -a
- mkdir /var/log/bind; chown bind /var/log/bind
- /etc/bind/named.conf.options:
key dnskey.opennet { algorithm hmac-md5; secret "<<<<Key von anderem Gateway holen>>>>"; }; server 139.30.241.202 { keys dnskey.opennet; }; options { directory "/var/cache/bind"; auth-nxdomain no; # conform to RFC1035 allow-recursion { any; }; # allow queries from non-localhost listen-on-v6 { any; }; # activate IPv6 check-names slave ignore; # ignoriert unterstrich in Domainnamen vom ON }; logging { channel logfile { file "/var/log/bind/named.log" versions 2 size 1M; print-time yes; # syslog local2; print-category yes; print-severity yes; severity info; }; category default { logfile; }; category general { logfile; }; # category queries { null; }; # category lame-servers { null; }; # category update { null; }; };
- /etc/bind/named.conf.local:
// on - forward (includes vpn) zone "on." { type slave; file "db.on"; masters {139.30.241.202;}; }; //on - reverse zone "168.192.in-addr.arpa" { type slave; file "db.192.168"; masters {139.30.241.202;}; }; //on-vpn - reverse zone "1.10.in-addr.arpa" { type slave; file "db.10.1"; masters {139.30.241.202;}; }; //on-ugw - reverse zone "2.10.in-addr.arpa" { type slave; file "db.10.2"; masters {139.30.241.202;}; };
- lokale Namensauflösung /etc/resolv.conf:
search on nameserver 127.0.0.1
- Überschreiben der Namensauflösung durch ppp-Einwahl unterbinden - /etc/ppp/peers/provider:
#usepeerdns
- Nameserver starten: /etc/init.d/bind9 start
- Funktion prüfen: ps aux|grep bind und rndc status
- Fehlermeldungen suchen: grep named /var/log/daemon.log|tail -20 bzw. tail /var/log/bind/named.log (falls Logfile vorhanden)
- Zonen-Transfer manuell durchführen: rndc retransfer on
Webserver
- apache2 installieren
- in /etc/apache2/ports.conf eintragen: Listen 80
- Default-Site deaktivieren: #RedirectMatch ^/$ /apache2-default/
- Default-Site unter /var/www/apache2-default ggf. löschen
- CGI-BIN deaktivieren: /etc/apache2/mods-enabled/cgi.load löschen; ggf. in sites-enabled/ den cgi-bin Eintrag löschen
- Server-Signature per "ServerSignature Off" in "sites-enabled/000-default" deaktivieren
Timeserver
- ntpdate und ntpd installieren
- beide beim Systemstart starten lassen (zur Sicherheit zuerst ntpdate, dann ntpd)
- Wenn beim Aufruf von ntp-keygen die Fehlermeldung RAND_load_file /root/.rnd not found or empty kommt kann man sich mit dd if=/dev/random of=/root/.rnd bs=512 count=1 helfen.
sudo su mkdir -p /etc/ntp chmod go-rx /etc/ntp cd /etc/ntp ntp-keygen -M chmod go-rxw * chmod go+rx /etc/ntp ln -sf ntpkey_MD5key* keys
- In /etc/ntp.conf sind dann folgende Einträge erforderlich:
keys /etc/ntp/keys keysdir /etc/ntp/ trustedkey 10 requestkey 10 restrict 127.0.0.1
- Das Script Gateway_Installation/ntpdrehash als /usr/local/bin/ntpdrehash ablegen:
- Und schliesslich /etc/ppp/ip-up.d/70ntpdrehash anlegen:
#!/bin/sh /usr/local/bin/ntpdrehash | ntpdc &
MTA (Mail Transfer)
Es ist sinnvoll einen MTA zu konfigurieren damit Statusmeldungen per Mail an unser administratives Postfach noc@opennet-initiative.de geschickt werden können. Wir benutzen dazu einen gemeinsamen Relayhost mit SMTP Auth unter postfix auf jedem Gateway.
Benötigte Pakete: postfix (bei der Debian installation Satellite system auswählen)
Konfiguriert wird Postfix über /etc/postfix/main.cf.
# hostname/domain definition # myhostname = <host> # (nicht zwingend erforderlich. Inhalt von /etc/hostname wird verwendet) mydomain= opennet-initiative.de # Sollte mit dem DNS Namen fuer unsere ip uebereinstimmen # Ist nicht zwingend erforderlich wenn wir smtp-auth verwenden # smtp_helo_name = defaultroute=$(route -n|grep ^0.0.0.0); defaultif=${defaultroute##* }; ipaddr=$(ifconfig $defaultif|grep "inet addr"); ipaddr2=${ipaddr##*inet addr:}; dig -x ${ipaddr2%% *} #smtp_helo_name = FQDN.opennet-initiative.de # myorigin wird an lokal generierte Mails angehaengt. Sollte deswegen eine Domain sein die # Mails empfangen kann und wo es Postfaecher fuer root, cron usw. gibt. myorigin = $mydomain # Aliase für lokale User alias_maps = hash:/etc/aliases # Postfix ist nur fuer localhost zuständig mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 inet_interfaces = loopback-only # IPv6 inet_protocols = all # alle Mails sollen über unseren Relayhost gesendet werden # (mit Dynamischen IP's und ohne PTR-Record sollte man lieber keine Mails versenden) relayhost = relayhost.opennet-initiative.de # Zum authentifizieren beim Relayhost benötigen wir SMTP Auth # ''/etc/postfix/sasl_passwd'' hat folgendes Format # hostname user:pass # Wichtig: es muss libsasl2-2 und libsasl2-modules installiert sein # smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd smtp_sasl_security_options = smtp_use_tls = yes # der relayhost erlaubt smtp-auth nur verschlüsselt
Mail-Namen in /etc/mailname anlegen:
<host>.opennet-initiative.de
Alias-Namen in /etc/aliases anlegen:
postmaster: root abuse: root admin: root root: noc@opennet-initiative.de
Die Datei /etc/postfix/sasl/passwd anlegen und aktuellen Inhalt besorgen (z.B. von einem schon bestehenden Gateway). Danach noch die Datenbank Version der Datei mit postmap generieren und Zugriffsrechte setzen.
postmap /etc/postfix/sasl/passwd chown root.root /etc/postfix/sasl/passwd*; chmod 600 /etc/postfix/sasl/passwd*
Zudem ist noch eine kleine Änderung an /etc/postfix/master.cf notwendig. Damit legen wir fest das Postfix nur am lo-Interface lauscht:
sed -i -e "s/\(^smtp.*smtpd.*$\)/127.0.0.1:\1/" master.cf
Damit Nachrichten an den Nutzer root generell weitergeleitet werden, in die /etc/aliases den Eintrag root: noc@opennet-initiative.de setzen.
Häufig benötigte Kommandos:
- Konfiguraion neuladen: postfix reload
- Default Konfiguration ausgeben: postconf -d
- Nach Änderungen an /etc/aliases: postalias /etc/aliases
- Warteschlange prüfen: postqueue -p oder mailq
- Warteschlange manipolieren siehe man postsuper
- Versandlogging erfolgt über mail.* nach: /var/log/mail.log
- Fehler werden nach /var/log/syslog geschrieben
- Versand prüfen: echo "testmail" > mailx -s testmail <user> (z.B. <user>=root)
Policy Routing
Für Server wird inzwischen Policy Routing verwendet, um die lokalen Routen (z.B. zum Default-GW) von den Opennet-internen OLSR Routen zu trennen.
- Paket iproute installieren
- /etc/iproute2/rt_tables ergänzen:
250 hardroutes
- /etc/network/if-up.d/policy_routing.sh erstellen, ggf. Interface anpassen
#!/bin/sh if [ $IFACE = 'eth0' ] ; then # leave those to olsr ip route add throw 192.168.0.0/16 table hardroutes ip route add throw 10.0.0.0/8 table hardroutes # everything else, send through the gateway to the rest of the world ip route add 0.0.0.0/0 via $IF_GATEWAY table hardroutes ip rule add table hardroutes pref 10 fi
- bei User-GW Server in /etc/network/interfaces ergänzen:
auto lo:0 iface lo:0 inet static address 192.168.0.247 netmask 255.255.255.255
VPN-Status
- Original-Skript http://pablohoffman.com/software/vpnstatus/vpnstatus.txt
- leicht angepasst für Opennet Bedürfnisse
- Zugriff in openvpn-conf erlauben: management localhost <port>
Dienste Server
Basisinstallation
- Booten, z.B. per CD oder PXE mit Knoppix
- Dateisystem vorbereiten:
- cfdisk /dev/<device>, z.B. /dev/hda (IDE) oder /dev/sda (SCSI)
- primäre Partitionen: 32 MB boot (Typ 83 + bootable), 500 MB swap (Typ 82), Rest für / (Typ 83)
- boot mit EXT2: mkfs.ext2 /dev/<device>1
- swap mit SWAP: mkswap /dev/<device>2
- root mit XFS: mkfs.xfs /dev/<device>3
- Debian (aktuelle Stable) installieren
- a) Neuinstallation, vgl. Debian GNU/Linux-Installationsanleitung
- c) per debootstap von Knoppix aus, vgl. Debian GNU/Linux-Installationsanleitung - C.4
- b) als Kopie von vorhandenem GW, z.B. izumi
- Filesysteme auf izumi ggf. mounten, crontab Einträge ggf. deaktivieren (CPU-Last)
- boot einbinden: mount /dev/<device>1 /mnt/
- boot spiegeln: rsync -axz --numeric-ids root@izumi.on:/boot/ /mnt/
- root einbinden: umount /mnt; mount /dev/<device>3 /mnt/
- root spiegeln: rsync -axz --numeric-ids root@izumi.on:/ /mnt/
- Minimale Device-Nodes anlegen (bei UDEV): MAKEDEV null console zero
Hilfsmittel: RAID mit mdadm
- spezieller Partitionstyp FD (Linux raid autodetect), mit cfdisk einstellen
- direkt: mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/hda3 /dev/hdc3
- oder auch schrittweise:
- mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/hda3 missing
- Daten in /hda3 einspielen
- mdadm --manage /dev/md0 --add /dev/hdc3
Grub2
- Grub2 installieren und Kernel einbinden
grub-install /dev/hdX update-grub
- Kontrolle über /boot/grub/grub.cfg und /boot/grub/device.map und ggf.
grub-install --recheck /dev/hdX
Minimalkonfiguration
- Hostname /etc/hostname + /etc/mailname
- Zeitzone /etc/timezone -> UTC
- Kernelmodule /etc/modules
- Dateisysteme /etc/fstab
/dev/<device>1 /boot ext2 noauto,noatime 1 1 /dev/<device>3 / xfs noatime 0 0 /dev/<device>2 none swap sw 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0
Virtualisierung
Bezüglich KVM siehe Server Installation/KVM.
Dienste
Ferm (Firewall)
Siehe Server Installation/ferm.
Trac (Projektmanagement)
Siehe Server Installation/Trac.
Monitoring
apticron
Derzeit nicht verwendet, liefert zu häufig Fehler.
- prüft den Update Status des Debian OS
- Default-Installation ausreichend, liefert Änderungen per Mail an root
- werden durch postfix dann automatisch an das ONI-NOC gesendert
munin
- erzeugt Graphen zum Systemzustand, inbesondere Netztraffic
- Default-Installation ausreichend, Zugriff via Web (apache)
- Allow from All in /etc/apache2/conf.d/munin aufnehmen
monit
- Debian Default-Installation ausführen und Config-File ersetzen
- Check auf Default-GW (IP) und PID-Files (Pfade) prüfen
- überwacht dann dauerhaft Prozesse und startet diese ggf. neu
- Zugriff per https://<host> und Username/Passwort (siehe Config-File)
vnstat
- vnstat installieren: apt-get install vnstat; vnstat -u -i <wan-interface>
- wird regelmässig durch den cron gestartet
- Werte können an der Console abgefragt werden, z.B. Monatswerte per vnstat -m
logcheck
- prüft Logdateien auf Anomalien und sendet dieses per E-Mail
- Installation per apt-get install logcheck und Konfiguration von /etc/logcheck/logcheck.conf:
FQDN=0 MAILASATTACH=0 REPORTLEVEL="server" SENDMAILTO="noc@opennet-initiative.de" TMP="/tmp"
- Ausnahmen bitte in /etc/logcheck/ignore.d.server/opennet ablegen
Nagios
- Generator-Skript für AP-Überwachung - nagios_opennet_gen.sh
#!/bin/bash i=0 while [ $i -le 255 ] do i=$[$i+1] echo "define host { host_name #NUMBER#.aps.on use generic-host }" | sed -s "s/#NUMBER#/$i/" >> nagios_opennet.conf done exit 0
- Deaktivierung von E-Mail-Benachrichtung - contacts_nagios2.cfg
service_notification_options n host_notification_options n