Настроить сервер детонации портов (knockd)?

Я пытаюсь настроить детонацию порта на моем RasPI запуске Raspbmc , используя knockd .

Вот что я сделал:

sudo apt-get update
sudo apt-get install knockd

... затем отредактировал файлы:

/etc/default/knockd:

# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1

/etc/knockd.conf:

[options]
        logfile = /var/log/knockd.log

[open_close-PPTP_VPN]
        sequence      = 3141,5926,5359
        seq_timeout   = 10
        tcpflags      = syn,ack
        start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 1723 -j ACCEPT
        cmd_timeout   = 45
        stop_command  = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 1723 -j ACCEPT

затем запустите демон:

sudo service knockd restart

Проверьте, что это:

ps aux |grep knoc

= >

root     12560  0.0  1.1   6028  4424 ?        Ss   02:55   0:00 /usr/sbin/knockd -d
pi       12877  0.0  0.1   1972   612 pts/1    S+   02:57   0:00 grep knoc

Захватите пакеты, чтобы увидеть, что происходит на проводе.

sudo tcpdump 'src 211.212.77.33 and portrange 3000-6000 and tcp' -nn

Теперь протестируйте (с Android-телефона, используя данные 3G и приложение Port Knocker ) - вот результат (192.168.1.31 - это IP-адрес RasPi).

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
02:56:15.244087 IP 211.212.77.33.55399 > 192.168.1.31.3141: Flags [S], seq 3126604301, win 14600, options [mss 1460,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale 3], length 0
02:56:15.528594 IP 211.212.77.33.55405 > 192.168.1.31.5926: Flags [S], seq 2477232254, win 14600, options [mss 1460,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale 3], length 0
02:56:15.824344 IP 211.212.77.33.55408 > 192.168.1.31.5359: Flags [S], seq 154955077, win 14600, options [mss 1460,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale 3], length 0

Nice и dandy, 3 TCP-пакета, каждый около 300 мс друг от друга, на правильных портах.

... но watch iptables -L -n не показывает изменений в конфигурации iptables.

Кроме того, в файле журнала knockd ничего не было, кроме сообщения «начатое сервером».

Кажется, что сервер knockd либо не получает пакеты, либо не может их распознать ...

Я даже попробовал «команду запуска» touch /tmp/knock.txt, но, конечно, файл не смог появиться.

Любые предложения?

4 голоса | спросил Cristi Diaconescu 17 Mayam13 2013, 04:16:50

2 ответа


4

Трещины.

TLDR: используйте эту строку:

tcpflags      = syn

вместо этого:

tcpflags      = syn,ack

Длинная история:

Я нашел полезным при отладке для запуска демона knockd в интерактивном режиме:

sudo service knockd stop
sudo knockd -D -v

Таким образом, демон запускается на переднем плане и печатает его конфигурацию, а затем сообщения о статусе в реальном времени.

Затем я попробовал порвать с мобильного телефона. Пакеты прошли (проверено с помощью tcpdump), но нет ответа от knockd.

Как было предложено @lenik в комментарии, я редактировал /etc/knockd.conf и прокомментировал tcpflags.

Вставьте еще одну монету ... (перезапустите демон knockd ...) и удачи! Начались сообщения об обновлении состояния!

По-видимому, строка конфигурации:

tcpflags      = syn,ack

... означает: «Посмотрите только на пакеты, у которых есть ОБЫЧКА SYN и флаги ACK»! что, хотя технически возможно, вряд ли произойдет.

В моих тестах я нашел из вывода tcpdump, что фактические пакеты детонации (с флагом SYN) были в скором времени (1-2 секунды), за которым последовало равное количество пакетов, используя одни и те же порты назначения, но с флагом RST set - иногда, но не всегда, в том же порядке.

Это иногда создавало дублированные записи в правилах iptables.

В конце концов, то, что сработало для меня, было:

tcpflags      = syn

Я предполагаю, что следующее будет работать (не тестировалось):

tcpflags      = syn,!rst

Теперь, если бы я мог только понять, почему Vodafone Romania блокирует порт PPTP в плане 3G ...

ответил Cristi Diaconescu 19 Mayam13 2013, 01:03:35
0
start_command = sudo /sbin/iptables -I INPUT -s %IP% -p tcp --dport 1723 -j ACCEPT

, откуда приходит пароль sudo? поскольку эта команда должна быть выдана демоном, вам лучше заменить ее (no sudo):

start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 1723 -j ACCEPT
ответил lenik 17 Mayam13 2013, 06:44:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132