Gateway Installation: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(kein "Projekt" in dem Sinne)
(Merge mit Server Installation)
 
(9 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
Kurzer Leitfaden für das Aufsetzen neuer Vereinsgateways.
+
#REDIRECT [[Server Installation]]
 
+
=== 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 /etc/olsrd.conf, Defaults mit:
+
UseHysteresis      no
+
LinkQualityLevel    2
+
Interface "eth1"    { <defaults> }
+
Hna4
+
{
+
  # university rostock
+
  139.30.0.0      255.255.0.0
+
  # ipkg repositories
+
  195.56.146.238  255.255.255.255
+
  212.91.225.42  255.255.255.255
+
  # wikipedia
+
  207.142.131.192 255.255.255.192
+
  145.97.39.128  255.255.255.240
+
  212.85.150.128  255.255.255.240
+
  # www.opennet-initiative.de
+
  80.86.178.0    255.255.255.0
+
  # www.rostock.de
+
  195.37.188.160  255.255.255.240
+
}
+
 
+
* 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_gateways (VPN Backbone) | opennet_users (VPN Internet-Zugang für Nutzer)
+
** /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'' (Common Name = <hostname>.on)
+
** 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.7 {
+
      keys dnskey.opennet;
+
};
+
options {
+
  directory "/var/cache/bind";
+
  forward first;
+
  forwarders {
+
    <isp-dns1>;
+
    <isp-dns2>;
+
    192.168.0.254;
+
  };
+
  auth-nxdomain no;    # conform to RFC1035
+
  listen-on {
+
    127.0.0.1;
+
    <gateway-ip>
+
  };
+
  # ignoriert unterstrich in Domainnamen vom ON
+
  check-names slave ignore;
+
};
+
 
+
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.7;};
+
};
+
 
+
//on - reverse
+
 
+
zone "168.192.in-addr.arpa" {
+
        type    slave;
+
        file    "db.192.168";
+
        masters {139.30.241.7;};
+
};
+
 
+
//on-vpn - reverse
+
zone "1.10.in-addr.arpa" {
+
        type    slave;
+
        file    "db.10.1";
+
        masters {139.30.241.7;};
+
};
+
 
+
//on-ugw - reverse
+
zone "2.10.in-addr.arpa" {
+
        type    slave;
+
        file    "db.10.2";
+
        masters {139.30.241.7;};
+
};
+
</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)
+
 
+
==== Datenbank ====
+
 
+
Wir benutzen bei Bedarf entweder PostgreSql oder MySql. Auf Opennet-Gateways derzeit nicht notwendig.
+
 
+
Postgre-Tunning:
+
* /etc/postgresql-common/autovacuum.conf : avac_sleep_base=3000
+
 
+
==== 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
+
 
+
=== Opennet Tools ===
+
 
+
Erläuterungen sie auch [[Gateway_Installation/Opennet Tools Übersicht]].
+
 
+
==== Teucrium ====
+
 
+
Siehe [[Gateway_Installation/Teucrium Setup]]. Wird zur Zeit nicht verwendet.
+
 
+
==== Traffic Shaping ====
+
 
+
Siehe [[Gateway_Installation/Traffic Shaping]]. Wird zur Zeit nicht verwendet.
+
 
+
==== 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>''
+
 
+
[[Kategorie:Konfiguration]]
+

Aktuelle Version vom 9. Oktober 2011, 19:47 Uhr

  1. REDIRECT Server Installation
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge