Zum Inhalt springen

Server Installation: Unterschied zwischen den Versionen

Aus Opennet
Inhalt gelöscht Inhalt hinzugefügt
MathiasMahnke (Diskussion | Beiträge)
→Nagios: wieder eingefuegt, Unterseite einsparen
MathiasMahnke (Diskussion | Beiträge)
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, 17:46 Uhr

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
  • 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

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