Отклоните SSH-соединения от стран, не включенных в список, используя hosts.allow / hosts.deny в CentOS

Я несколько часов пытался создать свой собственный скрипт при использовании hosts.allow/hosts.deny , чтобы предотвратить подключение к SSH и другим службам, поддерживающим TCP-обертки из стран, не включенных в список.

Пример с SSH:

  1. файл hostss.deny

    sshd : ALL

  2. Файл hostss.allow

    sshd: ALL: spawn /usr/local/bin/country_filter %h

  3. сценарий country_filter :


 #!/bin/bash # Specify the two-letter ISO Country Code(s) to accept ALLOW_COUNTRIES="RU\|CY" # list of country codes in the exampled format ("RU\|GR\|CY") COUNTRY=`/usr/bin/geoiplookup $1 | /bin/grep -w $ALLOW_COUNTRIES` [[ $COUNTRY ]] && RESPONSE="ALLOW" || RESPONSE="DENY" if [ $RESPONSE = "ALLOW" ] then echo "$RESPONSE" exit 0 else echo "$RESPONSE" exit 1 fi 

Сценарий выше отлично работает с консолью, но я не мог заставить его работать при использовании hosts.allow .

Что мне здесь не хватает?

One Solution collect form web for “Отклоните SSH-соединения от стран, не включенных в список, используя hosts.allow / hosts.deny в CentOS”

Как указано на hosts_options(5) руководства hosts_options(5) , стандартный вывод перенаправляется на /dev/null , так что нет возможности получить выход из echo . И поскольку вы хотите, чтобы статус выхода принимался во внимание, вы должны использовать aclexec вместо spawn . Действительно, aclexec страница говорит для aclexec : «Соединение будет разрешено или отклонено в зависимости от того, возвращает ли команда статус истинного или ложного выхода».

  • Как использовать эту команду в Crontab?
  • Форматирование цикла
  • Выполнение zsh rehash после сборки
  • Правильное литье типов в сценарии оболочки для использования с циклом while и модулем
  • chown не работает через скрипт
  • Пакетное переименование файлов с восходящим числом
  • Как открыть терминал, разделить на 9 терминалов и переключиться между ними, используя один скрипт?
  • почему существует случайное поведение для фоновой работы?
  • Поиск Failed attemps в / var / log / secure
  • Как передать содержимое файла параметру / параметру функции
  • Загрузка нескольких файлов через ftp с помощью curl
  • Linux и Unix - лучшая ОС в мире.