|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> программы
—> knockd
Port knocking
Автор: fr33man.
Недавно поставил FreeBSD в качестве роутера и получил внешний ip у провайдера. И все было вроде бы хорошо, но через пару дней в логах стали появляться попытки перебора пароля к ssh серверу. Сначала я стал блокировать атакующих через
firewall, но это не помогало... Было ощущение, что на меня ополчился весь интернет. :)) Решение напрашивалось само сабой — закрыть доступ к ssh из вне… но я пошел другим путем. Я помнил об одной технологии, которая могла мне
помочь — port knocking.
Немного теории.
Технология port knocking позволяет выполнять любые действия на сервере, даже если все порты на нем закрыты. В общем случае, Вам достаточно соедениться с определенными портами, в определенной последовательности, которую знаете только Вы и на сервере выполнятся действия, описанные Вами. Port knocking подразумевает наличие сервера и клиента. Сервер определяет все попытки соединения и если он обнаружил некую последовательность подключений, заданную Вами, то на сервере выполнятся некоторые действия, обычно это добавление правила в firewall. Клиент же должен подключиться к определенным портам и протоколам в заданной последовательности. Теперь перейдем от теории к практике.
Какой софт использовать?
Итак, первым делом посмотрим, что есть в портах:
router# cd /usr/ports/
router# make search key=knocking
Port: doorman-0.81_1
Path: /usr/ports/security/doorman
Info: A Port Knocking implementation, both daemon and client
Maint: lupe@lupe-christoph.de
B-deps: lsof-4.77
R-deps: lsof-4.77
WWW: http://doorman.sourceforge.net/
Port: knock-0.5.20051124
Path: /usr/ports/security/knock
Info: A flexible port-knocking server and client
Maint: shaun@FreeBSD.org
B-deps:
R-deps:
WWW: http://www.zeroflux.org/cgi-bin/cvstrac/knock/wiki/
router#
| Вот две программки, которые мне удалось найти. Не знаю почему, но я рещил установить вторую. ;). В состав порта knock входят две программы:
-   сервер (knockd)
-   клиент (knock)
Поэтому я сначала опишу настройку сервера, а потом клиента.
Настройка knockd сервера.
router# cd /usr/ports/security/knock
| Конфигурируем порт.
router# make config
---------------------------------------------------------------------¬
¦ Options for knock 0.5.20051124 ¦
¦ -----------------------------------------------------------------¬ ¦
¦ ¦ [X] SERVER Install knockd server ¦ ¦
¦ ¦ [ ] CLIENT Install knock client ¦ ¦
¦ ¦ ¦ ¦
¦ ¦ ¦ ¦
+-L------------------------------------------------------------------+
¦ [ OK ] Cancel ¦
L---------------------------------------------------------------------
| Собираем и устанавливаем knockd.
router# make install clean
| В данном случае я устанавливаю только сервер.
Теперь нужно скопировать файл конфигурации и немного его отредактировать.
router# cd /usr/local/etc/
router# cp knockd.conf.sample knockd.conf
| knockd.conf:
# Глобальная секция(описание параметров демона)
[options]
# Имя и путь к лог файлу
logfile = /var/log/knockd.log
# На каком интерфейсе демон
# будет ждать заданной последовательности
interface = rl0
# Секция, описывающая открытия
# и закрытия определенного порта
[opencloseSSH]
# Уникальная последовательность
sequence = 15537:udp,16345:tcp,31337:udp
# Таймаут соединения с портами
seq_timeout = 5
# Флаги, установленные в tcp пакетах
tcpflags = syn
# Команда, которая выполнитсся при успешном
# соединение с портами в определенной последовательности
start_command = /sbin/pfctl -t good_hosts -T add %IP%
# Через какое время будет выполнена stop_command,
# после выполнения start_command
cmd_timeout = 10
Команда, которая выполнится после timeout'а
stop_command = /sbin/pfctl -t good_hosts -T delete %IP%
# Секция для открытия порта
[open22]
sequence = 7214:tcp,8745:tcp,9214:udp
seq_timeout = 5
tcpflags = syn
# Команда, которая выполнится при успешном
# соединение с портами
command = /sbin/pfctl -t good_hosts -T add %IP%
# Секция для закрытия порта
[close22]
sequence = 4324:tcp,1244:tcp,4315:tcp
seq_timeout = 5
tcpflags = syn
command = /sbin/pfctl -t good_hosts -T delete %IP%
| Теперь о том, какие команды я выполняю. У меня в pf.conf прописано следующее:
ext_if="rl0"
table <good_hosts> persist
block in on $ext_if all
pass in on $ext_if inet proto tcp from <good_hosts> \
to $ext_if port 22 keep state
| Команда, прописанная в start_cmd или command, для секции [open_метка_], добавляет в таблицу good_hosts ip адрес компьютера которому можно соединяться по
ssh.
Для ipfw правила пишутся еще легче, например так:
# Добавляем разрешающее правило.
/sbin/ipfw add 100 allow tcp from %IP% to me 22 keep-state
# Удаляем предыдущее правило.
/sbin/ipfw delete 100
| Теперь запустим демон:
router# cd /usr/local/etc/rc.d/
router# echo knockd_enable=\"YES\" >> /etc/rc.conf
router# ./knockd.sh start
Starting knockd.
router# ps ax | grep knockd
19542 ?? Ss 0:00.01 /usr/local/bin/knockd -d
19544 p2 RL+ 0:00.00 grep knockd
router#
| Осталось только установить knock клиент на другой машине и протестировать его.
Настройка клиента.
Вторая машина так же находиться под управлением FreeBSD, так что опять же ставим из портов:
client# cd /usr/ports/security/knock
client# make config
---------------------------------------------------------------------¬
¦ Options for knock 0.5.20051124 ¦
¦ -----------------------------------------------------------------¬ ¦
¦ ¦ [ ] SERVER Install knockd server ¦ ¦
¦ ¦ [X] CLIENT Install knock client ¦ ¦
¦ ¦ ¦ ¦
¦ ¦ ¦ ¦
+-L------------------------------------------------------------------+
¦ [ OK ] Cancel ¦
L---------------------------------------------------------------------
|
client# make install clean
| Настраивать клиент не нужно. Нужно только запомнить или записать последовательность портов к которым нужно
обратиться. Наша последовательность такая: 15537:udp,16345:tcp,31337:udp. Ну что же попробуем подключиться:
client# ssh 192.168.0.2 -l fr33man
^C // Здесь я ждал около 2 минут.
client# knock -v 192.168.0.2 15537:udp 16345:tcp 31337:udp
hitting udp 192.168.0.2:15537
hitting tcp 192.168.0.2:16345
hitting udp 192.168.0.2:31337
client# ssh 192.168.0.2 -l fr33man
Password:
Last login: Sun Sep 3 17:26:19 2006 from 192.168.0.1
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 6.1-RELEASE-p3 (kernel-22.08.2006) #0: Tue Aug 22 12:40:53 MSD 2006
[fr33man@router ~]$
| В первый раз у меня соединение не прошло. А вот после того, как я "постучался" на сервер, специально для меня
открылся 22 порт. Посмотрим логи сервера:
router# tail /var/log/knockd.log
[2006-09-03 17:54] 192.168.0.3: opencloseSSH: Stage 1
[2006-09-03 17:54] 192.168.0.3: opencloseSSH: Stage 2
[2006-09-03 17:54] 192.168.0.3: opencloseSSH: Stage 3
[2006-09-03 17:54] 192.168.0.3: opencloseSSH: OPEN SESAME
[2006-09-03 17:54] opencloseSSH: running command: /sbin/pfctl
-t good_hosts -T add 192.168.0.3
[2006-09-03 17:54] 192.168.0.3: opencloseSSH: command timeout
[2006-09-03 17:54] opencloseSSH: running command: /sbin/pfctl
-t good_hosts -T delete 192.168.0.3
router#
| Теперь можно не боятся, что к Вашему серверу подберут пароль.
размещено: 2006-11-08,
последнее обновление: 2006-11-08,
автор: fr33man
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
|
Комментарии пользователей [19 шт.]