phpbar.de logo

Mailinglisten-Archive

Server sicher installieren

Server sicher installieren

Guido Stepken mysql-de_(at)_lists.bttr.org
Sun, 16 Jun 2002 10:41:33 +0200


Am Sonntag den, 16. Juni 2002, um 08:13, schrieb Georg Richter:

> On Saturday, 15. June 2002 15:28, Guido Stepken wrote:
> Moin,
>>
>> SuSE hat alle Dämonen noch nicht einmal in einer CHROOT Umgebung
>> installiert, im Internet - Betrieb völliger Schrott, weil - wenn ein
>> Dienst eine Sicherheitslücke hat, gleich die ganze Maschine platt ist
>> ...Aus einem User-Account kommen fast alle Hacker zu einem ROOT
>> Account ... das ist bei SuSE recht einfach ...
>
> Hmm .. kann ich so nicht nachvollziehen, kannst Du das evtl. mal 
> präzisieren?!
>

Die Kapselung von Dämonen in einer CHROOT Umgebung sorgt dafür, daß wenn 
ein Angereifer mit einem Buffer Overflow in einen Dienst eindringt, und 
einen Prozess mit den entsprechenden Userrechten des Dämons starten 
kann, daß dieser nur auf Verzeichnisse in diesem Unterverzeichnis 
zugreifen kann. Zugriffe auf /proc/, /etc/, /bin
/tmp /home/xxx ... sind dann nicht möglich. Der Schaden bleibt also dann 
lokal begrenzt....Wenn allerdings der Hacker Dateien in die CHROOT 
Umgebung hochladen kann, kann er immer noch nicht aus der Umgebung 
ausbrechen, er kann aber root Rechte erlangen und hat somit die 
Kontrolle über die Prozesse, jedoch nur aus der chroot Umgebung heraus. 
Er kann aber dann sich in der chroot Umgebung mit mknod alle Devices aus 
/dev als Kopie anlegen, deren Reche verändern und damit hat er Zugriff 
auf die Hardware..Nach mounten des /proc/ Baumes in /chroot/proc hat er 
dann die volle Kontrolle über alle Dienste, kann diese stilllegen und in 
der chroot Umgebung dann seine eigene Dienste starten ....einen Keyboard 
sniffer, einen Netzwerksniffer und dann über den Fernwartungszugang in 
den normalen Zugang der Maschine eindringen, dort dann root Rechte 
erlangen und kann dann die komplette Maschine plattmachen. Einige 
Patches gegen so etwas liefert openwall und LIDS.


>>
>> Ich empfehle:
>>
>> rpm -e mysql.3.22.x.
>
> Das muss ja ein Uralt-Suse sein, die 3.22 ist zwei oder drei Jahre alt, 
> und
> wird auf nicht mehr offiziell supported.
>

Ich meinte dies stellvertretend für alle von SuSE installierten MySQL ...

> Wer ein aktuelles MySQL der 3-er oder 4-er Version verwendet, hat auch 
> keine
> Probleme mit CHROOT-Umgebbungen, da die Einstellungen für LOAD DATA und
> SELECT INTO OUTFILE bereits disabled sind by default.
>

User sollten aber einen DUMP machen können, oder nicht ?

>
>> Auf dem Webserver würde ich unbedingt den Port 3306 nach Außen mit
>> --skip-networking abschalten, da ansonsten jemand 10.000 Verbindungen
>> aufmacht, und die Kiste dann plötzlich 10.000 Thread startet -> DoS !!!
>> Maschine tot !
>
> Der Regelbetrieb dürfte allerdings anders aussehen. Wie willst Du denn 
> mit
> --skip-networking noch Backup bzw. Replication auf einen anderen Server
> machen, bzw. von verschiedenen Webservern auf Deinen DB-Server 
> zugreifen?!

Wenn Du den Dienste offenläßt, erleidest Du als Diensteanbieter recht 
schnell einen DoS Angriff ....

>
> Normalerweise macht man sowas mit einer Firewall, und gibt den Port für
> einzelne Maschinen frei.

>> Alternativ, gegen Überlastungsangriffe ...
>>
>> #!/bin/bash
>> ./libexec/mysqld  --log --log-slow-queries --set-variable
>> max_user_connections=20 --set-variable=max_connections=100
>> --language=german --skip-networking --safe-show-database  --user=mysql
>> --socket=/tmp/mysql.sock --enable-locking&
>>
>> So, und nur so installiert und betreibt man Dienste unter UNIX.
>
> Naja, das ist Ansichtssache:
>
> -safe-show-database ist im aktuellen 4-er tree deprecated (vermutl. 
> auch in
> 3.23.50) und sollte mittels Grant ersetzt werden
>

Nett, hatte ich noch nicht gesehen ...

> --log geht auf die Performance. Wenn man in einer Produktionsumgebung 
> schon
> ein Logfile haben will, nimmt man log-bin.
>

Performance .... naja so wild ist es nicht ...

> --skip-networking (s.o.) sollte durch Firewall übernommen werden
>
> --log-slow-queries macht nur auf dem Entwicklungsrechner Sinn, um die 
> lahmen
> Queries auszumerzen, wenn dann sollte man gleich --log-long-format 
> machen,
> wenn man seine Queries nicht per Explain überprüft.
>

Provider haben aber das Problem, daß sie irgendwelche Scripte von 
irgendwelchen Kunden laufen haben, also die Laufzeit nicht wirklich 
kontrollieren können ....

> max_user_connections=20
> Dient MySQL als Datenbank für ein Webfrontend, bedeutet dass, das max. 
> 20
> User gleichzeitig zugreifen können, da die Application jeweils mit dem
> gleichen User auf die DB zugreift. Im aktuellen 4-er Tree gibts 
> inzwischen
> neue GRANT-Options wie MAX_QUERIES/UPDATES und Connections/Hour.

Fein, scheint mir sehr wichtig zu sein .... ansonsten hat man flugs 
einige tausend Prozesse bzw. MySQL Threads am Hals ....Append - Only 
Attribut fehlt mir ....

>
> Grus  Georg
>

Gru/3, Guido

>
>
> ---
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->>  http://www.4t2.com/mysql
>

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive