PDA

Просмотр полной версии : Syn Attack


Serzh CS
25.12.2009, 22:01
Ребят как защититься от Syn Attack на Ubuntu 9.04 ? ;)

svesve
25.12.2009, 23:21
Ребят как защититься от Syn Attack на Ubuntu 9.04 ? ;)


в консоле из под рута

#Уменьшаем возможность DoS при уменьшении таймаутов
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog

# Включаем SYN COOKIES
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max


через iptables


### Цепь для сброса (DROP) флуд пакетов SYN-s ######
/sbin/iptables -N syn-flood
/sbin/iptables -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
/sbin/iptables -A syn-flood -j LOG --log-prefix "SYN flood: "
/sbin/iptables -A syn-flood -j DROP

Serzh CS
26.12.2009, 14:50
:mad: Атака попрежнему прокатывает ...
Если даже открыт 80 порт а вебсервера нету то атака всеравно идёт! :mad: :mad: :mad:

MAQUEEN
26.12.2009, 15:18
Заходим под рут:

1. cd /root/downloads или другая директория где вы храните файлы.

2. wget http://www.r-fx.ca/downloads/apf-current.tar.gz

3. tar -xvzf apf-current.tar.gz

4. cd apf-0.9.3_3/ или какая у вас там версия.

5. ./install.sh
Получите сообщение

.: APF installed
Install path: /etc/apf
Config path: /etc/apf/conf.apf
Executable path: /usr/local/sbin/apf

6. Редактируем конфиг: vi /etc/apf/conf.apf
Базовые настройки, читайте README для полных настроек

Находим: DEVEL_MODE="1"
Заменяем на: DEVEL_MODE="0"

Удостоверяемся:

SYSCTL_SYN ="1"
SYSCTL_SYNCOOKIES="1"


7. Настраиваем порты

Приблизительно:
(Все это на ваше усмотрение)

Common ingress (inbound) ports (Входящие порты)
# Common ingress (inbound) TCP ports
IG_TCP_CPORTS="21,22,25,53,80,110,143,443,6000_7000"
#
# Common ingress (inbound) UDP ports
IG_UDP_CPORTS="53"

Common egress (outbound) ports (исходящие порты)
# Common egress (outbound) TCP ports
EG_TCP_CPORTS="21,25,80,443,43"
#
# Common egress (outbound) UDP ports
EG_UDP_CPORTS="20,21,53"

8. Запускаем
/usr/local/sbin/apf -s

Другием команды:
usage /usr/local/sbin/apf [OPTION]
-s|--start ............. загрузить правила файрвола
-r|--restart ........... перезагрузить
-f|--flush|--stop ...... остановить
-l|--list .............. показать правила
-st|--status ........... статус
-a HOST|--allow HOST ... добавить host (IP/FQDN) в allow_hosts.rules
-d HOST|--deny HOST .... добавить host (IP/FQDN) to deny_hosts.rules
или :
(iptables и apf должны быть установлены)
Загружаем (D)DoS-Deflate
wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh

svesve
26.12.2009, 16:31
2 MAQUEEN вообщето тоже самое я описал выше, без использования apf.


2 TC

tcpdump что показывает?
ботнет большой?? мжет проще перекрыть подсть?

Serzh CS
26.12.2009, 22:50
Атакуют из нескольких подсетей ...

svesve
05.01.2010, 17:58
Режь подсети и не парься

ntldr
28.02.2010, 23:47
Вот мой фаер собственного сочинения. Долго мучался с защитой от флуда сырыми SYN пакетами, вроде как получилось. Не претендую на правильность, мой опыт в дебиане - 3 месяца.
Буду рад если кто-то дополнит ;)

iptables -F #очищаем правила
iptables -X syn-flood #удаляем цепочку если она есть
iptables -A FORWARD -j DROP #запрещаем форвард пакетов, мы же не роутер
iptables -A INPUT -i lo -j ACCEPT # разрешаем все внутренние коннекты
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #Сразу же принимаем все пакеты по установленным соединениям (не секурно, но для производительности гуд)

iptables -N syn-flood # цепочка по обработке входящих соединений на 80 порт
iptables -A INPUT -p tcp --syn --dport 80 -m state --state NEW -j syn-flood # Если установлен только флаг SYN (обычно такими пакетами и флудят, они же являются первыми при "трехразовом рукопожатии"). В обработку идут только новые соединения
iptables -A syn-flood -p tcp -m connlimit --connlimit-above 10 -j DROP # запрещаем одновременный коннект с 1 айпи не более 10 раз
iptables -A syn-flood -p tcp -m limit --limit 5/s --limit-burst 10 -j RETURN # если этот пакет приходит не чаще 5 раз за секунду, то проверка пройдена.
iptables -A syn-flood -j DROP # иначе дропаем

iptables -A INPUT -p tcp --dport 80 ! --syn -m state --state NEW -j DROP # если новый пакет пришел в обход рукопожатия, то дропаем его

iptables -A INPUT -p tcp --dport 80 -j ACCEPT # теперь разрешаем вход на 80 порт

iptables -A INPUT --source 123.45.67.89 -j ACCEPT # Разрешаем себе любые соединения (123.45.67.89 - свой айпи) например чтобы управлять по ssh
iptables -A INPUT -j DROP # все остальные пакеты не проходят

ntldr
01.03.2010, 02:01
iptables -F
iptables -X syn-flood
iptables -A FORWARD -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -N syn-flood
iptables -A INPUT -p tcp --syn --dport 80 -m state --state NEW -j syn-flood
iptables -A syn-flood -p tcp -m limit --limit 3/second --limit-burst 10 -j RETURN
iptables -A syn-flood -j DROP


iptables -A INPUT -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT --source айпи.админа.оло.ло -j ACCEPT

iptables -A INPUT -j DROP


p.s. вот эти правила правильнее. То есть, если идет более 10 SYN/секунду, то ограничиваемся 3 syn+ack от сервера, таким образом можно установить не более 10 соединений.
Тестил, пашет. Жаль, в iptables не предусмотрено автобанилки :(