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

  • Дождитесь завершения загрузки нескольких файлов
  • Использование Grep In For Loop
  • Скрипт для сравнения с файлами Excel и различиями печати
  • Использование -n и -z в тестировании встроено - Bash
  • Каталоги перечислены дважды
  • Аргумент командной строки сценария Bash для верхнего регистра
  • Почему я должен дважды уйти от «точки»?
  • В сценарии bash, как я могу использовать «tr -d» для удаления введенного пользователем символа?
  • Сценарий оболочки для проверки наличия одного или нескольких файлов с определенным расширением?
  • правильный способ перебора содержимого в каталоге
  • Ловушка, ERR и повторение строки ошибки
  • Interesting Posts

    MySQL убивается ОС каждые 25 дней или около того

    Найти файлы с групповыми разрешениями более ограничительными, чем разрешения владельца

    Debian Sid / etc / debian_version

    Как дебютировать (Debian) Apache без его выполнения

    Содержимое файла / proc / <PID> / cmdline зависит от скрипта shebang?

    Распечатайте несколько строк до и после соответствия шаблону, исключая строки, соответствующие другим шаблонам

    Печать текста между двумя строками – опустить второе появление

    Почему / bin символическая ссылка на / usr / bin?

    Где проверить и просмотреть различные пакеты перед их установкой

    Не удается подключиться к WLAN с netctl

    какой раздел ядра управляет io-запросами?

    Ошибка при вызове скрипта из другого скрипта

    Как обрабатывать текстовый файл с несколькими столбцами для получения другого текстового файла с несколькими столбцами?

    Сценарий оболочки с циклом for и "array"

    Почему google-chrome-stable требует libX11.so.6 () (64 бит), но это требование не может быть предоставлено?

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