начали ДДОСить сервер, столкнулся с проблемой настройки iptables
Linux ubuntu 2.6.32-25-server #45-Ubuntu SMP Sat Oct 16 20:06:58 UTC 2010 x86_64 GNU/Linux
вот мой конфиг
#! /bin/sh
IPTABLES="/sbin/iptables"
####################################
#В этом блоке описываем сетевые интерфейсы для удобного применения в последующих правилах
internet="ppp0"
external="eth0"
####################################
$IPTABLES -F
$IPTABLES -X
####################################
#Для отлова пакетов можно включить логирование, для активации уберите символ # в начале строки
$IPTABLES -A INPUT -p tcp -j LOG --log-prefix "iptables: INPUT tcp packets "
$IPTABLES -A INPUT -p udp -j LOG --log-prefix "iptables: INPUT udp packets "
####################################
####################################
# Разрешаем доступ по интерфесу обратной петли
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
####################################
####################################
# C себя разрешаем всё
$IPTABLES -A OUTPUT -m state --state NEW -j ACCEPT
####################################
####################################
# Позволяем входящие и исходящие соединения, инициированные уже установленными соединениями
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
####################################
####################################
# Разрешаем прохождение DHCP запросов через iptables.
$IPTABLES -A INPUT -p udp -m udp --dport 68 --sport 67 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m udp --dport 67 --sport 68 -j ACCEPT
####################################
####################################
# какие_то важные пакеты
$IPTABLES -I INPUT -p ah -j ACCEPT
$IPTABLES -I INPUT -p esp -j ACCEPT
####################################
########################################################################
# Защита #
########################################################################
####################################
# Дропаем все с ошибками
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
####################################
####################################
# порт сканнеры
$IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A INPUT -m state --state NEW -p tcp --tcp-flags ALL NONE -j DROP
####################################
####################################
# Дропаем все icmp
$IPTABLES -A INPUT -p icmp -j DROP
####################################
####################################
# антиспуффинг
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -N SYN_FLOOD
$IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD
$IPTABLES -A SYN_FLOOD -m limit --limit 2/s --limit-burst 6 -j RETURN
$IPTABLES -A SYN_FLOOD -j DROP
####################################
####################################
# Блокируем все попытки входящих TCP-соединений не SYN-пакетами (либо ошибка, либо атака)
$IPTABLES -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
####################################
####################################
#Вводим ограничения для новых подключений по SSH (не больше 4 в минуту)
#Если пользуетесь ssh для улучшения безопасности измените дефолтный порт на отличный от 22*
####################################
$IPTABLES -A INPUT -i $external -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH: "
$IPTABLES -A INPUT -i $external -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
####################################
######################################################
#Настройки на выбор, если надо - раскомментируйте и поправьте под себя
######################################################
# Вводим ограничения для новых подключений по WWW (не больше 50 соедининий с одного ip)
$IPTABLES -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j LOG --log-prefix "WWW: "
$IPTABLES -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
####################################
####################################
# Вводим ограничения для новых подключений по WWW (не более 5 в секунду)
$IPTABLES -A INPUT -p tcp --dport 80 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -m limit --limit 5/sec --limit-burst 5 -j ACCEPT
####################################
####################################
# Вводим ограничения для новых подключений по FTP (не больше 50 соедининий с одного ip)
$IPTABLES -A INPUT -p tcp --dport 21 -m connlimit --connlimit-above 50 -j DROP
####################################
####################################
# Вводим ограничения для новых подключений по FTP (не больше 5 в секунду)
$IPTABLES -A INPUT -m conntrack --ctstate NEW -p tcp --dport 21 -m hashlimit --hashlimit-upto 5/sec --hashlimit-mode srcip --hashlimit-name ftphash -j ACCEPT
####################################
####################################
# Настройки для Хаба
# дропаем, если с ip новых соединений больше чем 10
$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m conntrack --ctstate NEW -m limit --limit 10/min --limit-burst 10 -j ACCEPT
# дропаем если с ip коннектов больше чем 20
$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j LOG --log-prefix "iptables: hub-connlimit "
$IPTABLES -A INPUT -p tcp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j REJECT
$IPTABLES -A INPUT -p udp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j LOG --log-prefix "iptables: hub-connlimit "
$IPTABLES -A INPUT -p udp -m multiport --dports 411,4111 -m connlimit --connlimit-above 20 -j REJECT
###############################################################
#таблица черного списка для dc++| замените путь к файлу на корректный в вашей системе
# В нем в каждой новой будем указывать черные ip-адреса, например:
#1.1.1.1
#2.2.2.2
#3.3.3.3
#в файле допускаются комментарии
###############################################################
####################################
BLOCKDB="/opt/iptables/ip.blocked"
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
$IPTABLES -A INPUT -p tcp -i $external -s $i -m multiport --dports 411,4111 -j DROP
$IPTABLES -A INPUT -p udp -i $external -s $i -m multiport --dports 411,4111 -j DROP
done
#
#вечный бан по ip для всех соединений к серверу
#баним особо наглых
BLOCKDB="/opt/iptables/ip-all.blocked"
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
$IPTABLES -A INPUT -p tcp -i $external -s $i -j DROP
$IPTABLES -A INPUT -p udp -i $external -s $i -j DROP
done
####################################
####################################
#дропаем запрос имен netbios
$IPTABLES -A INPUT -p udp ! -i $internet --dport 137:138 -j DROP
####################################
####################################
#дропаем мультикаст
$IPTABLES -A INPUT -d 224.0.0.1/32 -j DROP
$IPTABLES -A OUTPUT -d 224.0.0.1/32 -j DROP
$IPTABLES -A FORWARD -d 224.0.0.1/32 -j DROP
####################################
########################################################################
# ОБЩЕЕ ДЛЯ ВСЕХ #
########################################################################
#Разрешаем доступ к ftp
# FTP
$IPTABLES -A INPUT -m conntrack --ctstate NEW -p tcp --sport 1024:65535 --dport 20:21 -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 1024:65535 --dport 49000:49500 -j ACCEPT
####################################
####################################
#Разрешаем доступ к веб-серверу
# WWW
$IPTABLES -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m tcp -m multiport --sports 80,443 -j ACCEPT
####################################
####################################
# Доступ к Хаб-серверу
$IPTABLES -A INPUT -p tcp -m tcp -m multiport --dports 411,4111 -j ACCEPT
$IPTABLES -A INPUT -p udp -m udp -m multiport --dports 411,4111 -j ACCEPT
####################################
########################################################################
# ВНЕШКА #
########################################################################
####################################
# Доступ к DNS-серверам
$IPTABLES -A OUTPUT -p tcp -m tcp -o $internet --dport 53 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m udp -o $internet --dport 53 -j ACCEPT
####################################
####################################
#Добавляем правила по умолчанию
$IPTABLES -A INPUT -i $internet -j DROP
#$IPTABLES -A INPUT -j LOG --log-prefix "iptables: input drop "
$IPTABLES -P INPUT DROP
#$IPTABLES -A OUTPUT -j LOG --log-prefix "iptables: output drop "
$IPTABLES -P OUTPUT DROP
#$IPTABLES -A FORWARD -j LOG --log-prefix "iptables: forward drop "
$IPTABLES -P FORWARD DROP
####################################
после запуска сего -сервер вообще не пингуется-подскажите где не прав и ткните в мануал где почитать