Использование iptables в linux
Общие понятия
Входящие пакеты и подключения (input) - отправленные на компьюте
Исходящие пакеты и соединения (output) - отправленные с компьютера
Проходящие пакеты (forward) - отправленные через компьютер
accept - разрешить прохождение пакетов
drop - удалить пакет
reject - отклонить пакет, в таком случае отправителю будет отправлено сообщение, что пакет отклонен
log - сделать запись о пакете в log файл
queue - отправить пакет пользовательскому приложению
prerouting - в эту цепочку попадает пакет перед тем ка пройти все остальные правила, т.е. перед обработкой iptables
postrouting - в эту цепочку попадает пакет после остальных правил, т.е. те пакеты которые прошли цепочку iptables
Каждое новое правило дополняет или изменяет уже существующее выше строки и это надо учитывать
Действие по умолчанию accept
Соответствия:
-p - указать протокол (tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh)
-s - адрес ip отправителя
-d - ip получателя
-i - входящий сетевой интерфейс
-o - исходящий сетевой интерфейс
-j - выбор действия
Таблицы iptables
Таблицы - уровень абстракции предназначенный для выполнения разных действий над пакетами ( фильтрация, модификация )
filter - основная таблица, которая используется для фильтрации пакетов по умолчанию
nat - может использоваться если компьютер используется в качестве маршрктизатора
raw - для пакетов, которые еще не прошли обработку
mangle - для модификации пакетов
Утилита iptables
Синтаксис:
iptables -t таблица действие цепочка параметры
iptables -h
man iptables
Действие:
N - создать цепочку
X - удалить цепочку
S - вывод всех правил
L - вывести все правила в текущей цепочке
A - добавить правило в цепочку
С - проверить все правила
D- удалить правила
I - вставить номер нужного правила
F - отчистить все правила
-P - установить действие по умолчанию
Примеры
Все действия по умолчанию выполняются над таблицей filter
Список правил:
~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Правило для цепочки INPUT:
t@x:~$ sudo iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
Очистить правила:
sudo iptables -F
Очистить правила для цепочки INPUT
sudo iptables -F INPUT
Правило по умолчанию для цепочки FORWARD:
sudo iptables -p FORWARD DROP
Блокировка входящих пакетов:
sudo iptables -A INPUT -s 192.168.61.0/24 -j DROP
-A добавить правило, -s выбрать ip, -j выбрать действие
Вместо /24 можно использовать расширенный вариант маски, например /255.255.255.0
Запретить для адреса 192.168.1.130 доступ по протоколу ssh/tcp
sudo iptables -A INPUT -s 192.168.1.130 -p tcp --dport ssh -j DROP
dport будет работать только совместно с опцией -p
Удаление правила
sudo iptables [-t таблица] -D цепочка спецификации_правила
sudo iptables [-t таблица] -D цепочка номер_правила
sudo iptables [-t таблица] -F [цепочка]
Для удаления правила по номеру:
sudo iptables -t filter -D INPUT 1
Для удаления правила вводится та же строка что и при создании правила, только вместо опции -A используется опция -D:
sudo iptables -D INPUT -s 192.168.1.131 -p tcp --dport ssh -j DROP
Сохранение конфигурации
Чтобы правила сохранились и после перезагрузки компьютера, необходимо выполнить команду:
$ sudo iptables-save
# Generated by iptables-save v1.8.4 on Sun Oct 2 00:00:49 2022
*filter
:INPUT ACCEPT [2184:416832]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [2290:397146]
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j DROP
-A INPUT -s 192.168.1.120/32 -p tcp -m tcp --dport 22 -j DROP
-A INPUT -s 192.168.1.130/32 -p tcp -m tcp --dport 22 -j DROP
COMMIT
# Completed on Sun Oct 2 00:00:49 2022
Источники
Связанные темы
Конфигурация vsftpd в ОС Linux Ubuntu
Установка и конфигурация samba в Linux
Конфигурация openvpn сервера в Linux Alpine
Базовые понятие о настройках и безопасности в сети
Использование ifconfig в Linux
Настройка openvpn сервера в Linux
Полезные сетевые утилиты Linux
Использование fail2ban в Linux
Конфигурация сети в Alpine Linux