Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: помогите настроить iptables  (Прочитано 1219 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ikar78

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
помогите настроить iptables
« : 27 Октябрь 2011, 13:47:15 »
начали ДДОСить сервер, столкнулся с проблемой настройки  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

    ####################################

после запуска сего -сервер вообще не пингуется-подскажите где не прав и ткните в мануал где почитать
« Последнее редактирование: 27 Октябрь 2011, 13:58:52 от ikar78 »

Оффлайн xkool

  • Старожил
  • *
  • Сообщений: 1459
  • do not love my brain
    • Просмотр профиля
Re: помогите настроить iptables
« Ответ #1 : 27 Октябрь 2011, 13:56:54 »
Лучше маленький доллар, чем большое спасибо.

Оффлайн ikar78

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: помогите настроить iptables
« Ответ #2 : 27 Октябрь 2011, 13:58:13 »
благодарю

 

Страница сгенерирована за 0.09 секунд. Запросов: 25.