У меня есть около 50 тыс. IP-адресов, запрещенных в файле hosts.deny, сгенерированном сценарием с 7 адресами на строку максимум, и я получаю эту ошибку:
warning: /etc/hosts.deny, line 4429: missing newline or line too long
Строка 4429 находится здесь посередине:
ALL: 96.47.225.95, 96.47.225.96, 96.47.225.97, 96.47.225.98, 96.47.225.99, 96.56.113.123, 96.8.112.149
ALL: 98.126.161.178, 98.15.206.118, 98.159.4.16, 98.197.212.67, 98.83.135.94, 98.94.6.213, 98.94.6.78
ALL: 99.167.89.146, 99.177.96.73, 99.235.84.25, 99.244.9.103, 99.49.94.70
в чем дело?
Обновить:
Предупреждение появляется только тогда, когда в момент установления соединения одновременно записывается файл hosts.deny. (ввод-вывод, блокировка, fopen для записи, fopen для проблемы чтения).
На мой взгляд, не имеет смысла иметь такой большой файл `/etc/hosts.deny 'по нескольким причинам:
denyhosts
, fail2ban
, psad
и т. д., которые обеспечат некоторую защиту от злоумышленников, не попадая в ловушку, упомянутую в предыдущем абзаце.Теперь, если вам действительно нужно поддерживать такой файл, вы можете попробовать использовать файл, как описано в hosts_access(5)
справочная страница под PATTERNS
раздел:
УЗОРЫ
The access control language implements the following patterns: · A string that begins with a `/´ character is treated as a file name. A host name or address is matched if it matches any host name or address pattern listed in the named file. The file format is zero or more lines with zero or more host name or address patterns separated by whitespace. A file name pattern can be used anywhere a host name or address pattern can be used.
Я попробовал и создал список:
# echo 123.{1..255}.{1..255}.{1..254} > /etc/list
Добавил его в /etc/hosts.deny
файл:
# echo 'ALL: /etc/list' >> /etc/hosts.deny
Пробовал подключаться и изучал мои журналы. Я не смог воспроизвести упомянутое вами предупреждение.