Page 1 of 1

Angriffe abblocken

Posted: 2010-12-13 20:23
by newbeer
Hallo,

ich muss gestehen noch nicht viel Ahnung von Linux/Apache usw. zu haben. Habe allerdings schon seit Jahren einen Vserver und der lief einwandfrei.
Allerdings gings letzte Woche der Server öfters in die Knie weil Speicher ausging. Das hat mich veranlasst mal nachzusehen was los ist und nach einigem einlesen und nachschauen hab ich rausgefunden das verschiedene IP´s laut den Logs massenhaft Anfragen stellen die alle auf: /srv/www/vhosts/default/htdocs/config oder fastenv enden.
Das machen manche stundenlang und dann geht der Server in die Knie. Ist ein kleiner mit wenig RAM.
Jetzt dachte ich ich installier mal fail2ban und hab das auch hinbekommen, doch irgendwie klappt das beim SSH und bei Mail, aber nicht bei diesen Anfragen. Jetzt hab ich mal die ganz perversen wie 76.73.108.142 die auch im Netz als Flooder auftaucht blockiert. Mit der Plesk Firewall.

Was kann ich tun um solche Attacken zu unterbinden und bitte wenn möglich für Dummies erklärt. Musste erst mal die ganze Woche mich mit Befehlen und Strukturen auseinandersetzen die ich gar nicht kannte und nun langsam erst begreife.

Momentan filtere ich aus den Logs die nervigsten IP´s raus und schaue ob sie statisch sind. Wenn ja sperre ich sie in Plesk als Regel. Dazu überwache ich die Error_log mit tail -f die ganze zeit auf dem zweiten Monitor.
Seit ich einige IP´s gesperrt habe ist nun erst mal Ruhe und der Server läuft endlich mal länger ls 1 Stunde am Stück.
Aber das müsste doch auch automatisch gehen.

Den SSH-Port habe ich auch mal von der 22 weggelegt.

Re: Angriffe abblocken

Posted: 2010-12-13 21:04
by Joe User
Poste bitte mal 10 bis 20 vollständige und unverfälschte Logzeilen von den fragwürdigen Anfragen. Kommen solche Anfragen nur auf dem Apache an oder sind auch andere Dienste (Mail, SSH, etc.) davon betroffen?

BTW: fail2ban und Co helfen übrigens nicht wirklich und können auch mal zu unerwünschten Nebenwirkungen führen. Ohne ausreichend Erfahrung mit IPTables sollte man daher lieber auf diese Tools verzichten.

Re: Angriffe abblocken

Posted: 2010-12-13 22:12
by newbeer
Das ist nur ein Ausschnitt. Die eine IP hat das im Sekundentakt abgefragt bis der Server in die Knie ging.

Code: Select all

[Mon Dec 13 20:18:31 2010] [error] [client 76.73.108.142] File does not exist: /srv/www/vhosts/default/htdocs/config
[Mon Dec 13 20:18:45 2010] [error] [client 76.73.108.142] File does not exist: /srv/www/vhosts/default/htdocs/config
[Mon Dec 13 20:18:45 2010] [error] [client 76.73.108.142] File does not exist: /srv/www/vhosts/default/htdocs/config
[Mon Dec 13 20:19:00 2010] [error] [client 76.73.108.142] File does not exist: /srv/www/vhosts/default/htdocs/config
[Mon Dec 13 20:19:00 2010] [error] [client 76.73.108.142] File does not exist: /srv/www/vhosts/default/htdocs/config
[Mon Dec 13 20:22:57 2010] [error] [client 173.192.212.157] File does not exist: /srv/www/vhosts/default/htdocs/config
[Mon Dec 13 20:22:58 2010] [error] [client 173.192.212.157] File does not exist: /srv/www/vhosts/default/htdocs/config
[Mon Dec 13 20:27:45 2010] [error] [client 94.163.42.119] File does not exist: /srv/www/vhosts/default/htdocs/fastenv
[Mon Dec 13 20:32:27 2010] [error] [client 81.137.6.81] File does not exist: /srv/www/vhosts/default/htdocs/config
[Mon Dec 13 20:40:09 2010] [error] [client 94.163.42.119] File does not exist: /srv/www/vhosts/default/htdocs/fastenv
[Mon Dec 13 21:12:21 2010] [error] [client 81.137.6.81] File does not exist: /srv/www/vhosts/default/htdocs/config
[Mon Dec 13 21:13:25 2010] [error] [client 173.193.242.214] File does not exist: /srv/www/vhosts/default/htdocs/fastenv
[Mon Dec 13 21:23:38 2010] [error] [client 173.193.242.214] File does not exist: /srv/www/vhosts/default/htdocs/fastenv
[Mon Dec 13 21:37:16 2010] [error] [client 203.73.222.228] File does not exist: /srv/www/vhosts/default/htdocs/mailto
[Mon Dec 13 21:37:16 2010] [error] [client 203.73.222.228] File does not exist: /srv/www/vhosts/default/htdocs/mailto
[Mon Dec 13 21:48:42 2010] [error] [client 174.133.93.130] File does not exist: /srv/www/vhosts/default/htdocs/phpmyadmin
[Mon Dec 13 21:48:42 2010] [error] [client 174.133.93.130] File does not exist: /srv/www/vhosts/default/htdocs/phpMyAdmin
[Mon Dec 13 21:50:29 2010] [error] [client 174.133.93.130] File does not exist: /srv/www/vhosts/default/htdocs/phpmyadmin
[Mon Dec 13 22:10:46 2010] [error] [client 213.180.209.124] script '/srv/www/vhosts/default/htdocs/check.php' not found or unable to stat
[Mon Dec 13 22:10:47 2010] [error] [client 213.180.209.124] script '/srv/www/vhosts/default/htdocs/check.php' not found or unable to stat



Re: Angriffe abblocken

Posted: 2010-12-13 22:37
by newbeer
Nun ja, der Server ging immer mit Out of Memory offline.
Erst seit ich diese eine IP geblockt habe rennt er stabil.
In den Logs warens immer eine Anfrage alle 4 Sekunden.

Re: Angriffe abblocken

Posted: 2010-12-13 22:41
by Joe User
OK, dann gib uns mal ein paar Daten zum VServer: CPU, RAM und wie wird virtualisiert?
Ich tippe wegen /srv mal auf openSUSE, welche Version?
Wie sieht der Prefork-Abschnitt in der Apache-Config aus?
Wie sieht die my.cnf des MySQL-Servers aus?
Alle aktuellen Updates installiert?

Re: Angriffe abblocken

Posted: 2010-12-13 23:18
by newbeer
Parallels Plesk Panel-Version 9.5.3
Betriebssystem Linux 2.6.18-028stab070.5
CPU AuthenticAMD, AMD Opteron(tm) Processor 148
RAM min 128MB max 512MB

Updates alle aktuellen drauf.
Prforksettings kann ich nicht finden, da meine httpd.conf leer ist. Gibts das noch woanders?


Die my.conf sieht so aus:

Code: Select all

#
# The replication master for this slave - required
#master-host     =   <hostname>
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user     =   <username>
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password =   <password>
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port     =  <port>
#
# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin

# Point the following paths to different dedicated disks
#tmpdir         = /tmp/
#log-update     = /path-to-dedicated-directory/hostname

# Uncomment the following if you are using BDB tables
#bdb_cache_size = 4M
#bdb_max_lock = 10000

skip-innodb
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

# The safe_mysqld script
[safe_mysqld]
log-error=/var/lib/mysql/mysqld.log

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
log        = /var/log/mysqld_multi.log
# user       = multi_admin
# password   = secret

# If you want to use mysqld_multi uncomment 1 or more mysqld sections
# below or add your own ones.

# WARNING
# --------
# If you uncomment mysqld1 than make absolutely sure, that database mysql,
# configured above, is not started.  This may result in corrupted data!
# [mysqld1]
# port       = 3306
# datadir    = /var/lib/mysql
# pid-file   = /var/lib/mysql/mysqld.pid
# socket     = /var/lib/mysql/mysql.sock
# user       = mysql

# [mysqld2]
# port       = 3307
# datadir    = /var/lib/mysql-databases/mysqld2
# pid-file   = /var/lib/mysql-databases/mysqld2/mysql.pid
# socket     = /var/lib/mysql-databases/mysqld2/mysql.sock
# user       = mysql

# [mysqld3]
# port       = 3308
# datadir    = /var/lib/mysql-databases/mysqld3
# pid-file   = /var/lib/mysql-databases/mysqld3/mysql.pid
# socket     = /var/lib/mysql-databases/mysqld3/mysql.sock
# user       = mysql

# [mysqld6]
# port       = 3309
# datadir    = /var/lib/mysql-databases/mysqld6
# pid-file   = /var/lib/mysql-databases/mysqld6/mysql.pid
# socket     = /var/lib/mysql-databases/mysqld6/mysql.sock
# user       = mysql

Re: Angriffe abblocken

Posted: 2010-12-14 04:12
by coltseavers
wenn der Apache stark belastet ist, erzeugt er mehr und mehr Prozesse (forken), die den RAM belegen.
Wenn ein Prozess z.B. 5MB belegt solltest Du nicht mehr als 10 Stück gleichzeitig laufen haben, damit auch noch n bisschen was für den Rest des Systems übrig bleibt.

Da dieses Limit offenbar nicht in der Apache-Konfiguration gesetzt ist, macht der Server ganz schnell mal Feierabend, sobald der Apache mit dem Forken loslegt.

Du solltest schauen wieviel RAM ein Apache-Prozess ungefähr belegt und dann in der Apache-Konfiguration entsprechend ein Limit einstellen, das festlegt, wieviele Apache-Prozesse gleichzeitig laufen.

Ne deutsche Erklärung dazu gibt es hier:
http://httpd.apache.org/docs/2.0/mod/prefork.html

Solange Du diese Limits nicht ausreichend streng setzt (und bei 128MB sollten sie schon recht streng gesetzt werden), wird der Server jedes Mal abrauchen, sobald mal n bisschen was los ist auf der Mühle.

Alternativ vielleicht mal n Paket mit etwas mehr RAM nehmen. 256MB-Server kosten ja auch nich so viel mehr (wenn überhaupt).

Gruß,
Colt

Re: Angriffe abblocken

Posted: 2010-12-14 07:36
by newbeer
Hm, danke. Das bestätigt nur was ich vermutete. Habe deshalb sicherheitshalber mal ein Upgrade bestellt. Da mein Server noch ein Alter ist, sind die jetzigen einiges besser. Nun habe ich 2GB Ram zugesichert und 4GB max. Das muss dicke reichen.
Übrigends seit ich die IP´s ausgesperrt habe ist der Server das erste mal Nachts stabil durchgelaufen.