| |||
|
rigel.ulm.go-itservice.de
Via Board mit Debian 5.0 Lenny Hardware:
Netzwerk erstmal ausstecken (wegen DHCP) Linux installieren:Mit Debian NetBoot DVDLanguage: German<enter> Land: Deutschland Tastatur: deutsch<dann startet Hardwareerkennung und die DVD wird durchsucht... (dauert ca 1 Minute) Debian installer wird geladen, Hardwareerkennung (Netzwerk), ich habe den Rechner erstmal mit der IP .13 versehen, später dann als Firewall und Gateway auf .1 umgestellt... Konfiguration: manuell (auswahl) IP Adresse: 192.168.80.13 Netmask: 255.255.255.0 Gateway: 192.168.80.1 DNS: 192.168.80.10 Rechnername rigel Domäne: ulm.go-itservice.deResthardwareerkennung Festplatte: manuell (Cursor auf Partition,änderungen schreiben, Partitionierung erfolgt. Anschliessend wird das Grundsystem installiert (dauert ca 10 Minuten auf der alten Miniplatte) und der Bootloader: Bootloader MBRDie installation wird beendet, DVD ausgeworfen und um Neustart gebeten: Neustart <weiter>nach erfolgtem Neustart Konfigurationdie Durchsuchung dauert ... aptitude starten: # aptitudenicht installierte Pakete auswählen, am besten über "Suche": + apache2-mpm-prefork + bind9 + catdoc (wegen xls2csv) + cryptsetup + debconf-utils + dhcp3 server + hdparm + libapache2-mod-php4 + imagemagix + iptables + ldap-utils + lynx + mcrypt + mysql-client (= mysql-client-5.0 + mysql-common) + mysql-server (= mysql-server-5.0 + mysql-common) + ntpdate + ntp-server + perlmodule (unter nicht-installiert -> perl, siehe Allgemein zu "Lenny") + php5 (incl diverser Module siehe Allgemein zu "Lenny") + phpldapadmin + phpmyadmin + rsh-redone-client + rsync + samba + slapd + squid + squidguard + ssh + sysutils (wegen dos2unix) + usbmountPakete ausschliessen ist bei rigel wegen der grossen Systempartition nicht nötig. Installieren, anschliessend wird einiges zur Konfiguration gefragt: PHPldaproot: o=go-itservice,c=de PHPldapadm: cn=admin,o=go-itservice,c=de PHPldapstore: config PHPldappaswd:folgende User werden eingerichtet: User go (UID 801,GID 200) /home/go User uw (UID 899,GID 200) /home/uw User gast (UID 898,GID 200) /home/commonUser einrichten und /home/name übergeben:
# chown -R username:obi /home/username # chmod 700 /home/username # chown -R gast:obi /home/common # chmod 770 /home/common Serverdienste einrichtenbind konfigurieren (/etc/bind/named.conf.local , /etc/bind/named.conf.options ) forwarder
eintragen, local dir auf /etc/bind setzen
/etc/resolv.conf anpassen. hosts anpassen.
security.debian.org via base-config zu apt Quellen sgrX1 hinzufügendhcp3 in /etc/dhcpd/dhcpd.conf einrichtenStartskripte Datei obi1 & obi2 in /etc/init.d erstellen , die mounten Netzlaufwerk ec
Apache2konfigurieren:sites (nur einzelne virtual Host Abschitte) in /etc/apache2/sites-available anlegen und dann
einen link aus /etc/apache2/sites-enabled auf das Konfigfile anlegen.goweb installieren: Dateien nach /home/go/httpd spielen (sollte von altem Rechner her noch tun)
im data/tools Ordner bei jeder installierten Seite das Skript
>./bootstrap -U go -P passwd siteaufrufen, dann die vorher mit table2csv exportierten Daten wieder mit ./csv2table all site
einspielen. Das Bootstrap Skript erzeugt die DB und sorgt für den grant.
Proxy squid und Zusatz squidguard installierenVon blinkenden Werbebannern und anderen lässtigen "Ads" genervt, wollte ich diese loswerden. Meine Wahl fiel auf die Kombination squid mit squidguard, was gut funktioniert und recht leicht zu installieren ist. Schritte:squid installieren squidguard installieren, beide via aptitude Die Weiterleitung Squid => squidguard einrichten oder anpassen, diese steht in der letzten Zeile der /etc/squid/squid.conf
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.confDie Konfigdateien fuer SquidGuard ist hier als /etc/squid/squidGuard.conf festgelegt In der /etc/squid/squidGuard.conf verwende ich im ersten Abschnitt das voreingestellte Thema "adv" für Werbung und ein zweites eigendefiniertes namens "obi" Regeldaten nach /var/lib/squidguard/db/ entpacken. Diese sind kein Bestandteil von squidguard und müssen extra heruntergeladen werden. Rechte anpassen Firewall mit IP-Tablesals Gateway und Firewall verwende ich ein aus verschiedenen Quellen zusammengebautes Shellskript. Das Skript ist hier im Anhang und wird beim Booten ausgeführtslapd, phpldapadmin, ldaptoolsIn den Dateien/etc/ldap/slapd.conf
suffix "o=go-itservice, c=de" rootdn "cn=admin, o=go-itservice, c=de" rootpw ***in der /etc/ldap/ldap.conf
BASE o=go-itservice,c=de HOST wega.ulm.go-itservice.de PORT 389 SIZELIMIT 4096Sizelimit muss wegen dem automatischen Import durch adressen2ldap (von goweb)
auf einen Wert grösser als die Zeilenzahl der adressen.xls Datei gesetzt werden!
in der /etc/phpldapadmin/config.php
$servers[$i]['name'] = 'wega'; $servers[$i]['host'] = '127.0.0.1'; $servers[$i]['base'] = 'o=go-itservice, c=de'; $servers[$i]['port'] = 389; $servers[$i]['auth_type'] = 'config'; $servers[$i]['login_dn'] = 'cn=admin, o=go-itservice, c=de'; $servers[$i]['login_pass'] = 'PASSWD';slapd und apache2 neu starten, voila! ntp-server konfigurierenin der/etc/ntp.conf folgende Zeile eintragen oder anpassen:
broadcast 192.168.80.255 Rechner als Gateway verwendenBis hierher wurde der Rechner mit der IP 192.168.80.13 als Testrechner betrieben, Nun soll er als Firewall/Proxy/Gateway zwischen den Router (bisher 192.168.80.1) und das Interne Netz geschaltet werden. Es wird also ein Transfernetz zwischen Router und Internem Netz aufgebaut. Hierzu wird die IP Adresse des Routers auf 192.168.70.1 geändert. Als Client dient das Notebook polaris, auf dem mit Skripten schnell IP-Adresse, Gateway und DNS umgestellt werden könen.Die grundsätzlichen Änderungen sind hier beschrieben, nochmal der Vollständigkeit halber: /etc/hosts /etc/hostname /etc/mailname /etc/exim4/update-exim4.conf.conf /etc/network/interfacesZusätzlich: /root/fwmask /root/fwstart /etc/dhcp3/dhcpd.conf /etc/mysql/my.cnf /etc/squid/squid.conf /etc/squid/squidGuard.confin der /etc/squid/squid.conf sind es 2 Stellen:Die zum Zugriff erlaubten Adressen acl localnet src 192.168.0.0/16 # RFC1918 possible internal networkund die IP-Adressen:Ports, auf denen squid lauschen soll http_port 192.168.70.10:3128 http_port 192.168.70.10:8080 http_port 192.168.80.1:3128 http_port 192.168.80.1:8080Achtung, wichtig in der /etc/default/dhcp3-server muss das Interfache (ethX) eintragen werden,
auf dem der DHCP Server antwortet. Dies war durch meine Umbauaktionen nicht mehr richtig!
Skript fwstart#!/bin/sh # Firewallscript "fwstart" fuer Router mit 2.4 Kernel # aus dem Internet zusammengestopselt von # # OBI, 2002 # EXT_IF="eth3" INT_IF="eth4" MYNET=192.168.80.0/255.255.255.0 ALL=0.0.0.0/0.0.0.0 ICMP_RATE=50/s ICMP_BURST=50 LOG_RATE=10/h LOG_BURST=50 echo "Starting Firewall..." echo 1 > /proc/sys/net/ipv4/ip_forward #--------------# # Prep Section # #--------------# ## ## Temporarily block all traffic until new tables are finished ## # Set strict filtering defaults to protect while chains are flushed iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # Flush Rules iptables -F iptables -X # Insert temporary blocking rules iptables -I INPUT 1 -j DROP iptables -I FORWARD 1 -j DROP iptables -I OUTPUT 1 -j DROP #-------------------# # Filtering Section # #-------------------# ## ## General Policies for icmp packets ## # Create new chain iptables -N icmp-policy # Allow error icmp messages iptables -A icmp-policy -p icmp --icmp-type destination-unreachable -j ACCEPT iptables -A icmp-policy -p icmp --icmp-type source-quench -j ACCEPT iptables -A icmp-policy -p icmp --icmp-type time-exceeded -j ACCEPT iptables -A icmp-policy -p icmp --icmp-type parameter-problem -j ACCEPT # Allow pings _from_ inside and privileged net iptables -A icmp-policy -i $EXT_IF -p icmp --icmp-type echo-request -j ACCEPT iptables -A icmp-policy -i $INT_IF -p icmp --icmp-type echo-request -j ACCEPT # Allow pings _to_ anywhere iptables -A icmp-policy -p icmp --icmp-type echo-reply -j ACCEPT ## ## General Policies for tcp packets ## iptables -N tcp-policy # Log then drop suspicious packets (just one example...) iptables -A tcp-policy -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix "XMAS scan:" iptables -A tcp-policy -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP # Allow local traffic on server iptables -A INPUT -i lo -j ACCEPT # Allow approved types of icmp iptables -A INPUT -p icmp -j icmp-policy iptables -A INPUT -p icmp -j DROP # Screen out malformed tcp packets iptables -A INPUT -p tcp -j tcp-policy # Forward packets from internal to external net iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu iptables -A FORWARD -i $INT_IF -j ACCEPT # Allow new/established outgoing packets iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT iptables -A OUTPUT -o "$EXT_IF" -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o "$INT_IF" -m state --state NEW,ESTABLISHED -j ACCEPT # established incoming packets on external network and internal network iptables -A INPUT -i "$EXT_IF" -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -i "$INT_IF" -m state --state ESTABLISHED -j ACCEPT # ... forward them iptables -A FORWARD -i "$EXT_IF" -m state --state ESTABLISHED -j ACCEPT # Stop Traffic to/from some servers iptables -A OUTPUT -d 62.109.129.145 -j DROP # Adserver, nervt iptables -A OUTPUT -d 193.28.197.8 -j DROP # Adserver, nervt # Allow related ICMP packets from external network iptables -A INPUT -i "$EXT_IF" -p icmp -m state --state RELATED -j ACCEPT iptables -A INPUT -i "$INT_IF" -p icmp -m state --state RELATED -j ACCEPT # Allow some traffic to firewall from extern iptables -A INPUT -i "$EXT_IF" -p tcp --dport 22 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$EXT_IF" -p tcp --dport 80 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$EXT_IF" -p tcp --dport 389 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$EXT_IF" -p tcp --dport 3128 -m state --state NEW -j ACCEPT # Allow some traffic to firewall from intern iptables -A INPUT -i "$INT_IF" -p tcp --dport 22 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$INT_IF" -p tcp --dport 53 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$INT_IF" -p udp --dport 53 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$INT_IF" -p tcp --dport 80 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$INT_IF" -p udp --dport 123 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$INT_IF" -p tcp --dport 443 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$INT_IF" -p tcp --dport 389 -m state --state NEW -j ACCEPT iptables -A INPUT -i "$INT_IF" -p tcp --dport 3128 -m state --state NEW -j ACCEPT # Anything else is logged at a reasonable rate then dropped # iptables -A INPUT -i $EXT_IF -m limit --limit $LOG_RATE --limit-burst $LOG_BURST -j LOG --log-prefix "Blocked from external net:" # iptables -A INPUT -i $INT_IF -m limit --limit $LOG_RATE --limit-burst $LOG_BURST -j LOG --log-prefix "Blocked from internal net:" iptables -A INPUT -j DROP #--------------# # Post Section # #--------------# # Mask all outgoing iptables -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE ## ## Restore traffic ## # Restore normal defaults now that rules are finished iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # Delete temporary blocking rules iptables -D INPUT 1 iptables -D FORWARD 1 iptables -D OUTPUT 1 echo ".... ok" Konfigurationsdatei /etc/squid/sqidGuard.conf# dbhome /var/lib/squidguard/db/BL logdir /var/log/squid dest adv { domainlist adv/domains urllist adv/urls redirect 302:http://192.168.80.1:80/images/pixel_C0C0C0.gif log blocked.log } dest obi { domainlist obi/domains urllist obi/urls redirect 302:http://192.168.80.1:80/images/pixel_C0C0C0.gif log blocked.log } acl { default { pass !adv all } } |