vaheeD khoshnouD

linux, mikrotik, macosx

DoS attack protection

Written by vaheeD on January 2, 2013
4.00 avg. rating (84% score) - 1 vote

In general

DoS (Denial of Service) attack can cause overloading of router. Which means what CPU usage goes to 100% and router could be unreachable with timeouts. Every operations on packets which can take significant CPU power like firewalling(filter, nat, mangle), logging, queues can cause overloading if too much packets per second arrives to router.

Generally there is no perfect solution to protect against DoS attacks. Every service could be overloaded by too much requests. So there are only some methods for minimization impact of attack.

  • Get more powerfull router or server
  • Get more faster uplink
  • Reduce number of firewall rules, queues and other packet handling actions
  • Track attack path and block it closer to source (by upstream provider)

Types

TCP SYN flood

More info: SYN flood.

Diagnose

  • Are there too much connections with syn-sent state present?
/ip firewall connection print
  • Is too much packets per second going through interface?
/interface monitor-traffic ether3
  • Is CPU usage 100%?
/system resource monitor
  • Are there too much suspicious connections?
/tool torch

Protection

  • Limit incoming connections

Address with too much connections can be added to address list for futher blocking.

/ip firewall filter add chain=input protocol=tcp connection-limit=LIMIT,32  \
action=add-src-to-address-list  address-list=blocked-addr address-list-timeout=1d

where LIMIT is max. number of connection per IP. LIMIT should be 100 or higher as many services use multiple connection (HTTP, Torrent, other P2P programs).

  • Action tarpit

Instead of simply droping attackers packets(action=drop) router can capture and hold connections and with enough powerfull router is can kill the attacker.

/ip firewall filter add chain=input protocol=tcp src-address-list=blocked-addr \
connection-limit=3,32 action=tarpit
  • SYN filtering

Some advanced filtering can by applied to tcp packet state.

/ip firewall filter add chain=forward protocol=tcp tcp-flags=syn connection-state=new \
action=jump jump-target=SYN-Protect comment="SYN Flood protect" disabled=yes
/ip firewall filter add chain=SYN-Protect protocol=tcp tcp-flags=syn limit=400,5 connection-state=new \
action=accept comment="" disabled=no
/ip firewall filter add chain=SYN-Protect protocol=tcp tcp-flags=syn connection-state=new \
action=drop comment="" disabled=no

“syn limit=400” is a threshold, just enable rule in forward for syn packets to get dropped (for excessive amount of new connection)

  • SYN cookies

More info: SYN cookies

/ip firewall connection tracking set tcp-syncookie=yes

 

4.00 avg. rating (84% score) - 1 vote

Posted Under: MikroTik, Security

About vaheeD

Leave a Reply

Your email address will not be published. Required fields are marked *

Protected by WP Anti Spam