Page 1 of 1

Server wird angegriffen jedoch keine logs

Posted: 2005-07-08 23:50
by memo1003
Hallo habe seit einpaar tagen das selbe problem.
Mein server wird von einem ip angegriffen, während dem angriff können keine seiten aufgerufen werden. "Seite kann nicht angezeigt werden"
Die Ip wird nirgendswo geloggt, bei apache2 warn nicht und auch nirgendswo anders. Alle anderen IP´s werden geloggt.

So ich gebe ein netstat -tplaen ich sehe dann eine IP der ca 60 verbindungen hat. Nur diese ip wird nirgends geloggt. Ich deneke mal der greift direkt die IP an.

Ich gebe ein iptables -I input -s (ip des angreifers) -j DROP

danach /etc/init.d/apache2 restart und wegg is es alles geht wieder, biss dieser person einen neuen IP bekommt denke das er sich neu verbindet ins internet.

Was kann ich da machen? bei IP trace wird die IP nicht aufgelöst es kommt einfach der fehler time out. sogar während des angriffs.

Server ist von s4y linux suse und confixx.

jedoch hat glaube ich es nichts mit dem webserver zu tun sondern direkt mit dem server.

Habe schon s4y angerufen die konnten keine infos geben, haben angeboten gegen einen bestimmten preis einen firewall zu instalieren der dann eine IP höchstens 10 verbindungen zulässt.

falls ihr irgendwelche loggs braucht kann ich es sofort reinstellen.

Danke schonmal im voraus

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-09 01:01
by aquajo
Kann es seien, dass dein Apache nur maximal 60 Verbindungen annimmt, und der Angreifer einfach 60 Verbindungen aufmacht, aber keine Daten anfordert?!

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-09 01:49
by memo1003
wo kann ich das einsehen? in httpd.conf habe ich nichts gefunden.

könnte es sein das es vieleicht vom my.cnf her kommt?
die sieht so aus:

Code: Select all

[client]
#password	= your_password
port		= 3306
socket		= /var/lib/mysql/mysql.sock


[mysqld]
port		= 3306
socket		= /var/lib/mysql/mysql.sock
skip-locking 
skip-innodb 
query_cache_limit=1M 
query_cache_size=32M 
query_cache_type=1 
max_connections=2000 
interactive_timeout=100 
wait_timeout=100 
connect_timeout=10 
thread_cache_size=128 
key_buffer=16M 
join_buffer=1M 
max_allowed_packet=16M 
table_cache=1024 
record_buffer=1M 
sort_buffer_size=2M 
read_buffer_size=2M 
max_connect_errors=10

thread_concurrency=4 
myisam_sort_buffer_size=64M 
server-id       = 1

[safe_mysqld]
err-log=/var/lib/mysql/mysqld.log

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash


[isamchk]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M

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

[mysqlhotcopy]
interactive-timeout
Es läuft ein foren server drauf (phpbb hosting)

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-09 10:48
by aquajo
memo1003 wrote:wo kann ich das einsehen? in httpd.conf habe ich nichts gefunden.
Bei mir gibbet nen Entrag 'MaxClients' ...

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-10 05:22
by memo1003
bei mir gibts das nicht.
Kannst du mal bitte die ganze zeile reinkopieren?

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-10 12:45
by aquajo
da fehlen nur noch viele Leerzeichen/Tabs und die Zahl, ist also die Zeile.

Es kann natürlich seien das die Option irgendwo anders konfiguriert wird, in einer Datei die included wird, oder garnicht gesetzt wird und ein defaultwert genommen wird der einkompiliert ist.

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-10 14:56
by lord_pinhead
Eine Möglichkeit besteht noch Kerneloptionen zu setzen in /proc

Code: Select all

EXTDEV=eth0

echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# Sperre Verbindungsaufbau nach 3 SYN-Paketen
# Standard ist 6
echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
# Sperre Verbindungsaufbau nach 3 SYN/ACK-Paketen
# Standard ist 6
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries 

# Routing und Arpschutz
echo 0 > /proc/sys/net/ipv4/conf/$EXTDEV/accept_source_route
echo 2 > /proc/sys/net/ipv4/conf/$EXTDEV/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/$EXTDEV/accept_redirects
echo 1000 > /proc/sys/net/ipv4/neigh/$EXTDEV/locktime
echo 0 > /proc/sys/net/ipv4/conf/$EXTDEV/proxy_arp

iptables -A INPUT  -i $EXTDEV -p tcp --dport 80 -j LOG  --log-prefix "Apache Zugriff " --log-level 6 -m limit --limit 3/m
Das sollte eigentlich schon reichen um den DoS zu unterbinden. Den Apache kannst du noch zusätzlich Konfigurieren mit den maxClients, was aber glaub ich nicht mehr erforderlich sein sollte. Aber Doppelt hält besser ;)

Code: Select all

MaxClients 10
Das kommt dann in die httpd.conf rein bzw. du musst es umändern.

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-10 15:30
by Joe User
Du hast drei CPUs im System?

Bitte zur httpd.conf hinzufügen und/oder vorhandene Optionen ersetzen:

Code: Select all

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule prefork.c>
    StartServers         5
    MinSpareServers      5
    MaxSpareServers     10
    ServerLimit        150
    MaxClients         150
    MaxRequestsPerChild  0
</IfModule>
<IfModule worker.c>
    StartServers         2
    MinSpareThreads     25
    MaxSpareThreads     75
    MaxClients         150
    ThreadsPerChild     25
    MaxRequestsPerChild  0
</IfModule>
my.cnf (Pfade anpassen!):

Code: Select all

[client]
port                  = 3306
socket                = /var/run/mysqld/mysqld.sock

[mysqld_safe]
err-log               = /var/log/mysql/mysql.err

[mysqld]
user                  = mysql
pid-file              = /var/run/mysqld/mysqld.pid
socket                = /var/run/mysqld/mysqld.sock
log-error             = /var/log/mysql/mysqld.err
basedir               = /usr
datadir               = /var/lib/mysql
tmpdir                = /tmp
language              = /usr/share/mysql/english
bind-address          = 127.0.0.1
port                  = 3306
server-id             = 1
skip-locking
skip-networking
skip-name-resolve
skip-external-locking
local-infile = 0
key_buffer_size = 64M
sort_buffer_size = 4M
read_buffer_size = 1M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_allowed_packet = 16M
net_buffer_length = 8K
thread_stack = 128K
thread_cache = 8
table_cache = 256
query_cache_type = 1
query_cache_size = 16M
query_cache_limit = 1M
thread_concurrency = 2
skip-innodb
#innodb_buffer_pool_size = 32M
#innodb_additional_mem_pool_size = 4M
#innodb_data_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend:max:128M
#innodb_log_file_size = 8M
#innodb_log_buffer_size = 8M
#innodb_log_files_in_group = 2
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
#bdb_cache_size = 4M
#bdb_max_lock = 10000

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
#no-auto-rehash
#safe-updates

[isamchk]
key_buffer_size = 64M
sort_buffer_size = 4M
read_buffer_size = 1M
write_buffer_size = 1M

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 4M
read_buffer_size = 1M
write_buffer_size = 1M

[mysqlhotcopy]
interactive-timeout
php.ini anpassen:

Code: Select all

sed 's/(.*allow_persistent).*/1 = Off/g' -i /path/to/php.ini
MySQL und Apache restarten.

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-11 03:54
by memo1003
@Joe User eigentlich ist nur ein CPU,

Code: Select all

Timeout 300 
KeepAlive On 
MaxKeepAliveRequests 100 
KeepAliveTimeout 15 
<IfModule prefork.c> 
    StartServers         5 
    MinSpareServers      5 
    MaxSpareServers     10 
    ServerLimit        150 
    MaxClients         150 
    MaxRequestsPerChild  0 
</IfModule> 
<IfModule worker.c> 
    StartServers         2 
    MinSpareThreads     25 
    MaxSpareThreads     75 
    MaxClients         150 
    ThreadsPerChild     25 
    MaxRequestsPerChild  0 
</IfModule> 
hat funktioniert danke dafür vielmals, aber my.cnf hat nicht funktioniert, alle pfade habe ich richtig geändert. Sobald ich es so ändere ist mysql nicht erreichbar. Ich habe die pfade von meinem orig my.cnf genommen. Kann ja eigentlich nicht falsch sein oder?

@Lord_Pinhead Danke für dein tip nur problem ist habe nicht gefunden o dies reingehört:

Code: Select all

EXTDEV=eth0 

echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow 
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout 
# Sperre Verbindungsaufbau nach 3 SYN-Paketen 
# Standard ist 6 
echo 3 > /proc/sys/net/ipv4/tcp_syn_retries 
# Sperre Verbindungsaufbau nach 3 SYN/ACK-Paketen 
# Standard ist 6 
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries 

# Routing und Arpschutz 
echo 0 > /proc/sys/net/ipv4/conf/$EXTDEV/accept_source_route 
echo 2 > /proc/sys/net/ipv4/conf/$EXTDEV/rp_filter 
echo 0 > /proc/sys/net/ipv4/conf/$EXTDEV/accept_redirects 
echo 1000 > /proc/sys/net/ipv4/neigh/$EXTDEV/locktime 
echo 0 > /proc/sys/net/ipv4/conf/$EXTDEV/proxy_arp 

iptables -A INPUT  -i $EXTDEV -p tcp --dport 80 -j LOG  --log-prefix "Apache Zugriff " --log-level 6 -m limit --limit 3/m
habe nur mal die MaxClients 10 ind httpd.conf eingefügt. Auch dir vielmals danke.

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-11 09:54
by andreask2
memo1003 wrote:[..]aber my.cnf hat nicht funktioniert, alle pfade habe ich richtig geändert. Sobald ich es so ändere ist mysql nicht erreichbar. Ich habe die pfade von meinem orig my.cnf genommen. Kann ja eigentlich nicht falsch sein oder?
Es wird sinnvollerweise "skip-networking" verwendet, das führt aber dazu, dass der MySQL-Server nicht mehr per TCP/IP bzw. localhost erreichbar ist, sondern nur noch per Unix-Socket "/var/run/mysqld/mysqld.sock"

Falls Du z.B. mit PHP fest eine Verbindung per TCP/IP konfiguriert hast, kannst Du im Manual nachlesen, wie man an Stelle eines Hostnamens zu einem lokalen Socket verbindet: http://de3.php.net/mysql_connect

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-11 10:46
by memo1003
Aha... danke dir vielmals, jetzt klappt es

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-12 18:17
by eof__
php.ini anpassen:

Code: Select all

sed 's/(.*allow_persistent).*/1 = Off/g' -i /path/to/php.ini
...
Wobei das noch in eine Datei umgeleitet werden will, richtig?
Ich glaube mit Perl geht das ersetzen und schreiben, mit sed
nur das ersetzen.

:wink:

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-12 20:14
by Joe User
eof__ wrote:Wobei das noch in eine Datei umgeleitet werden will, richtig?
GNU sed ab Version 4 besitzt hierfür die Option -i (man sed).
eof__ wrote:Ich glaube mit Perl geht das ersetzen und schreiben, mit sed
nur das ersetzen.
sed kann ebenfalls Beides ;)

IMO ganz brauchbar:
http://sed.sourceforge.net/sedfaq.html
http://www.student.northpark.edu/pement ... d1line.txt

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-13 10:52
by eof__
Alles klar. Gibts hier auch.
Vermutlich habe ich beim Testen was falsch gemacht.
"The -i option is a non-standard FreeBSD extension
and may not be available on other operating systems."
Lese grade Useless Use of cat award:twisted:

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-14 00:48
by lord_pinhead
memo1003 wrote:@Joe User eigentlich ist nur ein CPU,

@Lord_Pinhead Danke für dein tip nur problem ist habe nicht gefunden o dies reingehört:
Pass auf, relativ easy. Mach eine Datei in deinen Homedir (touch ~/proc.sh && chmod +x ~/proc.sh) dann mach die Datei mit einen Editor auf den du magst und pastest einfach den Code mal rein:

Code: Select all

#!/bin/bash
EXTDEV=eth0

echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries
echo 0 > /proc/sys/net/ipv4/conf/$EXTDEV/accept_source_route
echo 2 > /proc/sys/net/ipv4/conf/$EXTDEV/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/$EXTDEV/accept_redirects
echo 1000 > /proc/sys/net/ipv4/neigh/$EXTDEV/locktime
echo 0 > /proc/sys/net/ipv4/conf/$EXTDEV/proxy_arp

iptables -A INPUT  -i $EXTDEV -p tcp --dport 80 -j LOG  --log-prefix "Apache Zugriff " --log-level 6 -m limit --limit 3/m
Dann mit ~/proc.sh mal ausführen und schon sollte der Käse gegessen sein :) Sorry wenn ich etwas verwirrend geredet habe. Kurzum, die Netzwerkoptionen die der Linuxkernel hat werden etwas abgeändert und sollte eigentlich schon relativ nutzbringend sein, jedenfalls bin ich bisher recht glücklich damit und schon so manchen Versuch einer Serverauslastung dadurch entgangen :)

Btw.: Mach mal man iptables , das durchlesen und dann mal ein Script überlegen wie du dann auch noch allgemeine DoS unterbinden kannst ;) Google ist auch ein guter Freund wenn dir nix einfällt :)

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-14 11:42
by Joe User
Warum /root/proc.sh statt /etc/sysctl.conf?

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-15 01:42
by lord_pinhead
Wäre auch möglich, aber dann müsste er ja rebooten :) Hab ich aber net dran gedacht *fg* Ich meld glaub ich mal Urlaub an irgendwo, wo es keine Rechner gibt :D

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-15 08:19
by captaincrunch
Seit wann muss man für sysctl-Ã?nderungen rebooten?

Re: Server wird angegriffen jedoch keine logs

Posted: 2005-07-15 11:43
by lord_pinhead
Stimmt, sysctl -p tuts auch :roll: