Ubuntu где находится iptables
Одним из компонентов ядра операционной системы Linux является сетевой экран.Он позволяет выполнять множество видов фильтрации трафика. Кроме этого в ядре имеется возможность трансляции сетевых адресов.
Например, на базе Linux строятся сетевые шлюзы для подключения локальных сетей к интернету.Пользовательским интерфейсом к сетевому экрану Linux является программа Iptables.Это программа командной строки, она взаимодействует с пользователем посредством текстового терминала.
В ubuntu для разрешения работы транзитного трафика NAT надо раскомментировать в файле /etc/sysctl.conf строчку
Принцип работы
Итак, пребывающий пакет проходит по цепочке правил. Каждое правило содержит условие и цель (действие). Если пакет удовлетворяет условию то он передается на цель, в противном случае к пакету применяется следующее правило в цепочке. Если пакет не удовлетворил ни одному из условий в цепочке, то к нему применяется действие по умолчанию.
Ключевыми понятиями iptables являются:
- фильтрация трафика на основе адресов отправителя и получателя пакетов, номеров портов;
- перенаправление пакетов по определенным параметрам;
- организация доступа в сеть (SNAT);
- проброс портов из глобальной сети в локальную (DNAT);
- ограничение числа подключений;
- установление квот трафика;
- выполнение правил по расписанию;
Основное назначение таблицы mangle - внесение изменений в заголовок пакета. В этой таблице могут производиться следующие действия:
- установка бита Type Of Service;
- установка поля Time To Live;
- установка метки на пакет, которая может быть проверена в других правилах;
Таблица используется для преобразования сетевых адресов (Network Address Translation) и когда встречается пакет, устанавливающий новое соединение. В этой таблице могут производиться следующие действия:
Прибывший пакет проходит по цепочке правил. Каждое правило содержит условие и цель (действие). Если пакет удовлетворяет условию то он передается на цель, в противном случае к пакету применяется следующее правило в цепочке. Если пакет не удовлетворил ни одному из условий в цепочке, то к нему применяется действие по умолчанию.
Команды iptables:
-A - добавление правила в цепочку, правило будет добавлено в конец цепочки;
-D - удаление правила из цепочки;
-R - заменить одно правило другим;
-I - вставить новое правило в цепочку;
-L - вывод списка правил в заданной цепочке;
-F - сброс всех правил в заданной цепочке;
-Z - обнуление всех счетчиков в заданной цепочке;
-N - создание новой цепочки с заданным именем;
-X - удаление цепочки;
-P - задает политику по умолчанию для цепочки;
-E - переименование пользовательской цепочки;
Действия над пакетами
Для указания действия (цели) с пакетом служит опция -j. Основные действия:
Разница между DROP и REJECT
Опции отбора пакетов
Для ubuntu можно использовать пакет iptables-persistent, который будет сам переподнимать его при каждой загрузке системы:
sudo apt-get install iptables-persistent
1)Показать статус.
iptables -L -n -v
4)Удалить правила файрвола.
5)Добавить правило в файрвол.
Примерный вывод:
Chain INPUT (policy DROP)
num target prot opt source destination
1 DROP all -- 202.54.1.1 0.0.0.0/0
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED
Chain INPUT (policy DROP)
num target prot opt source destination
1 DROP all -- 202.54.1.1 0.0.0.0/0
2 DROP all -- 202.54.1.2 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED
Помощь по iptables.
6)Для фильтрации по источнику используется опция -s. Например запретим все входящие пакеты с узла 192.168.1.95:
iptables -A INPUT -s 192.168.1.95 -j DROP
Можно использовать доменное имя для указания адреса хоста:
Также можно указать целую под сеть:
iptables -A INPUT -s 192.168.1.0/24 -j DROP
Также вы можете использовать отрицание (знак !). Например, все пакеты с хостов отличных от 192.168.1.96 будут уничтожаться:
iptables -A INPUT ! -s 192.168.1.96 -j DROP
Для этого нужно использовать опцию -d. Например запретим все исходящие пакеты на хост 192.168.1.95:
iptables -A OUTPUT -d 192.168.156.156 -j DROP
Запретить доступ к ресурсу
8)Опция -p указывает на протокол. Можно использовать all, icmp, tcp, udp или номер протокола (из /etc/protocols).
Разрешаем входящие эхо-запросы
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Разрешаем все исходящие пакеты с порта 80:
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
Заблокировать все входящие запросы порта 80:
iptables -A INPUT -p tcp --dport 80 -j DROP
Для указания порта необходимо указать протокол (tcp или udp). Можно использовать отрицание.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Разрешить подключения по SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
Разрешаем получать данные от DHCP-сервера
iptables -A INPUT -p UDP --dport 68 --sport 67 -j ACCEPT
Разрешить CUPS (сервер печати, порт 631) для пользователей внутри локальной сети
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT
Разрешить синхронизацию времени NTP для пользователей внутри локальной сети
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT
Для примера направим трафик с порта 442 на 22, это значит что входящие ssh-соединения могут быть принятыми с порта 422 и 22.
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.15 --dport 422 -j DNAT --to 192.168.1.15:22
Также надо разрешить входящие соединения с порта 422
iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT
Как и в случае с портом источника нужно указать протокол. Можно использовать отрицание.
13). Блокировать только входящие соединения.
14) Сбрасывать или разрешить трафик с определенных MAC адресов.
16). Открыть диапазон портов.
18) Закрыть или открыть стандартные порты.
Заменить ACCEPT на DROP, чтобы заблокировать порт.
Пример минимальной конфигурации своего шлюза:
На сайте настроен iptables. Разрешает коннект к порту 3306 только для одного IP. IP сменился, нужно открыть конфиг фаервола и сменить IP.
Гуглю где находится его конфиг, гугль говорит, смотреть в /etc/sysconfig/iptables.old и в /etc/sysconfig/iptables-config.
Ага, думаю я, то что мне нужно, открываю эти конфиги, в них нет записи с нужным IP. Видимо iptables использует кастомный конфиг. Как узнать где он находится?
Выведите список через iptables -L
и удалите старое, добавьте новое
Если я не ошибаюсь, конфиг можно сохранить куда угодно.
или сделайте, как здесь:
In CentOS you have the file /etc/sysconfig/iptables
если его там нет, вы можете его создать, используя iptables-save, чтобы записать текущие правила в файл
iptables-save > /etc/sysconfig/iptables
чтобы загрузить файл, Вам не нужно перезагружать сервер, просто используйте iptables-restore
так добавить разрешение для подключения определенного IP? какую нибудь еще команду нужно вводить или что нибудь перезагружать?
ps
Если ответ помог, отметьте решением, пожалуйста. iptables -S выведет список правил
=========
/etc/sysconfig/iptables-config
Не тот файл вы открываете.
mcedit /etc/sysconfig/iptables
меняете правило и
/etc/init.d/iptables restart
Итак, шаг номер раз:
iptables -L -n --line-numbers
эта команда выведет список всех имеющихся у Вас правил с номерами.
шаг номер 2:
iptables -D INPUT num, где num - номер запрещающего правила.
этой командой мы удаляем запрещающее правило
наг номер 3:
iptables -I INPUT 1 -p tcp -s x.x.x.x --dport 3306 -j ACCEPT
этой командой мы добавляем новое разрешающее правило в цепочку INPUT и ставим его первым. На случай, если у Вас в конце цепочки написано что-то типа -A INPUT -j REJECT --reject-with icmp-host-prohibited
если что-то не получается - пришлите вывод iptables -L -n --line-numbers, бум думать.
Утилита iptables — это межсетевой экран для операционных систем Linux. С помощью правил iptables можно разрешать или блокировать прохождение трафика. Когда происходит попытка установления соединения с текущей машиной, iptables просматривает список правил в списке, чтобы понять, как нужно поступить в этом случае. Если правила нет, то выполняется действие по умолчанию.
Цепочки правил
Набор правил формируется в цепочки, существуют базовые и пользовательские цепочки. Список базовых цепочек:
- PREROUTING — правила в этой цепочке применяются ко всем пакетам, которые поступают на сетевой интерфейс извне
- INPUT — применяются к пакетам, которые предназначаются для самого хоста или для процесса на данном хосте
- FORWARD — правила, которые применяются к транзитным пакетам, проходящим через хост, не задерживаясь
- OUTPUT — применяются к пакетам, которые сгенерированы самим хостом или процессами на данном хосте
- POSTROUTING — применяются к пакетам, которые должны покинуть сетевой интерфейс данного хоста
Таблицы iptables
Над цепочками правил в iptables есть еще один уровень абстракции — таблицы. Таблицы предназначены для выполнения разных действий над пакетами, например для модификации или фильтрации:
- raw — предназначена для работы с сырыми пакетами, пока они еще не прошли обработку
- mangle — предназначена для модификации различных заголовков пакета
- nat — обеспечивает работу NAT, если сервер используется в качестве маршрутизатора
- filter — основная таблица для фильтрации пакетов, используется по умолчанию
Принцип работы
Если целью пакета является другой компьютер, то пакет фильтруется правилами цепочки FORWARD таблиц mangle и filter , а затем к нему применяются правила цепочки POSTROUTING . На данном этапе можно использовать SNAT/MASQUARADE (подмена источника/маскировка). После этих действий пакет (если выжил) будет отправлен в сеть.
Если назначением пакета является сам компьютер с брандмауэром, то, после маршрутизации, он обрабатывается правилами цепочек INPUT таблиц mangle и filter . В случае прохождения цепочек пакет передается приложению.
Когда приложение на машине с брандмауэром, отвечает на запрос или отправляет собственный пакет, то он обрабатывается цепочкой OUTPUT таблицы filter . Затем к нему применяются правила цепочки OUTPUT таблицы nat — для определения, требуется ли использовать DNAT (модификация назначения). Далее, пакет фильтруется цепочкой OUTPUT таблицы filter и выпускается в цепочку POSTROUTING , которая может использовать SNAT и QoS . В случае успешного прохождения POSTROUTING пакет выходит в сеть.
Утилита iptables
Синтаксис утилиты iptables :
Если таблица не указана, подразумевается таблица filter . Команды могут быть:
- -A (или --append ) — добавить правило в цепочку
- -D (или --delete ) — удалить правило из цепочки
- -I (или --insert ) — вставить правило в цепочку под указанным номером
- -L (или --list ) — вывести все правила для заданной цепочки
- -F (или --flush ) — очистить все правила для заданной цепочки (таблицы)
- -N (или --new-chain ) — создать новую цепочку
- -X (или --delete-chain ) — удалить цепочку
- -P (или --policy ) — установить действие по умолчанию для цепочки
Имеются следующие дополнительные опции:
Примеры использования утилиты:
Поведение по умолчанию
Прежде чем приступать к настройке межсетевого экрана, следует определиться с тем, каким должно быть поведение цепочек правил по умолчанию. Другими словами, что iptables нужно делать в том случае, если соединение не подпадает ни под одно из сконфигурированных правил?
Изначально все три цепочки таблицы filter по умолчанию разрешают прием трафика:
Если же что-то менялось, а теперь нужно вернуть прежние настройки, то сделать это можно с помощью команд:
Можно пойти по другому пути и сначала запретить весь трафик, а затем выборочно разрешать его:
Действия с соединениями
После настройки поведения по умолчанию, можно переходить к созданию правил обработки трафика, чтобы iptables понимал, что делать с конкретным пакетом.
- ACCEPT — пакет покидает данную цепочку и передается в следующую
- DROP — отбросить пакет, пакет не передается в следующую цепочку
- REJECT — отбросить пакет, сообщить отправителю пакета об ошибке
- SNAT — замена ip-адреса источника в пакете, в цепочках POSTROUTING и OUTPUT таблицы nat
- DNAT — замена ip-адреса назначения в пакете, в цепочке PREROUTING таблицы nat (изредка — в OUTPUT )
- LOG — записать пакет в лог-файл (отправляется демону syslog ) и обработать остальными правилами
- MASQUERADE — как SNAT , но для соединений с динамическим ip-адресом, в цепочке POSTROUTING таблицы nat
- MARK — установить метку на пакет и обработать остальными правилами
Критерии для пакетов
Общие критерии — допустимо употреблять в любых правилах, они не зависят от типа протокола и не требуют подгрузки модулей расширения:
- -p (или --protocol ) — используется для указания типа протокола ( all , icmp , tcp , udp )
- -s (или --source ) — используется для указания ip-адреса источника; можно указать единственный ip-адрес (10.10.10.10) или диапазон ip-адресов (10.10.10.0/24)
- -d (или --destination ) — используется для указания ip-адреса места назначения; можно указать единственный ip-адрес (10.10.10.10) или диапазон ip-адресов (10.10.10.0/24)
- -i (или --in-interface ) — интерфейс, с которого был получен пакет, допускается только в цепочках INPUT , FORWARD и PREROUTING ; при отсутствии этого критерия предполагается любой интерфейс
- -o (или --out-interface ) — интерфейс, с которого будет отправлен пакет, допускается только в цепочках OUTPUT , FORWARD и POSTROUTING ; при отсутствии этого критерия предполагается любой интерфейс
Неявные критерии — неявно подгружают модули расширений и становятся доступны при указании критерия --protocol . Рассмотрим некоторые из них:
- -p tcp --sport (или --source-port ) — исходный порт, с которого был отправлен TCP-пакет. В качестве параметра может указываться номер порта или название сетевой службы. Соответствие имен сервисов и номеров портов можно найти в файле /etc/services . Номера портов могут задаваться в виде интервала из минимального и максимального номеров.
- -p tcp --dport (или --destination-port ) — порт или диапазон портов, на который адресован TCP-пакет. Аргументы задаются в том же формате, что и для --source-port .
- -p udp --sport (или --source-port ) — исходный порт, с которого был отправлен UDP-пакет. В качестве параметра может указываться номер порта или название сетевой службы. Соответствие имен сервисов и номеров портов можно найти в файле /etc/services . Номера портов могут задаваться в виде интервала из минимального и максимального номеров.
- -p udp --dport (или --destination-port ) — порт или диапазон портов, на который адресован UDP-пакет. Аргументы задаются в том же формате, что и для --source-port .
Явные критерии — требуют явной подгрузки модулей расширения с помощью опции -m или --match . Например, если планируется использовать критерий state , то нужно явно указать -m state левее используемого критерия. Рассмотрим некоторые из них:
- -m conntrack --ctstate STATES — проверяет признак состояния соединения: NEW , ESTABLISHED , RELATED и INVALID . Состояние NEW подразумевает, что пакет открывает новое соединение или пакет принадлежит однонаправленному потоку. Состояние ESTABLISHED указывает на то, что пакет принадлежит уже установленному соединению, через которое пакеты идут в обеих направлениях. Состояние RELATED указывает на то, что пакет принадлежит уже существующему соединению, но при этом он открывает новое соединение. Состояние INVALID подразумевает, что пакет связан с неизвестным потоком или соединением и, возможно содержит ошибку в данных или в заголовке.
- -m state --state STATES (устарел, не рекомендуется) — проверяет признак состояния соединения: NEW , ESTABLISHED , RELATED и INVALID .
- -m multiport --source-port PORTS — служит для указания списка исходящих портов, можно указать до 15 различных портов. Названия портов в списке должны отделяться друг от друга запятыми, пробелы в списке недопустимы. Может использоваться только совместно с критериями -p tcp или -p udp . Главным образом используется как расширенная версия обычного критерия --source-port .
- -m multiport --destination-port PORTS — служит для указания списка входящих портов, можно указать до 15 различных портов. Названия портов в списке должны отделяться друг от друга запятыми, пробелы в списке недопустимы. Может использоваться только совместно с критериями -p tcp или -p udp . Главным образом используется как расширенная версия обычного критерия --destination-port .
- -m multiport --port PORTS — проверяет как исходящий так и входящий порт пакета. Формат аргументов аналогичен критерию --source-port и --destination-port . Данный критерий проверяет порты обоих направлений, если задан критерий -m multiport --port 80 — под него попадают пакеты, идущие с порта 80 на порт 80.
- -m mac --mac-source MAC — MAC адрес сетевого узла, передавшего пакет, в формате XX:XX:XX:XX:XX:XX . Имеет смысл только в цепочках PREROUTING , FORWARD и INPUT и нигде более.
- -m iprange --src-range IP-IP — позволяет указать диапазон ip-адресов источника, например 192.168.1.10-192.168.2.20
- -m iprange --dst-range IP-IP — позволяет указать диапазон ip-адресов места назначения, например 192.168.1.10-192.168.2.20
Критерий состояния соединения
Как сказано выше, многие протоколы требуют двусторонних коммуникаций. Например, если нужно разрешить соединения по SSH, то добавить правила надо будет и в цепочку INPUT и в цепочку OUTPUT . Но что, если нужно разрешить только входящие SSH-соединения на сервер (т.е. только возможность подключиться к серверу по SSH)? Разрешит ли добавление правила в цепочку OUTPUT и исходящие SSH-соединения (т.е. с сервера можно будет подключиться по SSH к другому хосту)?
Для таких случаев используются состояния соединений. Они позволяют описывать двусторонние коммуникации, в которых разрешается установка только соединений определенной направленности. В примере ниже разрешены SSH-соединения, поступающие от хоста 10.10.10.10, но SSH-соединения к этому хосту запрещены. Однако, системе разрешается отправка информации по SSH в случае уже установленного соединения, что делает возможной SSH-коммуникацию между хостами:
Сохранение изменений
Внесенные в цепочки правил изменения пропадут при перезагрузке, так что их нужно сохранить с в файл помощью команды:
Автозагрузка правил
Понятно, что восстанавливать правила вручную после каждой перезагрузки неудобно. Поэтому устанавливаем пакет iptables-persistent :
При установке пакета будет предложено сохранить текущие правила iptables :
- в файл /etc/iptables/rules.v4 для протокола IPv4
- в файл /etc/iptables/rules.v6 для протокола IPv6
Теперь, после каких-либо изменений правил, надо сохранить текущее состояние в файл /etc/iptables/rules.v4 , чтобы это состояние восстановилось после перезагрузки:
После установки пакета будет добавлена новая служба netfilter-persistent.service , которая при загрузке системы будет восстанавливать правила iptables :
Судя по всему, скоро пакет iptables-persistent будет заменен на пакет netfilter-persistent (сейчас он устанавливается как зависимость при установке iptables-persistent ).Удаление всех правил
Для удаления всех сконфигурированных правил таблицы filter можно использовать команду:
Для удаления всех сконфигурированных правил таблицы nat можно использовать команду:
Пример настройки web-сервера
1. Политика ACCEPT для OUTPUT
Первым делом задаем политику по умолчанию:
Разрешаем трафик через интерфейс loopback (будет работать ping для localhost ):
Многие приложения используют для обмена между собой интерфейс обратной петли, и без этого правила работа таких приложений будет нарушена.Если подходить к настройке не очень фанатично, то можно разрешить работу протокола ICMP (будут работать ping и traceroute ):
Разрешаем нашему серверу получать ответы от DNS-серверов:
Наш web-сервер (Apache или Nginx) прослушивает порты 80 и 443, а SSH-сервер — порт 22. Поэтому разрешаем входящий TCP трафик, который идет на destination port 80, 443 и 22.Чтобы можно было устанавливать и обновлять пакеты с помощью утилиты apt :
Любой исходящий трафик у нас разрешен, поэтому утилита apt может отправлять запросы на сервер репозитория. Но ей еще нужно получать ответы, поэтому разрешаем входящий TCP трафик, который идет с source port 80. Кроме того, уточняем — что этот трафик в ответ на запрос с нашего сервера.Теперь можно проверить добавленные правила командой:
2. Политика DROP для OUTPUT
В этом случае все правила для цепочки INPUT будут такими же, но надо еще добавить правила для цепочки OUTPUT . Итак, первым делом задаем политику по умолчанию:
Разрешаем трафик через интерфейс loopback :
Разрешаем работу протокола ICMP (будут работать ping и traceroute ):
Разрешаем нашему серверу отправлять запросы DNS-серверам:
Разрешаем нашему серверу получать ответы от DNS-серверов:
Чтобы можно было устанавливать и обновлять пакеты с помощью утилиты apt :
Теперь можно проверить добавленные правила командой:
Настройка маршрутизатора
Есть компьютер с двумя сетевыми интерфейсами. Первый интерфейс eth0 смотрит в интернет и имеет белый ip-адрес 128.68.35.23 . Второй интерфейс eth1 смотрит в локальную сеть и имеет ip-адрес 192.168.100.1 .
Доступ в интернет (SNAT)
Этот компьютер должен обеспечивать выход в интернет для всех компьютеров из локальной сети 192.168.100.0/24 . По умолчанию транзитный трафик отключен, так что редактируем файл /etc/sysctl.conf :
Чтобы настройки вступили в силу:
Теперь настраиваем iptables :
Тем самым разрешили ходить транзитным пакетам для нашего диапазона ip адресов, а всё остальное запретили. Теперь настроим SNAT (подмена адреса источника), что позволит всем компьютерам сети выходить в интернет, используя единственный ip-адрес 128.68.35.23 .
Доступ внутрь сети (DNAT)
Одним из компонентов ядра операционной системы Linux является сетевой экран.Он позволяет выполнять множество видов фильтрации трафика. Кроме этого в ядре имеется возможность трансляции сетевых адресов.
Например, на базе Linux строятся сетевые шлюзы для подключения локальных сетей к интернету.Пользовательским интерфейсом к сетевому экрану Linux является программа Iptables.Это программа командной строки, она взаимодействует с пользователем посредством текстового терминала.
В ubuntu для разрешения работы транзитного трафика NAT надо раскомментировать в файле /etc/sysctl.conf строчку
Принцип работы
Итак, пребывающий пакет проходит по цепочке правил. Каждое правило содержит условие и цель (действие). Если пакет удовлетворяет условию то он передается на цель, в противном случае к пакету применяется следующее правило в цепочке. Если пакет не удовлетворил ни одному из условий в цепочке, то к нему применяется действие по умолчанию.
Ключевыми понятиями iptables являются:
- фильтрация трафика на основе адресов отправителя и получателя пакетов, номеров портов;
- перенаправление пакетов по определенным параметрам;
- организация доступа в сеть (SNAT);
- проброс портов из глобальной сети в локальную (DNAT);
- ограничение числа подключений;
- установление квот трафика;
- выполнение правил по расписанию;
Основное назначение таблицы mangle - внесение изменений в заголовок пакета. В этой таблице могут производиться следующие действия:
- установка бита Type Of Service;
- установка поля Time To Live;
- установка метки на пакет, которая может быть проверена в других правилах;
Таблица используется для преобразования сетевых адресов (Network Address Translation) и когда встречается пакет, устанавливающий новое соединение. В этой таблице могут производиться следующие действия:
Прибывший пакет проходит по цепочке правил. Каждое правило содержит условие и цель (действие). Если пакет удовлетворяет условию то он передается на цель, в противном случае к пакету применяется следующее правило в цепочке. Если пакет не удовлетворил ни одному из условий в цепочке, то к нему применяется действие по умолчанию.
Команды iptables:
-A - добавление правила в цепочку, правило будет добавлено в конец цепочки;
-D - удаление правила из цепочки;
-R - заменить одно правило другим;
-I - вставить новое правило в цепочку;
-L - вывод списка правил в заданной цепочке;
-F - сброс всех правил в заданной цепочке;
-Z - обнуление всех счетчиков в заданной цепочке;
-N - создание новой цепочки с заданным именем;
-X - удаление цепочки;
-P - задает политику по умолчанию для цепочки;
-E - переименование пользовательской цепочки;
Действия над пакетами
Для указания действия (цели) с пакетом служит опция -j. Основные действия:
Разница между DROP и REJECT
Опции отбора пакетов
Для ubuntu можно использовать пакет iptables-persistent, который будет сам переподнимать его при каждой загрузке системы:
sudo apt-get install iptables-persistent
1)Показать статус.
iptables -L -n -v
4)Удалить правила файрвола.
5)Добавить правило в файрвол.
Примерный вывод:
Chain INPUT (policy DROP)
num target prot opt source destination
1 DROP all -- 202.54.1.1 0.0.0.0/0
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED
Chain INPUT (policy DROP)
num target prot opt source destination
1 DROP all -- 202.54.1.1 0.0.0.0/0
2 DROP all -- 202.54.1.2 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,ESTABLISHED
Помощь по iptables.
6)Для фильтрации по источнику используется опция -s. Например запретим все входящие пакеты с узла 192.168.1.95:
iptables -A INPUT -s 192.168.1.95 -j DROP
Можно использовать доменное имя для указания адреса хоста:
Также можно указать целую под сеть:
iptables -A INPUT -s 192.168.1.0/24 -j DROP
Также вы можете использовать отрицание (знак !). Например, все пакеты с хостов отличных от 192.168.1.96 будут уничтожаться:
iptables -A INPUT ! -s 192.168.1.96 -j DROP
Для этого нужно использовать опцию -d. Например запретим все исходящие пакеты на хост 192.168.1.95:
iptables -A OUTPUT -d 192.168.156.156 -j DROP
Запретить доступ к ресурсу
8)Опция -p указывает на протокол. Можно использовать all, icmp, tcp, udp или номер протокола (из /etc/protocols).
Разрешаем входящие эхо-запросы
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Разрешаем все исходящие пакеты с порта 80:
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
Заблокировать все входящие запросы порта 80:
iptables -A INPUT -p tcp --dport 80 -j DROP
Для указания порта необходимо указать протокол (tcp или udp). Можно использовать отрицание.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Разрешить подключения по SSH
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
Разрешаем получать данные от DHCP-сервера
iptables -A INPUT -p UDP --dport 68 --sport 67 -j ACCEPT
Разрешить CUPS (сервер печати, порт 631) для пользователей внутри локальной сети
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT
Разрешить синхронизацию времени NTP для пользователей внутри локальной сети
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT
Для примера направим трафик с порта 442 на 22, это значит что входящие ssh-соединения могут быть принятыми с порта 422 и 22.
iptables -t nat -A PREROUTING -p tcp -d 192.168.1.15 --dport 422 -j DNAT --to 192.168.1.15:22
Также надо разрешить входящие соединения с порта 422
iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT
Как и в случае с портом источника нужно указать протокол. Можно использовать отрицание.
13). Блокировать только входящие соединения.
14) Сбрасывать или разрешить трафик с определенных MAC адресов.
16). Открыть диапазон портов.
18) Закрыть или открыть стандартные порты.
Заменить ACCEPT на DROP, чтобы заблокировать порт.
Пример минимальной конфигурации своего шлюза:
Читайте также: