PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Server einrichten Debian


mcseeder
16.05.2008, 13:27
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 (http://www.exponent-portal.de/))

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 (http://www.Domain.DE)
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 (http://www.Domain.DE)
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 (http://www.tim-bormann.de/index.php?section=87)

gotthummer
16.05.2008, 13:35
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

mcseeder
16.05.2008, 13:38
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 ;)

gotthummer
16.05.2008, 13:57
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

mcseeder
16.05.2008, 13:59
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...

gotthummer
16.05.2008, 14:02
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

Dark-Destroyer
16.05.2008, 14:05
kannst dua uch paar sites nennen wo man sich einlesen kann, denn ich kenne keine die sich sehr um die sicherheit eines servers befassen

mcseeder
16.05.2008, 14:23
deswegen mein ich ja das es hilfreich ist sein wissen zu teilen ;)

gotthummer
16.05.2008, 14:26
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

mcseeder
17.05.2008, 17:08
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 (http://hilfe.ovh.de/AdministrationRescueModus) 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/iptables/files/iptables-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? (http://hilfe.ovh.de/tiki-editpage.php?page=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:




!/bin/sh


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

gotthummer
17.05.2008, 17:18
Was aber auch wieder so nicht ganz richtig ist denn wenn ich mir zb das angucke

21 - ftp (FTP-Server - zur Benutzung des FTP-Dienstes offen lassen).

las ich den ftp ja nicht auf port 21 laufen den dann wiß ja jeder das der offen ist daher mach ich es immer so das ich wenn ich ftp einrichte nen anderen port als 21 wähle zb daher beisst sich diese anleitung wieder etwas mit anderen bzw sachen die mann machen sollte und deswegen sag ich ja auch einfach nach anleitungen vorgehen bzw copy und paste machen bringt nicht viel mann mus ssich auch ein wenig gedanken machen und wissen was mann wann und wie tut

DirtyPlaya
27.07.2008, 10:32
also mit deisem htacces und psswd komm ich net klar kann mir da mal einer helfen



--======================================--
--== automatische Beitragszusammenführung ==--
--======================================--


DirtyPlaya schrieb nach 27 Stunden, 13 Minuten und 26 Sekunden:

also ich hab das so gemacht

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

Toubelshooting Anpassung der Mysqlanbindung an den Indianer
#Php.ini anpassen
Debian Root Server ~# mcedit /etc/php5/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

#Neustart Debian Apache und fertig
Debian Root Server ~# /etc/init.d/apache2 restart
#und fertig ist ihr Vhost

Und nicht vergessen in phpmyadmin einen neuen user anzulegen mit passwort und die alten löschen nachdem du dich mit dem neuen user eingeloggt hast!!!

Den Port für winscp änderst du in der datei /etc/ssh/sshd_config
/etc/init.d/ssh restart

um das passwort zu ändern # passwd

email einrichten
aptitude install postfix
/etc/init.d/postfix restart

phpmyadmin über .htaccess absichern
htaccess-Generator - fueralles.de HomepageTools (http://www.fueralles.de/htaccess-Generator.html)

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>

Key-basierte SSH Logins mit PuTTY
HowtoForge Linux Tutorials » Key-basierte SSH Logins mit PuTTY (http://www.howtoforge.de/howto/key-basierte-ssh-logins-mit-putty/2/)