1 (10.01.2012 20:18:45 отредактировано Vanek2012)

Добрый день, во-первых какую книгу можете посоветовать по настройке фаервола Iptables и вторую об ос Debian для новичка. Для полного новичка, а то одну уже купил Unix для студента Ю.С. Магда что вообще больше половины не понял, сразу перешли ядру, сразу пошло программирование на С++, вообщем автор из дурдома вышел. Мне не понравилось.
Конкретно мне необходимо большей части установка nginx, php, mysql и настройка iptables.
Т.к. нас часто мучает DDOS, хостеры помогли избавиться написав правила нам, мы пошли читать гайды, на многое открылись глаза, но все-таки вопросов достаточно.
1. Объясните пожалуйста работу этих 4 правил, по подробнее пожалуйста для чайника:
    a) iptables -A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP
    b) iptables -A INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP
    c) iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m hashlimit --hashlimit-above 1/min --hashlimit-burst 30 --hashlimit-mode srcip --hashlimit-name BLOCK -j DROP
    d) iptables -A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec --limit-burst 4 -j DROP

2. Как сделать так, чтобы правила не удалялись если ПК перезагрузить?
3. Как организовать такое правило в iptables:
   a) Если число единовременных подключений с одно IP адреса на сайт превысило 10, то создать правило такое с этим IP адресом
    iptables -A INPUT -s 1.2.3.4 -j DROP.
   b) Если число суммарных подключений с одного IP адреса, на сайт, в течении минуты, превысило 70, то создать правило такое с этим IP адресом iptables -A INPUT -s 1.2.3.4 -j DROP.

Спасибо!

2

Сейчас в краце.Создаешь в /etc/init.d/iptables файл IPTABLE
1) Делаешь   cd /etc/init.d/ (Переходишь в каталог init.d)
2) Делаешь nano /etc/init.d/iptables "Будем заполнять ваш iptables"(nano это редактор *nix, можешь пользоваться любым как удобнее(Только не на винде это полнейший кал, работать после винды не будет))
3) Далее шапка скрипта авто запуска правил iptables

### BEGIN INIT INFO
# Provides: defaultdaemon
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

У меня она выглядит так на debian 6
Эту шапку вставляешь в начало файла, потом Enter и после этого вставляешь свои правила.
4) Если пользовался "nano" после заполнения делаешь ctrl+o enter, ctrl+x (Сохраняешь и закрываешь редактор, X Закрыть, О сохранить)
5) Даем файлу права на запуск  chmod +x /etc/init.d/iptables  enter
6)Добавим ваш скрипт в default 

rc-update add iptables default

7) Reboot
P.S. Делал так же, писал по памяти, не суди строго. Должно бы работать.
На всякий случай можно задействовать crontab
Туда можно добавить простенький скрипт такого содержания

#!/bin/bash
iptables -A INPUT -i (eth0 сетевой интерфейс у меня eth0 у тебя что угодно) -p tcp --dport 22  -j ACCEPT

Crontab находится в /etc/crontab там есть примеры ну почитаешь если не понятно, там пишешь путь к файлу время и расположение скрипта.
Это вариан нужен для настройки на удаленной машине, если что то накосячишь, то крон запустит скрипт и откроет тебе SSH доступ к машине.
Надеюсь что помог, когда то был таким же как ты и искал решения этой проблемки =) ЭТО БЫЛО ТАК ДАВНО!

3

Vanek2012 пишет:

Как сделать так, чтобы правила не удалялись если ПК перезагрузить?

Самый простой вариант написать скрипт и выполнять его вместе с запуском системы.
Для автозапуска есть конструкции if-up/down, - каталоги из которых подхватываются стартовые файлы:

/etc/network//if-up.d/
/etc/network/if-down.d/       
/etc/network/if-post-down.d/  
/etc/network/if-pre-up.d/     
/etc/network/if-up.d/         
/etc/network/run/ 

те скрипт нужно сделать исполняемым и закинуть в нужный каталог.
Другой вариант запускать скрипт прописав его исполнение в /etc/network/interfaces - для чего есть man interfaces или сюда можно посмотреть тыц.
Пример использования iptables-save/iptables-restore:
/etc/network/interfaces

auto eth0
  iface eth0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    up iptables-restore
    down iptables-save
    # Также можно:
    pre-up <command>
    post-up <command>
Shkrest пишет:

Сейчас в краце.Создаешь в /etc/init.d/iptables файл IPTABLE

Не надо советовать новичку писать свои инит скрипты, и лезть руками в /etc/init.d/ тоже не надо.

Shkrest пишет:

когда то был таким же как ты и искал решения этой проблемки =) ЭТО БЫЛО ТАК ДАВНО!

Сейчас вопросы задаешь на том же уровне что и ТС : Netfilter IPTABLE

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

4 (20.10.2012 18:32:24 отредактировано Shkrest)

Ну вопросы у меня касаемо дргова.У меня порт дырявый и иптаблес не помогает решить.
после переустановки за 10 мин поставил правила, без гемора все просто.
Способ рабочий.
И на мой взгляд выполняется в 10 команд в консоли.А на твой сколько нужно потратить времени?
!!!Умный Поправь цепочки в той теме.А нет, рот закрой и не критикуй.\
Сейчас я знаю гаразда больше, чем знал с начала.Не говорю что гуру, так бы сюда не писал.

5

Shkrest, остынь дней 5, правила почитай, вопросы правильно научись задавать.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

6 (02.11.2012 16:12:15 отредактировано Shkrest)

А что тебе не понравилось в моем описание?Что я не так написал?Или этот способ не рабочий?Не пойму...Я понимаю что нахамил, прошу прощения, но способ то рабочий ведь так?И почему вы не советуете его использовать?Может и мне стоит переделать?Поясните.