![]() |
|
Webserver Fragen zum Apache, MySQL-Einrichtung und was sonst noch mit WebServern zu tun hat |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 | |||||||||||
Erfahrener Benutzer
Registriert seit: 27.03.2008
Ort: Jamaika
Beitr?ge: 442
Abgegebene Danke: 26
Erhielt 93 Danke für 10 Beiträge
Downloads: 5
Uploads: 0 Nachrichten: 0 Renommee-Modifikator:
553 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Vorbereitungen zum Debian Root Server einrichten
#Anmeldung Admin/ root Debian Server ~# su #Quellen/ Paketlisten von APT aktualisieren Debian Root Server ~# apt-get update #System auf aktuellen Stand bringen Debian Root Server ~# apt-get upgrade Benutzer anlegen für Debian Server: Debian Server ~# adduser #anstatt 'useradd -m' fragt sie 'adduser' alles notwendige (am wichtigsten ist das Feld Full Name) #mit "usermod" können den Benutzer problemlo später modifizieren Debian SSHd anpassen: (wichtig vorher MUSS neuer Benutzer angelegt werden!) Debian Root Server ~# mcedit /etc/ssh/sshd_config # 'PermitRootLogin no' von YES auf NO Debian Server - Apache2 Installation #Install Apache2 mit Php und Anbindung an Mysql-Server; des Weiteren Phpmyadmin zur Verwaltung der Datenbank und GD-Support für Apache zwecks grafik-verarbeitenden Scripten wie CMS-Systemen (bsp. EXPONENT) Debian Root Server ~# apt-get install apache2-mpm-prefork libapache2-mod-perl2 libapache2-mod-php4 mysql-client-4.1 mysql-server-4.1 libmysqlclient10 libmysqlclient12 libmysqlclient14 php4 php4-cgi php4-cli php4-pear php4-mysql phpmyadmin php4-gd libgd2 #Anmerkung: 'prefork' ist nicht die schnellste aber kompatibelste Version in Sachen PHP im Vgl. zu 'apache2-mpm-worker' # Phpmyadmin muss noch konfiguriert (https) und abgesichert (.htaccess) werden! Darauf gehe ich zunächst nicht ein. #Funktionstest: #http://IP oder http://localhost bei lokaler Installation Troubelshooting (nur der Vollständigkeit halber): Php und MySQL: #Install MySQL-Server Debian Root Server ~# apt-get install mysql-server-4.1 #Install PHPMyadmin Debian Root Server ~# apt-get install phpmyadmin #Install Debian Root Server ~# apt-get install php4-gd libgd2 Anpassungen von MySQL: #MySQL-Passwort für root setzen!!! Debian Root Server ~# mysql -u root mysql Debian Root Server ~# mysql> UPDATE user SET Password=PASSWORD('neues_passwort') WHERE user='root'; Debian Root Server ~# mysql> FLUSH PRIVILEGES; Debian Root Server ~# mysql -u root -p #Passworttest über PhpMyAdmin: http://IP/phpmyadmin; Benutzer:root und Passwort:PASSWORT Toubelshooting Anpassung der Mysqlanbindung an den Indianer #Php.ini anpassen Debian Root Server ~# mcedit /etc/php4/apache2/php.ini #Auskommentieren 'extension=mysql.so' # Anpassung 'memory_limit = 16' # und 'upload_max_filesize = 20' setzen (so dass später im CMS auch größere Daten hochgeladen werden können) Debian Server - Virtuelle Hosts für Apache2 #Auskommentieren von Debian Root Server ~# mcedit /etc/apache2/sites-available/default #'RedirectMatch ^/$ /apache2-default/ im vhost unter /etc/apache2/sites-available/' #einfach eine Raute davor (=Auskommentieren; Kommentieren = Raute weg nehemen), dann wird nicht vom localhost bzw. Ihrer IP auf localhost/default-apache umgeleitet Debian Server - Namensbasierten virtuelle Host anlegen #Sie haben eine Domain und diese zeigt auf die IP dieses Servers, dann können wir schnell für Erreichbarkeit sorgen Debian Root Server ~#mcedit /etc/apache2/sites-available/MeineDomainDE #Anmerkung der Name ist irrelevant nur der Inhalt ist wichtig #Inhalt: ---- <VirtualHost * > ServerAdmin EMAIL ServerName Domain.de - Das Portal rund um Domains ServerAlias Domain.DE w.Domain.DE ww.Domain.DE DocumentRoot /var/www/PFAD/ZUR/WEBSEITE <Directory //var/www/PFAD/ZUR/WEBSEITE> Order Deny,Allow Allow from all # Don't show indexes for directories Options -Indexes </Directory> </VirtualHost> --- #F2 für speichern und F10 für schließen und fertig #Aktivieren bzw. versymlinken des virtuellen Hosts Debian Root Server ~# a2ensite MeineDomainDE Debian Root Server ~# /etc/init.d/apache2 reload #Anmerkung löschen sie nicht den default oder setzen sie die Seite nicht an erste Stelle (Reihenfolge abhänig von Reihenfolge der verlinkung; nicht nach Alphabet) #Neustart Debian Apache und fertig Debian Root Server ~# /etc/init.d/apache2 restart #und fertig ist ihr Vhost Debian Server - Namensbasierten virtuelle Host mit SSL-Verschlüsselung also https # Zertifikat erstellen Debian Server ~# apache2-ssl-certificate -days 365 #-days gibt die Gültigkeitsdauer an #alle Fragen können nach belieben beantwortet werden, aber Rechnername/ Domain muss mit Vhost übereinstimmen bsp. IP oder Domain #SSl-Modul aktivieren Debian Server ~# a2enmod ssl #Vhost mit SSL erstellen Debian Server ~# CP /etc/apache2/sites-available/default /etc/apache2/sites-available/default-ssl Debian Server ~# mcedit etc/apache2/sites-available/default-ssl #Inhalt: ---- NameVirtualHost *:443 <VirtualHost *:443> # SSL (START) SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem SSLCertificateKeyFile /etc/apache2/ssl/ZERTIFIKATSNAME.0 SSLProtocol all SSLCipherSuite HIGH:MEDIUM # SSL (ENDE) ServerAdmin EMAIL #kann auch einfach eine IP sein ServerName Domain.de - Das Portal rund um Domains ServerAlias Domain.DE w.Domain.DE ww.Domain.DE DocumentRoot /var/www/PFAD/ZUR/WEBSEITE <Directory //var/www/PFAD/ZUR/WEBSEITE> Order Deny,Allow Allow from all # Don't show indexes for directories Options -Indexes </Directory> </VirtualHost> --- # Eintragen des SSLCertificateKeyFile /etc/apache2/ssl/ZUFALLSNAME.0 Debian Server ~# LS -l /etc/apache2/ssl/ # Der Name der datei die mit xxx.0 endet muss im vHost ergänzt werden. #Apache den Ports noch mitteilen auf den er horchen soll Debian Root Server ~# mcedit /etc/apache2/ports.conf #Inhalt: ---- Listen 80 Listen 443 ---- # Default-SSL aktivieren Debian Server ~# a2ensite default-ssl #Apache Neustart Debian Server ~# apache2ctl restart Debian FTP Server #Install Debian Server ~# apt-get install proftpd #Gruppen Debian Server ~# addgroup ftpprouser #uneingeschränkter user Debian Server ~# addgroup ftpuser #eingesckränkter user #Möglichkeit Anmeldung an System unterbinden und NUR FTP-Anmeldung für bestimmte Benutzer erlauben #Vorbereitung #Shell ohne Anmeldung über SSH o.ä. kopieren Debian Server ~# CP /bin/false /bin/ftp Debian Server ~# echo "/bin/ftp" >> /etc/shells #Ftp-User Debian Server ~# useradd USERNAME #legt nur den Usernamen an sonst nichts Debian Server ~# usermod -G ftpuser USERNAME#chroot ungleich ftpprouser siehe später proftpd.conf Debian Server ~# usermod -d /HOME/ERZEICHNIS USERNAME Debian Server ~# usermod -s /bin/ftp USERNAME#keine Anmeldung an System #Ftp-User per Hand gruppen zuordnen; eigentlich unnötig (dieser Schritt kann bei simpler Konfiguration übersprungen werden) Debian Root Server ~# mcedit /etc/group ---Beispiel: ... ftpprouser:x:1004:user1 ftpuser:x:1005:user2 --- #Proftpd-Config anpassen Debian Root Server ~# mcedit /etc/proftpd.config #Inhalt ---- # chroot für alle User der Gruppe ftpuser # Sehr wichtig zwecks Sicherheit, aber bringt mit sich, dass auf nichts außerhalb des Homeverzeichnisses zugegriffen werden kann; einzelne Verzeichisse können über mount --bind nicht über Symlinks "herein verfachtet" werden; im Anschluss ein Beispiel DefaultRoot ~ ftpuser # Login nur von Mitgliedern der Gruppe ftpuser erlauben <Limit LOGIN> DenyGroup !ftpuser !ftpprouser </Limit> # Root-Login verbieten und gültige Shell verlangen (in /etc/shells) <Global> RootLogin off RequireValidShell on </Global> # Speed erhoehen UseReverseDNS off IdentLookups off ---- #Ftp neustart Debian Server ~# /etc/init.d/proftpd restart Chrootet FTP-Benutzern oder Gruppen Verzeichnisse außerhalb des Homeverzeichnisses #Bsp. für ein Verzeichnis von User2 # Ein Verzeichnis von User1 --> User2 # Verzeichnis bei User2 erstellen in dem die Daten landen sollen Debian Root Server ~# mkdir /home/USER2/OrdnerTestVonUser1/ # Verzeichnis mounten; mount --bind /Ursprungsverzeichnis /Zielverzeichnis Debian Root Server ~# mount --bind /home/USER1/OrdnerTest/ /home/USER2/OrdnerTestVonUser1/ #Anmerkung: # über 'mount' kann man alle Mountpunte ich anzeigen lassen und über 'umount' löschen # nach Neustart sind alle Mountpunkte weg, falls sie konsitent sein sollen sie einfach in die /etc/fstab eintragen Quelle: Debian Server einrichten Sarge - Linux LAMP SSL MYSQL Root Server Domain Webserver Ge?ndert von Cerberus (16.05.2008 um 15:11 Uhr) |
|||||||||||
![]() |
![]() ![]() ![]() |
![]() |
#2 |
Master Coder
Registriert seit: 10.03.2008
Ort: Zuhause
Beitr?ge: 8.037
Abgegebene Danke: 1.199
Erhielt 2.928 Danke für 266 Beiträge
Downloads: 28
Uploads: 9 Nachrichten: 357 Renommee-Modifikator:
10 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Ist aber für php4 erklärt und php4 sollte mann nicht mehr nutzen da es zuviele fehler hat dann lieber so machen
Erlangung Rootrechte Debian Etch :~# su Quellen/ Paketlisten von APT aktualisieren Debian Etch :~# apt-get update System auf aktuellen Stand bringen Debian Etch :~# apt-get upgrade Installation verschiedener kleiner Programme für Debian Linux Debian Etch :~# apt-get -y install mc zip unzip bzip2 screen vim rsync traceroute ftp lynx Aktuelle Zeit unter Debian Linux ( u.a. wichtig bzgl. Einträgen in Logs ) Debian Etch :~# apt-get -y install ntp ntpdate Installation Debian Apache Webserver Debian 4.0 : # apt-get -y install apache2 Installation Debian Apache 2.2 Php5 Unterstützung Debian 4.0 : # apt-get -y install libapache2-mod-php5 php5-cli php5-common php5-cgi Installation PhpMyAdmin Debian 4.0 : # apt-get install phpmyadmin Aufruf über: http://MeineIPoderMein-Debian-Server.DE/phpmyadmin Installation Debian Mysql Server 5 Debian 4.0 : # apt-get install mysql-common mysql-server mysql-server-5.0 So das langt um nen Server zu installen zum thema sicherheit muss sich jeder selber schlau machen und es machen bei phpmyadmin zb so Zusätzliche Zugriffsbeschränkung für Phpmyadmin durch .htaccess / Passwortschutz Erstellung .htaccess Datei Debian 4.0 : # mcedit /var/www/phpmyadmin/.htaccess Inhalt AuthType Basic AuthName "phpmyadmin" AuthUserFile /var/www/phpmyadmin/.htpasswd require user USERNAME Erstellung .htpassword Datei ~# mcedit /var/www/phpmyadmin/.htpasswd USERNAME:iqhCaA/JBcng. Anpassung Apache.conf ~# mcedit /etc/apache2/apache2.conf Inhalt an Ende der Apache2.conf anfügen <Directory /var/www/phpmyadmin> AllowOverride AuthConfig Options ExecCGI FollowSymLinks </Directory> Und den ganzen rest zum apache einstellen alles absichern usw muss mann sich halt selber schlau machen den durch copy und paste lernt mann nix
__________________
Code:
require_once('include/gehirn.php'); session_start(); if(empty($action)) { echo "<td class="tablea">Kopf anstrengen und Nachdenken</td>"; } else { echo "<td class="tablea">Kopf zuviel angestrenkt nun Qualmt er ;)</td>"; } |
![]() |
![]() ![]() ![]() |
![]() |
#3 | |||||||||||
Erfahrener Benutzer
Registriert seit: 27.03.2008
Ort: Jamaika
Beitr?ge: 442
Abgegebene Danke: 26
Erhielt 93 Danke für 10 Beiträge
![]() Downloads: 5
Uploads: 0 Nachrichten: 0 Renommee-Modifikator:
553 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Yoa also ich dachte mir dass jeder ein wenig mitdenkt und ne 4 in ne 5 umwandelt, in wiefern willst du das noch absichern ?
post doch mal deine üblichen schritte bitte ![]() |
|||||||||||
![]() |
![]() ![]() ![]() |
![]() |
#4 |
Master Coder
Registriert seit: 10.03.2008
Ort: Zuhause
Beitr?ge: 8.037
Abgegebene Danke: 1.199
Erhielt 2.928 Danke für 266 Beiträge
Downloads: 28
Uploads: 9 Nachrichten: 357 Renommee-Modifikator:
10 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Ne ich finde das mit dem absichern muss sich jeder machen und sich da einlesen durch copy und paste ist niemanden geholfen alleine diese anleitung find ich schon fast zuviel das muss jeder selber rausfinden denn dadurch lernt mann besser denn die meisten machen sonst copy udn paste und wenn dann mal was ist wissen sie absolut nicht was los ist
__________________
Code:
require_once('include/gehirn.php'); session_start(); if(empty($action)) { echo "<td class="tablea">Kopf anstrengen und Nachdenken</td>"; } else { echo "<td class="tablea">Kopf zuviel angestrenkt nun Qualmt er ;)</td>"; } |
![]() |
![]() ![]() ![]() |
![]() |
#5 | |||||||||||
Erfahrener Benutzer
Registriert seit: 27.03.2008
Ort: Jamaika
Beitr?ge: 442
Abgegebene Danke: 26
Erhielt 93 Danke für 10 Beiträge
![]() Downloads: 5
Uploads: 0 Nachrichten: 0 Renommee-Modifikator:
553 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Klar, aber mit ist es lieber wenn man seinen server absichert und das nur durch Copy Paste, den durch sonen Hack kann schonmal ein enormer schaden entstehen...
|
|||||||||||
![]() |
![]() ![]() ![]() |
![]() |
#6 |
Master Coder
Registriert seit: 10.03.2008
Ort: Zuhause
Beitr?ge: 8.037
Abgegebene Danke: 1.199
Erhielt 2.928 Danke für 266 Beiträge
Downloads: 28
Uploads: 9 Nachrichten: 357 Renommee-Modifikator:
10 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Jo nur in die standard sachen mit ports ändern ssh absichern mit nem key anstatt pw alle sachen ausschalten die nicht benötigt werden hosts anlegen und absichern phpmyadmin absichern usw da sollte sich jeder selber einlesen
__________________
Code:
require_once('include/gehirn.php'); session_start(); if(empty($action)) { echo "<td class="tablea">Kopf anstrengen und Nachdenken</td>"; } else { echo "<td class="tablea">Kopf zuviel angestrenkt nun Qualmt er ;)</td>"; } |
![]() |
![]() ![]() ![]() |
![]() |
#7 | |||||||||||
Profi
Registriert seit: 30.03.2008
Ort: NRW
Beitr?ge: 543
Abgegebene Danke: 99
Erhielt 34 Danke für 9 Beiträge
Downloads: 13
Uploads: 30 Nachrichten: 0 Renommee-Modifikator:
595 ![]() ![]() ![]() ![]() |
![]()
kannst dua uch paar sites nennen wo man sich einlesen kann, denn ich kenne keine die sich sehr um die sicherheit eines servers befassen
|
|||||||||||
![]() |
![]() ![]() ![]() |
![]() |
#8 | |||||||||||
Erfahrener Benutzer
Registriert seit: 27.03.2008
Ort: Jamaika
Beitr?ge: 442
Abgegebene Danke: 26
Erhielt 93 Danke für 10 Beiträge
![]() Downloads: 5
Uploads: 0 Nachrichten: 0 Renommee-Modifikator:
553 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
deswegen mein ich ja das es hilfreich ist sein wissen zu teilen
![]() |
|||||||||||
![]() |
![]() ![]() ![]() |
![]() |
#9 |
Master Coder
Registriert seit: 10.03.2008
Ort: Zuhause
Beitr?ge: 8.037
Abgegebene Danke: 1.199
Erhielt 2.928 Danke für 266 Beiträge
Downloads: 28
Uploads: 9 Nachrichten: 357 Renommee-Modifikator:
10 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Guck mal alleine bei ovh in der hilfe da steht zb schonmal wie mann phpmyadmin absichert und ssh mit key macht und ich glaub sogar noch 1 oder 2 gute sachen und für den rest bzw bessere seiten hab ich nicht mehr da ich sie damals gefunden hatte sie mir abgespeichert habe und es dann gelernt habe irgendwann brauchte ich die seiten nicht mehr und hab sie nach ner neuinstall nicht mehr neu gespeichert
__________________
Code:
require_once('include/gehirn.php'); session_start(); if(empty($action)) { echo "<td class="tablea">Kopf anstrengen und Nachdenken</td>"; } else { echo "<td class="tablea">Kopf zuviel angestrenkt nun Qualmt er ;)</td>"; } |
![]() |
![]() ![]() ![]() |
![]() |
#10 | |||||||||||
Erfahrener Benutzer
Registriert seit: 27.03.2008
Ort: Jamaika
Beitr?ge: 442
Abgegebene Danke: 26
Erhielt 93 Danke für 10 Beiträge
![]() Downloads: 5
Uploads: 0 Nachrichten: 0 Renommee-Modifikator:
553 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Hier auch noch sehr gut und meiner meinung nach sehr wichtig:
Firewall Um dieser Anleitung folgen zu können, müssen Sie bereits einige Erfahrungen mit Linux gesammelt haben. Die Manipulation einer Firewall kann gefährlich sein. Sie könnten hierdurch z.B. die Möglichkeit eines Hard Reboot blockieren. Falls Sie ein fehlerhaftes Skript erstellen und dieses in den Autostart legen, könnten Sie sich selbst den Zugang zu Ihrer Maschine verwehren. Seien Sie also bitte sehr aufmerksam und nehmen Sie keine Änderungen an der Firewall vor, falls Sie sich unsicher sind. Firewall - was ist das? Es ist ein Programm, das gewisse Ports Ihres Servers blockiet und andere widerum öffnet. Stellen Sie sich Ihr Haus vor: Sie haben vorne und hinten jeweils eine Tür. Die hintere ist nutzlos, also wird sie zugemauert. Warum? Weil hierdurch eine zusätzliche, unnötige Gefahr eines Einbruchs besteht. Mit der Firewall ist das genau so: es werden alle Ports (Türen), die nicht benötigt werden, geschlossen. Welche Ports? ACHTUNG! Sie müssen bei jeder Änderung sehr aufmerkseim vorgehen. Sie könnten nämlich die zu schließenden Ports verwechseln, was natürlich sehr schlecht wäre. Stellen Sie sich vor, Sie würden den SSH-Port schließen! In diesem Fall hätten Sie evtl. nur noch Zugriff via Telnet oder Webmin. Oder man müsste den Server im Rescue Modus hochfahren und die fehlerhafte Konfiguration rückgängig machen. Die von OVH standardmäßig geöffneten Ports sind: 21 - ftp (FTP-Server - zur Benutzung des FTP-Dienstes offen lassen). 22 - ssh (Zugang zur verschlüsselten Shell - offen lassen !). 23 - telnet (Zugang zur nicht verschlüsselten Shell - zur eventuellen Reparatur offen lassen !). 25 - smtp (Postausgangsserver - können meistens offen bleiben). 53 - dns (DNS-Server - können meistens offen bleiben). 80 - http (Webserver - offen lassen !). 110 - pop3 (Posteingangsserver - können meistens offen bleiben). 143 - imap (Posteingangsserver - als Alternative zu POP3 offen lassen). 443 - https (verschlüsselter Webserver- je nach Wunsch offen lassen). 1000 - webmin (Plattform zur Konfiguration des Servers - offen lassen, wenn Sie diese benutzen möchten). Diese Ports sind standardmäßig geöffnet. Aber vielleicht haben Sie eine Software installiert die andere Ports benutzt. Es liegt an Ihnen, zu erkennen, welche geöffnet werden müssen und welche nicht. Es wird nun erklärt, wie Sie vorgehen müssen, wenn Sie spezielle Ports öffnen möchten. IPTables IPTables ist eine sehr leistungsstarke Firewall, welche von OVH auf allen Servern installiert wird. Ihre Funktionen sind folgende: Spezielle Ports zu öffnen und alle anderen zu schließen. Im folgenden Beispiel werden die beiden Ports 22 (ssh) und 80 (http) geöffnet. Dies ist nur ein Beispiel, welches Sie jedoch auf Ihre individuellen Bedürfnisse anpassen können: Verbinden Sie sich per ssh als root mit Ihrem Server. Der erste Schritt besteht darin, die Version von IPTables zu erfahren: $ /sbin/iptables -V iptables v1.2.4 Diese Version ist sehr alt. Es wird mittlerweile die Version 1.3.7 eingesetzt (Stand: 03.04.2007) $ CD /root $ wget http://www.netfilter.org/projects/ip...-1.3.7.tar.bz2 $ tar xvfj iptables-1.3.7.tar.bz2 $ CD iptables-1.3.7 $ make KERNEL_DIR=/usr/src/linux $ make install KERNEL_DIR=/usr/src/linux $ CD /sbin $ mv iptables iptables.old $ mv iptables-restore iptables-restore.old $ mv iptables-save iptables-save.old $ ln -s /usr/local/sbin/iptables iptables $ ln -s /usr/local/sbin/iptables-restore iptables-restore $ ln -s /usr/local/sbin/iptables-save iptables-save $ /sbin/iptables -V iptables v1.3.7 IPTables wurde aktualisiert, nun folgt der nächste Schritt. Eine Liste der bestehenden Regeln erhält man wiefolgt: $ /sbin/iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Wie Sie sehen, gibt es drei Rubriken: INPUT, FORWARD und OUTPUT. Wir werden uns zunächst um die Rubrik INPUT kümmern (für den eingehenden Verkehr). Zur Öffnung der Ports 22 und 80 folgendes eingeben: $ /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT $ /sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT -A INPUT : Eine Eingangsregel wird für die Firewall konfiguriert. -i eth0 : Für diese Netzwerkkarte wird die Regel definiert. -p tcp : Die Regel gilt für das Protokoll TCP (wir behandeln vorerst nur dieses). --dport 22 : Die Regel gilt für den SSH-Port (22). -j ACCEPT : Die Regel erlaubt eingehende Daten (Pakete). Eine erneute Ausgabe der Regeln sieht nun so aus: $ /sbin/iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp — anywhere anywhere tcp dpt:ssh ACCEPT tcp — anywhere anywhere tcp dpt:www Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Die Rubrik INPUT wurde erweitert, das ist ein gutes Zeichen. Wie man unschwer erkennen kann, wird alles aktzeptiert => Chain INPUT (policy ACCEPT). Wir wollen den gesamten Verkehr, der nicht zuvor erlaubt wurde, blockieren. Wir müssen also eine Regel hinzufügen, welche alle anderen Ports blockiert. Aber hierbei gibt es ein Problem: Wenn wir zum Beispiel eine Verbindung von unserem Server zum Server kernel.org herstellen möchten, um einen neuen Kernel herunterzuladen, muss eine Verbindung zu der Seite hergestellt und auf eine Antwort gewartet werden. Wie aber kann diese Verbindung hergestellt werden, wenn standardmäßig alle Verbindungen blockiert werden? Glücklicherweise ist IPTables sehr leistungsfähig und kann Pakete gemäß ihres Zustandes sortieren und kann diverse Ausnahmeregelungen treffen. Es muss also eine neue Regel hinzugefügt werden: $ /sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT Es gibt zwei Möglichkeiten oder Stufen dieser Regel. Man droppt, d.h. man verwirft ein Paket, wenn es ankommt und nicht aktzeptiert wird. Der Client seinerseits wird bis zum timeout vergeblich auf eine Antwort warten. Die zweite Möglichkeit besteht darin, die Pakete abzulehnen (REJECT anstatt DROP). Wenn ein ungültiges Paket ankommt, erhält der Client einen Fehler und er wartet nicht mehr da er eine negative Antwort erhalten hat. Ein Paket abzulehenen ist sauberer, aber es zu verwerfen ist sicherer. Es ist also möglich, dass jemand versuchen wird, Ihnen ständig Pakete an den falschen Port zu schicken. Ihr Server wird nicht reagieren, aber mit der Regel REJECT werden diese Pakete beantwortet. Sie haben die Wahl. Um Ihre Firewall "auf Null" zu setzen, müssen Sie folgendes eingeben: $ /sbin/iptables -F INPUT Dieser Befehl wird alle Regeln in der Rubrik INPUT löschen. Wenn Sie eine Regel zwischen der ersten und der zweiten hinzufügen möchten, geben Sie folgendes ein: $ /sbin/iptables -I INPUT 2 ... ihre Regeln Um die dritte Regel zu löschen, geben Sie folgendes ein: $ /sbin/iptables -D INPUT 3 Um eine IP komplett zu blockieren: $ /sbin/iptables -I INPUT 1 -s -j DROP Die Firewall ist nun aktiviert. Wenn nun ein Portscann an Ihrem Server vorgenommen wird, sind nur die beiden Ports 80 und 22 geöffnet. Es ist nicht ungewöhnlich dass der Scan sehr langsam ist. Dies ist auf die Regel DROP zurückzuführen. IP ausschließen/erlauben Falls Sie das ICMP-Protokoll (Ping-Abfrage) blockieren möchten, müssen Sie Ausnahmeregeln für folgende Servern treffen: ping.ovh.net, proxy.p19.ovh.net, proxy.rbx.ovh.net und proxy.ovh.net. Dies erlaubt dem OVH-Teams, den Zustand Ihres Servers trotzdem überwachen zu können. Sie müssen also die IPs dieser Server freischalten. Die IP Ihres Servers hat das Format aaa.bbb.ccc.ddd Freizuschaltende IP: aaa.bbb.ccc.250 (z.B. müsste für die IP 213.186.57.143 diese IP durchgelassen werden: 213.186.57.250) Falls Sie einen Server der HG-Serie besitzen müssen Sie folgende IP freischalten: aaa.bbb.ccc.249 (zeitweilig, wird ggf. demnächst geändert). Wenn Sie alle Ports blockieren (auch die von OVH), werden wir den Zustand Ihres Servers nicht mehr überwachen können. Falls dieser dann ausfällt, müssten wir "manuell" von Ihnen benachrichtigt werden. Um den OVH-Überwachungsserver das Pingen zu erlauben, müssen folgende Regeln hinzugefügt werden: /sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p icmp --source IP.250 -j ACCEPT # IP = aaa.bbb.ccc durch die vorhergehende Regel erhalten /sbin/iptables -A INPUT -i eth0 -p icmp --source IP.249 -j ACCEPT # zeitweilig, nur für Server der HG-Serie Falls Sie den SSH-Zugang nur auf Ihre IP beschränken wollen, ist es empfehlenswert, auch cache.ovh.net den Zugriff zu gestatten. Wenn Sie den Port 22 für die OVH-Techniker schließen, können wir nicht mehr direkt auf den Server zugreifen, um Probleme zu lokalisieren oder zu beheben. Um den OVH-Servern den Zugriff auf Ihren Server zu ermöglichen, müssen Sie folgendes eingeben: /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 --source cache.ovh.net -j ACCEPT Wenn Sie einen RAID-Filer haben, dürfen Sie nicht vergessen, dem NFS eine Verbindung zu ermöglichen. Hierfür sollte alles aktzeptiert werden, was aus dem Netz 192.168.0.0/16 kommt: /sbin/iptables -A INPUT -i eth0 -p tcp --source 192.168.0.0/16 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p udp --source 192.168.0.0/16 -j ACCEPT Wenn Sie Cluster-System? haben (zur Zeit nicht im Angebot), muß man den Port 79 öffnen, damit OCO mit dem Lastenverteiler kommunizieren kann: /sbin/iptables -A INPUT -i eth0 -p tcp --dport 79 -j ACCEPT Konfigurationsbeispiel Hier ein Beispiel einer vollständigek Konfiguration, um Ihren Server via iptables zu schützen. Durch den Einsatz dieser Konfiguration wäre Ihr System größtenteils geschützt und die wichtigsten Dienste werden zugelassen. Sie kann als Basis für Ihre individuell angepasste Konfiguration dienen: /sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 21 --source xx.xx.xx.xx -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 --source cache.ovh.net -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 --source xx.xx.xx.xx -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --source 192.168.0.0/16 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p udp --source 192.168.0.0/16 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 79 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -j REJECT In diesen Regeln muß man natürlich xx.xx.xx.xx durch die IP-Adresse des eigenen Servers ersetzen, auf dem die freizuschaltenden Dienste laufen. Firewall automatisieren Ihre Firewall wurde nun vollständig konfiguriert und für sie sollte jetzt ein Skript erstellt werden, das bei jedem Systemstart automatisch geladen wird. Hier ein Beispiel, in dem ein Skript namens "Firewall" im /etc/init.d/-Register eingetragen wird:
1. chkconfig: 3 21 91 2. description: Firewall IPT=/sbin/iptables case "$1" in start) $IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT $IPT -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 10000 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 21 --source xx.xx.xx.xx -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 22 --source cache.ovh.net -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 22 --source xx.xx.xx.xx -j ACCEPT $IPT -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT $IPT -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT $IPT -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT $IPT -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --source 192.168.0.0/16 -j ACCEPT $IPT -A INPUT -i eth0 -p udp --source 192.168.0.0/16 -j ACCEPT $IPT -A INPUT -i eth0 -p tcp --dport 79 -j ACCEPT $IPT -A INPUT -i eth0 -j REJECT exit 0 ;; stop) $IPT -F INPUT exit 0 ;; *) echo "Usage: /etc/init.d/firewall {start|stop}" exit 1 ;; esac Erteilen Sie dem Skript nun das Recht 700 und geben Sie „/etc/init.d/firewall start“ ein, um es auszuführen und “/etc/init.d/firewall Stopschild ", um es anzuhalten. Um es beim Systemstart automatisch auszuführen: $ /sbin/chkconfig --level 3 firewall on $ /sbin/chkconfig --level 06 firewall off Achten Sie darauf, dass das Skript ordnungsgemäß funktioniert, bevor Sie es automatisch starten lassen, damit Ihr Server nicht automatisch blockiert wird ! quelle: OVH |
|||||||||||
![]() |
![]() ![]() ![]() |
![]() |
Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, G?ste: 2) | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
ftp für root einrichten ? | Wildehorde | Betriebssysteme | 6 | 25.10.2008 15:35 |
Installationsanleitung DEBIAN-Server | $iMpLy | Webserver | 0 | 31.08.2008 00:00 |
Debian Server einrichten | Trilon | Betriebssysteme | 10 | 05.07.2008 22:32 |
Emailserver unter debian einrichten! | BonkeR | Webserver | 27 | 05.06.2008 22:52 |