Router, Proxy, DNS, Firewall, Web und ftp mit SuSE 8.1

Einleitung

bild.jpg (17786 Byte)

Installationsziel:
In diesem Beitrag wird beschrieben wie ein Router (-siehe Bild) mit multipler Funktion unter Verwendung von SuSE 8.1 aufgebaut werden kann.

Notwendige Vorkenntnisse:
Kenntnisse über die Unterscheidung zwischen Hardware und Gerätetreibern. Kenntnisse im Betriebssystem Windows und in der Installation von Gerätetreibern unter Windows. Kenntnisse in der Netzwerkgrundkonfiguration. Grundkenntnisse in Befehlen zur Datei- und Verzeichnisverwaltung unter Linux sowie Kenntnisse in vi oder einem anderen Zeileneditor von Linux. Kenntnisse in der Einstellung von Bildschirm, Erfahrung in der Grundinstallation von Linux. Sie sollten wissen oder in Erfahrung bringen können, in welchen Verzeichnissen die jeweiligen Konfigurationsdateien abzulegen sind.

 

1. Installation

 

1.1 Auswahl der Komponenten

Das Beispiel ist für eine Konfiguration mit 1und1 als Provider

Hardware
- Pentium MMX 200 MHz oder größer
- 256 MB RAM
- 2 Stück ISA und / oder PCI-Netzwerkkarten
- ADSL-Modem

Software-Paketauswahl (SuSE 8.1): Standard-System
- Grafisches Grundsystem
- KDE Desktop-Umgebung
- Dokumentation zu Hilfe- und Support
- Büroanwendungen
zusätzlich
- einfacher Webserver
- Netzwerk/Server
- C/C++ Kompiler und Werkzeuge (nicht erforderlich)
- Midnight-Commander (mc; ist standardmäßig nicht dabei)
- squidGuard (ist standardmäßig nicht dabei)

Konfigurations-Eigenschaften Netzwerk
-Router eth0 (Device für internes Netz) 192.168.1.254
-Router eth1 (Device für Internet) <> ppp0 (IP-Nummer vom Provider per DHCP)
-Netzwerk intern 192.168.1.0/24
-Default-GW (aus der Sicht des Routers) 194.25.2.129
-DNS-Server 194.25.2.129, 194.25.2.130 (wird nach Einwahl modifiziert)
-Client-IP´s 192.168.1.1, ...2, ...3, ...4, ...5
-Proxy-Port 3128
-Zugriffe auf Internet ohne Proxy möglich (Maquerading)
-Als Filter wird SuSEfirewall2 verwendet
-Unerwünschte Seiten werden bei Verwendung des Proxies mit unterschiedlicher Trennschärfe geblockt für
192.168.1.1    niedrig
192.168.1.2    mittel
192.168.1.3, ...4, ...5    hoch und Uhrzeit eingeschränkt
alle anderen IP`s sind (falls Proxy verwendet wird) geblockt
Die Firewall wirft beim hochfahren des Rechners Fehler aus, der Test mit einem Portscanner ergab aber, dass sie absolut dicht (von außen) ist.

 

1.2 Installation und Konfiguration

 

1.2.1 Installation der Software und Grundkonfiguration

- Menügeführte Installation durchführen (Partionierungsvorschläge übernehmen)
- Passwort für root eingeben
- Testuser, Vorname: test, Nachname: user; Nameldename: human; Passwort: verratichnich anlegen
- Bildschirm einstellen
- Druckererkennung überspringen
- eth0 konfigurieren (-wie im nächsten Abschnitt beschrieben)

 

1.2.2 Netzwerk-Grundkonfiguration

Folgende Grundeinstellungen vornehmen:

IP-Adresse: 192.168.1.254, Netzwerkmaske: 255.255.255.0

Hostname: proxy, Domainname: privat.lan
IP-Nummer des 1. DNS-Servers: 194.25.2.129
IP-Nummer des 2. DNS-Servers: 194.25.2.130
Domain-Suche 1: t-online.de
Standard-Gateway: 194.25.2.129
IP-Weiterleitung aktivieren

Hinweis: eth1 noch nicht konfigurieren
System startet jetzt
>>> Mit <Strg>+<alt>+<F1> kann man auf die Konsole wechseln
>>> Mit <alt>+<F7> gehts zurück in den Grafik-Modus

 

1.2.2 squid mit squidguard und apache konfigurieren

Anzeigen der Serverprogramme (nachschauen ob die Software, die wir benötigen, im System vorhanden ist) mit
ls -ls /usr/sbin/squid
ls -ls /usr/sbin/squidGuard
ls -ls /usr/sbin/httpd

html-Dateien erzeugen
Zweck: Auf diese Seiten wird geleitet bei unerwünschten Zugriffen
Die erzeugten Webseiten (Hinweisseiten wegen verbotener Zugriffe) nach /srv/www/htdocs kopieren
blacklist.html
expressions.html
others.html
time.html
1x1block-ads.gif

squidGuard-Datenbanken
Folgende Verzeichnisse in /var/squidGuard/db erzeugen:
/ads                               
/agressive   
                
/audio-video   
                 
/blacklist (schon vorhanden)
/audio-video   
/gambling  
/hacking  
/porngerman   

Logdateien für SquidGuard
und die log-Dateien im log-Verzeichnis sind
blocked-ads.log
blocked.log
others.log
squidGuard.log

SquidGuard Konfigurationsdatei editieren
/etc/squidGuard.conf
logdir /var/squidGuard/logs
dbhome /var/squidGuard/db
time child {
   weekly * 15:00 - 20:00
   }
time adult1 {
   weekly * 00:00 - 24:00
   }
time adult2 {
   weekly * 00:00 - 24:00
   }
src eins {
   ip 192.168.1.1
   }
src zwei {
   ip 192.168.1.2
   }
src others {
   ip 192.168.1.3
   ip 192.168.1.4
   ip 192.168.1.5
   }
dest ads {
   domainlist ads/domains
   urllist ads/urls
   redirect http://127.0.0.1/1x1block-ads.gif
   log blocked-ads.log
   }
dest blacklist {
   domainlist blacklist/domains
   urllist blacklist/urls
   redirect http://127.0.0.1/blacklist.html
   log blocked.log
   }
dest expressions {
   expressionlist blacklist/expressions
   redirect http://127.0.0.1/expressions.html
   log blocked.log
   }
dest porn {
   domainlist porngerman/domains
   urllist porngerman/urls
   redirect http://127.0.0.1/others.html
   log others.log
   }
dest agressive {
   domainlist agressive/domains
   redirect http://127.0.0.1/others.html
   log others.log
   }
dest audio-video {
   domainlist audio-video/domains
   urllist audio-video/urls
   redirect http://127.0.0.1/others.html
   log others.log
   }
dest hacking {
   domainlist hacking/domains
   urllist hacking/urls
   redirect http://127.0.0.1/others.html
   log others.log
   }
dest gambling {
   domainlist gambling/domains
   redirect http://127.0.0.1/others.html
   log others.log
   }
acl {
      eins within adult1 {
         pass !agressive all
         }
      zwei within adult2 {
         pass !agressive !audio-video !blacklist !expressions !gambling !hacking !porn all
         }
      others within child {
         pass !ads !agressive !audio-video !blacklist !expressions !gambling !hacking !porn all
         }
      default {
         pass none
         redirect http://127.0.0.1/time.html
         }
}

 

Squid Konfigurationsdatei editieren
/etc/squid/squid.conf
# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS
# -----------------------------------------------------------------------------
# TAG: redirect_program
redirect_program /usr/sbin/squidGuard

# ACCESS CONTROLS
# -----------------------------------------------------------------------------
# TAG: http_access
http_access allow all

# ADMINISTRATIVE PARAMETERS
# -----------------------------------------------------------------------------
cache_mgr ihrname@mailadresse.de

Knoten im Netz / Netzwerkteilnehmer
Zur Namensauflösung folgende Dateien anpassen

/etc/hosts
192.168.1.1 eins.privat.lan eins
192.168.1.2 zwei.privat.lan zwei
192.168.1.3 drei.privat.lan drei
192.168.1.4 vier.privat.lan vier
192.168.1.5 fuenf.privat.lan fuenf

/etc/networks
loopback 127.0.0.0
privat.lan 192.168.1.0

Anschließend ausführen
insserv apache
insserv squid
Hinweis: Für squidGuard kein insserv machen. insserv legt jeweils einen Link im Runlevel-Verzeichnis an. SquidGuard wird über squid gestartet. Der Startaufruf erfolgt über die squid.conf (siehe weiter unten). Hinweis zu insserv finden sich im Handbuch "SuSE Linux 8.1 Administrationshandbuch" Seite 46.

 

1.2.3 DSL konfigurieren

Über Yast2 folgende Einstellungen vornehmen:
Benutzer und Passwort
PPP über Ethernet
Ethernetkarte eth1
Dial on Demand
Nameserver1: 194.25.2.129; Nameserver2: 194.25.2.130

Firewall nicht aktivieren, es soll SuSEfirewall2 verwendet werden

Die hierdurch veränderte Konfigurationsdatei  ist /etc/sysconfig/network/providers/dsl-provider0
PROVIDER="DSL provider"
DSLSUPPORTED="yes"
MODEMSUPPORTED="no"
ISDNSUPPORTED="no"
USERNAME="1und1/1234-567@online.de"
PASSWORD="sagichnich"
IDLETIME="180"
DEMAND="yes"
DNS1="194.25.2.129"
DNS2="194.25.2.130"

 

1.2.4 Firewall aktivieren

Über Yast2 folgende Einstellungen vornehmen:
Sicherheit > SuSEfirewall2 einschalten
externes Device: ppp0, internes Device: eth0
keine Dienste freischalten
IP-Forwarding aktivieren
Masquerading aktivieren
Protokollierung nach Wunsch

Automatische Zuordnung von DNS-Server verhindern
/etc/sysconfig/notwork/config
MODIFY_RESOLV_CONF_DYNAMICALLY=no

NEUSTART

 

2. Funktionstest

 

2.1 Testen des Netzwerks

Testen wir mal ob das Netzwerk funktioniert:
Testen, ob die Karte intern erreichbar ist: ping auf die Netzwerkkarte des Clients (nachschauen über ipconfig /all)
Testen, ob der Router im Netz erreichbar ist: ping 192.168.1.254
Testen, ob T-Online erreichbar ist: ping 194.25.2.129 (nachschauen in /etc/resolv.conf)
Testen, ob ein Rechner im Internet über die Eingabe eines Webnamens erreichbar ist: ping   www.lowpriceproject.de

Detailierte Infos abrufen
ifstatus eth0
route -C
route -C -n

 

2.2 Apache-Webserver testen

Die Testseite des Apache aufrufen
http://192.168.1.254
Eine beliebige Testseite (html) oder gif-Datei in das Verzeichnis /home/human/public_html kopieren
Die Testseite des Users aufrufen
http://192.168.1.254/~human   (Die Tilde ist wichtig !!)
Damits ein bißchen schöner wird kann die hosts beim Client auch einen schönen FQHN für den Apache bekommen:
http://edgar/~human

 

2.3 SquidGuard Filterung testen

Zum testen mit den IP-Adressen 192.168.1.3 und ...4 (sind eben über Proxy eingeschränkt) folgende URL´s aufrufen:

ads  (Advertising=Werbung)
Hierzu am besten www.freenet.de aufrufen und rumspielen, verschiedenes Anklicken. Irgendwann wird ein Pop-Up aufgehen und der Werbebanner ist nur durch einen Platzhalter besetzt. (verwendet wird: 1x1a.gif)

Die Originale blacklist
www.0ver18.com (mit null, nicht 0); Proxy meldet "Zugriff verweigert blacklist/domains+urls". Geladen wurde blacklist.html
Die Datenbanken sind
blacklist/domains
blacklist/urls

Die Originale expressions
http://www.apple.com/trailers/sony_pictures/xxx-stateoftheunion/ "Zugriff verweigert blacklist/expressions". Geladen wurde expressions.html

Die Dateien (Datenbanken; eigentlich mehr eine Liste) müssen halt angelegt und mit Leben gefüllt werden. Hier jeweils ein Beispiel dazu
porngerman, test mit www.toy-versand.com Datenbanken porngerman/domains und porngerman/urls
agressive, test mit www.dailyrotten.com   Datenbank agressive/domains
audio-video, test mit www.audiofind.de Datenbanken audio-video/domains und audio-video/urls
hacking, test mit  www.simhack.de Datenbanken hacking/domains und hacking/urls
sowie gambling. test mit www.888.com  Die Datenbanken sind gambling/domains und gambling/urls
Redirected wird jeweils auf others.html

Unerwünschte Uhrzeiten
Hier wird die Datei time.html geladen
Die Uhrzeiten sind beschränkt auf
Kinder: 15:00 Uhr bis 20:00 Uhr, geblockt alle unerwünschten Seiten
eingeschränkte Adults: 00:00 Uhr bis 23:59 Uhr, alle "ads" (Advertising) erlaubt, alle anderen unerwünschten geblockt
andere Adults: 00:00 Uhr bis 23:59 Uhr, alle "agressive" geblockt, anderes erlaubt

 

3. Einstellungen für den laufenden Betrieb

 

3.1 Start im Runlevel 3 einstellen

Damit die Kiste nicht immer den grafischen Login und damit auch das X-Window-System startet (Ressourcenintensiv),  kann man den Default-Runlevel 3 einstellen.
/etc/inittab

 

3.2 Start des ftp-Servers

Die Konfigurationsdatei /etc/vsftpd.conf bearbeiten.
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=077
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=Welcome to: Mein schöner FTP-Server.
pam_service_name=vsftpd

Über <yast2 control center>, <Netzwerk / Basis>, <Start und Stop von Systemdiensten>
ftp-Dämon einschalten

 

3.3 Nameserver bind nachinstallieren

Hierzu /etc/named.conf bearbeiten
options {
directory "/var/named";
forwarders { 194.25.2.129; 194.25.2.130; };
forward only;
listen-on-v6 { any; };
notify no;
};

testen ohne nameserver
dig  www.google.de

Start des Nameservers bind
/etc/init.d/named start

testen mit dem nameserver
dig  www.google.de

Nameserver (bind 9) in den Bootprozess einbinden
insserv named

DNS-Server-Eintrag in der /etc/resolv.conf ändern
nameserver 127.0.0.1
search privat.net

Automatische Zurodnung von Nameservern einstellen
/etc/sysconfig/network/config
MODIFY_RESOLV_CONF_DYNAMICALLY="yes"
MODIFY_NAMED_CONF_DYNAMICALLY="yes"

 


3.4 Datum und Uhrzeit einstellen

date  MMDDhhmm   Beispiel: date 01172059
Übernahme des Wertes in die Systemuhr
/sbin/hwclock --systohc

 

3.5 DSL-Status

dsl rcsmppdp     status für DSL anzeigen


3.6 Statistiken

vmstat 2

 

4. Troubleshooting

4.1 Probleme mit dem Squid-Cache beheben

Starten Sie squid (und damit auch automatisch squidguard) mittels
rcsquid start

Ob der Server läuft sehen Sie mit
ps ax | grep squid
In der Bildschirmausgabe sollten diese Einträge (Auszugsweise) zu sehen sein:
....../usr/sbin/squid -sYD
..... (squid)  -sYD

Wenn der Server nicht läuft gibts mehrere mögliche Gründe:
-Der Squid-Cache wurde verhunzt (z.B. durch manuelles löschen "drüberinstallieren")
Der Cache kann so neu aufgebaut werden:
Squid aufrufen mit:
/usr/sbin/squid -z
Es werden Fehlerdetails ausgegeben. Beim Fehler
FATAL: Failed to make swap directory /var/cache/squid: (13) Permission denied
folgendes machen
Abhilfe:
Als root durchführen:
rcsquid stop (squid beenden)
cd /var/cache/
rm -R squid
(löscht den gesamten Cache, dauert etwas, wird
bei zerschossenem Filesysem Fehlermeldungen bringen)
mkdir squid (Cache-Verzeichnis neu anlegen)
chown -c squid:nogroup squid (Rechte setzen, Besitzer: squid, Gruppe: keine)
chown squid:nogroup cache (Rechte setzen)
/usr/sbin/squid -z (den Cache neu aufbauen lassen)

1.5 Automatisches starten des Squid
Die Automatisierung des Squid-Serverstarts erfolgt über insserv.
insserv squid

Anschließend starten Sie das System neu.