Отклоните 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 : «Соединение будет разрешено или отклонено в зависимости от того, возвращает ли команда статус истинного или ложного выхода».

  • Как определить, что команда выполняется, а затем выполнить дополнительную команду после текущей команды
  • Запрос Bash на запись в каждый каталог под некоторым путем и запуск команды, когда он внутри?
  • Какая команда (ы) будет кормить текстовый файл с разделителями табуляции и вырезать каждую строку до 80 символов?
  • Когда sh является символической ссылкой на bash или тире, bash ограничивает себя соблюдением POSIX, поэтому он должен быть на 100% совместим с sh?
  • Американский Fuzzy Lop запускает тестовую программу как непривилегированный пользователь или в chroot
  • перенаправить вывод команды в / dev / null
  • Переименование файлов в сценарии bash
  • Для цикла для зависания на нескольких страницах с API
  • Проверяет наличие статуса выхода, отличного от 0, после команды `command || return` недостижимый?
  • Сценарий Bash не копирует файлы с помощью udev
  • Поиск данных из всех файлов в папке
  • Interesting Posts

    Выход выключения

    FOR цикл не циклический

    Сколько памяти используется конкретным пользователем

    Как отключить клавиатуру ноутбука при подключении USB-клавиатуры?

    Запустить банку при запуске во всех системах на основе * nix

    Извлеките все имена изображений с именами подпапок в CSV-файл, используя сценарий оболочки

    сломанные наборы файлов после установки VLC через RPMFusion

    Как сделать компиляцию?

    Остановить cron-скрипт от уничтожения моего зеркального списка неверными данными

    bash скрипт получает результат из теста в переменную

    Как вы скомпилируете зависимости вручную? Cygwin

    Установка вывода jq в переменную Bash

    Два Партера! Выполните команду в фоновом режиме, когда процесс завершится; Заставить фон терминала мигать цветом

    Почему поведение динамического DNS-динамика DHCP противоречиво?

    Как открытые файлы ведут себя в системах Linux?

    Linux и Unix - лучшая ОС в мире.