Ограничение доступа к серверу по IP адресам через файлы hosts allow и hosts deny

Как ограничить доступ к серверу по IP адресам через файлы hosts allow и hosts deny

Ограничить доступ к серверу по IP адресам можно с помощью файлов hosts.allow и hosts.deny, которые управляют TCP Wrappers на Linux/Unix системах и контролируют, какие хосты могут подключаться к сервисам. Эти файлы обрабатываются до запуска основного приложения и имеют приоритет над встроенными правилами сервиса.

Зачем это нужно

  • Защита сервисов (SSH, FTP, HTTP) от несанкционированного доступа на уровне операционной системы
  • Блокировка подозрительных IP адресов без отключения сервиса полностью
  • Централизованное управление доступом для всех приложений, поддерживающих TCP Wrappers
  • Снижение нагрузки на сервер путём отклонения соединений на уровне ядра ОС
  • Создание whitelist (список разрешённых) или blacklist (список запрещённых) IP адресов

Пошаговая инструкция

  1. Откройте терминал на сервере Linux/Unix или подключитесь по SSH с правами администратора.
  2. Перейдите в директорию с файлами конфигурации: выполните команду cd /etc
  3. Создайте резервную копию файла hosts.allow: sudo cp hosts.allow hosts.allow.bak
  4. Создайте резервную копию файла hosts.deny: sudo cp hosts.deny hosts.deny.bak
  5. Откройте файл hosts.allow в текстовом редакторе: sudo nano hosts.allow
  6. Добавьте строку для разрешения доступа конкретному сервису от конкретного IP: sshd: 192.168.1.100 (разрешить доступ SSH только с IP 192.168.1.100)
  7. Для разрешения доступа целому диапазону IP используйте: sshd: 192.168.1.0/24 или sshd: 192.168.1.
  8. Для разрешения всем хостам используйте: sshd: ALL
  9. Сохраните файл: нажмите Ctrl+O, затем Enter, и выйдите: Ctrl+X
  10. Откройте файл hosts.deny: sudo nano hosts.deny
  11. Добавьте строку для запрета доступа: sshd: 192.168.2.50 (запретить доступ SSH с IP 192.168.2.50) или ALL: ALL для полного запрета по умолчанию
  12. Сохраните файл: Ctrl+O, Enter, Ctrl+X
  13. Проверьте синтаксис файлов командой: sudo tcpdmatch -a hosts.allow -d hosts.deny sshd 192.168.1.100
  14. Перезагрузите сервис для применения изменений: sudo systemctl restart sshd (для SSH)
  15. Протестируйте доступ с разных IP адресов, попытавшись подключиться по SSH или другому сервису.

Часто задаваемые вопросы

Какой файл имеет приоритет: hosts.allow или hosts.deny? Файл hosts.allow проверяется первым, и если там найдено совпадение, доступ разрешается, даже если сервис указан в hosts.deny.

Можно ли использовать доменные имена вместо IP адресов? Да, TCP Wrappers поддерживает доменные имена и маски подсетей, например: sshd: .example.com или sshd: 10.0.0.0/255.255.255.0

Как проверить, применились ли правила после редактирования файлов? Перезагрузитесь или перезапустите сервис командой sudo systemctl restart [название-сервиса], затем проверьте логи: sudo tail -f /var/log/auth.log

Похожие материалы

Установка панели управления сервером HestiaCP или CyberPanel на Ubuntu
Проверка сетевых соединений и открытых портов на сервере команда netstat
DHCP сервер на базе Windows Server 2022