Firewall start
Сетевой экран Iptables
iptables — это утилита командной строки, используемая для управления встроенным брандмауэром netfilter, доступным в ядре Linux, начиная с версии 2.4. Брандмауэр — это приложение, на котором происходит фильтрация сетевого трафика на основе заданных администратором правил.
Схемы
Синтаксис Iptables
# iptables команда таблица цепочка критерии действие
# iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
- -A - команда
- OUTPUT - цепочка
- -p - критерий
- -j - дейстиве
Таблицы
Команды
Полный вид | Сокращенный вид | Описание |
---|---|---|
—append | -A | добавить правило в конец указанной цепочки |
—check | -C | проверить существующие правила в заданной цепочке |
—delete | -D | удалить правило с указанным номером в заданной цепочке |
—insert | -I | вставить правило с заданным номером, без указания номера — правило будет по умолчанию добавлено первым |
—replace | -R | заменить правило с указанным номером |
—list | -L | вывести список всех действующих правил со всех цепочек, если указать интересующую цепочку — вывод будет сделан только по ней |
—list-rules | -S | построчный вывод всех правил во всех цепочках, если после ключа указать имя цепочки — будут выведены только ее правила |
—flush | -F | удалить все правила, при указании имени цепочки — правила удаляться только в ней |
—zero | -Z | обнулить все счетчики во всех цепочках, при указании цепочки — обнуление произойдет только в ней |
—new | -N | создать пользовательскую цепочку |
—delete-chain | -X | удалить пользовательскую цепочку |
—policy | -P | установить политику по умолчанию для цепочки, обычно это ACCEPT или DROP, она будет применена к пакетам, не попавшим ни под один критерий |
—rename-chain | -E | переименовать цепочку, сначала указывается текущее имя, через пробел — новое |
—help | -h | вывести справочную информацию по синтаксису iptables |
Цепочки (-A)
Существует 5 видов цепочек:
- PREROUTING — предназначена для первичной обработки входящих пакетов, адресованных как непосредственно серверу, так и другим узлам сети. Сюда попадает абсолютно весь входящий трафик для дальнейшего анализа.
- INPUT — для входящих пакетов, отправленных непосредственно этому серверу.
- FORWARD — для проходящих пакетов, не адресованных этому компьютеру, предназначены для передачи следующему узлу, в случае, если сервер выполняет роль маршрутизатора.
- OUTPUT — для пакетов, отправленных с этого сервера.
- POSTROUTING — здесь оказываются пакеты, предназначенные для передачи на другие узлы сети.
Критерии
Действие (-j)
- ACCEPT — разрешить дальнейшее прохождение пакета по системе;
- DROP — отбросить пакет без уведомления отправителя;
- LOG — зафиксировать информацию о пакете в файле системного журнала;
- RETURN — прекращение движения пакета по текущей цепочке и возврат в предыдущую цепочку. Если текущая цепочка единственная — к пакету будет применено действие по умолчанию;
- REDIRECT — перенаправляет пакет на указанный порт, в пределах этого же узла, применяется для реализации «прозрачного» прокси;
- DNAT — подменяет адрес получателя в заголовке IP-пакета, основное применение — предоставление доступа к сервисам снаружи, находящимся внутри сети;
- SNAT — служит для преобразования сетевых адресов, применимо, когда за сервером находятся машины, которым необходимо предоставить доступ в Интернет, при этом от провайдера имеется статический IP-адрес;*MASQUERADE — то же, что и SNAT, но главное отличие в том, что может использоваться, когда провайдер предоставляет динамический адрес, создаёт дополнительную нагрузку на систему по сравнению с SNAT;
- TTL — используется для изменения значения поля одноименного заголовка IP-пакета, устанавливает время жизни пакета.
Команды
Общие
- Вывод всех активных правил:
# iptables -L
Удаление
Удалить все правила
# iptables -F
Удалить конкретную цепочку
# iptables -F INPUT # iptables -F OUTPUT # iptables -F FORWARD
Удалить конкретное правило
Если Вам нужно удалить конкретное правило из iptables, то сперва следует посмотреть, какие правила уже активны, при помощи команды:
# iptables -S
Пример вывода:
-P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
А потом уже удалить конкретную цепочку:
# iptables -D INPUT -p tcp --dport 80 -j ACCEPT
- -D - удалить правило
- -p - протокол
- --dport - порт назначения
- -j - Действие
Сохранение
Как сохранять правила
Если Вам нужно сохранить правило, воспользуйтесь командой:
# iptables-save > /etc/iptables.rules.v4
Как восстанавливать правила
Если Вам нужно восстановить правила, то примените команду:
# iptables-restore < /etc/iptables.rules.v4
Добавление
Запретить принимать любой трафик (a)
# iptables --policy INPUT DROP
Запретить принимать трафик с конкретного IP (b)
# iptables -A INPUT -s 172.10.10.1 -j DROP
- -A - добавить новое правило
- -s - адрес-источник
- -j - действие
Открыть порт (c)
Открыть входящий порт
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT (c)
- -A - добавить новое правило
- -p - протокол
- --dport - порт назначения
- -j - Действие
Открыть исходящий порт
# iptables -A OUTPUT -p tcp --dport 22 -j DROP
- -A - добавить новое правило
- -p - протокол
- --dport - порт назначения
- -j - действие
Отмена
Разрешить принимать любой трафик (a)
# iptables --policy INPUT ACCEPT
Разрешить принимать трафик с конкретного IP (b)
# iptables -A INPUT -s 172.10.10.1 -j ACCEPT
- -A - добавить новое правило
- -s - адрес-источник
- -j - действие
Закрыть порт (c)
Закрыть входящий порт
# iptables -A INPUT -p tcp --dport 135 -j DROP (c)
- -A - добавить новое правило
- -p - протокол
- --dport - порт назначения
- -j - действие
Закрыть исходящий порт
Если Вы хотите заблокировать возможность подключаться по SSH с Вашего сервера к другому хосту или серверу, введите следующую команду:
# iptables -A OUTPUT -p tcp --dport 22 -j DROP
- -A - добавить новое правило
- -p - протокол
- --dport - порт назначения
- -j - действие
Блокировка ICMP (ping)
Если Вам нужно заблокировать запрос ICMP (ping) от и к Вашему серверу, введите следующие команды:
# iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
- -A - добавить новое правило
- -p - протокол
- --icmp-type - тип ICMP, а именно ping
- -j - действие
Чтобы заблокировать входящий ping-запрос, введите следующие команды в терминале:
# iptables -I INPUT -p icmp --icmp-type 8 -j DROP