Список правил iptables

Содержание:

21 пример использования iptables для администраторов.

Файрвол в системе linux контролируется программой iptables (для ipv4) и ip6tables (для ipv6). В данной шпаргалке рассмотрены самые распространённые способы использования iptables для тех, кто хочет защитить свою систему от взломщиков или просто разобраться в настройке.

Знак # означает, что команда выполняется от root. Откройте заранее консоль с рутовыми правами — sudo -i в Debian-based системах или su в остальных.

1. Показать статус.

Примерный вывод команды для неактивного файрвола:

Для активного файрвола:

Где:
-L : Показать список правил.
-v : Отображать дополнительную информацию. Эта опция показывает имя интерфейса, опции, TOS маски. Также отображает суффиксы ‘K’, ‘M’ or ‘G’.
-n : Отображать IP адрес и порт числами (не используя DNS сервера для определения имен. Это ускорит отображение).

2. Отобразить список правил с номерами строк.

# iptables -n -L -v —line-numbers

Вы можете использовать номера строк для того, чтобы добавлять новые правила.

3. Отобразить INPUT или OUTPUT цепочки правил.

# iptables -L INPUT -n -v
# iptables -L OUTPUT -n -v —line-numbers

4. Остановить, запустить, перезапустить файрвол.

Силами самой системы:
# service ufw stop
# service ufw start

Можно также использовать команды iptables для того, чтобы остановить файрвол и удалить все правила:
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT

Где:
-F : Удалить (flush) все правила.
-X : Удалить цепочку.
-t table_name : Выбрать таблицу (nat или mangle) и удалить все правила.
-P : Выбрать действия по умолчанию (такие, как DROP, REJECT, или ACCEPT).

5. Удалить правила файрвола.

Чтобы отобразить номер строки с существующими правилами:
# iptables -L INPUT -n —line-numbers
# iptables -L OUTPUT -n —line-numbers
# iptables -L OUTPUT -n —line-numbers | less
# iptables -L OUTPUT -n —line-numbers | grep 202.54.1.1

Получим список IP адресов. Просто посмотрим на номер слева и удалим соответствующую строку. К примеру для номера 3:
# iptables -D INPUT 3

Или найдем IP адрес источника (202.54.1.1) и удалим из правила:
# iptables -D INPUT -s 202.54.1.1 -j DROP

Где:
-D : Удалить одно или несколько правил из цепочки.

6. Добавить правило в файрвол.

Чтобы добавить одно или несколько правил в цепочку, для начала отобразим список с использованием номеров строк:
# iptables -L INPUT -n —line-numbers

Чтобы вставить правило между 1 и 2 строкой:
# iptables -I INPUT 2 -s 202.54.1.2 -j DROP

Проверим, обновилось ли правило:
# iptables -L INPUT -n —line-numbers

Вывод станет таким:

7. Сохраняем правила файрвола.

Через iptables-save:
# iptables-save > /etc/iptables.rules

8. Восстанавливаем правила.

Через iptables-restore
# iptables-restore

9. Устанавливаем политики по умолчанию.

Чтобы сбрасывать весь трафик:
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
# iptables -L -v -n

После вышеперечисленных команд ни один пакет не покинет данный хост.
# ping google.com

10. Блокировать только входящие соединения.

Чтобы сбрасывать все не инициированные вами входящие пакеты, но разрешить исходящий трафик:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
# iptables -A INPUT -m state —state NEW,ESTABLISHED -j ACCEPT
# iptables -L -v -n

Пакеты исходящие и те, которые были запомнены в рамках установленных сессий — разрешены.
# ping google.com

11. Сбрасывать адреса изолированных сетей в публичной сети.

# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Список IP адресов для изолированных сетей:
10.0.0.0/8 -j (A)
172.16.0.0/12 (B)
192.168.0.0/16 (C)
224.0.0.0/4 (MULTICAST D)
240.0.0.0/5 (E)
127.0.0.0/8 (LOOPBACK)

12. Блокировка определенного IP адреса.

Чтобы заблокировать адрес взломщика 1.2.3.4:
# iptables -A INPUT -s 1.2.3.4 -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -j DROP

13. Заблокировать входящие запросы порта.

Чтобы заблокировать все входящие запросы порта 80:
# iptables -A INPUT -p tcp —dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp —dport 80 -j DROP

Чтобы заблокировать запрос порта 80 с адреса 1.2.3.4:
# iptables -A INPUT -p tcp -s 1.2.3.4 —dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 —dport 80 -j DROP

14. Заблокировать запросы на исходящий IP адрес.

Чтобы заблокировать определенный домен, узнаем его адрес:
# host -t a facebook.com

Вывод: facebook.com has address 69.171.228.40

Найдем CIDR для 69.171.228.40:
# whois 69.171.228.40 | grep CIDR

Вывод:
CIDR: 69.171.224.0/19

Заблокируем доступ на 69.171.224.0/19:
# iptables -A OUTPUT -p tcp -d 69.171.224.0/19 -j DROP

Также можно использовать домен для блокировки:
# iptables -A OUTPUT -p tcp -d www.fаcebook.com -j DROP
# iptables -A OUTPUT -p tcp -d fаcebook.com -j DROP

15. Записать событие и сбросить.

Чтобы записать в журнал движение пакетов перед сбросом, добавим правило:

# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG —log-prefix «IP_SPOOF A: »
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Проверим журнал (по умолчанию /var/log/messages):
# tail -f /var/log/messages
# grep -i —color ‘IP SPOOF’ /var/log/messages

16. Записать событие и сбросить (с ограничением на количество записей).

Чтобы не переполнить раздел раздутым журналом, ограничим количество записей с помощью -m. К примеру, чтобы записывать каждые 5 минут максимум 7 строк:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit —limit 5/m —limit-burst 7 -j LOG —log-prefix «IP_SPOOF A: »
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

16. Сбрасывать или разрешить трафик с определенных MAC адресов.

# iptables -A INPUT -m mac —mac-source 00:0F:EA:91:04:08 -j DROP
## *разрешить только для TCP port # 8080 с mac адреса 00:0F:EA:91:04:07 * ##
# iptables -A INPUT -p tcp —destination-port 22 -m mac —mac-source 00:0F:EA:91:04:07 -j ACCEPT

17. Разрешить или запретить ICMP Ping запросы.

Чтобы запретить ping:
# iptables -A INPUT -p icmp —icmp-type echo-request -j DROP
# iptables -A INPUT -i eth1 -p icmp —icmp-type echo-request -j DROP

Разрешить для определенных сетей / хостов:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp —icmp-type echo-request -j ACCEPT

Разрешить только часть ICMP запросов:
### ** предполагается, что политики по умолчанию для входящих установлены в DROP ** ###
# iptables -A INPUT -p icmp —icmp-type echo-reply -j ACCEPT
# iptables -A INPUT -p icmp —icmp-type destination-unreachable -j ACCEPT
# iptables -A INPUT -p icmp —icmp-type time-exceeded -j ACCEPT
## ** разрешим отвечать на запрос ** ##
# iptables -A INPUT -p icmp —icmp-type echo-request -j ACCEPT

18. Открыть диапазон портов.

# iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 7000:7010 -j ACCEPT

19. Открыть диапазон адресов.

## разрешить подключение к порту 80 (Apache) если адрес в диапазоне от 192.168.1.100 до 192.168.1.200 ##
# iptables -A INPUT -p tcp —destination-port 80 -m iprange —src-range 192.168.1.100-192.168.1.200 -j ACCEPT

## пример для nat ##
# iptables -t nat -A POSTROUTING -j SNAT —to-source 192.168.1.20-192.168.1.25

20. Закрыть или открыть стандартные порты.

Заменить ACCEPT на DROP, чтобы заблокировать порт.

## ssh tcp port 22 ##
iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 22 -j ACCEPT

## cups (printing service) udp/tcp port 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

## time sync via NTP для локальной сети (udp port 123) ##
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p udp —dport 123 -j ACCEPT

## tcp port 25 (smtp) ##
iptables -A INPUT -m state —state NEW -p tcp —dport 25 -j ACCEPT

# dns server ports ##
iptables -A INPUT -m state —state NEW -p udp —dport 53 -j ACCEPT
iptables -A INPUT -m state —state NEW -p tcp —dport 53 -j ACCEPT

## http/https www server port ##
iptables -A INPUT -m state —state NEW -p tcp —dport 80 -j ACCEPT
iptables -A INPUT -m state —state NEW -p tcp —dport 443 -j ACCEPT

## tcp port 110 (pop3) ##
iptables -A INPUT -m state —state NEW -p tcp —dport 110 -j ACCEPT

## tcp port 143 (imap) ##
iptables -A INPUT -m state —state NEW -p tcp —dport 143 -j ACCEPT

## Samba file server для локальной сети ##
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 445 -j ACCEPT

## proxy server для локальной сети ##
iptables -A INPUT -s 192.168.1.0/24 -m state —state NEW -p tcp —dport 3128 -j ACCEPT

## mysql server для локальной сети ##
iptables -I INPUT -p tcp —dport 3306 -j ACCEPT

21. Ограничить количество параллельных соединений к серверу для одного адреса.

Для ограничений используется connlimit модуль. Чтобы разрешить только 3 ssh соединения на одного клиента:
# iptables -A INPUT -p tcp —syn —dport 22 -m connlimit —connlimit-above 3 -j REJECT

Установить количество запросов HTTP до 20:
# iptables -p tcp —syn —dport 80 -m connlimit —connlimit-above 20 —connlimit-mask 24 -j DROP

Где:
—connlimit-above 3 : Указывает, что правило действует только если количество соединений превышает 3.
—connlimit-mask 24 : Указывает маску сети.

Помощь по iptables.

Для поиска помощи по iptables, воспользуемся man:
$ man iptables

Чтобы посмотреть помощь по определенным командам и целям:
# iptables -j DROP -h

Проверка правила iptables.

Проверяем открытость / закрытость портов:
# netstat -tulpn

Проверяем открытость / закрытость определенного порта:
# netstat -tulpn | grep :80

Проверим, что iptables разрешает соединение с 80 портом:
# iptables -L INPUT -v -n | grep 80

В противном случае откроем его для всех:
# iptables -A INPUT -m state —state NEW -p tcp —dport 80 -j ACCEPT

Проверяем с помощью telnet
$ telnet ya.ru 80

Можно использовать nmap для проверки:
$ nmap -sS -p 80 ya.ru

Автор статьи Platon Puhlechev aka iFalkorr разрешает печатать данный текст.

Iptables отличный инструмент в руках администратора. Если нужно легко и просто защититься в десктопной Ubuntu, то стоит знать, что есть удобная консольная надстройка над iptables под названием UFW, а к ней есть графическая программа GUFW. Сделать свою Ubuntu ещё более защищённой поможет видеоматериал.

vasilisc.com

Записки программиста

Настройка фаервола с помощью iptables за пять минут

Я несколько раз сталкивался с тем, что даже неглупые в общем-то люди делают совершенно непростительные ошибки. Например, открывают всему интернету порт, на котором крутится база данных. Часто так бывает у начинающих DevOps, которые всю жизнь писали код, а теперь в их обязанности входит еще и настройка серверов. В сети есть хорошие туториалы по базовой настройке фаервола в Linux и других *nix, но часто это простыни на множество экранов. Так что, надеюсь, этот более лаконичный туториал кому-нибудь пригодится.

Важно! Очень легко по ошибке так зафаерволить машину, что вы на нее больше не зайдете. Особенно это касается облачных хостингов. Например, если в AWS вы закроете все порты с 1024 по 65536, у машины после ребута почему-то оказываются закрыты вообще все порты. Если вы хоститесь в облаках, настраивайте лучше фаервол через предоставляемый хостингом веб-интерфейс.

Небольшое замечание по терминологии. Фаервол, встроенный в ядро Linux, называется Netfilter, а iptables — утилита для управления этим фаерволом. Многие ошибочно полагают, что фаервол называется iptables. Это не так. Говоря что-нибудь наподобие «я фильтрую пакеты с помощью iptables», вы показываете окружающим свою безграмотность.

Вообще, какие примерно задачи можно решать с помощью Netfilter:

  • Разрешать/запрещать входящий трафик на определенные порты по определенным протоколам (IPv4/IPv6, TCP/UDP) с указанных адресов (IP, MAC) или подсетей;
  • Все то же самое в отношении исходящего трафика;
  • Можно, например, полностью игнорировать все ICMP пакеты;
  • Настройка NAT, см пост про установку и настройку OpenVPN;
  • Слышал, что настоящие гуру умеют настраивать защиту от DDoS и брутфорса, ограничивать доступ в сеть конкретным приложениям, пользователям или группам, и делать другие чумовые вещи;

Отмечу, что утилита iptables мне лично первое время казалась исключительно неудобной по сравнению с ipfw во FreeBSD. К счастью, поработав с ней какое-то время, все это множество флагов вроде -A, -D, -j и прочих становятся привычны, так что, наберитесь терпения. Рассмотрим основные команды.

Показать все правила:

Вы можете заметить, что в Netfilter есть какие-то «цепочки» (chains) — как минимум INPUT, OUTPUT и FORWARD. У меня лично на машине есть еще и цепочка DOCKER. На первое время можно думать о первых двух, как обо всем входящем и исходящем трафике соответственно, а об остальных временно забыть. Велика вероятность, что они вообще никогда вам не понадобятся.

Удалить все правила:

Изменить политику (поведение по умолчанию) цепочки:

Запретить доступ с хоста/подсети:

Также можно использовать доменные имена:

Запрет исходящих соединений:

В правилах можно использовать отрицания:

Удаление правила по его номеру в цепочке:

Удаление правила на основе того, что оно делает:

Опция -p указывает на протокол. Можно использовать all, icmp, tcp, udp или номер протокола из /etc/protocols. Флаг — -sport указывает порт, с которого был прислан пакет, а — -dport указывает порт назначения:

eax.me

Предложение от 8host.com

Вывод и удаление правил IPTables

IPTables – это фаервол (или брандмауэр), играющий очень важную роль в сетевой безопасности большинства дистрибутивов Linux. Данное руководство сфокусировано на различных аспектах управления фаерволом: выводе списка правил, удалении правил и т.п.

Это руководство охватывает следующие вопросы:

  • Вывод списка правил
  • Очистка счетчиков пакетов и байтов
  • Удаление правил
  • Сброс цепочек (удаление всех правил цепи)
  • Сброс всех цепочек и таблиц, удаление всех цепочек правил, разрешение всего трафика.

Примечание: При работе с брандмауэрами очень важно быть внимательным, иначе можно закрыть себе доступ к собственному серверу, заблокировав SSH-трафик (порт 22 по умолчанию). Если вы случайно заблокировали себе доступ к серверу, подключитесь к нему с помощью консоли, чтобы исправить настройки брандмауэра. Также решить эту проблему может перезагрузка сервера (только в случае если сохраненные правила брандмауэра разрешают трафик SSH).

Требования

Для начала нужно настроить сервер и создать не-root пользователя с расширенными правами. Подробнее об этом можно прочитать в руководствах:

Вывод правил IPTables

Существует два способа просмотра активных правил фаервола IPTables:

  1. В виде таблицы;
  2. В виде списка спецификаций правил.

Оба метода предоставляют примерно одинаковую информацию в разных форматах.

Вывод правил по спецификации

Чтобы вывести список правил по спецификации, запустите:

sudo iptables -S
Example: Rule Specification Listing
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N ICMP
-N TCP
-N UDP
-A INPUT -m conntrack —ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack —ctstate INVALID -j DROP
-A INPUT -p udp -m conntrack —ctstate NEW -j UDP
-A INPUT -p tcp -m tcp —tcp-flags FIN,SYN,RST,ACK SYN -m conntrack —ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack —ctstate NEW -j ICMP
-A INPUT -p udp -j REJECT —reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT —reject-with tcp-reset
-A INPUT -j REJECT —reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp —dport 22 -j ACCEPT

Как видите, вывод содержит команды, которые использовались для создания правил (без команды iptables). Также эта команда выводит содержимое конфигурационных файлов, если вы когда-либо использовали такие команды:

iptables-persistent
iptables save

Вывод цепочки правил

Чтобы ограничить вывод до определённой цепочки (INPUT, OUTPUT, TCP и т.п.), нужно просто указать имя цепочки после опции –S. К примеру, чтобы получить все правила цепи TCP, нужно запустить:

sudo iptables -S TCP
Example: TCP Chain Rule Specification Listing
-N TCP
-A TCP -p tcp -m tcp —dport 22 -j ACCEPT

Вывод правил в виде таблиц

Такой формат вывода правил iptables позволяет сравнивать разные правила.

Чтобы вывести все активные правила в виде таблицы, запустите iptables с опцией –L:

sudo iptables -L

Это выведет все текущие правила брандмауэра, отсортированные по цепочкам.

Чтобы ограничить вывод до определённой цепочки, просто укажите имя нужной цепи после опции –L. Например:

sudo iptables -L INPUT
Example: Input Chain Rule Table Listing
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all — anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all — anywhere anywhere
DROP all — anywhere anywhere ctstate INVALID
UDP udp — anywhere anywhere ctstate NEW
TCP tcp — anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
ICMP icmp — anywhere anywhere ctstate NEW
REJECT udp — anywhere anywhere reject-with icmp-port-unreachable
REJECT tcp — anywhere anywhere reject-with tcp-reset
REJECT all — anywhere anywhere reject-with icmp-proto-unreachable

Первая строка вывода показывает имя цепочки (в данном случае это INPUT), а затем её политику по умолчанию (DROP).Следующая строка содержит заголовки всех столбцов в таблице, а затем следуют правила цепочки. Рассмотрим подробнее каждый заголовок:

  • target: определяет, что делать с пакетом, если он соответствует правилу. Например, пакет может быть принят, сброшен, внесен в журнал или отправлен другой цепочке правил.
  • prot: задаёт протокол (например, TCP, UDP, ICMP и т.д.).
  • opt: показывает параметры IP (редко используется).
  • source: исходный IP-адрес или подсеть трафика (или anywhere).
  • destination: целевой IP-адрес или подсеть трафика (или anywhere).

Последний столбец без названия определяет опции правила (опцией в данном случае называется любая часть правила, которая не относится ни к одному из предыдущих столбцов).

Вывод количества пакетов и байтов

При просмотре правил iptables можно также запрашивать количество пакетов и байтов, которые совпали с каждым конкретным правилом. Для этого просто используйте опции -L и -v.

К примеру, запросите цепочку INPUT:

sudo iptables -L INPUT -v
Example: Verbose Listing
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
284K 42M ACCEPT all — any any anywhere anywhere ctstate RELATED,ESTABLISHED
0 0 ACCEPT all — lo any anywhere anywhere
0 0 DROP all — any any anywhere anywhere ctstate INVALID
396 63275 UDP udp — any any anywhere anywhere ctstate NEW
17067 1005K TCP tcp — any any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
2410 154K ICMP icmp — any any anywhere anywhere ctstate NEW
396 63275 REJECT udp — any any anywhere anywhere reject-with icmp-port-unreachable
2916 179K REJECT all — any any anywhere anywhere reject-with icmp-proto-unreachable
0 0 ACCEPT tcp — any any anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

Обратите внимание: в выводе добавилось два столбца по имени pkts и bytes.

Сброс счетчиков пакетов и байтов

Чтобы очистить счетчики пакетов и байтов, используйте опцию –Z. Эти счетчики сбрасываются после перезагрузки системы. Это позволяет узнать, получает ли сервер какой-либо трафик, совпадающий с правилами брандмауэра.

Итак, чтобы очистить счётчики для всех цепочек и правил, используйте опцию –Z без дополнительных параметров:

sudo iptables -Z

Чтобы очистить счётчики для всех правил определённой цепи, укажите имя цепочки после –Z. Например, чтобы сбросить счётчики цепи INPUT, нужно ввести:

sudo iptables -Z INPUT

Чтобы сбросить счётчики для конкретного правила, укажите имя цепочки и номер правила. Например, чтобы сбросить счётчики первого правила цепи INPUT, нужно использовать:

sudo iptables -Z INPUT 1

Удаление правил iptables

Удалять правила брандмауэра iptables тоже можно двумя способами.

Удаление правил по спецификации

Первый способов удаления правил Iptables – использование спецификации правила. Для этого нужно запустить команду iptables с опцией –D, после которой указывается спецификация правила. Чтобы удалить правила таким способом, можно обратиться за помощью к выводу уже знакомой команды:

К примеру, чтобы удалить правило, которое сбрасывает недопустимые входящие пакеты (-A INPUT -m conntrack —ctstate INVALID -j DROP), нужно запустить команду:

sudo iptables -D INPUT -m conntrack —ctstate INVALID -j DROP

Примечание: При этом нужно исключить опцию –А, которая задаёт положение правила во время создания.

Удаление правила по номеру и цепочке

Кроме того, правило можно удалить, зная имя цепочки и номер строки, к которой оно находится. Чтобы узнать номер строки правила, используйте опцию —line-numbers:

sudo iptables -L —line-numbers
[secondary_output Example Output: Rules with Line Numbers]
Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all — anywhere anywhere ctstate RELATED,ESTABLISHED
2 ACCEPT all — anywhere anywhere
3 DROP all — anywhere anywhere ctstate INVALID
4 UDP udp — anywhere anywhere ctstate NEW
5 TCP tcp — anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
6 ICMP icmp — anywhere anywhere ctstate NEW
7 REJECT udp — anywhere anywhere reject-with icmp-port-unreachable
8 REJECT tcp — anywhere anywhere reject-with tcp-reset
9 REJECT all — anywhere anywhere reject-with icmp-proto-unreachable
10 ACCEPT tcp — anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED
.

Это добавит номер строки для каждого правила.

Зная имя цепи и номер строки, в которой находится искомое правило, используйте команду iptables –D, указав после опции эти данные. К примеру, чтобы удалить правило цепочки INPUT, которое сбрасывает недействительные пакеты, нужно использовать:

sudo iptables -D INPUT 3

Сброс цепочек правил

Брандмауэр Iptables предоставляет возможность удалить все правила цепочки – сбросить цепочку правил. Данный раздел рассматривает несколько способов сделать это.

Примечание: Будьте внимательны, не заблокируйте себя на собственном сервере, случайно сбросив цепочку правил с политикой drop или deny. Если же вы всё-таки заблокировали себя, используйте консоль, чтобы остановить доступ.

Сброс одной цепи

Чтобы сбросить определённую цепочку правил, используйте флаг –F (или его полную версию —flush), указав имя цепочки.

Например, чтобы удалить все правила цепочки INPUT, запустите:

sudo iptables -F INPUT

Сброс всех цепочек

Чтобы сбросить все цепочки правил – то есть, удалить все правила фаервола, — используйте опцию –F (или —flush) без дополнительных параметров.

sudo iptables -F

Сброс всех правил, удаление всех цепочек, разрешение всего трафика

Этот раздел покажет, как сбросить все правила, цепочки и таблицы брандмауэра и разрешить весь трафик.

Примечание: Это полностью отключит фаервол. Следуйте данному разделу только в том случае, если хотите заново настроить правила фаервола.

Сначала настройте стандартную политику всех цепочек; это должна быть политика ACCEPT. В основном это нужно для того, чтобы случайно не заблокировать себе доступ к собственному серверу.

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Затем сбросьте таблицы nat и mangle, сбросьте все цепочки (флаг –F) и удалите все нестандартные цепочки правил (-X)

sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

Теперь брандмауэр пропускает весь сетевой трафик. Если сейчас запросить список правил, результат будет нулевым, на экране появятся только имена стандартных цепочек (INPUT, FORWARD и OUTPUT).

Заключение

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

www.8host.com

Iptables: установка и настройка.

Iptables — это приложение/программа, которая позволяет настраивать предоставленный ядром Linux межсетевой экран, в котором пользователь имеет возможность добавлять или удалять соответствующие его требованиям правила безопасности.

Iptables используется для IPv4, ip6tables — для IPv6.

Обычно, правила iptables настраиваются системным администратором либо аналитиком или IT менеджером.

Важно : чтобы применять правила iptables , нужны root-права.

Установка iptables

Сегодня iptables встраивается в каждое ядро Linux и на каждом известном линуксовом дистрибутиве можно найти его пребилд. В большинстве линуксовых систем iptables установлена в папку /usr/sbin/iptables . Еще ее можно найти в /sbin/iptables , но желаемое расположение остается в папке /usr/sbin .

Установка в Ubuntu или Debian:

В CentOS:

В RHEL:

Версии iptables

Чтобы узнать версию установленного iptables , введите эту команду в терминале:

Как запустить и остановить межсетевой экран iptables

Чтобы остановить iptables в OpenSUSE, введите эту команду:

Запустить его снова:

Для Ubuntu:

Для Debian & RHEL:

Для CentOS:

Вывод списка правил iptables

Чтобы узнать все активные правила в iptables, откройте терминал и введите следующую команду:

Если никаких правил не существует (они не добавлены), вы увидите подобный вывод:

На картинке выше вы видите, что в iptables существуют 3 цепочки, которые называются INPUT, FORWARD, OUTPUT и никакие правила для них не применяются.

Введите следующую команду чтобы узнать статус цепочек вашего межсетевого экрана iptables:

Как удалять правила в iptables

Чтобы удалить все правила из iptables, введите следующую команду:

Если вы хотите удалить только цепочку INPUT или любую другую цепочку, используйте следующие команды:

Цепочки ACCEPT или DROP

Чтобы принимать или откидывать отдельные цепочки, введите одну из следующих команд в терминале, которая соответствует вашим требованиям:

Правило выше не разрешит принимать любой трафик на этом сервере.

Чтобы вернуть его назад к ACCEPT, сделайте следующее:

Тоже самое и для других цепочек:

Замечание: По умолчанию, все цепочки iptables находятся в режиме ACCEPT.

Разрешаем порты

Если у вас на сервере запущен веб-сервер, тогда вы должны разрешить 80 порт вашему межсетевому экрану для того, чтобы сервер мог его прослушивать или отвечать на него. Сделаем это с помощью следующей команды:

  • -A означает добавление нового правила в список iptables.
  • INPUT значит, что изменения касаются цепочки INPUT.
  • -P — указывает на протокол. В этом случае, на TCP.
  • —dport — порт назначения. По умолчанию любой веб-сервер запущен на 80-ом порте.

Точно также вы можете разрешить порт SSH:

По умолчанию, SSH запущен на 22 порте.

Замечание: Пример хорошей практики — не запускать SSH на порте по умолчанию. Сделайте это на другом порте! Для этого откройте файл /etc/ssh/sshd_config в своем любимом редакторе и измените 22 на любой другой свободный номер порта.

Блокирование портов

Чтобы заблокировать порт 135, вводим:

Если вы хотите заблокировать возможность подключаться по SSH с вашего сервера к другому хосту/серверу, введите следующую команду:

Делая это, никто не сможет использовать ваш сервер для старта SSH подключения. Цепочка OUPUT будет фильтровать, а DROP — сбрасывать любое исходящее TCP подключение к другим хостам.

Разрешаем IP-адреса и порты

Делаем это с помощью команды:

Правило -s 0/0 разрешает любой IP-адрес источника.

Если вы хотите разрешить определенный IP-адрес, используйте эту команду:

В примере выше, вы разрешаете только IP-адресу 12.12.12.12 подключаться к порту SSH. Остальные IP-адреса не смогут подключитьcя к 22 порту.

Если вы хотите заблокировать IP-адрес, измените ACCEPT на DROP таким образом:

Эта команда не разрешит подключаться к порту 22 устройствам с IP-адресами с 12.12.12.1 по 12.12.12.255.

Блокирование ICMP

Если вам нужно заблокировать запрос ICMP (ping) от и к вашему серверу, введите следующие команды:

Эта команда заблокирует отправку ICMP пакетов к другому хосту. Попробуйте пропинговать google.com, у вас ничего не получится!

Чтобы заблокировать входящий ping запрос, введите следующие команды в терминале:

Теперь сервер не будет отвечать на ping запросы.

Как предотвращать DDoS атаки с помощью iptables

Я уверена, что вы все знаете что такое DDoS. Чтобы не допустить этот, в последнее время очень популярный вид атаки, воспользуйтесь следующей командой:

  • —limit 20/minute — м аксимальная средняя частота положительных результатов. После числа можно указывать единицы: `/second’, `/minute’, `/hour’, `/day’; значение по умолчанию — 3/hour. Лимит настраивайте в зависимости от своих требований.
  • —limit-burst number — о граничивает исходное число пропускаемых пакетов: это число увеличивается на единицу каждый раз когда ограничение на частоту положительных результатов не достигается. Это происходит столько раз, сколько указано в данном параметре. Значение по умолчанию — 5.

Блокировка сканирования порта используя iptables

Хакеры так и ждут возможности просканировать открытые порты на вашем сервере и взломать систему безопасности. Чтобы не допустить этого безобразия:

где block-scan — это название новой цепочки.

Надеюсь, что этот пост был максимально полезным для вас!

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, регистрируйтесь на курсы Cisco и Linux Professional Institute на платформе SEDICOMM University.

blog.sedicomm.com

Настройка netfilter с помощью iptables

Утилита командной строки iptables используется для настройки брандмауэра netfilter, встроенного в систему на базе ядра Linux.

Данная инструкция подходит как для чайников, которые хотят разбираться в аспектах защиты сети, так и опытных специалистов в качестве шпаргалки.

Принцип настройки

Общий синтаксис использования iptables:

iptables -t [номер]

Правила netfilter распределены по 4-м таблицам, каждая из которых имеет свое назначение (подробнее ниже). Она указывается ключом -t, но если данный параметр не указан, действие будет выполняться для таблицы по умолчанию — filter.

Команды указывают, какое именно действие мы совершаем над netfilter, например, создаем или удаляем правило.

В каждой таблице есть цепочки, для каждой из которых создаются сами правила. Например, для вышеупомянутой таблицы filter есть три предопределенные цепочки — INPUT (входящие пакеты), OUTPUT (исходящие) и FORWARD (транзитные).

[номер]

Некоторые команды требуют указания номера правила, например, на удаление или редактирование.

Условие описывает критерии отработки того или иного правила.

Ну и, собственно, что делаем с пакетом, если он подходит под критерии условия.

* справедливости ради, стоит отметить, что ключ с действием не обязан идти в конце. Просто данный формат чаще всего встречается в инструкциях и упрощает чтение правил.

Ключи iptables и примеры их использования

Для работы с таблицами (iptables -t)

Напоминаю, все правила в netfilter распределены по таблицам. Чтобы работать с конкретной таблицей, необходимо использовать ключ -t.

www.dmosk.ru

Популярное:

  • 24062018 приказ Trainz-Mp - Мультиплееры в Trainz Официальный мультиплеер | 24.06.2018 | Вос. Egor2606 21 Июн 2018 Официальный Мультиплеер | 24.06.2018 | Воскресенье Карта: Узловая Выдача локомотивов: 17:30 [МСК] Время старта: 18:00 […]
  • Правила доменов Правила регистрации доменных имен в доменах RU и РФ Правила регистрации доменных имен в доменах .RU и .РФ Правила регистрации доменных имен в доменах .RU и .РФ (именуемые в дальнейшем «Правила») регулируют отношения, […]
  • Законы германии о суде Законы германии о суде Для того, что бы получить pin-код для доступа к данному документу на нашем сайте, отправьте sms-сообщение с текстом zan на номер Абоненты GSM-операторов ( Activ, Kcell, Beeline, NEO, Tele2 ) отправив SMS […]
  • Приказы параграф Приказы параграф Для того, что бы получить pin-код для доступа к данному документу на нашем сайте, отправьте sms-сообщение с текстом zan на номер Абоненты GSM-операторов ( Activ, Kcell, Beeline, NEO, Tele2 ) отправив SMS на […]
  • Семейский городской суд Семейский городской суд Для того, что бы получить pin-код для доступа к данному документу на нашем сайте, отправьте sms-сообщение с текстом zan на номер Абоненты GSM-операторов ( Activ, Kcell, Beeline, NEO, Tele2 ) отправив SMS […]
  • Рп правила для админов Обсуждения Правила для администраторов 1 сообщение Правила для Администрации на ARP 1. Иметь свой проект - Снятие! 2. Быть Администратором на другом Проекте - Снятие! 3. Продажа Аккаунта - Снятие! 4. Цензура в чат, а особенно в […]
  • Кс 16 правило саймона Кс 16 правило саймона Общие правила для игроков: 1. Запрещено использование дополнительного софта, дающего преимущества в игре! - В это число входят: читы, алиасы, скрипты. 2. Запрещено использовать в NickName: матерные […]
  • Справка о проживании в садовом товариществе Справка о проживании в садовом товариществе Я, ветеран ВОВ, инвалид 2-ой гр., 1930 г.р., проживал постоянно вместе с сыном и его семьей (нуждаюсь в постоянном уходе) на своем земельном участке, принадлежащем мне на правах […]