Zu viele Zugriffe über eine IP - was tun?

Rund um die Sicherheit des Systems und die Applikationen
sbrinkmann
Posts: 34
Joined: 2002-11-21 23:23
Location: Solingen

Zu viele Zugriffe über eine IP - was tun?

Post by sbrinkmann » 2005-07-20 18:53

Hallo!

Heute hat es meinen Exklusiv Server von 1&1 erwischt: Weil innerhalb von zwei Minuten rund 400 Zugriffe von ein und derselben IP kam, war die Kiste platt und 1&1 hat sie nach zwei Stunden scheinbar neu gestartet. Begründung von der Hotline: Die Load war zu hoch, so dass der Server nicht mehr auf Pings reagierte. Also ist ein Techniker hingefahren und hat ihn neu gestartet.

Meine Frage an die Experten: Die IP-Adresse habe ich und ich habe auch schon den Provider dieser IP angemailt. Mir geht es jetzt eher um die Frage, ob ich mich irgendwie davor schützen kann, dass ein solcher Fehler erneut passiert.

Danke
Sebastian

ticool
Posts: 37
Joined: 2002-08-20 18:34
Location: Hamburg

Re: Zu viele Zugriffe über eine IP - was tun?

Post by ticool » 2005-07-20 20:02

Du kannst gar nichts dagegen machen, da du einen Exclusive Server hast...

In diesem Fall müsste / muss 1und1 zuständig sein!

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Zu viele Zugriffe über eine IP - was tun?

Post by alexander newald » 2005-07-20 20:20

Der Load zu hoch, dass ein Linux Rechner nicht mehr auf Ping reagiert??

Eigendlich antwortet der Kernel sogar noch, wenn man ihm den Prozessor klaut :wink: Na mal im Ernst. Auf ein Ping sollte ein Linux Server immer antworten (Ausser der Kernel hat sich mit einem Panic weggehängt)

aldee
Posts: 93
Joined: 2002-10-03 16:45

Re: Zu viele Zugriffe über eine IP - was tun?

Post by aldee » 2005-07-20 23:24

... oder wenn die Load zu hoch ist ;-). Nimm einfach an, dass der Server mit der Anzahl der auszuliefernden dynamisch generierten Webseiten nicht nachkommt.

Je länger das "Gehämmere" andauert, desto "schlimmer" wird das Problem werden. Bis irgendwann gar nichts mehr geht. Sprich: Der Server hat keinen Speicher mehr, Swap ist dicht und irgendwann ist dann eben Ende.

Tritt zwar außer bei provozierter Nicht-Erreichbarkeit wohl so gut wie ausschließlich nur bei extrem "populären" (oder geDDoSten) Seiten ein, aber es kommt vor.

Schreibe doch einfach ein Skript, das pro Minute 1000-2000 Kinder macht, die jeweils eine (unpassend) große dynamisch generierte Seite (inklusive exorbitant umfangreicher SQL-Abfrage) abrufen und lasse das ganze auf einen Server los, auf dem PHP nicht als Modul läuft und der auch prinzipiell keine Sicherheitsvorkehrungen betreffs des maximal in Anspruch genommenen Speichers hat.

Und dann stell' dir zusätzlich einfach noch vor, dass das tatsächlich eingesetzte Skript noch viel mehr Speicher frisst.

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Zu viele Zugriffe über eine IP - was tun?

Post by alexander newald » 2005-07-21 00:05

Dann ist aber der Ram + Swap zu Ende und die Kiste hat sich weggehängt. Ein Linux Rechner, der "nur" durch zu hohen Load nicht mehr per Ping erreichbar ist halte ich für unwahrscheinlich. Die Antwort für ein Ping kommt vom Kernel selber.

dodolin
Posts: 3840
Joined: 2003-01-21 01:59
Location: Sinsheim/Karlsruhe

Re: Zu viele Zugriffe über eine IP - was tun?

Post by dodolin » 2005-07-21 05:42

Dann ist aber der Ram + Swap zu Ende und die Kiste hat sich weggehängt.
Fuer einen Echo Reply benoetigt man RAM und Swap?
Die Antwort für ein Ping kommt vom Kernel selber.
Die hohe Load betrifft auch den Kernel selber.

captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Zu viele Zugriffe über eine IP - was tun?

Post by captaincrunch » 2005-07-21 08:49

Fuer einen Echo Reply benoetigt man RAM und Swap?)
Streng genommen ja. ;)
Die Antwort für ein Ping kommt vom Kernel selber.
Woher auch sonst? ;)

Mal ernsthaft (aus meinen Erfahrungen heraus): Normalerweise wird eine Linux-Kiste grundsätzlich fast immer auf "ping" antworten (bis auf ein paar losses vielleicht), da ICMP aber ein weniger wichtiges Subsystem ist, muss dem nicht so sein.
Ich für meinen Teil würde daher auch die Lasttheorie mehr oder weniger vergessen. Find dich damit ab, und lass dem Verursacher dafür auf die Finger klopfen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

manarak
Posts: 86
Joined: 2004-04-04 17:23

Re: Zu viele Zugriffe über eine IP - was tun?

Post by manarak » 2005-07-21 09:20

ja man kann sich davor schützen - zumindest glaube ich, dass mod_dosevasive da etwas machen kann. google mal danach. Ich habe es auf meinem server installiert.

mausgreck
Posts: 84
Joined: 2005-03-19 17:22

Re: Zu viele Zugriffe über eine IP - was tun?

Post by mausgreck » 2005-07-21 10:25

Kann mir bitte wer erklären, wie man eine Linux-Kiste dazu bringt, sich durch Last aufzuhängen?

Ich habe auf meinem alt erwürdigen Laptop (500MHz, 128MB RAM, Kernel 2.6.11) alle möglichen Varianten dieses Programms ausprobiert:

Code: Select all

#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define PAGESIZE	4096
#define NUMPAGES	5120	/* 20 MB */

static void mem()
{
	int *mem = malloc(NUMPAGES * PAGESIZE);
	int dummy = 0;
	int pos = 0;

	/* 8 Prozesse * 20 MB = 160 MB */
	fork();
	fork();
	fork();

	/* touch every page */
	for(;;) {
		mem[pos * PAGESIZE / sizeof(int)] = dummy;
		dummy += mem[pos * PAGESIZE / sizeof(int) + 1];
		if(++pos >= NUMPAGES)
			pos = 0;
	}
}

static void cpu()
{
	int a=1, b=1;
	fork();
	fork();
	fork();
	for(;;) {
		int tmp = a;
		a = b;
		b += tmp;
	}
}

#define	FILESIZE	10485760	/* 10 MB */
#define BLOCKS		10
static void file()
{
	pid_t pid;
	char mem[FILESIZE / BLOCKS];
	int fd;
	int i;

	fork();
	fork();
	fork();
	pid = getpid();

	sprintf(mem, "file_%d", pid);
	fd = open(mem, O_CREAT | O_RDWR, 0755);
	for(;;) {
		lseek(fd, 0, SEEK_SET);
		for(i = 0; i < BLOCKS; i++) {
			write(fd, mem, FILESIZE / BLOCKS);
		}
		lseek(fd, 0, SEEK_SET);
		for(i = 0; i < BLOCKS; i++) {
			read(fd, mem, FILESIZE / BLOCKS);
		}
	}
}

int main()
{
	if(fork()) file();
	if(fork()) cpu();
	mem();

	/* Can't happen */
	return 0;
}
Mit dem Resultat, dass entweder ein paar Prozesse abgeschossen wurden, oder/und dass die Maschine etwas träge wurde. Aber die Pings sind (von ein paar Ausreissern abgesehn) nie wirklich über 0.5ms gekommen. Das einzige, was mir da noch einfällt ist eine fork()-Bomb artige Situation, aber ein Apache ist doch so konfiguriert, dass er das nicht macht, oder? Also wie geht das!?

Was noch dazu kommt: der OP redet von 400 Zugriffen in 2min, das sind 3.3 Zugriffe pro Sekunde. Das sollte ja sogar ein 486 bringen... Sehr dubios das ganze.

kawfy
Posts: 307
Joined: 2002-08-08 23:45

Hotlineaussagen

Post by kawfy » 2005-07-21 11:47

Alexander Newald wrote:Der Load zu hoch, dass ein Linux Rechner nicht mehr auf Ping reagiert??

Eigendlich antwortet der Kernel sogar noch, wenn man ihm den Prozessor klaut :wink: Na mal im Ernst. Auf ein Ping sollte ein Linux Server immer antworten (Ausser der Kernel hat sich mit einem Panic weggehängt)
8) Keine Panik. Ich würde einfach mal die Aussage der Hotline nicht für bare Münze nehmen. Wer tut das schon? :P Da bleibt immer ein "Interpretationsspielraum". Wenn der Server überlastet war, ging wohl an der Shell nix mehr. Dann hilft nur noch ein Magic-SysRq-Key oder ein Reset (*aua*).

kawfy
Posts: 307
Joined: 2002-08-08 23:45

Re: Zu viele Zugriffe über eine IP - was tun?

Post by kawfy » 2005-07-21 11:51

sbrinkmann wrote:Heute hat es meinen Exklusiv Server von 1&1 erwischt: Weil innerhalb von zwei Minuten rund 400 Zugriffe von ein und derselben IP kam, war die Kiste platt und 1&1 hat sie nach zwei Stunden scheinbar neu gestartet. [...]
Mir geht es jetzt eher um die Frage, ob ich mich irgendwie davor schützen kann, dass ein solcher Fehler erneut passiert.
:roll: auch wenn so ein managed Server offtopic ist ... :?: welche Art von Zugriffen waren das? Nur HTTP? Dann hilft doch ein "Deny from ..." in einer .htaccess-Datei, selbst auf einem managed Server.

Allerdings erwartet man bei einem managed Server gewisse Schutzmechanismen, die es bei der Standardinstallation eines "Root-Servers" nicht gibt.