Linux-Server und Suchmaschinenoptimierung
Ohne eine vernünftige Suchmaschinenoptimierung kommt heute keine Webseite mehr aus. Hier werden grundsätzlich zwei Bereiche unterschieden. Einmal die OnPage- und die OffPage-Optimierung.
Dieser Artikel befasst sich mit einem speziellen Bereich der OnPage-Optimierung:
Der richtigen Konfiguration eines Linux-Servers.
Worauf kommt es an?
Wichtig für eine gute Indizierung der Seite durch Google sind suchmaschinenfreundliche URL’s auch sprechende URL’s genannt. Die meisten der heute eingesetzten CMS und Shopsysteme bieten im System die Möglichkeit, URL’s automatisiert umschreiben zu lassen. Bei CMS ohne diese Möglichkeit, muss in der .htaccess eine entsprechende Einstellung vorgenommen werden. Doch reicht die entsprechende Einstellung im CMS nicht allein aus. Es wird eine so genannte Rewrite-Engine benötigt.
Beim Apache heißt das zu installierende Modul mod_rewrite. Nach entsprechender Einstellung (in der Regel durch den Server-Admin vorgenommen), ist die Ausgabe von suchmaschinenfreundlichen URLs kein Problem mehr.
Bei Shopsystemen tauchen häufig noch php Session ID’s in den URL’s auf, die meist nach dem zweiten Klick wieder verschwinden. Sollte die weiterhin vorhanden sein so ist eine Fehleranalyse notwendig. Idealer Weise speichert der Server die Session-ID in einem /tmp/ Ordner. Sollte dies nicht funktionieren, liegt das meist daran, dass der entsprechende Ordner nicht die benötigten Schreibrechte hat. Da man als normaler User an diesen Ordner nicht herankommt (er liegt im Root-Verzeichnis des Servers), sollte man den Server-Admin bitten, die chmod-Einstellungen entsprechend zu setzen.
Sollte es dann immer noch nicht gehen, kann man in der .htaccess folgende Eintragung vornehmen:
php_flag session.use_trans_sid off
Sollten die Einstellungen am Server nicht vorgenommen werden können, kann man die Session-Id auch in einem Cookie übergeben. Dies ist jedoch bei Usern nachteilig, die in ihrem Browser keine Cookies akzeptieren.
Schnellere Auslieferung der Daten – Bessere Indizierung
Für eine gute Indizierung bei Google spielen auch die Ladezeiten der Webseiten ein Rolle.
Dies kann durch eine schnellere Übertragung der Daten vom Webserver zum Browser erreicht werden.
Für den Apache-Webserver gibt es die kostenlose PHP-Erweiterung gzip Compression.
Das Modul sorgt dafür, dass die vom Browser des Users angeforderten Daten vor dem Versand durch den Server komprimiert und im Browser wieder entpackt werden. Dies sorgt dafür, dass der Traffic insgesamt sinkt. Die Einstellung für gzip Compression richtig vorzunehmen, gleicht einem Spagat zwischen zwei Stühlen. Stellt man die Kompressionsrate zu hoch ein, sinkt zwar der Traffic, doch der Server wird mehr belastet, da durch die Komprimierung vermehrt Ressourcen in Anspruch genommen werden.
Selbstverständlich: aktuelle Software verwenden
Natürlich sollte man immer die aktuellsten Versionen von PHP und MySQL verwenden. Neben einer verbesserten Perfomance, schließen neue Versionen in der Regel auch vorhandene Sicherheitslücken und bringen neue oder verbesserte Funktionen mit sich.
Die Konfiguration eines Servers kann sich entscheidend auf die Suchmaschinenoptimierung auswirken. Wer perfekte Ergebnisse möchte, braucht unter anderem einen perfekten Server. Dabei ist es unerheblich ob die Suchmaschinenoptimierung aus München, Hamburg oder Berlin durchgeführt wird, da auch von einem lokalem Standort regional, bundesweit oder weltweit optimiert werden kann.
Samba
Netzwerk– und Systemmanagement von Linux – Windows
Netzwerkintegration eines Samba – Servers
Diese Samba Anleitung wurde uns freundlicherweise von Vitali zur Verfügung gestellt. Aufgrund des Umfangs hab ich hier nur einen kleinen Auszug mit Inhaltsverzeichnis veröffentlicht. Die detailierte Anleitung steht kostenlos als PDF zum Download bereit.
Inhaltsverzeichnis
1. Einleitung: Theorie
1.1 Was ist Samba?
1.2 Entstehung von Samba
1.3 Beschreibung des SMB ( Server-Message-Block-Protokolls)
1.4 NetBIOS
1.4.1 Name Service
1.4.2 Session Service und Datagram Service
1.5 Bedeutung WINS (Windows Internet Name Service)
1.6 Sicherheitskonzepte
1.6.1 Die Arbeitsgruppe
1.6.2 Die Domäne
1.6.3 Benutzerverwaltung in Samba
1.6.4 Zugriffsrechte auf Freigaben
1.7 Local Master Browser
2 Praktischer Teil
2.1 Bestandteile von Samba
2.2 Die Installation von Samba
2.2.1 Szenarium
2.3 Konfiguration von Samba
2.3.1 Beschreibung der smb.conf
3 Konfigurationstools
3.1 SWAT – Samba Web Administration Tool
3.2 LinNeighborhood
4 Windows-Client
Zusammenfassung
Was ist Samba?
Samba ist eine Sammlung von Unix Applikationen, die SMB (Server Message Block) sprechen. Viele Betriebssysteme, einschließlich Windows und OS/2, benutzen SMB, das in CIFS ( Common Internet File System ) umbenannt wurde, um Server-Client Vernetzung zu ermöglichen. Mit dieser Vernetzung wird möglich auf so genannte Freigaben von Dateien und Druckern zuzugreifen. Mit Hilfe von Samba sind Unix-Server im Stande mit dem gleichen Protokoll zu kommunizieren wie z. B. Microsoft Windows.
Samba ist ein Open-Source-Projekt. Das bedeutet, dass Samba für alle Zwecke, sei es Privat oder Unternehmen, kostenlos unter der GNU (General Public Licence) erhältlich ist.
Entstehung von Samba
Die Entwicklung von Samba fing im Jahre 1991 von Andrew Tridgell an der Australian National University in Canberra. Die erste Implementierung wurde im Jahr 1992 von Andrew freigegeben. Somit war nun Samba eine freie Implementierung eines SMB-Servers. Zu dem Zeitpunkt gab es auch andere ähnliche Softwareprodukte, diese waren jedoch im Gegensatz zu Samba einfach zu teuer. Mittlerweite läuft Samba praktisch unter jeder Unix-Variante, zusätzlich wurde Samba auf Betriebssysteme wie: Amiga, VMS, OS/2 sowie Novell NetWare portiert.
Beschreibung des SMB ( Server-Message-Block-Protokolls)
SMB wurde 1987 erstmals durch ein gemeinsames Dokument von Microsoft und Intel namens »Microsoft Network/OpenNET-File sharing Protocol« definiert. Das Server-Message-Block-Protokoll läuft über das NetBIOS (was NetBIOS ist wird später erwähnt). Wichtig ist an dieser Stelle einzuräumen, dass NetBIOS über NetBEUI, IPX/SPX und TCP/IP laufen kann. In Samba ist nur NetBIOS über TCP/IP implementiert. Im Verlauf weiterer Jahre wurde das SMB-Protokoll von anderen Firmen wie z. B. Xerox und 3Com weiterentwickelt. Das SMB Protokoll ist unter vielen Namen bekannt, beispielsweise LAN Manager und Microsoft Networking.
NetBIOS
BIOS steht für Basic Input/Output System. Die Konzepte des Computer-BIOS wurden auf die noch neuen Netzwerkkonzepte ausgeweitet. Im Jahr 1984, entwickelte IBM ein Netzwerkprotokoll, Application Programming Interface (API), das NetBIOS genannt wurde, was für Network Basic Input/Output System steht. NetBIOS-API ermöglichte mit einfachen Methoden die Verfügbarkeit und den Austausch der Daten zwischen verschiedene Anwendungen im Netzwerk.
Später im Jahr 1985 hat Firma IBM den Protokoll erweitert und für kleine Netzwerke (LANs ) optimiert. Das resultierende Protokoll wurde NetBEUI genannt, was für NetBIOS Extended User Interface steht. Das Protokoll reallisierte das Vergeben einen Namen, nicht länger als 15 Zeichen, für den Rechner im Netzwerk, konnte aber nicht geroutet werden.
Bedeutung WINS (Windows Internet Name Service)
WINS bedeutet Windows Internet Naming Service und stellt nichts anderes als einen NetBIOS Name Server dar (sozusagen DNS für NetBIOS). Jeder Client der die IP – Nummer des WINS Servers kennt, meldet sich bei diesem an und wird registriert. Will dieser Client jetzt mit einem anderen Rechner Kontakt aufnehmen schickt er dessen NetBIOS – Name an den WINS Server und erhält die Adresse des gewünschten Rechners zurück, natürlich nur wenn dieser auch bei dem WINS – Server registriert ist. Damit ist also die gezielte Verbindung zu einem Rechner kein Problem mehr. Die Clients im Subnetz A können aber immer noch nicht die Ressourcen der Rechner im Subnetz B sehen, da die freigegebenen Ressourcen nur über Broadcasts mitgeteilt werden.
Um WINS zum laufen zu bekommen, muss dieser Dienst auch von einem Rechner innerhalb des Subnetzes angeboten werden. Diese Aufgabe muss nicht unbedingt von einem Windows Rechner übernommen werden, die Aufgabe kann genau so gut auch ein Samba-Server übernehmen.
Sicherheitskonzepte
Die Arbeitsgruppe
Eine Arbeitsgruppe ist eine Ansammlung von Personen, die ein bestimmtes Ziel gemeinsam verfolgen. Dieses Konzept wurde äquivalent einer Computer-Arbeitsgruppe zugeordnet. Eine Arbeitsgruppe umfasst in der Regel die Computer, mit denen sie häufig kommunizieren, so dass die Gruppe die meisten Netzwerkressourcen (wie z.B. Dateien und Drucker) enthält, mit denen Sie arbeiten. Der Computername muss eindeutig sein, d.h. man kann keinen Namen verwenden, der im Netzwerk bereits verwendet wird.
Die Domäne
Eine Domäne ist einer Arbeitsgruppe ähnlich, mit einer großen Ausnahme. In einer Domäne gibt es einen zentralen Authentifizierungsserver, der die Benutzer- und Gruppen-Accounts der Domäne verwaltet. Auf PC1 würde dann etwa eine Freigabe an “Lara” von “Domänencontroller” erfolgen. Lara könnte sich an jedem PC der Domäne mit ihrem Login anmelden und via Netzwerk auf alle an sie freigegebenen Ressourcen zugreifen, auch wenn sie ihr Domänenkenntwort mal ändert.
Benutzerverwaltung in Samba
Ein elementares Grundprinzip von Samba besteht darin, dass der Zugriff auf Verzeichnisse auf der Basis der Linux-Benutzerverwaltung erfolgt. Jeder Windows- Loginname wird einem Linux-Loginnamen zugeordnet.
Zugriffsrechte auf Freigaben
Die Zugriffsrechte in Unix werden durch insgesamt 12 Bits geregelt. Manchmal reicht es aber nicht aus und man möchte die Zugriffsrechte etwas verfeinern. Samba bietet dazu eine Erweiterung, die als Zugriffsliste bezeichnet wird (ACL Access Control List). Samba kennt in dieser Hinsicht vier Sicherheitsstufen: share, user, domain und server. Die Sicherheitsstufe wird in der smb.conf festgelegt und zwar im globalen Abschnitt [global]. Das Schlüsselwort hierzu ist security.
Local Master Browser
Windows-Rechner durchsuchen das Netzwerk nach Freigaben, um diese dann in der Netzwerkumgebung anzeigen zu lassen. Das Browsing wird nur von solchen Systemen im Netzwerk unterstützt, die als Browse-Server laufen. Auch ein Samba-Server kann als ein Browse-Server operieren.
LDAP
Zuerst die grundlegende Frage, was ist LDAP. LDAP ist ein Verzeichnissdienst, was man im entferntesten Sinne evtl. mit einer Datenbank vergleichen kann.
Es dient, unter anderem, dafür eine zentrale Benutzerverwaltung einzurichten. Man legt einen User im Verzeichnis an, und sofort hat er Zugriff auf das Netzwerk. Vorteile: Es gibt für sehr viel Software ldap-Module. Email, FTP, Apache usw. Man erstellt ihn also an einer zentralen Stelle und er hat Zugriff auf sämtliche Dienste mit einem Name und Passwort. Natürlich gilt dies auch für die Shell, so aber nun zur Installation und Einrichtung von LDAP:
Installation
Mit Yast das LdapV2-Server, Ldap-devel, nss_ldap und pam_ldap installieren und folgende Änderungen an der Config vornehmen:
/etc/openldap/slapd.conf #Server-Konfigurationsdatei
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/samba.schema
include /etc/openldap/schema/openldap.schema
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
database ldbm #bestimmt die Datenbank.
suffix “dc=omeco,dc=de” #bestimmt Base DN (Name des directory)
rootdn “cn=Manager,dc=omeco,dc=de” #bestimmt Admin (root) Namen, Base DN muss dabeistehen
rootpw secret #root Passwort, auch eine Verschlüsselung ist möglich
directory /var/lib/ldap
index objectClass eq
/etc/openldap/ldap.conf #Client-Konfigurationsdatei
host 192.168.1.15 #bestimmt den Ldap-Server
base o=omeco.de #bestimmt Base DN wobei o für organization steht
/etc/ldap.conf #Konfigurationsdatei für Ldap-Namenservice, Pam-Modul, Shadow Paket und NSS host: 192.168.1.15 #Ldap-Server
base: dc=omeco,dc=de #Anfang der Search Base
ldap_version 3 #Ldap Version die zu verwenden ist
pam_password crypt #aktiviert Unix-Crypt hash mechanism, ansonsten NT Synchronization Service
ssl no #deaktiviert SSL-Unterstützung
nss_base_passwd dc=omeco,dc=de #gibt an, wo sich die einzelnen Werte direkt befinden
nss_base_shadow dc=omeco,dc=de #laut Doku erst ab einer Datenbank von ca 5000 Einträgen
nss_base_group dc=omeco,dc=de #nötig, verringert dann die Suchzeit
/etc/nsswitch.conf #Konfigurationsdatei wo sich Pam auch die Einstellungen holt
passwd: compat ldap #Nur diese zwei Einträge müssen geändert werden
group: compat ldap #wobei “fast” immer SuSE bzw. Yast dies erledigt
Ldap starten, am besten direkt im RunLevel eintragen.
org.ldif anlegen und folgendes eintragen:
dn: dc=omeco,dc=de
objectclass: organization
o: omeco.de
ldapadd -D cn=Manager,dc=omeco,dc=de -x -W -f org.ldif
Hier haben wir den Hauptcontainer erstellt.
Der Befehl zum eintragen, ändert sich nicht und wird auch für die nachfolgenden Ldif-Dateien verwendet.
root.ldif anlegen und folgendes eintragen:
dn: cn=Manager,dc=omeco,dc=de
objectClass: organizationalRole
objectClass: top
objectClass: simpleSecurityObject
cn: Manager
description: Root User
userPassword: {crypt}e0tn415VzByrY
Dies ist nun der Hauptuser. Das passwort ist unverschlüsselt secret.
groups.ldif anlegen und folgendes eintragen:
dn: ou=groups,dc=omeco,dc=de
objectClass: organizationalUnit
objectClass: top
ou: groups
description: Gruppen
Dies ist die Standartgruppe, in der neue User eingetragen werden. Weitere Eintragungen, wie Standartpasswort sind noch möglich
user.ldif anlegen und folgendes eintragen:
dn: ou=people,dc=omeco,dc=de
objectClass: organizationalUnit
objectClass: top
ou: people
dn: cn=Michael B,ou=people,dc=omeco,dc=de
userPassword: 12345
cn: Michael B
gecos: Michael B
gidNumber: 100
homeDirectory: /home/michael
loginShell: /bin/bash
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
shadowExpire: -1
shadowFlag: 0
shadowInactive: -1
shadowLastChange: 10877
shadowMax: 999999
shadowMin: 0
shadowWarning: 7
sn: B
uid: michael
uidNumber: 1001
Somit hätten wir unseren ersten User angelegt. Bevor man restartet, sollte man noch die gid (Gruppen ID) nachprüfen, ob diese auch wirklich noch frei ist, bei uid natürlich auch. Dann steht einem ersten Loginversuch nichts mehr im Weg.
Der Restart ist nicht notwendig, man kann auch über die Konsole die einzelnen Dienste neustarten. Ich habe die Methode des Neustarts gewählt um sicher zu sein, dass ich nichts vergesse und weil es einfacher ist.
Samba und Ldap
Seit dem Release 2.2.3a von Samba, wird Ldap unterstützt. Leider ist es immernoch notwendig, Samba neu zu kompilieren, damit es mit Ldap lauffähig ist.
Syntax:
./configure -with-ldapsam
make
make install
libldap-dev und libsldapd-dev werden aber dazu benötigt, achtung sind die beiden Dateien nicht vorhanden, so meldet Samba keine Fehlermeldung, mit:
./configure –with-ldapsam | grep ldap
meldet er ldap.h failed, wenn die beiden Dateien nicht vorhanden sind. Dann sollte man nachinstallieren und make clean vor der Neuinstallation durchführen.
Ab Version 3 unter SuSE ist dies nicht mehr notwendig. Bei mir lokal wurden die RPM-Pakete gleich mit ldap-Unterstützung installiert, dies ist aber erst seit SuSE Version 9.0 der Fall.
In der Datei smb.conf sollten dann folgende Einträge hinzugekommen sein:
/etc/samba/smb.conf
[global]
ldap server = 127.0.0.1
ldap admin dn = cn=Manager,dc=omeco,dc=de
Übernahme der bestehenden User:
Unter http://www.padl.com/OSS/MigrationTools.html findet man Shell-Skripte, welche die Übernahme bestehender User in Ldap übernehmen.
Verfasser des Artikels: Panic
Dialin-Server über ISDN
Dieses howto ist aus meiner Erfahrung mit dem Einrichten eines dialin-servers erstellt. Für Fehler oder Sicherheitslücken kann ich keine Haftung übernehmen. Jeder sollte in sysconfig-Dateien nur Änderungen machen, wenn er weiß was er macht. Grundsätzlich ist es sinnvoll die zu ändernden Originaldateien zu kopieren und an einem anderen Ort zu sichern. Das hilft, auch nach vielen Versuchen, seine Fehler zu berichtigen. Die Einrichtung erfolgt zum größten Teil über Yast, am Ende sind die betroffenen Dateien dargestellt. Es gibt weitere gute howtos, mit deren Hilfe ich meine Verbindung eingerichtet habe. Diese beziehen sich auf Suse 8.*. Es lohnt sich, die mal anzusehen, weil ich hier nicht alles so detailliert beschreibe. Details wie Passwörter, Rufnummern usw. sind allgemein gehalten und müssen geändert werden.
Als Ausgangssituation gehe ich von folgendem aus:
- Suse 9.0
- Netzwerkkarte und internes Netzwerk mit statischen IP-Adressen vorhanden.
- Internet-Einwahl funktioniert schon, ISDN-Karte und 1 Provider sind schon eingerichtet.
- Ein web-server (für das interne Netzwerk) läuft und ist im LAN über http://192.168.0.1 zu erreichen.
- Ziel: Es soll der interne web-server von außen über eine Telefonleitung erreicht werden.
Hier als Beispiel verwendete IP-Adressen, Schnittstellen und Provider:
eth0 192.168.0.1 #das ist die Netzwerkkarte
ippp0 #das ist der Internetzugang, dynamische IP
ippp1 192.168.0.1 #das ist die neue Schnittstelle für den dial-in
provider0 #das ist der schon vorhandene Provider für den Internetzugang
provider1 #das ist der neue Provider für dialin
Konfiguration mit Yast:
Neue Schnittstelle und Provider anlegen.
Im Yast unter Netzwerkgeräte/ISDN stehen die bereits konfigurierten Geräte. Auf Ändern… klicken, da wir zu der ISDN-Karte nur eine Schnittstelle hinzufügen wollen.
Im unteren Feld (Provider) auf Hinzufügen klicken. Dann kommt die ISDN-Service-Auswahl.
Auf Neue SyncPPP-Schnittstelle hinzufügen klicken.
Im nächsten Fenster werden die Verbindungseinstellungen abgefragt.
Eigene Telefonnummer: 12345 #diese Telefonnummer ist die Einwahl für den dialin-server. Ohne Länderkennung und Vorwahl eingeben, die sollten bereits bei der ISDN-Karte konfiguriert sein.
Startmodus: OnBoot
ChargeHUP: nein
Kanalbündelung: nein
Firewall Neustart…: nein
Firewall QuickMode: nein
Dann auf Details klicken.
Telefonnummernliste entfernter Rechner: #Hier kann die Nummer des Anschlusses angegeben werden, der später den dialin-server anruft. Die genaue Syntax der Rufnummer weiß ich nicht, am besten ausprobieren (ob mit oder ohne Vorwahl usw.) Das hab ich noch nicht probiert, erst mal leer lassen.
Nur Nummern aus Liste erlaubt: nein #das ergibt die Variable SECURE=off, siehe unten. Es bedeutet, dass sich alle Rufnummern einwählen dürfen. Wenn bei der Telefonnummerliste ein Eintrag gemacht wird, kann hier ein Häkchen gesetzt werden. Rückruf-Funktionen: Rückruf auswählen
zusätzliche ipppd-Optionen: proxyarp auth +pap -chap #Hier gibt man zusätzliche Optionen zu ppp an. Eingabe der Optionen, mit Leerzeichen getrennt, siehe auch die manpage zu pppd. Die findet man im Konquerror wenn man in die Adresszeile man:pppd eingibt.
proxyarp: erlaubt den Zugriff auf das interne Netzwerk
auth: gibt an, dass der client sich authentifizieren muß
+pap: gibt an, dass der Benutzer und das Passwort in etc/ppp/pap-secrets steht.
-chap: gibt an dass die etc/ppp/chap-secrets nicht benutzt wird
Nach den Eingaben OK klicken, dann weiter klicken.
Einstellungen für die IP-Adresse: Dynamische IP-Adresse: nein #im Gegensatz zum Internetprovider legen wir die Adressen hier selber fest
Lokale IP-Adresse Ihres Rechners: 192.168.0.1 #die IP des dialin-servers. In dem Fall die Adresse, die auch bei der Netzwerkkarte verwendet wird.
Entfernte IP-Adresse: 192.168.0.10 #die Adresse, die der client zugeteilt bekommt.
Standardroute: nein #das ist in der Regel schon der Internetzugang
Nach den Eingaben auf weiter klicken.
Jetzt ist der neue Provider dran.
In dem Fenster Internet Service Provider wählen die Option Eigene Provider auswählen und Neu klicken.
Parameter für Internetverbindung festlegen:
Name für die Einwahl: provider1 #wird automatisch festgelegt, kann auch provider0 sein
Name des Providers: dialin #irgendeinen sinnvollen Namen angeben
Telefonnummer: 0 #0 eingeben, der Provider soll nicht rauswählen
Paket-Encapsulation: SynconousPPP
Benutzername: Benutzer123 #hier den Benutzernamen eingeben. Dieser wird dann z.B. bei der DFÜ-Verbindung angegeben. Groß- und Kleinschreibung werden beachtet!
Passwort: passwort1 #hier ein sicheres Passwort eingeben
Passwortabfrage: nein #brauchen wir nicht
Nach den Eingaben auf weiter klicken.
Verbindungsparameter:
Dial-On-Demand: nein #der Provider soll nicht wählen, schon gar nicht automatisch
Während Verbindung DNS ändern: nein #wir haben ja IP-Adressen festgelegt
Verbindung abbrechen nach (Sekunden): 300 #Standardwert, einfach übernehmen
Nach den Eingaben auf weiter klicken.
Jetzt ist alles angelegt. Fenster im Yast mit Beenden schließen, damit die neue Schnittstelle eingerichtet wird. Normalerweise sollten die Dateien jetzt wie unten dargestellt aussehen und die Einwahl funktionieren. Nach meiner Erfahrung ist es sinnvoll, in der Konsole noch mal als root rcnetwork restart einzugeben. Damit werden alle Netzwerkschnittstellen neu gestartet. Wenn man danach
ifconfig -a
eingibt, sollte die neue Schnittstelle ippp1 angezeigt werden. Für Probleme mit der firewall geht es unten weiter.
Von Yast erstellte Datei für die Schnittstelle ippp1:
etc/sysconfig/isdn/cfg-net1
CALLBACK=”off”
CBDELAY=”2″
CHARGEHUP=”off”
DEFAULTROUTE=”no”
DYNAMICIP=”no”
FIREWALL=”no”
IPADDR=”192.168.0.1″ #IP-adresse des dialin-servers
IPPPD_OPTIONS=”proxyarp auth +pap -chap”
MSN=”12345″ #hier ist die Telefonnummer angegeben, auf die der dialin-server hören soll
MULTILINK=”no”
PROTOCOL=”syncppp”
PROVIDER=”provider1″ #der provider für diese Verbindung
PTPADDR=”192.168.0.10″ #IP-adresse, die der client zugewiesen bekommt
REMOTE_IN=”" #Rufnummern, die sich einwählen dürfen
SECURE=”off” #off = alle Rufnummern können sich einwählen, on = nur die angegebenen Rufnummern können sich einwählen
STARTMODE=”onboot”
Von Yast erstellte Datei für den Provider:
etc/sysconfig/network/providers/provider1
ASKPASSWORD=’no’
DEMAND=’no’
DSLSUPPORTED=’no’
ENCAP=’syncppp’
IDLETIME=’300′
ISDNSUPPORTED=’yes’
MODEMSUPPORTED=’no’
MODIFYDNS=’no’
PASSWORD=’passwort1′ #das Passwort sollte natürlich sicherer sein…
PHONE=’0′ #der Provider wählt so nicht raus (braucht er auch nicht)
PROVIDER=’dialin’ #Name des Providers
USERNAME=’Benutzer123′ #Benutzername, unter dem man sich anmeldet
Von Yast erstellte Datei für die dial-in Verbindung, ergibt sich aus cfg-net1 und provider1: etc/sysconfig/network/ifcfg-ippp1
STARTMODE=”onboot”
IPADDR=”192.168.0.1″
PTPADDR=”192.168.0.10″
DEFAULTROUTE=”no”
FIREWALL=”no”
MSN=”12345″
DIALMODE=”manual”
DIALPREFIX=”"
DIALMAX=”"
REMOTE_OUT=”"
REMOTE_IN=”"
PROVIDER=”provider1″
SECURE=”off”
CHARGEHUP=”off”
CALLBACK=”off”
CBDELAY=”2″
CBHUP=”"
IHUP=”"
VERBOSE_LEVEL=”"
SLAVES=”"
MULTILINK=”no”
SLAVEMSN=”"
SLAVE_IN=”"
SLAVE_OUT=”"
LAYER2=”hdlc”
LAYER3=”trans”
ENCAP=”syncppp”
IP_RESEND=”"
IP_RESEND_PARAMETER=”"
SMPPPD_IGNORE=”"
DYNAMICIP=”no”
IPPPD_OPTIONS=”proxyarp auth +pap -chap”
ASKPASSWORD=”no”
MTU=”"
MRU=”"
RUN_POLL_TCPIP=”"
Datei für Benutzer und Passwort der Provider:
etc/ppp/pap-secrets
#SuSEconfig.isdn entry #Automatischer Eintrag, hier stehen alle Benutzer und Passwörter
“Benutzer123″ * “passwort1″ #der Provider, die Datei sollte nur root-Rechte habenHier stehen auch die Benutzer und Passwörter von gelöschten Providern. Diese können eigendlich gelöscht werden. Gut überlegen, was man macht! Datei als root mit kwrite o.ä. öffnen und bearbeiten.
Probleme mit der firewall (SuSEfirewall2)
Nach der Einrichtung der Verbindung konnte ich mich über eine DFÜ-Verbindung zwar einwählen, aber dann war Schluß. Die firewall blockte alles ab. Ich habe die Einträge der firewall wie unten geändert. Allerdings sollte jeder wissen, was er macht, denn welche Auswirkungen dies auf die Sicherheit des Netzwerks hat, kann ich nicht genau sagen. Für Sicherheitsprobleme kann ich keine Haftung übernehmen. Aus Neugier hatte ich nach der Einrichtung einen online Portscan gemacht. Der Internetzugang erfolgte über ippp0. Dieser Scan ergab keine Sicherheitslücken. Tipp: Für Portscans einfach mal googeln.
Datei für die firewall:
etc/sysconfig/SuSEfirewall2
unter Punkt 3:
FW_DEV_INT=”eth0 ippp1″ #definiert die internen Schnittstellen. Hier wurde nur die Schnittstelle ippp1 zu der schon vorhandenen eth0 ergänzt. Die firewall verhindert sonst die eingehende Verbindung. Dazu muß aber auch nachfolgendes definiert sein:unter Punkt 7:
FW_PROTECT_FROM_INTERNAL=”no” #firewall schütz nicht vor internem Netzwerk, in diesem Fall #sind eth0 und ippp1 vollkommen offen!
Diese Änderungen habe ich direkt in der Datei gemacht. Es kann sein, dass Yast dies wieder überschreibt, wenn man die Firewall später noch mal mit Yast überarbeitet. Nach den Änderungen die firewall stoppen und neu starten, damit die neuen Einstellungen wirksam werden. Es gibt bestimmt auch andere Möglichkeiten, die Dienste nicht pauschal freizugeben, dazu aber bitte selber die manpages lesen.
Um Dateien zu ändern habe ich den Konquerror im Systemverwaltungsmodus als root geöffnet. Die Dateien sind alle Textdateien, die man über Rechtsklick: Öffnen mit…. kwrite bearbeiten kann. Man solle äußerst vorsichtig sein, als root Systemdateien zu ändern! Erst mal als Benutzer anschauen, da kann man nichts kaputt machen.
Jetzt noch eine normale DFÜ-Verbindung am client einrichten (zB. im windows):
Telefonnummer wie oben definiert
Protokoll: TCP
Servertyp: PPP: internet, …
Einstellungen TCP: automatische Vergabe der IP-adressen, Standardgateway des Remote-Netzwerks benutzen
Dann erreicht man seinen internen web-server, wenn man im Browser die Adresse http://192.168.0.1 eingibt.
Have a lot of fun!
Hilfreiche Befehle in der Konsole (alle als root):
su #anmelden als root
ifconfig -a #zeigt die konfigurierten und gestarteten Netzwerkschnittstellen
rcnetwork restart #Dadurch werden alle Schnittstellen neu gestartet.
SuSEfirewall2 stop #stoppt die firewall
SuSEfirewall2 start #startet die firewall
SuSEfirewall2 test #startet die firewall im Testmodus (Infos in var/log/messages)
Weitere howtos, die es sich lohnt zu lesen:
http://www.linuxnetmag.com/de/issue8/m8dialin1.html”
http://www.linuxnetmag.com/de/issue5/m5disisdn1.html”
Mit den o.g. howtos hab ich es geschafft, die dialin-Verbindung einzurichten. Danke an die Autoren.
Verfasser des Artikels: Guido Textor
WLAN unter Knoppix
Eigentlich wird eine WLAN-Karte mit Atheros-Chipsatz unter Knoppix 3.6 tadelos erkannt. Jedoch lässt sich diese nicht so einfach unter Knoppix einbinden.
Durch einen Fehler in dem Script:
/usr/sbin/netcardconfig werden Atheros-Karten nicht korrekt erkannt. Also öffnen wir dieses Script mit dem Editor unseres Vertrauens.
In dem Script suchen wir folgende Zeile:
NETDEVICES=”$(cat /proc/net/dev | awk -F: ‘/eth.:|tr.:|wlan.:/{print $1}’)”
Beim Betrachten dieser Zeile fällt auf, das die Devices eth*, tr* und wlan* erkannt werden, jedoch aber nicht ath*
Also ändern wir die Zeile wie folgt:
NETDEVICES=”$(cat /proc/net/dev | awk -F: ‘/eth.:|tr.:|wlan.:|ath.:/{print $1}’)”
Somit werden auch Atheros-Devices (ath*) abgefragt.
Jetzt muss nur noch /etc/network/interfaces angepasst werden.
Beispiel:
auto ath0
iface ath0 static
address 192.168.x.x #ip-adresse der netzwerkkarte
netmask 255.255.255.0
network 192.168.x.0 #eigenes netzwerk
broadcast 192.168.x.255
gateway 192.168.x.x #ip-adresse des wlan-routers
wireless_key [wep-key des wlan-routers]
wireless_ap [mac-adresse des wlan-routers]
wireless_channel [channel des wlan-routers]
wireless_essid [ssid des wlan-routers]
wireless_rate xxMB #wlan übertragungsrate
Nach folgender Eingabe in der Konsole
ifup ath0
sollte nun die Karte eingebunden werden.
(getestet unter Knoppix 3.6 Linux-Kernel 2.6.7, Netgear WG511T auf HP Pavilion zv5000)
Verfasser des Artikels: Antikeloides
Drucken über ein (Windows) Netzwerk
Wenn ein Netzwerk vorhanden ist möchte man dieses ja auch über einen gemeinsamen Drucker nutzen. Die folgende Anleitung beschreibt die Vorgehensweise bei der Konfiguration eines Druckers, der an einen Windows-PC angeschlossen ist.
Zuerst muss sichergestellt sein, dass die Netzwerkverbindung in beide Richtungen besteht:
Linux -> Win
Win -> Linux
IP-Adresse ermitteln
unter Windows (Start/ Ausführen/ cmd):
ipconfig
unter Linux (System/ Terminals/ Terminal Systemverwaltungsmodus):
ifconfig
Ping
Anschließend kann man mit dem “ping”-Befehl prüfen, ob die Verbindung besteht.
ping 192.168.1.33
Bei Windows werden nur einige Pakete geprüft, der Befehl “ping” im Linux-Terminal muss mit Strg+C beendet werden.
Samba
Der Drucker am Windows-PC muss freigegeben sein, was man an einer “Hand” erkennen kann. Ob Samba die Feigaben erreicht kann man prüfen mit:
smbclient -I [IP-Adresse] -L [Name] -N
Befehlsoptionen:
| -I | –ip-address | = Verbinden mit dieser IP |
| -L | –list | = Eine Liste der Freigaben am PC |
| -N | –no-pass | = Kein Passwort |
Beispiel:
smbclient -I 192.168.1.33 -L AMD2800 -N
KDE-Kontrollzentrum
Nun muß man ins Kontrollzentrum wechseln (K-Menu/ Kontrollzentrum/ Angeschlossene Geräte/ Drucker)
und einen neuen Drucker hinzufügen (Hinzufügen/ Drucker). Weiter im nächsten Schritt und SMB Druckresource (Windows) auswählen. In der nächsten Auswahl “Anonymos” wählen und man kommt anschließend zu den SMB-Drucker-Einstellungen.
Hier macht ihr nun beispielsweise folgende Angaben:
| Arbeitsgruppe | (Workgroup) |
| Server | (zB. 192.168.1.33) |
| Name | (zB. HP850C) |
Als nächstes einen “passenden” Drucker in der Liste suchen und übernehmen. Anschließend kann auch schon getestet werden. Den “Rest” kann man so übernehmen und zum nächsten Schritt übergehen. Bei “Allgemeine Informationen” gebt ihr nun einen Namen für den Drucker ein (wird später im Druckmenü angezeigt). Zum Abschluß noch alles abschließen und mit “Fertig” bestätigen.
Überprüfung
Unter Drucker sollten dann beispielsweise folgende Eigenschaften stehen:
Typ SMB – Drucker (WIN)
URI smb://Workgrpup/192.168.x.xx/HP850C
Drucksystem Cups
Verbunden mit localhost:631
Habt ihr alle Angaben korrekt gemacht solltet ihr nun einen funktionierenden Netzwerkdrucker haben.
Verfasser des Artikels: Sparky
LAMP unter SUSE
Installation
Zuerst öffnet man Yast unter Startmenü/System/YaST/Software/Software installieren und installiert folgende Pakete mit ihren Abhängikeiten:
Vorgehensweise: folgende Begriffe unter Suche eingeben -> entsprechenden Haken setzen -> Abängigkeiten prüfen -> übernehmen
- apache2 (Webserver)
- mysql (Datenbanksystem)
- mysqlcc (Datenbankkontrollzentrum)
- perl oder php4 (Skriptsprachen)
Aktivierung
Sind alle Pakete installiert erfolgt die Aktivierung in YaST unter System/Runlevel-Editor. Dort wechselt man in den Expertenmodus und sucht die Einträge apache2 und mysql.
Nun muß man bei beiden Einträgen Kreuze für die Runlevel 2 3 und 5 setzen und danach jeweils den Button “jetzt starten…” betätigen. Das ganze schließt man mit Beenden ab und die Dienste laden sich nun bei jedem Start automatisch.
MySQL-Konfiguration
Für MySQL muß zunächst ein root Passwort festgelegt werden. Dazu öffnet man das Terminal als root und gibt folgendes ein:
usr/bin/mysqladmin -u root -h localhost password 77×77x77 (Beispielpasswort)
Nun das Kontrollzentrum mysqlcc öffnen (Startmenü/Büroprogramme/Datenbank). Falls das Dialogfenster zur Einrichtung eines neuen MySQL Servers nicht automatisch erscheint kann man dies unter dem Menüpunkt File/New manuell ausführen.
Beispieldaten:
Name:Test
HostName:localhost
UserName:root
Password:77xx77xx77
Wichtig ist noch unter Options Socket File /var/lib/mysql/mysql.sock einzutragen!
Ist man nun erfolgreich zum MySQL Server verbunden kann man im Verzeichnisbaum bei Databases eine neue Datenbank mit den gewünschten Tabellen anlegen.
Abschließend im Menü unter Options/General/ die Registerkarte Sql Editor auswählen und den Pfad /usr/share/mysqlcc/syntax.txt bei Syntax File eintragen.
Apache-Konfiguration
Die Konfiguration des Apache kann erstmals standardmäßig übernommen werden und evtl. zu einem späteren Zeitpunkt individuell, den eigenen Bedürfnissen angepaßt werden (z.B. ServerSideIncludes). Dies erfordert jedoch fortgeschrittenere Kenntnisse und eine gewisse Einarbeitung in die Materie.
Übersicht der wichtigsten Apache Dateien:
| Funktion | Verzeichnis |
| Protokolldatei erfolgreicher Zugriffe | /var/log/apache2/access_log |
| Protokolldatei fehlerhafter Zugriffe | /var/log/apache2/error_log |
| Hauptkonfigurationsdatei | /etc/apache2/httpd.conf |
| weitere Konfigurationsdateien | /etc/apache2 |
Test
Im Ordner /srv/www/htdocs können nun HTML Dateien abgelegt werden und im Ordner /srv/www/cgi-bin die Skripte.
Um die Funktion des Apache zu testen gibt man in einem beliebigen Browser http://localhost/ und dahinter den Namen der entsprechenden HTML Datei an. Standardmäßig wird die Datei index.html aufgerufen (sofern vorhanden) falls hinter localhost keine Dateiangabe folgt.
Apache Einrichtung
Der Apache Webserver ist einer der weit verbreitetsten Webserver in der Welt. Dass solch ein Dienst unter Linux nicht fehlen darf liegt da schon auf der Hand, zumal Apache Opensource und somit frei ist. Viele Howtos und Dokus werden unter Linux im HTML-Format angeboten, da liegt es nur nahe, dass man diese am besten verwaltet, in dem man einen eigenen Webserver aufsetzt.
Noch ein Hinweis zuvor:
Manchmal ist es notwendig beim Nachvollziehen der Dateien, die runde Klammer,(, durch das kleiner-Zeichen, und ) durch das größer-Zeichen zu ersetzen. Ich werde gesondert daraufhinweisen!
Diese Anleitung gliedert sich in drei Teile:
- Installation und Start
- Zugriffsbeschränkungen
- Auswertungen und Statistiken
Durchgeführt wurde die Installation mit SuSE 8.2 prof. und Apache 1.3 (gilt für SuSE ab 8.0), sollte mit anderen Distributionen aber genauso funktionieren, da alle Eingaben auf der Konsole erfolgen.
Teil 1 – Installation und Start
Da Apache bei allen größeren Distributionen dabei ist kann die Installation über YAST – Software hinzufügen/entfernen durchgeführt werden.
Benötigt werden:
- apache
- apache-doc
- apache-contrib
- mod_php
- mod_perl
Alle benötigten Pakete werden automatisch mitinstalliert.
Ein Teil der Konfiguration wird bereits von SuSEconfig vorgenommen und in der Datei
/etc/httpd/httpd.conf gespeichert. Angepasst wird Apache in der Datei /etc/sysconfig/apache.
Jedesmal, wenn hier ein Eintrag geändert wird, muss:
tux@erde:# sbin/SuSEconfig -module apache
tux@erde:# rcapache reload
ausgeführt werden, um die Konfiguration neu einzulesen.
SuSEconfig unbedingt nach der Installation ausführen !!!
Da es sehr viele Variablen gib, die man ändern kann, sollte man sich dafür Zeit nehmen.
Mit dem Befehl:
tux@erde:# insserv apache
wird der Server in die Startkonfiguration eingetragen und startet beim nächsten Neustart automatisch.
Danach:
tux@erde:# rcapache start um den Server sofort zu starten.
Jetzt läuft der Server mit den Standardeinstellungen.
Um dies zu testen wird nun ein Browser gestartet und als Ziel-URL
http://localhost/ oder http://127.0.0.1/ eingegeben.
Ist die Konfiguration ordnungsgemäß durchgeführt worden, so sollte nun die Startseite des Webservers zu sehen sein.
Die wollen wir aber nicht sehen, sondern unsere eigene Seite.
Dafür wird im /home/user-Verzeichnis das Unterverzeichnis public_html angelegt,
wenn es nicht automatisch angelegt wird, und die Dateirechte auf execute für Sonstige gesetzt.
In dieses Verzeichnis kommt eure index.html-Datei.
Ob die Endung .htm oder .html ist, kann in der Datei httpd.conf eingestellt werden.
Bei einer Änderung ist ein Neustart wie oben beschrieben allerdings erforderlich!
Dann kann man mit http://localhost/~user/ (~ ist wichtig!) die Seite aufrufen (wenn alles geklappt hat).
Alle anderen können das aber auch!!!
Teil 2 – Zugriffsbeschränkungen
Die Datei .htaccess
Diese Datei ist wichtig, wenn Benutzer eingerichtet werden, die keine Möglichkeit haben, sollen die Datei httpd.conf zu bearbeiten.
Vorteil: Die Daten können ohne Neustart des Servers geändert werden und ist für virtuelle Server zu empfehlen.
Nachteil: alle darunterliegenden Verzeichnisse sind ebenfalls gesperrt und durch das Suchen der Datei sinkt die Performance.
Zugriff auf Host-Basis
Die Zugriffskontrolle erfolgt mit IP-Adrtesse und Rechnername bzw. Domäne.
Erzeugt man eine .htaccess-Datei mit dem Inhalt Deny from all
und testet den Zugang, bekommt man die Fehlermeldung “Forbidden”.
Ergänzt man sie um die Zeile Allow from 127.0.0.1, hat man vom eigenen Rechner aus wieder Zugang.
Eine Zeile Allow from abc.xyz erlaubt man den Zugriff durch eine Domäne.
Auch der umgekehrte Weg ist möglich:
Order Allow/Deny (gibt die Reihenfolge an)
Allow from all
Deny from 127.0.0.1
Was aber nicht sehr viel Sinn ergibt, oder?
Unsere erste .htaccess-Datei sollte natürlich so aussehen:
Deny from all
Allow from 127.0.0.1
Um das ganze als User testen zu können benötigt man eine Änderung in folgender Datei:
/etc/httpd/suse_public_html.conf,
mit folgendem Inhalt:
Achtung – () tauschen !!!
(IfModule mod_userdir.c)
UserDir public_html
(/IfModule)
(Directory /home/*/public_html)
AllowOverride FileInfo AuthConfig Limit
Options Mltiviews Indexes SymLinksIfOwnerMatch IncludesNoExec
(Limit GET POST OPTIONS PROPFIND)
Order Allow/Deny
Allow from all
(/Limit)
(LimitExcept GET POST OPTIONS PROPFIND)
Order Deny/Allow
Deny from all
(/LimitExcept)
(/Directory)
Diese Datei erlaubt es einem Benutzer ein public_html-Verzeichnis in seinem Verzeichnis anzulegen, es mit Authentifizierung zu versehen und Zugriffsbeschränkungen durchzuführen.
Die URL dieses Verzeichnisses ist: http://localhost/~user/.
Zugriff mit Benutzername und Passwort
Für das Beispiel: user = benutzer1, benutzer2, benutzer3, …
passwort = zugriff1, zugriff2, zugriff3, …
Zuerst die Datei .htaccess wieder löschen !
br> Um den Zugriff mit Passwörtern zu schützen muss eine Datei angelegt werden, um die Passwörter verschlüsselt zu speichern. Dies erledigt das Tool htpasswd.
Es wird zunächst die Datei .htpasswd im /home/user-Verzeichnis angelegt:
htpasswd -c ~/.htpasswd benutzer1 (nicht als root !), dabei wird zweimal nach dem Passwort für benutzer1 gefragt (also zugriff1).
Jetzt wird die Datei .htaccess im public_html-Verzeichnis angelegt (mit Editor), und sollte in etwa so aussehen:
AuthName “Anmeldung erforderlich”
AuthType Basic
AuthUserFile /home/user/.htpasswd
require user benutzer1
Es wird eine Anmeldemaske erzeugt, worin Benutzerame und Passwort abgefragt werden.
Man kann auch einer ganzen Gruppe den Zugriff erlauben:
Um z.B. die Gruppe “entwickler” mit den Usern “progr1″,”progr2″,”progr3″ hinzuzufügen müssen sie in der .htpasswd eingetragen werden.
htpasswd ~/.htpasswd progr1
htpasswd ~/.htpasswd progr2
htpasswd ~/.htpasswd progr3
Jetzt wird im /home/user-Verzeichnis die Datei .htgroup angelegt, mit folgendem Inhalt:
entwickler: progr1 progr2 progr3 (einfach mit einem Editor)
Nun noch .htaccess anpassen:
AuthName “Anmeldung erforderlich”
AuthType Basic
AuthUserFile /home/user/.htpasswd
require user benutzer1
AuthGroupFile /home/user/.htgroup
require group entwick
Jetzt können sich der User benutzer1 und die Gruppenmitglieder progr1,progr2,progr3 anmelden.
Und jetzt eine Kombination von allem:
AuthName “Anmeldung erforderlich”
AuthType Basic
AuthUserFile /home/user/.htpasswd
require user benutzer1
AuthGroupFile /home/user/.htgroup
require group entwickler
Allow from 127.0.0.1
Deny from all
Satisfy any (bewirkt, dass nur eine der Bedingungen zutreffen muss)
Zugriff mittels Datenbank
Als Alternative können die Daten in einer Datenbank gespeichert werden. Dazu benötigt man die Module:
- mod_auth_db und/oder
- mod_auth_dbm
Der Aufruf
dbmmanage ~/passwords adduser benutzer1 erzeugt eine Datenbank im /home-Verzeichnis, legt den User “benutzer1″ an und fragt 2x nach dem Passwort.
Jetzt wieder die Datei .htaccess im public_html-Verzeichnis anpassen:
AuthName “Anmeldung erforderlich”
AuthType Basic
AuthDBUserFile /home/user/passwords
require valid-user
Teil 3 – Auswertungen und Statistik
Alias
Um auf ein beliebiges Verzeichnis im Dateibaum zu verweisen, benötigt man ein Alias.
Um über die URL http://127.0.0.1/statistik/ auf die Auswertungen zugreifen zu können, muss die Datei
/etc/httpd/myalias.conf editiert werden, und sollte so aussehen:
Achtung – () tauschen !!!
Alias /statistik /var/lib/webalizer
(Directory /var/lib/webalizer)
Order Deny/Allow
Deny from all
Allow from 127.0.0.1
(/Directory)
Damit wird gleichzeitig verhindert, dass der Inhalt von jemand anderem bertrachtet werden kann.
Natürlich muss der Server neu gestartet werden: rcapache reload
Auswertung mit webalizer
Die Konfiguration erfolgt in der Datei /etc/webalizer.conf.Hier wird festgelegt in welchem Pfad die Auswertungen abgelegt werden (/var/lib/webalizer).
Als root:
webalizer -N 0 -t “Statistik für” -n “linux.local”
-N 0 ….. deaktiviert die Namensauflösung
-t “” …. Titelname in der Statistik
-n “” …. Rechnername in der Auswertung
Jetzt sind die Statistiken als Webseiten im Verzeichnis /var/lib/webalizer vorhanden.
Dieses Verzeichnis wurde durch ein Alias freigegeben und die Statistiken können unter
http://127.0.0.1/statistik/ oder http://localhost/statistik/
betrachtet werden.
Diese Anleitung erhebt keinen Anspruch auf Vollständigkeit, es ist notwendig sich mit den Programmen und Parametern auseinanderzusetzen.
Verfasser des Artikels: BatGirl

