Difference between revisions of "Basale infrastructuur"

From PostgreSQL_wiki
Jump to: navigation, search
(ADSL verbinding)
Line 8: Line 8:
 
* http://www.debian.org/News/2009/20090729
 
* http://www.debian.org/News/2009/20090729
 
== bind ==
 
== 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:
+
De nameserver structuur is in ontwikkeling. Op locatie draait een bind9 name-server als slave van de Webhuis superslaves. Webhuis heeft een master nameserver en twee superslaves:
* ns1.uwork.nl
+
* ns1.Webhuis.nl
* ns2.uwork.nl
+
* ns2.Webhuis.nl
* ns3.uwork.nl
+
* ns3.Webhuis.nl
 
Zie voor deze nameservers: [http://wiki.webhuis.nl/mediawiki/index.php/Basale_infrastructuur#powerdns powerdns]
 
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:
+
Webhuis ondersteunt nu alleen nog static domain name serving met reverse lookup. Webhuis 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.
 
* 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
 
* Geautomatiseerd gecollecteerde dynamische domain name serving
Line 37: Line 37:
 
ddns-update-style none;
 
ddns-update-style none;
   
option domain-name "uwork.nl";
+
option domain-name "Webhuis.nl";
 
option domain-name-servers 10.x.y.z 10.x1.x2.z2;
 
option domain-name-servers 10.x.y.z 10.x1.x2.z2;
   
Line 170: Line 170:
 
*
 
*
 
== ntp ==
 
== 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.
+
Webhuis 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 zijn altijd fysieke machines, de rollen zijn verdeeld:
 
* ntp servers die de tijd van externe ntp-servers halen;
 
* ntp servers die de tijd van externe ntp-servers halen;
Line 232: Line 232:
 
=== powerdnsadmin ===
 
=== powerdnsadmin ===
 
== subversion ==
 
== subversion ==
Uwork maakt op grote schaal gebruik van versiebeheer met subversion.
+
Webhuis maakt op grote schaal gebruik van versiebeheer met subversion.
 
* Configuraties van applicaties
 
* Configuraties van applicaties
 
* Configuratiebeheer met behulp van cfengine2
 
* Configuratiebeheer met behulp van cfengine2
Line 244: Line 244:
 
<VirtualHost *:443>
 
<VirtualHost *:443>
 
#
 
#
ServerName svn.uwork.nl
+
ServerName svn.Webhuis.nl
ServerAlias www.svn.uwork.nl
+
ServerAlias www.svn.Webhuis.nl
 
ServerAdmin martin@webhuis.nl
 
ServerAdmin martin@webhuis.nl
DocumentRoot /var/www/svn.uwork.nl
+
DocumentRoot /var/www/svn.Webhuis.nl
ErrorLog /var/log/apache2/svn.uwork.nl-error.log
+
ErrorLog /var/log/apache2/svn.Webhuis.nl-error.log
TransferLog /var/log/apache2/svn.uwork.nl-access.log
+
TransferLog /var/log/apache2/svn.Webhuis.nl-access.log
 
#
 
#
 
SSLProxyEngine on
 
SSLProxyEngine on
 
SSLEngine on
 
SSLEngine on
 
SSLProtocol all -SSLv2
 
SSLProtocol all -SSLv2
SSLCertificateFile /etc/apache2/ssl/svn.uwork.nl.cert.pem
+
SSLCertificateFile /etc/apache2/ssl/svn.Webhuis.nl.cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/svn.uwork.nl.key-nopw.pem
+
SSLCertificateKeyFile /etc/apache2/ssl/svn.Webhuis.nl.key-nopw.pem
 
SSLCACertificateFile /etc/apache2/ssl/cacert.pem
 
SSLCACertificateFile /etc/apache2/ssl/cacert.pem
 
#
 
#
Line 274: Line 274:
 
=== creëren directory repository ===
 
=== creëren directory repository ===
 
svn --username=user --password=xxxxxx import /home/martin/ips-vpn \
 
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"
+
https://configurations.webhuis.nl/configurations/Webhuis.nl/test-t105/ips-vpn -m"initial import ips-vpn"
   
 
Troublshooting: http://wiki.webhuis.nl/mediawiki/index.php/HowTo%27s#subversion
 
Troublshooting: http://wiki.webhuis.nl/mediawiki/index.php/HowTo%27s#subversion

Revision as of 15:02, 24 July 2010

Basale infrastructuur

ADSL verbinding

Virtualisatie: KVM of Xen?

Debian

bind

De nameserver structuur is in ontwikkeling. Op locatie draait een bind9 name-server als slave van de Webhuis superslaves. Webhuis heeft een master nameserver en twee superslaves:

  • ns1.Webhuis.nl
  • ns2.Webhuis.nl
  • ns3.Webhuis.nl

Zie voor deze nameservers: powerdns

Webhuis ondersteunt nu alleen nog static domain name serving met reverse lookup. Webhuis 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.


cron

Sommige jobs sterven, zoals de mysql-pipe voor syslog-ng, zodat het noodzakelijk is om telkens vast te stellen of de job nog loopt en weer te starten als de job verdwenen is.

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)  
*       *       *       *       *       /etc/syslog-ng/check-mysql-pipe.sh	# cron draait dit script elke minuut.
*/5	*	*	*	*	/usr/local/bin/some-script.sh		# cron draait dit script elke vijf minuten.

dhcpd.conf

In bewerking.
Melding in de log: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file De debian dhcp3 server heeft poblemen met code 95 ldap-server. Deze parameter is voor de Mac omgeving om zo de server mee te geven.

ddns-update-style none;

option domain-name "Webhuis.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;
  host t105-01.webhuis.nl {
        hardware ethernet 00:1e:c9:51:4a:5b;
        fixed-address 10.37.41.21;
  }

  host voip-lek {
            hardware ethernet 00:21:04:bd:1e:cf;
            ignore booting;
  }
}

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"

firebird

iptables

BLokkeren msn is op poort 1863, de poort wijzigt van tijd tot tijd. :-(

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.

Blokkeren ongecontroleerd smtp verkeer

Het verdient in een omgeving met Windows clients aanbeveling om het risico van ongecontroleerd mailverkeer over de default gateway, dat is naar alle waarschijnlijkheid spam, te loggen en te blokkeren op de firewall. Daartoe staan onderstaande regels in /usr/local/bin/local-rules.sh:

/sbin/iptables -F SMTPLOG
/sbin/iptables -N SMTPLOG
/sbin/iptables -A FORWARD -p tcp --dport 25 -j LOG  --log-prefix "dropped smtp packets : " --log-level warning
/sbin/iptables -A SMTPLOG -p tcp --dport 25 -j LOG --log-prefix "dropped smtp packets : "  --log-level warning
/sbin/iptables -A FORWARD -p tcp --dport 25 -j DROP

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.

Logging

ntp

Webhuis 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

Een andere mogelijkheid tot hardening is de methode met "port knocking": http://en.wikipedia.org/wiki/Port_knocking

ssh sessies open houden

Sommige verbindingen vertonen de onhebbelijke eigenschap de verbinding te laten vallen. Dit is op te lossen door de volgende regel aan /etc/ssh/ssh_config toe te voegen:

ServerAliveInterval 60

Virtuele netwerken

powerdns

powerdnsadmin

subversion

Webhuis 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.Webhuis.nl
 ServerAlias www.svn.Webhuis.nl
 ServerAdmin martin@webhuis.nl
 DocumentRoot /var/www/svn.Webhuis.nl
 ErrorLog /var/log/apache2/svn.Webhuis.nl-error.log
 TransferLog /var/log/apache2/svn.Webhuis.nl-access.log
#
 SSLProxyEngine on
 SSLEngine on
 SSLProtocol all -SSLv2
 SSLCertificateFile /etc/apache2/ssl/svn.Webhuis.nl.cert.pem
 SSLCertificateKeyFile /etc/apache2/ssl/svn.Webhuis.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/Webhuis.nl/test-t105/ips-vpn -m"initial import ips-vpn"

Troublshooting: http://wiki.webhuis.nl/mediawiki/index.php/HowTo%27s#subversion

Backup repositories

#!/bin/bash
# Backup script voor alle relevante zaken van de Subversion server.
#
StartAgent(){
        eval $(ssh-agent)  >/dev/null 2>&1
        ssh-add >/dev/null 2>&1
}

datum=$(date +%Y%m%d)
host=$(hostname)

/etc/init.d/httpd stop
lijst=$(ls /var/www/svn)
#echo $lijst
for i in $lijst ; do
    svnadmin dump /var/www/svn/$i > /var/backups/$host.$i.$datum.dump
done

trac-admin /var/www/trac/ hotcopy /var/backups/trac-$datum

/etc/init.d/httpd start

tar -czf /var/backups/$host-subversion.$datum.tgz /etc
/var/backups/*.$datum.dump /var/backups/trac-$datum
rm -rf /var/backups/*dump
rm -rf /var/backups/trac-$datum

StartAgent
scp -pr /var/backups/$host-subversion.$datum.tgz
lmp_bu@10.75.120.3:/prj/lmp
kill ${SSH_AGENT_PID}

rm -f /var/backups/$host-subversion.$datum.tgz

Terug naar: Main Page