• Страница 1 из 1
  • 1
Модератор форума: Dimitro, LightInDarkness  
Форум » Управление пиратскими серверами » Средства, статьи, обсуждения управления пиратскими серверами » Iptables для начинающих
Iptables для начинающих
Ублюдок-сан
Скаут
Конфигурация ядра ОС Linux

Iptables является совокупностью модуля ядра netfilter и программы iptables. В ядре необходимо включить поддержку модуля netfilter.
Quote (Включение поддержки netfilter)
Networking support --->
Networking options --->
  • Network packet filtering framework (Netfilter) --->
    Core Netfilter Configuration --->
    <*> Netfilter connection tracking support
    -*- Netfilter Xtables support (required for ip_tables)
    <*> "state" match support

  • Включим все опции как скомпиллированные в ядре.

    Установка iptables

    Далее вы должны установить пакет iptables:
    Code
    emerge -av iptables


    Проверка сети

    Предположим, что у нас есть 2 сетевых интерфейса: eth0 - локальная сеть и ppp0 - интернет соединение.
    Проверим работоспособность сети командой ping:
    Code
    ping www.google.com
    ping 192.168.1.78   
    ping 192.168.2.77


    Запуск iptables

    Запустим iptables:
    Code
    /etc/init.d/iptables start

    Эта команда загрузит основные модули и создаст цепочки в ядре Linux. Теперь добавим iptables в автозагрузку:
    Code
    rc-update add iptables default


    Использование /etc/init.d/iptables

    Скрипт /etc/init.d/iptables понимает несколько команд (/etc/init.d/iptables <команда>), некоторые из них:
    start - запуск iptables. Восстанавливает все правила (правила хранятся в /var/lib/iptables/rules-save).
    stop - сброс всех цепочек.
    save - сохранение всех правил.

    Создание правил

    Практически все правила можно привести к виду:
    Code
    iptables -t ТАБЛИЦА -A ЦЕПОЧКА ПАРАМЕТРЫ_ПАКЕТА -j ДЕЙСТВИЕ


    Цепочки


    Все изменения будем проводить над таблицей filter, именно она отвечает за фильтрацию пакетов. В таблице filter существует 3 цепочки: INPUT, OUTPUT и FORWARD. В каждой цепочкe свой "тип" пакетов:
    INPUT - пакеты предназначающиеся Вашему узлу. То есть входящий трафик. Транзитный трафик сюда не попадает.
    FORWARD - пакеты которые предназначены для другого узла, то есть транзитный трафик.
    OUTPUT - пакеты, которые уходят от нашего узла, или исходящий трафик. Транзитный трафик сюда не попадает.
    Работают с цепочками так:
    Code
    iptables <опция> <цепочка>

    Для работы с цепочками предусмотрены следующие опции:
    -A - добавление нового правила в цепочку. Правило будет добавлено в конец цепочки.
    -I - добавление правила не в конец,а туда куда вы укажите. Например команда:
    iptables -I INPUT 2 bla-bla-bla - сделает наше правило вторым.
    -D - удаление правила. Например для удаления пятого правила введите:
    iptables -D INPUT 5
    -F - сброс всех правил цепочки. Нужно, например,при удалении ненужной цепочки.
    -N - создание пользовательской цепочки. Если не хотите создавать кашу в каждой цепочке, то создайте несколько дополнительных цепочек. Синтаксис такой:
    iptables -N ЦЕПОЧКА. Только русские буквы, конечно, использовать нельзя.
    -X - удаление пользовательской цепочки.
    -P - установка политики для цепочки. Например:
    iptables -P ЦЕПОЧКА ПОЛИТИКА

    Параметры пакетов

    Итак по каким параметрам можно фильтровать пакеты? Рассмотрим самые основные.

    Источник пакета

    Для фильтрации по источнику используется опция -s. Например запретим все входящие пакеты с узла 192.168.133.133:
    Code
    iptables -A INPUT -s 192.168.133.133 -j DROP

    Можно использовать доменное имя для указания адреса хоста. То есть:
    Code
    iptables -A INPUT -s test.host.jp -j DROP

    Также можно указать целую подсеть:
    Code
    iptables -A INPUT -s 192.168.133.0/24 -j DROP

    Также вы можете использовать отрицание (знак !). Например так - все пакеты с хостов отличных от 192.168.133.156 будут уничтожаться:
    Code
    iptables -A INPUT ! -s 192.168.133.156 -j DROP


    Адрес назначения

    Для этого нужно использовать опцию -d. Например запретим все исходящие пакеты на хост 192.168.156.156:
    Code
    iptables -A OUTPUT -d 192.168.156.156 -j DROP

    Как и в случае с источником пакета можно использовать адреса подсети и доменные имена. Отрицание также работает.

    Протокол

    Опция -p указывает на протокол. Можно использовать all, icmp, tcp, udp или номер протокола (из /etc/protocols).

    Порт источника

    Указывает на порт с которого был прислан пакет. Вот синтаксис:
    Code
    iptables -A INPUT -p tcp --sport 80 -j ACCEPT

    Для указания порта необходимо указать протокол (tcp или udp). Можно использовать отрицание.

    Порт назначения

    Порт назначения. Синтаксис:
    Code
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT

    Как и в случае с портом источника нужно указать протокол. Можно использовать отрицание.

    Действия над пакетами

    Проку от того,что мы укажем параметры пакета нет.Нужно указать,что надо с ним делать. Для этого служит опция -j. Рассмотрим основные действия:
    ACCEPT - разрешить пакет.
    DROP - уничтожить пакет.
    REJECT - будет отправлено ICMP сообщение, что порт недоступен.
    LOG - информация об этом пакете будет добавлена в системный журнал (syslog). Не прерывает цепочку.
    В качестве действия можно указать и имя пользовательской цепочки. Например перекинем все пакеты с локальной сети в цепочку, где будет производиться дополнительная проверка:
    Code
    iptables -A INPUT -s 192.168.200.0/24 -j LOCAL_NET


    Пример правил

    В большинстве случаев конечному пользователю (рабочая станция под управлением Gentoo Linux) достаточно выполнить такую последовательность команд:
    Code
    iptables -P FORWARD DROP

    iptables -P OUTPUT ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

    iptables -P INPUT DROP

    Вот собственно и вся настройка. На первый взгляд непонятно, что мы тут вообще сделали. Поэтому ознакомимся с основами составления правил.

    Модули

    Может сложиться впечатление, что возможностей у iptables маловато. Однако с использованием модулей iptables получит просто безграничные возможности. Для указания модуля используется опция -m. Например:
    Code
    iptables -A INPUT -m модуль bla-bla


    -m owner

    Добавляет следующие опции (опции только для цепочки OUTPUT):
    --uid-owner UID - UID программы пославшей пакет.
    --gid-owner GID - GID программы пославшей пакет.
    --pid-owner PID - PID программы пославшей пакет.
    --sid-owner SID - SID (идентификатор сессии) производится проверка SID пакета, значение SID наследуются дочерними процессами от "родителя".
    --cmd-owner NAME - имя программы пославшей пакет.

    -m multiport

    Позволяет указывать не по одному порту, а сразу несколько:
    --source-ports порт1,порт2 - список портов, с которых пришел пакет;
    --sports порт1,порт2 - укороченый аналог --source-ports;
    --destination-ports порт1,порт2 - список портов назначения;
    --dports порт1,порт2 - укороченый аналог --destination-ports;
    --ports порт1,порт2 - проверяет как исходящий так и входящий порт пакета.

    -m state

    Предназначен для указания состояния пакета с помощью опции --state. Доступны следующие типы пакетов:
    NEW - пакет устанавливающий новое соединение.
    ESTABLISHED - пакет от уже установленного соединения.
    RELATED - пакет устанавливающий новое соединение от уже установленного (ESTABLISHED) соединения (пример: установка FTP-data соединения из FTP-control соединения).
    INVALID - говорит о том, что пакет не может быть идентифицирован и поэтому не может иметь определенного статуса.

    -m mac

    Проверяет соответствие MAC-адреса в пакете с помощью опции --mac-source, например:
    Code
    iptables -A INPUT -s 192.168.0.1 -m mac --mac-source 00:65:3F:ED:12:98 -j DROP


    -m limit

    Как следует из названия, предназначен для ограничения нагрузки, например:
    Code
    iptables -A INPUT -p icmp -m limit --limit 4/second -j ACCEPT
    Сообщение # 1 отредактировано B1ackOne - Вторник, 14.08.2012, 16:14
    Mitera
    Скаут
    молодец

    p.s. убирай гребанное аниме с авы и подписи...
    Сообщение # 2 написано 06.09.2012 в 14:58
    Muxa0808
    Photoshop [М]астер
    B1ackOne,
    Это все ты хорошо написал но думаю кто с этим не сталкивался не поймут проще дать им запрос готовый в котором они заменили бы порты.
    Code
    iptables -A INPUT -p tcp -m tcp --dport 8085 -m connlimit --connlimit-above 4 --connlimit-mask 32 -j DROP
    iptables -A INPUT -p tcp -m tcp --dport 8085 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT

    Но конечно же соглашусь с комментариями выше как сказал Mitera, молодец.
    Сообщение # 3 написано 23.09.2012 в 09:27
    Miхer
    Brian Viveros
    Quote (Mitera)
    p.s. убирай гребанное аниме с авы и подписи...


    А за гайд спасибо. smile
    Сообщение # 4 написано 23.09.2012 в 09:43
    inomerain
    Скаут
    Quote (Muxa0808)
    iptables -A INPUT -p tcp -m tcp --dport 8085 -m connlimit --connlimit-above 4 --connlimit-mask 32 -j DROP
    iptables -A INPUT -p tcp -m tcp --dport 8085 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT

    Антиспрутник. На большее этот кусок не тянет, про udp и установленные соединения даже говорить не буду.
    Сообщение # 5 написано 24.09.2012 в 15:38
    Ma_aelKoT
    Скаут
    B1ackOne, спасибо большое за творчество)

    Quote (Mitera)
    убирай гребанное аниме с авы и подписи...
    знаешь что...
    Сообщение # 6 отредактировано Ma_aelKoT - Понедельник, 24.09.2012, 18:54
    Asgarot
    Warkeeper.net
    Молодец, не поленился:)
    Сообщение # 7 написано 28.09.2012 в 08:04
    INFERNOS
    Дайте угадаю.
    судя по емергам у автора gentoo.
    Но где это написано? сейчас люди полезут в своих серверных дебианах ядра ломать biggrin
    Присяжный - краб.
    Сообщение # 8 написано 14.02.2013 в 19:43
    ThisIsNoFake
    INFERNOS, Дим Пусть ломают у них своя голова на плечах должна быть, и раз уж начали делать, так пусть дотошно все прочтут и поймут, а не по 1 теме делать.:bag:
    Сообщение # 9 написано 15.02.2013 в 17:50
    Форум » Управление пиратскими серверами » Средства, статьи, обсуждения управления пиратскими серверами » Iptables для начинающих
    • Страница 1 из 1
    • 1
    Поиск: