LINUX.ORG.RU
решено ФорумAdmin

Правила для шлюза и port knocking

 , , , ,


0

1

У меня два вопроса.

1

Есть шлюз на линуксе, где проброшен порт за нат для доступа к машине, на которой крутиться сервис. На шлюзе внешний адрес соответственно постоянный. Хочу закрыть прямой доступ к сервису через 2-3 «стука» с помощью port knocking. Как сделать port knocking я нашел (в вики nftables). Но нигде не вижу описания того, каким образом в данном случае port knocking воспринимается шлюзом по каждому шагу. Т.е. первый «стук», допустим, на порт 55555. Это входящий для шлюза или транзитный? Следующий шаг, отсучались на 55555, попали в список, стучимся на 66666. Это входящий или транзит? И последний, отстучались на 55555 и 66666, дальше можем стучаться по проброшеному порту. Это входящий или транзит?

Исходя из организации правил в вики, что все три стука это входящие, но в моем случае присутствует проброс порта, поэтому, я думаю, что для меня третье правило может быть транзитом. Рисковать не хочется, шлюз удаленный. Я правильно думаю? Цепочка транзита здесь вообще никак не задействована?

2

Если я получил доступ к сервису через «стук», как я могу установить запрет для повторных соединений с такого же ip, при этом не разрывая действующую установленную сессию? Чтобы гарантировать, что если я подключился один раз (первый раз) через «стук», все остальные, у кого такой же внешний адрес после ната, т.е. у кого ip из-за совпадения с моим тоже попал в белый список, не смогут подключиться? При этом я заранее не знаю, с какого устройства я буду подключаться (мак адрес не известен).

1. там все правила для input. Для проброса нужно еще правила писать.

Ссылка на реализацию port knocking это всего лишь пример который нужно допилить до нужного тебе функционала.

2. после успешного подключения к защищенному порту удалять разрешение. Самое простое решение - fail2ban.

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

vel ★★★★★ ()
Ответ на: комментарий от vel

По №1 я в курсе, поэтому и уточнил про 3 стук. Два первых, насколько я понимаю, в любом случае входящие.

По №2 хотелось бы избежать лишних сущностей. Есть вариант сделать это средствами nftables?

kardjoe ()

Ответ на второй вопрос разжеван прямо в man knockd.

thesis ★★★★★ ()
Ответ на: комментарий от kardjoe

можно разрешение на подключение создавать на несколько секунд.

Это значительно проще, чем средствами iptables/nftables определять момент реального установления соединения, а не приход первого syn.

Пакет syn+ack может быть хорошим событием подтверждающим установление соединения.

vel ★★★★★ ()
Ответ на: комментарий от vel

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

kardjoe ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.