Зарегистрируйте каждый IP, соединяющийся в систему с iptables

Вы уверены, что это не просит пароль дешифровать ключ, в противоположность имени пользователя и паролю для входа в систему в сервер?

4
задан 13 March 2010 в 10:48
4 ответа

Я попробовал бы это:

# IP address entry older than one day
iptables -A ... -m recent --name mydaily ! --rcheck ! --seconds 86400 -j logandset
# IP address never seen before
iptables -A ... -m recent --name mydaily ! --rcheck -j logandset

# Custom chain for logging and refreshing
iptables -N logandset
iptables -A logandset -j LOG
iptables -A logandset -m recent --name mydaily --set

Так Ваш список mydaily будет отслеживать последние замеченные IP-адреса, и если никогда не замечалось прежде, или если замеченное последнее будет более старым, чем один день, то пакет будет зарегистрирован, и запись списка для того IP-адреса быть обновленным.

Необходимо, вероятно, установить ip_list_tot к более высокому значению для mydaily, как объяснено в iptables странице справочника (В Вашем случае для/proc/net/xt_recent/mydaily).

2
ответ дан 3 December 2019 в 04:06
  • 1
    Обе строки должны быть "! - rcheck" работать, но that' s это! Огромное спасибо! Хороший поиск на щедрость ;) –  Alexandre Nizoux 22 March 2010 в 11:09
  • 2
    Спасибо! Я исправил его к ! --rcheck. –  Chris Lercher 22 March 2010 в 12:33
  • 3
    На самом деле работы только с первой строкой: "! - rcheck - секунды 86400-j logandset" –  Alexandre Nizoux 22 March 2010 в 13:58
  • 4
    (И Вы забыли удалять второе! от первой строки) –  Alexandre Nizoux 22 March 2010 в 13:59
  • 5
    Вы уверены? Моя текущая версия, кажется, работает на меня (возможно, я haven' t протестировал его достаточно). I' ll дают ему вращение на моем сервере - потому что вход дюйм/с только однажды в день является хорошей идеей так или иначе! Затем I' ll редактируют мой ответ. Гм, возможно, обе работы версий? Iptables' recent модуль имеет что-то вроде странного синтаксиса IMO: На самом деле это должно проверить, это, что адрес находится в списке (-rcheck), но что его метка времени является более старой, чем 86 400 (! - секунды). Но возможно аргументы должны быть считаны как термин скобки. –  Chris Lercher 22 March 2010 в 15:22

Я беру дикую (непротестированную) трещину это, но что-то как:

iptables -I INPUT -m conntrack --ctstate NEW -j LOG --log-prefix 'IPT/New Connection' 

iptables испустит сообщение к журналу ядра для каждого нового соединения. Необходимо будет затем сделать что-то как

grep 'IPT/New Connection' /var/log/kern.log | | wc -l

Который даст Вам количество. Различные танцы w/awk/perl/etc позволят Вам разделить его IP.

Я не вижу способ убедить IPtables выкладывать всего одно количество на IP-адрес в конце дня. Если Ваш системный журнал способен к фильтрации сообщений regexp, можно получить сообщения и направить их в отдельный файл журнала. конец дня, все количества вычисляются, и сообщение повторно вставляется в Вашу основную запись системного журнала.

0
ответ дан 3 December 2019 в 04:06
  • 1
    добавление префикса и извлечение не являются основным фокусом здесь, но одна запись/день/IP. Позвольте мне показать Вам, что я получил до сих пор. –  Alexandre Nizoux 13 March 2010 в 10:42

Было бы намного более просто просто зарегистрироваться, все и затем отправить обрабатывает его для извлечения то, в чем Вы нуждаетесь? Используйте то, что является соответствующим на каждом этапе, а не попытке к рожку для обуви что-то для установки, где это не принадлежит.

0
ответ дан 3 December 2019 в 04:06
  • 1
    That' s обычно, что я пытаюсь сделать, но меня просят сохранить этот журнал к абсолютному минимуму, таким образом, я изобразил I' d спрашивают на всякий случай, что у кого-то есть лучший iptables регистрирующееся знание, чем я. Я скоро отправлю свои строки. –  Alexandre Nizoux 13 March 2010 в 10:42

Я использовал бы исправленную версию ulogd с бэкендом SQL.

Прием должен был бы исправить SQL-запрос ВСТАВКИ способом, который позволит базе данных иметь дело с дублированием в IP-адресах и вставить новые записи в журналы только для уникального дюйм/с.

0
ответ дан 3 December 2019 в 04:06
  • 1
    I' d скорее остаются на версии простого текста, чем должны установить сервер дб только для этого. В системе, где SQL уже установлен, уверен, хороший путь. –  Alexandre Nizoux 16 March 2010 в 18:28
  • 2
    Вы могли использовать sqlite, который тривиален для установки, требует 0 конфигураций и поддерживается ulogd как бэкенд. Это может также сохранить свои базы данных в RAM, таким образом, это могло бы подойти Вам также, особенно на серверах с большим временем работы. –  Anonymous 17 March 2010 в 17:03

Теги

Похожие вопросы