Hetzner - DokuWiki

Knockd/ru
(Конфигурация)
(Конфигурация)
 
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
 
== Введение==
 
== Введение==
  
В этом маленьком уроке я хотел бы рассказать, как мы делаем наш [[sshd|SSHD]] более безопасным с помощью [http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki Knock] и [[Security Firewall/ru|iptables]].
+
В этом маленьком руководстве я хотел бы рассказать, как мы делаем наш [[sshd|SSHD]] более безопасным с помощью [http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki Knock] и [[Security Firewall/ru|iptables]].
  
 
'''В этом уроке я буду использовать Gentoo! При использовании других дистрибутивов могут быть отличия!'''
 
'''В этом уроке я буду использовать Gentoo! При использовании других дистрибутивов могут быть отличия!'''
  
'''Пожалуйста, проверьте такие вещи сначала локально! Если Вы сделаете ошибки, Вы можете заблокировать себя на своём же сервере!'''
+
'''Пожалуйста, проверяйте все изменения сначала локально! Если вы сделаете ошибки, вы можете заблокировать себя на своём же сервере!'''
  
'''Все делают ошибки. Я тоже. Если я где-то здесь её сделал, то это Ваша проблема. Всё тщательно проверьте!'''
+
'''Все делают ошибки. Я тоже. Если я где-то здесь её сделал, то это ваша проблема. Всё тщательно проверьте!'''
  
 
== Объяснение ==
 
== Объяснение ==
  
Как только Ваш knockd будет настроен, Вы сможете получить доступ к серверу по [[sshd|SSH] с помощью knock.
+
Как только ваш knockd будет настроен, вы сможете получить доступ к серверу по [[sshd|SSH]] с помощью knock.
  
 
Это будет выглядеть примерно так:
 
Это будет выглядеть примерно так:
  
  knock <unsere ip oder domain> 1234 5678 91011
+
  knock <IP-адрес или доменное имя> 1234 5678 91011
 
  ssh user@host
 
  ssh user@host
  
 
== Установка==
 
== Установка==
  
С большой степенью вероятности Вы найдете knockd в каждом дистрибутиве его менеджере пакетов. В Gentoo это:
+
С большой степенью вероятности вы найдете knockd в каждом дистрибутиве, в его менеджере пакетов. В Gentoo это:
  
 
  emerge knock
 
  emerge knock
Zeile 36: Zeile 36:
 
Теперь отредактируем этот файл:
 
Теперь отредактируем этот файл:
  
[options]
+
<pre>
        logfile = /var/log/knockd.log
+
[options]
 +
      logfile = /var/log/knockd.log
  
[opencloseSSH]
+
[opencloseSSH]
        sequence      = 1234,5678,9101
+
      sequence      = 1234,5678,9101
        seq_timeout  = 15
+
      seq_timeout  = 15
        tcpflags      = syn
+
      tcpflags      = syn
        start_command = /sbin/iptables -A open -s %IP% -p tcp --dport 22 -j ACCEPT
+
      start_command = /sbin/iptables -A open -s %IP% -p tcp --dport 22 -j ACCEPT
        cmd_timeout  = 10
+
      cmd_timeout  = 10
        stop_command  = /sbin/iptables -D open -s %IP% -p tcp --dport 22 -j ACCEPT
+
      stop_command  = /sbin/iptables -D open -s %IP% -p tcp --dport 22 -j ACCEPT
 +
</pre>
  
 
Объяснение:
 
Объяснение:
 +
  
  
Zeile 57: Zeile 60:
  
  
<nowiki>[opencloseSSH]</nowiki> = название секции конфигурации, в этом случае открытие и закрытие SSH портов.<br>
+
 
 +
<nowiki>[opencloseSSH]</nowiki> = название секции конфигурации, в данном случае открытие и закрытие SSH портов.<br>
 
sequence = порты, в которые мы должны постучаться, чтобы получить доступ :)<br>
 
sequence = порты, в которые мы должны постучаться, чтобы получить доступ :)<br>
 
seq_timeout = время, когда knockd ожидает окончания всей последовательности.<br>
 
seq_timeout = время, когда knockd ожидает окончания всей последовательности.<br>
 
'''seq_timeout должен быть больше, чем cmd_timeout!'''<br>
 
'''seq_timeout должен быть больше, чем cmd_timeout!'''<br>
 
tcpflags = на какие пакеты должен реагировать knockd (fin|syn|rst|psh|ack|urg).<br>
 
tcpflags = на какие пакеты должен реагировать knockd (fin|syn|rst|psh|ack|urg).<br>
start_command = это команда, которая выполняется при успехе.br>
+
start_command = это команда, которая выполняется при успехе.<br>
 
cmd_timeout = это время, после которого выполняется stop_command.<br>
 
cmd_timeout = это время, после которого выполняется stop_command.<br>
 
stop_command = команда, которая выполняется после cmd_timeout. В нашем случае команда, которая удаляет правила iptables, предоставляющее доступ к порту 22 для определённого IP.<br>
 
stop_command = команда, которая выполняется после cmd_timeout. В нашем случае команда, которая удаляет правила iptables, предоставляющее доступ к порту 22 для определённого IP.<br>
  
Так что теперь Вы можете немного поиграться...но если Вы не полностью понимаете, что Вы делаете, лучше оставьте всё как есть :P.
+
Так что теперь вы можете немного поиграться... но если вы не полностью понимаете, что вы делаете, лучше оставьте всё как есть :P.
  
 
== Тестирование ==
 
== Тестирование ==
Zeile 92: Zeile 96:
 
  knock 192.168.2.3 1234 5678 9101
 
  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
 
  2006-10-27 15:41:57: tcp: 192.168.2.9:52946 -> 192.168.2.3:1234 74 bytes
Zeile 109: Zeile 113:
 
== Запуск==
 
== Запуск==
  
Если Вы установили Knockd из менеджера пакетов вашего дистрибутива, то должен установиться и init скрипт.
+
Если вы установили Knockd из менеджера пакетов вашего дистрибутива, то должен установиться и init скрипт.
  
Например, для Gentoo Вы запускаете его так:
+
Например, для Gentoo вы запускаете его так:
  
 
  /etc/init.d/knock start
 
  /etc/init.d/knock start
Zeile 129: Zeile 133:
 
Ниже я перечислил несколько ссылок, а также добавил раздел в статью об SSHD и iptables.
 
Ниже я перечислил несколько ссылок, а также добавил раздел в статью об SSHD и iptables.
  
Если Вы желаете, Вы также можете добавить несколько внешних ссылок на iptables и SSHD.
+
Если вы желаете, вы также можете добавить несколько внешних ссылок на iptables и SSHD.
  
 
== Ссылки ==
 
== Ссылки ==

Aktuelle Version vom 16. August 2019, 11:51 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 = это команда, которая выполняется при успехе.
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.