|
|
Модератор форума: Dimitro, LightInDarkness |
Форум » Управление пиратскими серверами » Средства, статьи, обсуждения управления пиратскими серверами » Iptables для начинающих |
Iptables для начинающих |
Конфигурация ядра ОС Linux
Iptables является совокупностью модуля ядра netfilter и программы iptables. В ядре необходимо включить поддержку модуля netfilter. Quote (Включение поддержки netfilter) Networking support ---> Networking options ---> 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, Порт источника Указывает на порт с которого был прислан пакет. Вот синтаксис: 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 |
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
|
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
|
| |||
| |||