Basale infrastructuur
Contents
Basale infrastructuur
bind
De nameserver structuur is in ontwikkeling. Op locatie draait een bind9 name-server als slave van de uwork superslaves. Uwork heeft een master nameserver en twee superslaves:
- ns1.uwork.nl
- ns2.uwork.nl
- ns3.uwork.nl
Zie voor deze nameservers: http://wiki.webhuis.nl/mediawiki/index.php/Basale_infrastructuur#powerdns powerdns
Uwork ondersteunt nu alleen nog static domain name serving met reverse lookup. Uwork wil twee features realiseren:
- Geautomatiseerde reverse lookup, automatisch aanmaken van PTR records als er een A record ontstaat en ook verwijderen als het A record verdwijnt.
- Geautomatiseerd gecollecteerde dynamische domain name serving
De oplossing ligt in een complexe relatie van masters en slaves met een gecombineerde implementatie van bind9 en powerdns.
cfengine
dhcp
apt-get install dhcp3-server
dhcpd.conf
ddns-update-style none; option domain-name "uwork.nl"; option domain-name-servers 10.x.y.z 10.x1.x2.z2; default-lease-time 600; max-lease-time 7200; lease-file-name "/var/cache/dhcpd/dhcp.leases"; authoritative; log-facility local7; subnet 10.x.y.0 netmask 255.255.255.224 { range 10.x.y.10 10.x.y.30; option routers 10.x.y.1;
Let op: Maak bij configuratie het bestand "/var/cache/dhcpd/dhcp.leases" aan (de sart van de server breekt af als het bestand ontbreekt).
dhcp3.server
Specificeer in /etc/default/dhcp3-server in geval van een machine met meerdere netwerkkaarten de netwerkkaarten waarop de server luistert.
INTERFACES="eth1"
Gewone router forwarding
Configureer forwarding als volgt:
#!/bin/bash # ip_domU_win="10.x.y.13" # echo 1 > /proc/sys/net/ipv4/ip_forward # # Let op: # De flush '-F' regels verwijderen als het een vpn-router is # /sbin/iptables -F /sbin/iptables -t nat -F /sbin/iptables -t mangle -F /sbin/iptables -F INPUT /sbin/iptables -F OUTPUT /sbin/iptables -F FORWARD # # Faciliteer RDP voor de Windows machine # /sbin/iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp -s 0.0.0.0 -d 10.x.y.13 --dport 3389 -j ACCEPT /sbin/iptables -A FORWARD -d 10.x.y.13 -p tcp --dport 3389 -j ACCEPT /sbin/iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 3389 -j DNAT --to 10.x.y.13 # /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 10.x.y.13 -p tcp --sport 3389 --dport 3389 -j ACCEPT # # Blokkeer Internet voor de Windows machine # /sbin/iptables -A FORWARD -i eth0 -o eth1 -s ! 10.0.0.0/8 -d $ip_domU_win -j DROP /sbin/iptables -A INPUT -i eth0 -s ! 10.0.0.0/8 -d $ip_domU_win -j DROP /sbin/iptables -A OUTPUT -o eth0 -s $ip_domU_win -d ! 10.0.0.0/8 -j DROP # # Zorg voor forwarding van de machines van het locale netwerk # /sbin/iptables -A INPUT -i eth0 -d 10.29.20.0/26 -j ACCEPT /sbin/iptables -A OUTPUT -o eth0 -s 10.29.20.0/26 -j ACCEPT /sbin/iptables -A FORWARD -i eth1 -s 10.29.20.0/26 -o eth0 -j ACCEPT /sbin/iptables -t nat -A POSTROUTING -o eth0 -s 10.29.20.0/26 -j MASQUERADE # /sbin/iptables -A FORWARD -i eth0 -s 10.0.0.0/8 -o eth1 -d 10.29.20.0/26 -j ACCEPT /sbin/iptables -t nat -A PREROUTING -d 10.29.20.0/26 -j ACCEPT
In deze opzet is de Windows machine van buitenaf te benaderen, maar de Windows machine zelf is geblokkeerd voor Internet verkeer.
mysql
De installatie van de mysql server is rechtstreeks en standaard.
# apt-get update && apt-get install mysql-server-5.0
Zet in ieder geval een wachtwoord voor de gebruiker root.
my.cnf
Het hangt verder af van het gebruik of er in de confuguratie nog wijzigingen noodzakelijk zijn. Voor grotere databases is het noodzakelijk om het max_allowed_packet hoger te zetten voor zowel mysqld als mysqldump. Een te lage waarde resulteert in een onvolledige dump of een fout in de database.
[mysqld] # max_allowed_packet = 16M Oude waarde dump gaf een error max_allowed_packet = 512M . . [mysqldump] # max_allowed_packet = 16M Oude waarde dump gaf een error max_allowed_packet = 512M
Deze hoge waarden zijn geen probleem, omdat de ruimte alleen in geval van voodzaak in gebruik is, de daemon geeft de ruimte na gebruik weer vrij.
ntp
Uwork heeft in haar opzet voor de machines een onderverdeling gemaakt in ntp servers en ntp clients. De virtuele servers zijn gebouwd op basis van xen. Virtuele xen machines ontleden hun klok informatie aan de fysieke machine waarop ze zijn gebouwd. Ntp servers zijn altijd fysieke machines, de rollen zijn verdeeld:
- ntp servers die de tijd van externe ntp-servers halen;
- ntp servers die de tijd van interne ntp-servers halen.
servers: ntp0.nl.net swisstime.ee.ethz.ch ntp0-rz.rrze.uni-erlangen.de # ntpdate synchroniseert de clock, twee keer uitvoeren # ntpdate -b pool.ntp.org # ntpq -pn
Als de clock goed staat, de hardwareclock zetten met
# hwclock --systohc --utc
openssh server
Security vereist ssh toegang op basis van PKI.
Aanpassen /etc/ssh/sshd_config
PermitRootLogin no PasswordAuthentication no
Firewall opzet voor ssh tegen brute force atacks:
#!/bin/sh # # Variabelen en interfaces IPTABLES="/sbin/iptables" ext="eth0" int="eth1" # Beperk de toegang tot de externe interface (ext) # lijst="D A" for i in $lijst ; do $IPTABLES -${i} INPUT -i ${int} -p tcp --dport 22 -j ACCEPT ; $IPTABLES -${i} INPUT -i ${ext} -p tcp --dport 22 -m recent --update --seconds 600 --hitcount 7 --name SSH -j DROP ; $IPTABLES -${i} INPUT -i ${ext} -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT ; $IPTABLES -${i} OUTPUT -p tcp --sport 22 -j ACCEPT ; done
Door de rules eerst te verwijderen en daarna weer op te voeren is het script bruikbaar in combinatie met andere firewall scripts
Tonen van de geregistreerde IP-adressen
user@prod:~$ cat /proc/net/ipt_recent/SSH
Flushen van de geregistreerde IP-adressen
user@prod:~$ echo clear > /proc/net/ipt_recent/SSH
powerdns
powerdnsadmin
subversion
Uwork maakt op grote schaal gebruik van versiebeheer met subversion.
- Configuraties van applicaties
- Configuratiebeheer met behulp van cfengine2
- in eigen beheer ontwikkelde packages
- open-ldap directories
- virtualisatie (verhuist gaandeweg richting cfengine2)
- webdevelopment
apache2.conf
NameVirtualHost *:443 <VirtualHost *:443> # ServerName svn.uwork.nl ServerAlias www.svn.uwork.nl ServerAdmin martin@webhuis.nl DocumentRoot /var/www/svn.uwork.nl ErrorLog /var/log/apache2/svn.uwork.nl-error.log TransferLog /var/log/apache2/svn.uwork.nl-access.log # SSLProxyEngine on SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /etc/apache2/ssl/svn.uwork.nl.cert.pem SSLCertificateKeyFile /etc/apache2/ssl/svn.uwork.nl.key-nopw.pem SSLCACertificateFile /etc/apache2/ssl/cacert.pem # <Location "/virtualisatie"> DAV svn SVNPath /var/lib/svn/virtualisatie AuthType Basic # AuthName "Subversion repository" AuthUserFile /etc/apache2/dav_svn.passwd # require valid-user </Location> # </VirtualHost>
creëren directory repository
svn --username=user --password=xxxxxx import /home/martin/ips-vpn \ https://configurations.webhuis.nl/configurations/uwork.nl/test-t105/ips-vpn -m"initial import ips-vpn"
Troublshooting: http://wiki.webhuis.nl/mediawiki/index.php/HowTo%27s#subversion
Terug naar: Main Page