Gateway Installation: Unterschied zwischen den Versionen
Erscheinungsbild
Inhalt gelöscht Inhalt hinzugefügt
K Hob den Schutz von „Gateway Installation“ auf |
Merge mit Server Installation |
||
| Zeile 1: | Zeile 1: | ||
#REDIRECT [[Server Installation]] |
|||
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>'' |
|||
[[Kategorie:Anleitungen]] |
|||
[[Kategorie:Server]] |
|||
[[Kategorie:Konfiguration]] |
|||
Aktuelle Version vom 9. Oktober 2011, 17:47 Uhr
Weiterleitung nach: