Блокировка портов: лучшая безопасность, которую вы можете иметь на своем компьютере или сервере (развертывание + конфигурация)

Поразительные порты (на английском стук в порт), несомненно, является практикой, которую должны знать все мы, управляющие серверами, здесь я подробно объясняю, что это такое и как это реализовать и настроить 😉

Прямо сейчас те из нас, кто управляет сервером, имеют SSH-доступ к этому серверу, некоторые меняем порт SSH по умолчанию и он больше не использует порт 22, а другие просто оставляют его таким (что-то не рекомендуется), однако сервер разрешил доступ SSH через какой-то порт, и это уже «уязвимость».

В лице Стук порта мы можем добиться следующего:

1. Доступ по SSH не разрешен ни для одного порта. Если у нас настроен SSH для порта 9191 (например), этот порт (9191) будет закрыт для всех.
2. Если кто-то захочет получить доступ к серверу по SSH, очевидно, он не сможет этого сделать, потому что порт 9191 закрыт ... но, если мы используем «магическую» или секретную комбинацию, этот порт будет открыт, например:

1. Я подключаюсь к порту 7000 сервера через telnet
2. Делаю еще один телнет на порт 8000 сервера
3. Делаю еще один телнет на порт 9000 сервера
4. Сервер обнаруживает, что кто-то сделал секретную комбинацию (коснитесь портов 7000, 8000 и 9000 в этом порядке) и откроет порт 9191, чтобы вход был запрошен SSH (он откроет его только для IP-адреса, с которого была сделана комбинация) номер порта удовлетворительный).
5. Теперь, чтобы закрыть SSH, я просто подключился к порту 3500
6. Сделаю еще телнет на порт 4500
7. И напоследок еще один телнет на порт 5500
8. Выполнение этой другой секретной комбинации, которую обнаруживает сервер, снова закроет порт 9191.

Другими словами, объясняя это еще проще ...

В лице Стук порта на нашем сервере могут быть закрыты определенные порты, но когда сервер обнаруживает это из X IP была создана правильная комбинация портов (конфигурация, ранее определенная в файле конфигурации) явно выполнит на себе определенную команду (команда также определено в файле конфигурации).

Разве это не понятно? 🙂

Как установить демон для блокировки портов?

Я делаю это с пакетом Kockd, что позволит нам очень, очень просто и быстро реализовать и настроить Стук порта.

Установите пакет: knockd

Как настроить блокировку портов с помощью knockd?

После установки мы переходим к его настройке, для этого мы редактируем (как root) файл /etc/knockd.conf:

nano /etc/knockd.conf

Как вы можете видеть в этом файле, уже существует конфигурация по умолчанию:

 Объяснить настройки по умолчанию очень просто.

- Первый, использовать системный журнал означает, что для записи активности (журнала) мы будем использовать / Вар / Журнал / системный журнал.
- Во-вторых, в разделе [открытьSSH] Здесь, очевидно, пойдут инструкции по открытию SSH: сначала у нас есть последовательность портов (секретная комбинация), которая настроена по умолчанию (порт 7000, порт 8000 и, наконец, порт 9000). Очевидно, что порты можно изменить (на самом деле я рекомендую), поскольку их необязательно должно быть 3, их может быть больше или меньше, это зависит от вас.
- В третьих, seq_timeout = 5 означает время ожидания выполнения секретной комбинации портов. По умолчанию он установлен в 5 секунд, это означает, что как только мы начнем выполнять блокировку порта (то есть, когда мы telnet на порт 7000), у нас есть максимум 5 секунд, чтобы завершить правильную последовательность, если прошло 5 секунд и мы еще не закончили стук порта, тогда это будет просто так, как если бы последовательность была недопустимой.
- В-четвертых, команду это не требует особых объяснений. Это будет просто команда, которую сервер выполнит, когда обнаружит комбинацию, определенную выше. Команда, которая установлена ​​по умолчанию, она открывает порт 22 (измените этот порт на свой SSH-порт) только на IP-адрес, который создал правильную комбинацию портов.
- Пятое, tcpflags = син В этой строке мы указываем тип пакетов, которые сервер распознает как действительные для стучащего порта.

Затем есть раздел, чтобы закрыть SSH, где конфигурация по умолчанию - это не что иное, как та же последовательность портов, указанная выше, но в обратном порядке.

Вот конфигурация с некоторыми изменениями:

 Как запустить демон knockd?

Чтобы запустить его, мы должны сначала изменить (как root) файл / и т.д. / по умолчанию / knockd:

nano /etc/default/knockd

Там мы меняем строку номер 12, которая гласит: «START_KNOCKD = 0»И измените это 0 на 1, мы получим:«START_KNOCKD = 1«

Как только это будет сделано, мы просто запустим его:

service knockd start

И вуаля, он настроен и работает.

Порт стучит с нокаутом и работает!

Как вы можете видеть в предыдущей конфигурации, если постукивает по порту 1000, затем по 2000 и, наконец, по 3000, то откроется порт 2222 (мой SSH), ну, здесь другой компьютер, выполняющий стук по порту:

Как только я нажимаю [Enter] на Knock №1, на №2 и, наконец, на №3, порт откроется, вот журнал:

Как вы можете видеть, когда выбивается порт 1000, этап 1 был зарегистрирован, затем в 2000 он будет этапом 2 и, наконец, в 3 с 3000, при этом выполняется команда, которую я объявил в .conf, и все. .

Тогда для закрытия порта достаточно было бы выбить 9000, 8000 и наконец 7000, вот лог:

И на этом объяснение использования заканчивается 😀

Как видите, блокирование портов действительно интересно и полезно, потому что, хотя мы не хотим просто открывать порт после определенной комбинации портов, команда или порядок, который будет выполнять сервер, могут отличаться, то есть ... вместо открытия порта мы можем объявить об уничтожении процесса, остановке службы, такой как apache или mysql, и т. д. предел - ваше воображение.

Функция Port Knocking работает, только если у вас есть физический сервер или виртуальный сервер с технологией KVM. Если ваш VPS (виртуальный сервер) - OpenVZ, то отключение портов, я не думаю, что это сработает для вас, потому что вы не можете напрямую управлять iptables.

Ну а пока что статья ... Я далеко не специалист в этом вопросе, но мне хотелось поделиться с вами этим интересным процессом.

Привет 😀


27 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Эрунамо ДЖАЗ сказал

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

    Привет и спасибо ^ _ ^

    1.    КЗКГ ^ Гаара сказал

      Спасибо за комментарий.
      Да ... это то, что со статьями о DNS Фико я не хочу отставать, LOL !!!

      Ничего серьезного. Несколько месяцев назад я услышал кое-что о Port Knocking, и это сразу привлекло мое внимание, но поскольку я думал, что это будет очень сложно в то время, я не решил вдаваться в это, только вчера, просматривая некоторые пакеты репо, я обнаружил knockd и решил попробовать, и вот руководство.

      Мне всегда нравилось размещать технические статьи, некоторые могут быть недостаточно интересными, но… надеюсь, что другие интересны 😉

      привет

    2.    Марио сказал

      Здравствуйте, я знаю, что эта статья существует уже некоторое время, но я отправляю свой запрос, чтобы узнать, сможет ли кто-нибудь решить ее за меня.
      Дело в том, что я реализовал для своей малины выбивание портов, чтобы попытаться повысить безопасность, когда я подключаюсь к нему из-за пределов локальной сети. Чтобы это сработало, мне пришлось открыть диапазон портов на маршрутизаторе 7000-9990, направленных на машину. Безопасно ли открывать эти порты на маршрутизаторе или, наоборот, когда я пытаюсь повысить безопасность, я делаю наоборот?

      Приветствия и благодарности.

  2.   Когда-либо сказал

    Отлично, я много лет работал сисадмином и не знал его.
    Один вопрос ... как вы делаете "стук"?
    Вы используете telnet против этих портов? Что вам отвечает telnet? Или есть какая-то команда волны "стук"?
    Классная крутая статья. Захватывающий. большое спасибо

    1.    КЗКГ ^ Гаара сказал

      Я провел тест с помощью telnet, и все сработало чудесно ... но, как ни странно, есть команда `` стукнуть '', сделайте мужчина стучит так что вы можете видеть 😉

      На самом деле telnet мне вообще не отвечает, iptables с политикой DROP заставляет его вообще не отвечать, и telnet остается там, ожидая ответа (который никогда не поступит), но демон knockd распознает стук, даже если никто не ответит 😀

      Большое спасибо за ваш комментарий, приятно знать, что мои статьи все еще нравятся ^ _ ^

  3.   st0rmt4il сказал

    Добавлено в избранное! : D!

    Спасибо!

    1.    КЗКГ ^ Гаара сказал

      Спасибо 😀

  4.   Данхантер сказал

    Ах, безопасность, это приятное ощущение, когда мы подключаем компьютер к электросети, а затем через несколько дней / недель пытаемся подключиться из какого-то удаленного места, к которому мы не можем получить доступ, потому что брандмауэр находится в режиме «никто для всех», это называется постоянным вне замка с точки зрения системных администраторов. 😉

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

  5.   Мануэль сказал

    Эй, статья отличная.

    Одно: служит ли он для подключения извне локальной сети?

    Я говорю это, потому что у меня есть маршрутизатор с закрытыми портами за вычетом того, который соответствует ssh, который перенаправлен на сервер.

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

    М-м ...

    Я не знаю, насколько это безопасно.

    Что вы думаете?

    1.    КЗКГ ^ Гаара сказал

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

      Сделайте тест, не открывая порты на роутере, если он у вас не работает, жаль, потому что я с вами согласен, открывать эти порты на роутере не рекомендуется.

      1.    Мануэль сказал

        Действительно, мы должны открыть порты и перенаправить их на компьютер, который мы вызываем.

        Жалко.

  6.   Рабба08 сказал

    Отлично! Большое спасибо! Я только начал изучать сетевую карьеру, и эти уроки мне очень понравились! спасибо, что нашли время поделиться знаниями

    1.    КЗКГ ^ Гаара сказал

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

  7.   janus981 сказал

    Большое спасибо, вы не знаете, как это мне помогает, я собираюсь настроить сервер, и это отлично для меня.

    привет

    1.    КЗКГ ^ Гаара сказал

      Вот для чего мы нужны, чтобы помогать 😉

  8.   Жан Вентура сказал

    Отличная статья! Я не знал об этом, и это мне очень помогает (я использую RackSpace, который использует KVM, поэтому он мне подходит как перчатка!). Добавлено в избранное.

    1.    КЗКГ ^ Гаара сказал

      Спасибо за комментарий 🙂

  9.   Алгабе сказал

    как всегда DesdeLinux приносит нам отличные посты с обучающими материалами, которые действительно полезно применить на практике, спасибо, что поделились!! 🙂

    1.    КЗКГ ^ Гаара сказал

      Спасибо за комментарий 🙂
      Да, мы всегда стараемся утолить ту жажду знаний, которая есть у наших читателей 😀

  10.   Тимблек сказал

    Интересно, не знал варианта.
    Пойдите прямо в мою библиотеку отбивных.
    Спасибо!

    1.    КЗКГ ^ Гаара сказал

      Для меня удовольствие 😀
      привет

  11.   Фредерик. А. Вальдес Тужаге сказал

    Привет КЗКГ ^ Гаара !!! Вы сжали. Потрясающая статья по защите серверов. Нет @% * & ^ идеи, что такая вещь существует. Я попробую. Спасибо

  12.   Белое ^ ожерелье сказал

    это замечательно…. ^ - ^

  13.   LearnLinux сказал

    Здравствуйте, не могли бы вы объяснить, как установить его в CentOS 5.x?

    Я скачал rpm:
    http://pkgs.repoforge.org/knock/knock-0.5-3.el5.rf.x86_64.rpm

    Установлены:
    rpm -i knock-0.5-3.el5.rf.x86_64.rpm

    Настройте файл конфигурации на 15 секунд и порт, который я использую для подключения по ssh к моему vps

    Запускаем демона:
    / usr / sbin / knockd &

    Я телнет и ничего порт не закрывает, по умолчанию порт открыт, но не закрывается.

    Я делаю что-то неправильно?

  14.   привет сказал

    Мммм, запросы Telnet к этим портам могут быть изучены администратором нашей локальной сети или нашим поставщиком услуг, нет? Это заблокировало бы внешних людей, но не их, поэтому, если они захотят активировать наш порт, они могут это сделать, потому что посмотрите запросы, которые мы делаем, ммм, допустим, он защищает, но не на 100%

    1.    Роберто сказал

      Это могло быть, но я не думаю, что они собираются представить, что некий telnet выполняет действие X. Если только они не увидят, что используются те же шаблоны telnet.

  15.   Пабло Андрес Диас Арамбуро сказал

    Интересная статья, у меня вопрос. Я думаю, что в образе файла конфигурации есть ошибка, потому что, если вы хорошо проанализируете, в обеих строках команды вы используете ACCEPT в Iptables. Я считаю, что один должен быть ПРИНЯТ, а другой - ОТКЛОНЕН.

    В остальном - отличная инициатива. Большое спасибо за то, что нашли время рассказать другим о своих знаниях.

    привет