23

My server is under DDOS attacks and I want to block the IP that is doing it, what logs should I be looking for to determine the attacker's IP?

1
  • 2
    How is it that you've determined that the server is under attack? It seems to me that you would need to look at some type of TCP session table (netstat on Windows) in order to make this determination and in doing so would see the ip addresses of the hosts connecting to your server, which would make your question moot.
    – joeqwerty
    Jun 18, 2010 at 0:21

9 Answers 9

46
tail -n 10000 yourweblog.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more

Take a look at the top IP addresses. If any stand out from the others, those would be the ones to firewall.

netstat -n|grep :80|cut -c 45-|cut -f 1 -d ':'|sort|uniq -c|sort -nr|more

This will look at the currently active connections to see if there are any IPs connecting to port 80. You might need to alter the cut -c 45- as the IP address may not start at column 45. If someone was doing a UDP flood to your webserver, this would pick it up as well.

On the off chance that neither of these show any IPs that are excessively out of the norm, you would need to assume that you have a botnet attacking you and would need to look for particular patterns in the logs to see what they are doing. A common attack against wordpress sites is:

GET /index.php? HTTP/1.0

If you look through the access logs for your website, you might be able to do something like:

cut -f 2 -d '"' yourweblog.log|cut -f 2 -d ' '|sort|uniq -c|sort -nr|more

which would show you the most commonly hit URLs. You might find that they are hitting a particular script rather than loading the entire site.

cut -f 4 -d '"' yourweblog.log|sort|uniq -c|sort -nr|more

would allow you to see common UserAgents. It is possible that they are using a single UserAgent in their attack.

The trick is to find something in common with the attack traffic that doesn't exist in your normal traffic and then filter that through iptables, mod_rewrite or upstream with your webhost. If you are getting hit with Slowloris, Apache 2.2.15 now has the reqtimeout module which allows you to configure some settings to better protect against Slowloris.

3
  • Thanks so much, I'll definitely look into this this weekend.
    – Ben
    Jun 17, 2010 at 17:23
  • excellent. very useful and simply great....keep it up and god bless you. Allinonescript.com (allinonescript.com) All Over World's Developers Knowledge acquire knowledge.
    – Vadivel S
    Apr 12, 2018 at 6:43
  • As long as you set up your access_log correctly: tail -n 10000 /var/log/httpd/access_log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more This should work. Worked for me,
    – dustbuster
    Nov 30, 2018 at 4:26
7

FYI - You should try to work with your ISP to see if they can block it upstream of you.

4

Some good tips here. I'd also add this:

netstat -an | grep ESTABLISHED | awk '\''{print $5}'\'' | awk -F: '\''{print $1}'\'' | sort | uniq -c | awk '\''{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'\''

Put this under an alias (nn, for instance). This will give you a "graphical" perspective of the ips with more established connections.

Hope this helps.

For those who couldn't get this to work I have fixed the syntax so it runs for me under Ubuntu:

netstat -an|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|awk '{ printf("%s\t%s\t",$2,$1); for (i = 0; i < $1; i++) {printf("*")}; print ""}'
3

My favorite log files to check for DOS attacks are /var/log/secure(under Redhat/Centos/Fedora....) and /var/log/auth.log (under ubuntu,debian...). You will see failed login attempts made from the attacker's source IP, most of the times dictionary based attacks.

1
  • DDOS and Bruteforce (dictionary attack) are not the same.
    – MaXi32
    Mar 18, 2020 at 14:56
0

Which distro?

I think the log is under /var/log/apache2/access.log with Ubuntu... Possibly Debian as well.

Run updatedb as sudo then locate access.log from the command line.

EDIT: I believe though this will only happen if they are hitting you either by requesting pages or directly through port 80. If they are hitting other ports you won't see the info you need there you will need to check and see which process is running on that port and have a look at the connection logs for that process.

0

you could use tcpdump to see which address it is $tcpdump -vv port X if you suspect a particular port

0

If you're under a distributed DOS there is certainly far more than one IP to block and IPs may be forged, you're better of asking your ISP as mfinni said. Also this may be more than a DOS against your server but a decoy to hide the real attack from being detected, so check that all your exposed services are run by up to date software. You may also be interested in mod_dosevasive for apache.

1
  • 2
    IPs are very difficult to forge for web attacks. Since a valid web connection requires a syn/ack handshake, you'd have to be lucky enough to have the forged IP address ack with the right sequence number for your payload from the forged attacking site to work. UDP/ICMP traffic is connectionless and does allow forged packets, but, most hosts block those packets. Jun 17, 2010 at 15:51
0

in order to protect my server I use Fail2Ban a simple script

scans log files like /var/log/pwdfail or /var/log/apache/error_log and bans IP that makes too many password failures. It updates firewall rules to reject the IP address.

http://www.fail2ban.org/wiki/index.php/Main_Page

1
  • fail2ban is not used to protect DDOS attack but only for bruteforce attack. DDOS and Bruteforce are 2 different things.
    – MaXi32
    May 15, 2020 at 13:26
0

First you have to determine the type of DOS. Some attacks are very stealthy but effective (slowloris) , some of them are so heavy that could bring an ISP down (ICMP flood from a higher bandwidth than your ISP source).

After you determine the type of the DOS, call your ISP and ask them if they can filter out the traffic.

I've seen ICMP floods so heavy that we had to ask the upstream ISP to filter out the destination IP via a BGP community.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .