Ubuntu использование iptables + ipset

Средний рейтинг
Еще нет оценок
Мой рейтинг:

Всем привет!

У заказчика есть старенький сервер с FreeBSD (FreeBSD 8.2-RELEASE-p3 FreeBSD 8.2-RELEASE-p3 #0: Tue Sep 27 18:45:57 UTC 2011) на котором у них свой почтовый сервер.

Т.к. я с FreeBSD очень поверхностно знаком, то решил сделать всё тоже самое, что у них там, но на свежей Ubuntu 18.04.

В FreeBSD используется pf (packet filter), которого нет в Ubuntu, но есть UFW и IPTABLES.

В существующем варианте PF дает доступ к SSH определенный IP-адресам из списка. Как сделать такое в IPTABLES я не нашел, но нашел решение с помощью IPSET.

Установка:

Вызов помощи:

IPSET HELP

[свернуть]

Мануал:

IPSET MANUAL

[свернуть]

Как видно из мануала IPSET много чего умеет.

Мне пока что нужно самое простое – список доступа.

Создадим список:

где:

create – создать,

ssh_allow – название списка,

hash:ip – тип, используемый для данного списка

Добавим необходимый IP-адрес:

где:

add – добавить,

ssh_allow – список, созданный ранее,

192.168.1.50 – адрес, который добавляем в список.

Теперь можем посмотреть содержимое созданного списка:

Собственно, вывод:

Name: ssh_allow
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 184
References: 1
Number of entries: 1
Members:
192.168.1.50

Теперь надо добавить правило фильтрации в IPTABLES:

где:

-m set – указывает на использование модуля расширения – ipset,

–set ssh_allow src – сопоставлять пакеты, исходный заголовок которых совпадает (то есть содержится внутри) с набором с именем myset. Флаг src означает совпадение с «источником».

Проверим правило:

Теперь, если попробовать с другой машины попасть по SSH на эту – ничего не получится:

Получаем вот такое сообщение:

ssh: connect to host 192.168.1.4 port 22: Connection timed out

Что бы резрешить подключение с нужного адреса – просто добавим нужный адрес в списко ssh_allow. Перезапускать iptables не надо. Пробуем:

Для удаления IP из списка используем команду:

где:

del – удалить,

ssh_allow – нужный нам список,

192.168.1.50 – наш адрес.

ipset list ssh_aalow
Name: ssh_allow
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 88
References: 0
Number of entries: 0
Members:

Это, конечно, не все возможности, что есть.

Ссылки:

IPSET INFO

Linux Journal | сохраненная копия

If you found an error, highlight it and press Shift + Enter or to inform us.

Дмитрий

родился, учился, работаю-учусь

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

16 + три =

Пожалуйста, подтвердите человечность * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.