Wie installiere ich Apache in chroot?

Apache, Lighttpd, nginx, Cherokee
kami33
Posts: 10
Joined: 2009-02-07 13:31

Wie installiere ich Apache in chroot?

Post by kami33 » 2009-02-07 13:36

Hallo,
ich bin dabei mein Debian-Server zu chroot-en. D. h., ich möchte Apache, MySql, PHP absichern. Also installiere ich Apache in chroot.

1. Was ist mit MySql und PHP? Muß man sie auch als chroot installieren, oder ist es nur bei Apache-Server üblich?

2. Wie sollte ich vorgehen, bzw. welcher Weg ist besser?
http://www.debian.org/doc/manuals/secur ... nv.de.html

oder mit “mod_chroot“ :
http://www.howtoforge.com/chrooting-apa ... ebian-etch

Kennt jemand vielleicht noch eine ausführliche Beschreibung um Apache (oder LAMP) zu chrooten?

Gruß Kami

User avatar
rudelgurke
Systemtester
Systemtester
Posts: 408
Joined: 2008-03-12 05:36

Re: Wie installiere ich Apache in chroot?

Post by rudelgurke » 2009-02-07 16:09

Zu 1.

MySQL muss nicht in der "chroot" Umgebung laufen. Dazu kannst du MySQL entweder:

Eigene Chroot Umgebung spendieren und dann den MySQL Socket via "ln" in den Apache Chroot linken oder MySQL Verbindungen über TCP/IP laufen lassen

Oder kein Chroot für MySQL und den MySQL Socket im Chroot von Apache erstellen lassen - bspw. in der "my.cnf"

[mysqld]
...
socket = /verzeichnis/des/apache_chroot/tmp/mysql.sock

Es ist vielleicht generell keine gute Idee zusätzliche Software die auch nach "außerhalb" zugegriffen werden kann (Mailserver, Datenbank usw. usw.) alle mit in die Chroot Umgebung zu installieren, was natürlich geht, damit am Ende aber sich eine eventuelle Angriffsfläche auch erhöht.

kami33
Posts: 10
Joined: 2009-02-07 13:31

Re: Wie installiere ich Apache in chroot?

Post by kami33 » 2009-02-07 21:59

Danke für Eure ausführlichen und hilfreichen Antworten!
Ich habe vor einen Root-Server (bei meinem Provider) inkl. Postfix, Apache, PHP und MySQL im Internet zu stellen.

Ich mach mich gleich daran, und versuche erst mal grsecurity zu installieren. Natürlich erstmal an einem Test-Server zu Hause. Mal sehen ob ich es schaffe.

Wenn ich richtig verstanden habe, sollte ich am besten 3-Verschiedene Chroot-Umgebeung für Apache, PHP und MySQL erzeugen.

Dann mach ich mich daran, mal sehen wie weit ich kommen werde. 8-[

Gruß Kami

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Wie installiere ich Apache in chroot?

Post by Joe User » 2009-02-18 15:13

OT-Diskussion abgetrennt: viewtopic.php?f=77&t=50060
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

kami33
Posts: 10
Joined: 2009-02-07 13:31

Wie kann ich Apache2 mit mod_chroot in chroot-Umgebung zu erstellen?

Post by kami33 » 2009-02-18 21:49

Hallo,
Ich versuche Apache2 mit mod_chroot in chroot-Umgebung zu erstellen.

Die Vorgehenweise laut: http://www.howtoforge.de/howto/apache2- ... -chrooten/

Code: Select all

# apt-get install libapache2-mod-chroot
Reading package lists... Done
Building dependency tree... Done
Package libapache2-mod-chroot is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package libapache2-mod-chroot has no installation candidate


Dann habe ich das Packet libapache2-mod-chroot_0.5-5_i386.deb herunter geladen: http://packages.debian.org/etch/libapache-mod-layout

Code: Select all

# apt-get install libapache2-mod-chroot_0.5-5_i386.deb
Reading package lists... Done
Building dependency tree... Done
E: Couldn't find package libapache2-mod-chroot_0.5-5_i386.deb

Also, was mache ich falsch? ](*,)

Meine Datei /etc/apt/sources.list:

Code: Select all

# 
# deb cdrom:[Debian GNU/Linux 4.0 r6 _Etch_ - Official i386 kde-CD Binary-1 20081219-16:25]/ etch contrib main

deb cdrom:[Debian GNU/Linux 4.0 r6 _Etch_ - Official i386 kde-CD Binary-1 20081219-16:25]/ etch contrib main

deb http://ftp.de.debian.org/debian/ etch main
deb-src http://ftp.de.debian.org/debian/ etch main

deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib

deb http://www.backports.org/debian etch-backports main contrib


Vielen Dank im Voraus,
Kami

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Wie kann ich Apache2 mit mod_chroot in chroot-Umgebung zu erstellen?

Post by Roger Wilco » 2009-02-18 23:42

kami33 wrote:Also, was mache ich falsch? ](*,)

Du benutzt apt-get, wenn du dpkg benutzen willst...

Wenn dein apt-get/aptitude das Paket nicht findet, ist an deiner sources.list etwas madig oder du hast noch nie `aptitude update` ausgeführt.

kami33
Posts: 10
Joined: 2009-02-07 13:31

Re: Wie installiere ich Apache in chroot?

Post by kami33 » 2009-02-19 22:23

Dank für den Hinweis. Ich habe in der sources.list anstatt http://ftp.de ... geändert in http://ftp2.de ... und mod_chroot hat sich installieren lassen. :)
Gruß Kami

kami33
Posts: 10
Joined: 2009-02-07 13:31

Re: Wie installiere ich Apache in chroot?

Post by kami33 » 2009-02-21 22:49

Hallo,
ich habe Apache2, php und MySQL installiert und getestet (z. B. Datenbankverbindung), alles hat richtig funktioniert.

Dann habe ich versucht Apache2 mit mod_chroot in chroot-Umgebung zu erstellen. Laut Tutorial: http://www.howtoforge.de/howto/apache2- ... -chrooten/

Html- und php-Seiten funktionieren. Aber die Datenbankverbindung kann ich leider nicht erstellen.

Code: Select all

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)(2002)


Kann mir jemand einen Tipp geben? Ich komme selbst nicht weiter.

Vielen Dank im Voraus
Kami

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Wie installiere ich Apache in chroot?

Post by Roger Wilco » 2009-02-21 22:56

Überleg doch mal. Hast du den UNIX-Socket für MySQL in der chroot-Umgebung verfügbar gemacht? Nein, hast du nicht. Benutze TCP/IP für die Verbindung zu MySQL.

User avatar
rudelgurke
Systemtester
Systemtester
Posts: 408
Joined: 2008-03-12 05:36

Re: Wie installiere ich Apache in chroot?

Post by rudelgurke » 2009-02-22 07:23

Siehe MySQL Dokumentation:

[mysqld]
socket=...

Und dann den Pfad zur Chroot Umgebung damit der Socket dort erstellt wird. Alternativ kann man auch via

ln /var/run/mysqld/mysqld.sock /das/chroot/verzeichnis/deines/apache/var/run/mysqld/

benutzen oder wie schon gesagt - TCP Verbindungen.

kami33
Posts: 10
Joined: 2009-02-07 13:31

Re: Wie installiere ich Apache in chroot?

Post by kami33 » 2009-02-23 00:55

Echt super, es hat sehr gut funktioniert. :-D

- TCP: anstatt “localhost“ habe “127.0.0.1“ eingetragen.

- ln /var/run/mysqld/mysqld.sock /var/www/var/run/mysqld/

- Ich habe überall in /etc/mysql/debian.cnf und /etc/mysql/my.cnf den Pfad
/var/run/mysqld/mysqld.sock deändert in: /var/www/var/run/mysqld/mysqld.sock
und /var/run/mysqld/pid-file deändert in: /var/www/var/run/mysqld/pid-file/mysqld.pid

1- Welche methode ist besser (Sicherheit bzw. Performance)?

Wenn ich Apach2 starte/ wieder starte, bekomme ich folgende Meldung:

Code: Select all

# /etc/init.d/apache2 restart
Forcing reload of web server (apache2)...httpd (pid 3833?) not running
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
 failed!


Trotz des Fehlers kann ich php, HTML ausführen und DB-Verbindung haben.
Erst wenn ich folgenden Link erstelle:

Code: Select all

 ln -s /var/www/var/run/apache2.pid /var/run 

kann ich Apache2 ohne Fehlermeldung starte/ wieder starten.
2- Bringe ich durch diese Verlinkung eventuell Sicherheitslücken in Chroot Umgebung hinein?

phpMyAdmin läuft nicht mehr:

Code: Select all

Forbidden
You don't have permission to access /phpmyadmin/phpmyadmin on this server.
Apache/2.2.3 (Debian) PHP/5.2.0-8+etch13 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_chroot/0.5 Server at localhost Port 80


3- Wie kann ich phpMyAdmin zum laufen bringeh?
Bei mir ist der Pfad um php-Scripts oder HTML auszuführen: /var/www/apache2-default

Vielen Dank im Voraus
Gruß

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Wie installiere ich Apache in chroot?

Post by daemotron » 2009-02-23 08:56

kami33 wrote:Echt super, es hat sehr gut funktioniert. :-D

- TCP: anstatt “localhost“ habe “127.0.0.1“ eingetragen.

- ln /var/run/mysqld/mysqld.sock /var/www/var/run/mysqld/

- Ich habe überall in /etc/mysql/debian.cnf und /etc/mysql/my.cnf den Pfad
/var/run/mysqld/mysqld.sock deändert in: /var/www/var/run/mysqld/mysqld.sock
und /var/run/mysqld/pid-file deändert in: /var/www/var/run/mysqld/pid-file/mysqld.pid

Das mit dem PID-File war überflüssig, die benötigt eigentlich nur das init-Skript von MySQL.

kami33 wrote:1- Welche methode ist besser (Sicherheit bzw. Performance)?

Unix Sockets sind minimal performanter. Wenn Du einen Paketfilter (iptables) einsetzt, sind Unix Sockets mehr als nur minimal performanter. Hard Links in einer Chroot-Umgebung sind allerdings eine Einladung zum Ausbruch... (stark vereinfachte/gekürzte Erklärung: mit ein bisschen Trickserei kommt man an das File Handle, das MySQL für den Socket aufgemacht hat, und kann damit dem Kernel den /-Kontext unterjubeln, unter dem MySQL läuft.)

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Wie installiere ich Apache in chroot?

Post by Joe User » 2009-02-23 09:10

Du hast die Funktionsweise von Chroots noch nicht verstanden und mit Deiner Vorgehensweise mehrere (potentielle) Sicherheitslücken geöffnet. Bei Deinem aktuellen Wissensstand ist Dein System ohne Chroots deutlich sicherer...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

kami33
Posts: 10
Joined: 2009-02-07 13:31

Re: Wie installiere ich Apache in chroot?

Post by kami33 » 2009-02-23 12:57

Danke für den Hinweis, ich habe /var/www/var/run/mysqld/pid-file/mysqld.pid rückgängig gemacht, und MySQL kann fehlerfrei starten.

Also es ist zu empfehlen, den Weg mit dem Socket zu wählen, d.h. in meinem Fall mysqld.sock im Verzeichnis /var/www/var/run/mysqld/mysqld.sock erstellen lassen.

Leider habe ich immer noch das Problem mit Apache2 (sieh oben).

Hat irgendjemand eine Idee, woran das liegen könnte? Bin über jeden Hinweis sehr dankbar.

Gruß

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Wie installiere ich Apache in chroot?

Post by Roger Wilco » 2009-02-23 18:56


kami33
Posts: 10
Joined: 2009-02-07 13:31

Re: Wie installiere ich Apache in chroot?

Post by kami33 » 2009-02-23 22:03

Was soll die Verlinkung und die Hinweise? Ist es verboten in den anderen Forums nach einer Lösung zu suchen?

Eben, wie man sieht, fleißig suche ich nach einer Lösung. Ich habe bis jetzt einige Tutorials bzw. Bücher gelesen und versuche mich in das Thema “chroot“ einzuarbeiten.

Wo liegt das Problem? Vor allem wenn es ums Thema Sicherheit geht, ist es mir lieber, wenn ich mehrere Meinungen hören würde.

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Wie installiere ich Apache in chroot?

Post by Roger Wilco » 2009-02-23 22:13

Findest du es fair, dass du die Benutzer von insgesamt 3 Foren für dich suchen lässt und es nicht einmal für nötig hältst, auf die verschiedenen Beiträge zu verweisen? Sollen wir alles 3 mal durchkauen? Sollen wir alles 3 mal fragen? Ist unsere Zeit weniger wert als deine?

Für mich ist ab hier EOD.

EDIT: Und noch zwei:
http://www.debianforum.de/forum/viewtop ... 2&p=682309
http://www.debianforum.de/forum/viewtop ... 7&t=108040