Страница 1 из 1
Защита подключения через SSH
Добавлено: 2007-11-23 12:17:59
devastator
Вобщем суть вопроса достаточно проста, но пока к сожалению не смог реализовать.
Необходимо завести учетную запись на сервере Free-BSD при входе на которую в фаервол будет добавляться нужное правило, при отключение пользователя правило удалялось. При этом пользователь не должен получать доступ к файловой системе машины, просто получал сообщение что типо адес с которого Вы выходите добавлено в фаервол, можете осуществлять дальнейшие подлкючения к серверам!
Все это делаеться для того чтобы обезопасить второй сервер, который находиться уже в Вашей внутренней сети! Например
Имеем Сервер windows 2003 в локальной закрытой от внешнего мира сети, сервер Unix-FreeBSD с реальным ип адресом. Сеть без домена.
Предположим что нам нужно получить доступ к rdp серверу к win2003.
Для этого подстраиваем natd.conf и прописываем там redirect_port tcp *.*.*.*:3389 внеш.ний.ип.ад.рес:порт.
Но для того чтобы обезопасить подключение следует создать пользователей, которые при входе будут открывать скрипт, который в свою очередь будет добавлять правило в фаервол с разрешением доступа именно с того адреса с которого эти пользователи в данный момент подключены.
Вот собственно эта задача требует решения. Я пока не силен в программировании (к великому сожалению), но все еще впереди. Так что буду рад если кто откликнеться и поможет с данной задачей.
Re: Защита подключения через SSH
Добавлено: 2007-11-23 17:30:06
schizoid
Knock
В переводе это означает 'стук', ну во входную дверь к примеру.
Это весьма оригинальное средство защиты, и управления удаленным компьютером.
Принцип его таков: knock сервер слушает кто стучиться, а knock клиент стучит по портам. При этом эти порты находятся в закрытом состоянии.
Knock сервер слушает сразу все порты на указанном интерфейсе, и отлавливает пакеты приходящие на определенные порты в определенной последовательности. Как только последовательность совпадет с заданной в конфигурационном файле выполняется соответствующая команда. Любая. То есть появляется возможность просто постучав клиентом по портам запустить к примеру синхронизацию серверов или еще чего. Хотя чаще всего используют для открытия доступа к сервисам. В комплекте с пакетом идет пример конфигурационного файл knockd.conf:
[options]
UseSyslog
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /bin/ipfwadm -I -i accept -P tcp -S %IP% -D 0/0 22
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /bin/ipfwadm -I -d accept -P tcp -S %IP% -D 0/0 22
tcpflags = syn
как видите, при стуке по портам 7000 8000 9000 открывается доступ к 22 порту, а если постучать в обратном порядке то закрывается...
Не уверен насчет наличия knock сервера под виндовз но клиент точно есть. Ну и естественно под nix клиент тоже есть
knock 7000 8000 9000
И все, дверь открылась

Кстати стучать можно многими инструментами их хватает как под винду, так и под nix. Тот же nmap к примеру...
Так как узнать какие именно порты слушает сервер почти не реально, то это еще один неплохой рубеж в защите вашего роутера. Пакет под фриску ставить так:
pkg -i
ftp://ftp.linux.kiev.ua/pub/Linux/frees ... -lightning
клиента под винду забирать здесь:
ftp://ftp.linux.kiev.ua/pub/Linux/frees ... /knock.exe
Re: Защита подключения через SSH
Добавлено: 2007-11-23 17:48:59
prud
Ставь OpenVPN (или другое по вкусу, но с этим наименьшая вероятность возникновения проблем на этапе настройки). Таким образом и тот сервис, который ты хочешь открыть, будет ходить по шифрованому соединению.
Re: Защита подключения через SSH
Добавлено: 2007-11-23 21:14:29
fr33man
Re: Защита подключения через SSH
Добавлено: 2007-11-26 14:26:09
devastator
Спасибо за помощь в решении данного вопроса! Однако есть еще один нюанс. Использую knocking хочеться добалять правила в ipfw с разными номерами в определенном диапазоне допустим с 4300 по 4400! Как это сделать? и естественно при отключении юзера от сервака чтобы именно его правило удалялось и не сбрасывало подключение других!?
Re: Защита подключения через SSH
Добавлено: 2007-11-27 0:22:57
dikens3
devastator писал(а):Спасибо за помощь в решении данного вопроса! Однако есть еще один нюанс. Использую knocking хочеться добалять правила в ipfw с разными номерами в определенном диапазоне допустим с 4300 по 4400! Как это сделать? и естественно при отключении юзера от сервака чтобы именно его правило удалялось и не сбрасывало подключение других!?
Зачем тебе разные?
1. Разрешать коннектиться только своим IP на 22 порт (knock)
2. Тебе нужно блокировать ВСЕ SYN пакеты на 22 порт (свои уже пропущены)
3. Пропусти уже установленный трафик на 22 порт (allow from any to me 22
established)
Коннекты не рвутся.
А если совсем правильно - используй таблицы, а не правила. :-) И Добавляй/удаляй всё что пожелаешь. Удачи.
Re: Защита подключения через SSH
Добавлено: 2007-11-27 18:00:49
devastator
dikens3 писал(а):devastator писал(а):Спасибо за помощь в решении данного вопроса! Однако есть еще один нюанс. Использую knocking хочеться добалять правила в ipfw с разными номерами в определенном диапазоне допустим с 4300 по 4400! Как это сделать? и естественно при отключении юзера от сервака чтобы именно его правило удалялось и не сбрасывало подключение других!?
Зачем тебе разные?
1. Разрешать коннектиться только своим IP на 22 порт (knock)
2. Тебе нужно блокировать ВСЕ SYN пакеты на 22 порт (свои уже пропущены)
3. Пропусти уже установленный трафик на 22 порт (allow from any to me 22
established)
Коннекты не рвутся.
А если совсем правильно - используй таблицы, а не правила. :-) И Добавляй/удаляй всё что пожелаешь. Удачи.
Да нет же! Дело в том, что с помощью knock я открываю совершенно не 22 порт! 22 -порт у меня по умолчанию открыт! мне нужно чтобы при "стуке" из любой точки мира открывался нужный порт и в фаервол добалялось правило с разрешением ходить пакетам именно от того адреса с которого был произведен стук! И естественно чтобы после выхода постучавшегося в фаерволе это правило удалялось! А если к примеру заходит не один пользователь а 5, то нужно чтобы фаервол закрывал только его входящее соединение! Вот в чем суть вопроса! Может быть есть возможность через другую программу это реализовать!? Если да то какие?
Re: Защита подключения через SSH
Добавлено: 2007-11-28 15:18:52
schizoid
а параметр %IP% что передает? разве не адрес подключившегося?
а на отключение, скрипт повесь, который парсит фаер по определенному ИП , узнает номер правила и удаляет его.
Re: Защита подключения через SSH
Добавлено: 2008-01-20 20:44:38
cvetkovme
Приветствую всех.
Я не так давно начал использовать knockd. Очень простая и в тоже время полезная программа.
На сайте lissyara отличная статья про неё и не только...
C ее использованием не возникало проблем, пока мне не понадобилось поставить ее на виртуальный интерфейс netgraph.
Виртуальный интерфейс ngeth: на физическом rl0.
Может кто сталкивался, или просто знает почему knockd не воспринимает стуки.
Посоветуйте куда капнуть.
Всего доброго.
Re: Защита подключения через SSH
Добавлено: 2008-01-20 20:58:00
dikens3
Виртуальный интерфейс ngeth: на физическом rl0
knockd не всемогущ. К примеру не работает на tun интерфейсах.
Почитай что он поддерживает.
Re: Защита подключения через SSH
Добавлено: 2008-01-25 23:54:29
cvetkovme
Здравствуйте.
Я по поводу knock на виртуальных интерфейсах...
Суть такова:
На шлюзе - Виртуальный интерфейс(для подмены ARP, для кривого прова) у меня висит на физическом интерфейсе который смотрит в мир, само собой все блочит файервол, и с наружи шлюз не виден и не пингуется не телнетится. И еще хочется доступ к ssh с помощью knock.
Так вот, суть, после долгих рабочих дней и собирания дублирующего шлюза случайно обнаружил, что на ngeth интерфейсах knock не запускается и не слушает. Но, если например на физическом интерфейсе не имеем ip а на виртуальном(ngeth) имеем(пример 0.0.0.0).
Можно обхитрить knock вешаем на физический интерфейс IP 0.0.0.0(такойже как на ngeth), запускаем knock слушать физический интерфейс, убираем -alias 0.0.0.0 c Физического интерфейса.
Как это работает и почему я не разобрался, но после запуска knock и удаления ip, knock прикрасно слушает на ngeth интерфейсе с адресом 0.0.0.0, и выполняет все свои функции.
Если намудрил с объяснением - спрашивайте.
Может кому и понадобиться...