Форумы

GNU.SU - Записки нубо-линуксойда :: Форумы :: Сервисы :: SSH
 
<< Предыдущая тема | Следующая тема >>
PortKnocking на примере защиты ssh.
Модераторы: tastelinux, Frizze, andrey, Bender
Автор Добавил
tastelinux
Вск Янв 09 2011, 05:51
andreika

ID пользователя #1
Зарегистрирован: Птн Апр 30 2010, 12:25

Сообщений: 337
В данном посте я расскажу как просто защитить ssh сервер от брутфорса. Данный пост использует правило для iptables с использованием механизма port knocking.

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

Приступим к практике:

В данном примере я использую дистрибутив Debian и ip 192.168.11.1.

Создадим скрипт с правилом и дадим права на запуск:

andreika:~# touch /etc/portknock.sh && chmod 775 /etc/portknock.sh



Теперь задействуем наше правило в файле portknock.sh:

andreika:~# nano /etc/portknock.sh

Правило:
# Создаем цепочку правил sshprotect
iptables -N sshprotect
# Если адрес в списке, то подключение разрешено
iptables -A sshprotect -m state --state NEW -m recent --rcheck --name SSH -j ACCEPT
# Разрешить пакеты для уже установленных соединений
iptables -A sshprotect -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A sshprotect -j DROP
 
# Заносит адрес в список
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1500 -m recent --name SSH --set -j DROP
# Удаляет адрес из списка
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1499 -m recent --name SSH --remove -j DROP
 
# Применение для трафика ssh цепочку sshprotect
iptables -A INPUT -p tcp --dport 22 -j sshprotect



Запустим скрипт с правилом:

andreika:~# cd /etc/ && ./portknock.sh


Что бы добавить правило в автозагрузку, можно поместить скрипт, например в rc.local.

Теперь, чтобы получить доступ к серверу по ssh, нужно постучать на порт 1500, сделать это можно как и по telnet так и простым http запросом. Например:

Telnet:

telnet 192.168.11.1 1500


HTTP:

http://192.168.11.1:1500


Соответственно, чтобы закрыть порт, нужно постучать на порт 1499.

Вот таким способом можно избавиться от толпы желающих получить доступ к вашему серверу.

Оригинал.
Наверх

 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System