Hetzner - DokuWiki

Knockd/ru
(Установка)
Zeile 22: Zeile 22:
 
== Установка==
 
== Установка==
  
С большой степенью вероятности вы найдете knockd в каждом дистрибутиве его менеджере пакетов. В Gentoo это:
+
С большой степенью вероятности вы найдете knockd в каждом дистрибутиве, в его менеджере пакетов. В Gentoo это:
  
 
  emerge knock
 
  emerge knock

Version vom 16. August 2019, 11:47 Uhr

Inhaltsverzeichnis

Введение

В этом маленьком руководстве я хотел бы рассказать, как мы делаем наш SSHD более безопасным с помощью Knock и iptables.

В этом уроке я буду использовать Gentoo! При использовании других дистрибутивов могут быть отличия!

Пожалуйста, проверяйте все изменения сначала локально! Если вы сделаете ошибки, вы можете заблокировать себя на своём же сервере!

Все делают ошибки. Я тоже. Если я где-то здесь её сделал, то это ваша проблема. Всё тщательно проверьте!

Объяснение

Как только ваш knockd будет настроен, вы сможете получить доступ к серверу по SSH с помощью knock.

Это будет выглядеть примерно так:

knock <IP-адрес или доменное имя> 1234 5678 91011
ssh user@host

Установка

С большой степенью вероятности вы найдете knockd в каждом дистрибутиве, в его менеджере пакетов. В Gentoo это:

emerge knock

В противном случае: Knock.

Я думаю, мне не нужно много объяснять, что каждый администратор должен быть в состоянии скомпилировать приложение из исходных кодов.

Конфигурация

Теперь (в зависимости от способа установки) файл knockd.conf есть у нас в / etc.

Теперь отредактируем этот файл:

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

[opencloseSSH]
       sequence      = 1234,5678,9101
       seq_timeout   = 15
       tcpflags      = syn
       start_command = /sbin/iptables -A open -s %IP% -p tcp --dport 22 -j ACCEPT
       cmd_timeout   = 10
       stop_command  = /sbin/iptables -D open -s %IP% -p tcp --dport 22 -j ACCEPT

Объяснение:


[options] = основные настройки для knockd
logfile = место для протокола knockd.


[opencloseSSH] = название секции конфигурации, в этом случае открытие и закрытие SSH портов.
sequence = порты, в которые мы должны постучаться, чтобы получить доступ :)
seq_timeout = время, когда knockd ожидает окончания всей последовательности.
seq_timeout должен быть больше, чем cmd_timeout!
tcpflags = на какие пакеты должен реагировать knockd (fin|syn|rst|psh|ack|urg).
start_command = это команда, которая выполняется при успехе.br> cmd_timeout = это время, после которого выполняется stop_command.
stop_command = команда, которая выполняется после cmd_timeout. В нашем случае команда, которая удаляет правила iptables, предоставляющее доступ к порту 22 для определённого IP.

Так что теперь вы можете немного поиграться...но если вы не полностью понимаете, что вы делаете, лучше оставьте всё как есть :P.

Тестирование

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

knockd --debug --verbose
odin ~ # knockd --debug --verbose
config: new section: 'options'
config: log file: /var/log/knockd.log
config: new section: 'opencloseSSH'
config: opencloseSSH: sequence: 1234:tcp,5678:tcp,9101:tcp
config: opencloseSSH: seq_timeout: 15
config: tcp flag: SYN
config: opencloseSSH: start_command: /sbin/iptables -A open -s %IP% -p tcp --dport 22 -j ACCEPT
config: opencloseSSH: cmd_timeout: 10
config: opencloseSSH: stop_command: /sbin/iptables -D open -s %IP% -p tcp --dport 22 -j ACCEPT
ethernet interface detected
Local IP: 192.168.2.3
listening on eth0...

Стучимся с другого компьютера:

knock 192.168.2.3 1234 5678 9101

Теперь на сервере вы должны увидеть следующее:

2006-10-27 15:41:57: tcp: 192.168.2.9:52946 -> 192.168.2.3:1234 74 bytes
192.168.2.9: opencloseSSH: Stage 1
2006-10-27 15:41:57: tcp: 192.168.2.9:59128 -> 192.168.2.3:5678 74 bytes
192.168.2.9: opencloseSSH: Stage 2
2006-10-27 15:41:57: tcp: 192.168.2.9:51323 -> 192.168.2.3:9101 74 bytes
192.168.2.9: opencloseSSH: Stage 3
192.168.2.9: opencloseSSH: OPEN SESAME
opencloseSSH: running command: /sbin/iptables -A open -s 192.168.2.9 -p tcp --dport 22 -j ACCEPT
192.168.2.9: opencloseSSH: command timeout
opencloseSSH: running command: /sbin/iptables -D open -s 192.168.2.9 -p tcp --dport 22 -j ACCEPT

Если это так, мы закончили с настройкой и теперь можем запустить knockd.

Запуск

Если вы установили Knockd из менеджера пакетов вашего дистрибутива, то должен установиться и init скрипт.

Например, для Gentoo вы запускаете его так:

/etc/init.d/knock start

Подобным образом и в других дистрибутивах.

Теперь необходимо включить старт для загрузки (также отличается в зависимости от дистрибутива).

Для Gentoo это будет выглядеть так:

rc-update add knock default

Заключение

Теперь мы закончили, и knockd работает.

Ниже я перечислил несколько ссылок, а также добавил раздел в статью об SSHD и iptables.

Если вы желаете, вы также можете добавить несколько внешних ссылок на iptables и SSHD.

Ссылки

Knock
SSHD
iptables

--idle 16:02, 27. Nov 2006 (CET)



© 2019. Hetzner Online GmbH. Alle Rechte vorbehalten.