Router, Proxy, DNS, Firewall, Web und ftp mit SuSE 8.1 |
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.
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.
- 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)
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
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.
Ü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"
Ü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
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
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
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
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
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
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"
date MMDDhhmm Beispiel: date 01172059
Übernahme des Wertes in die Systemuhr
/sbin/hwclock --systohc
dsl rcsmppdp status für DSL anzeigen
vmstat 2
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.