Перейти к содержимому


Фото
- - - - -

Текстовый лог ошибок входа в систему и пользовательские процедуры

lua

  • Please log in to reply
10 ответов в этой теме

#1 qm2k

qm2k

    Newbie

  • Posters
  • 73 Сообщений:

Отправлено 02 Декабрь 2016 - 12:11

Хочу прикрутить к центру управления fail2ban (под Linux), обычно он мониторит текстовые файлы с ошибками. DrWeb ошибки входа пишет в базу данных, можно конечно ее опрашивать, но не очень красиво (особенно sqlite). Нашел такую вещь как пользовательские процедуры, в ней хук access_denied.ds . Догадываюсь, что если его включить и добавить туда код добавления строки в файл, то задача будет решена. Проблемы две:

1. На Lua никогда не писал и даже примерно не представляю, как добавить строку в файл (хотя наверное мог бы найти сам путем экспериментов, но см. ниже).

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



#2 Kirill Polubelov

Kirill Polubelov

    Hr. Schreibikus

  • Dr.Web Staff
  • 4 362 Сообщений:

Отправлено 02 Декабрь 2016 - 13:29

Если исходить из приведенной вами ссылки, то у вас 6-я версия ЕС? Или, всё-таки, 10-я?

Для десятки, вот: http://download.geo.drweb.com/pub/drweb/esuite/10.00/documentation/html/ru/admin_manual/server_hooks.htm


обычно он мониторит текстовые файлы с ошибками

 

Таки их есть у нас. drwcsd.log называется.


(exit 0)

#3 qm2k

qm2k

    Newbie

  • Posters
  • 73 Сообщений:

Отправлено 02 Декабрь 2016 - 15:01

Если исходить из приведенной вами ссылки, то у вас 6-я версия ЕС? Или, всё-таки, 10-я?

Для десятки, вот: http://download.geo.drweb.com/pub/drweb/esuite/10.00/documentation/html/ru/admin_manual/server_hooks.htm

Спасибо, выглядит немного но проще.

 

Таки их есть у нас. drwcsd.log называется.

По нему успешный логин от неудачного как-то не очень отличается...



#4 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 858 Сообщений:

Отправлено 02 Декабрь 2016 - 15:20

Вы авторизацию кого, админов в веб-интерфейсе хотите мониторить? Тогда access_denied.ds не ваш случай. Ваш - admin_noauth.ds.
 

В логе что не очень?


Семь раз отрежь – один раз проверь

#5 qm2k

qm2k

    Newbie

  • Posters
  • 73 Сообщений:

Отправлено 02 Декабрь 2016 - 16:07

Вы авторизацию кого, админов в веб-интерфейсе хотите мониторить? Тогда access_denied.ds не ваш случай. Ваш - admin_noauth.ds.

Да! Работает:

local args = ... -- args.login, args.address, args.subsys, args.error
log_file = io.open("/var/opt/drwcs/log/admin_noauth.log", "a")
io.output(log_file)
io.write(os.date("%Y-%m-%dT%H:%M:%S"), ' ', args.login, ' ', args.address, ' ', args.subsys, ' ', args.error, '\n')
io.close(log_file)

А как-то вытащить заголовок запроса X-Forwarded-For реально, или это уже фантастика?

 

 

 

В логе что не очень?

 

Успешные входы в систему:

20161202.130136.05 tr0 [01287 01345] wwr:1  [WEBMIN] ssl://10.a.b.c:53568: 00.566 seconds, OK: POST/302 570 https://a.b.c.d/esuite/index.dsHTTP/1.1
20161202.130354.15 tr0 [01287 01348] wwr:4  [WEBMIN] ssl://10.a.b.c:53590: 00.547 seconds, OK: POST/302 584 https://a.b.c.desuite/index.dsHTTP/1.1

 

Неуспешные входы в систему:

20161202.130236.42 tr0 [01287 01347] wwr:3  [WEBMIN] ssl://10.a.b.c:53582: 00.270 seconds, OK: POST/302 530 https://a.b.c.d/esuite/index.dsHTTP/1.1
20161202.130542.53 tr0 [01287 01348] wwr:4  [WEBMIN] ssl://10.a.b.c:53590: 00.260 seconds, OK: POST/302 530 https://a.b.c.d/esuite/index.dsHTTP/1.1

В чем разница?


Сообщение было изменено qm2k: 02 Декабрь 2016 - 16:07


#6 Kirill Polubelov

Kirill Polubelov

    Hr. Schreibikus

  • Dr.Web Staff
  • 4 362 Сообщений:

Отправлено 02 Декабрь 2016 - 16:44

Разница в

grep login_err drwcsd.log

но, тут, конечно, могут быть нюансы с уровнем логгирования.


Сообщение было изменено Kirill Polubelov: 02 Декабрь 2016 - 16:44

(exit 0)

#7 qm2k

qm2k

    Newbie

  • Posters
  • 73 Сообщений:

Отправлено 02 Декабрь 2016 - 17:09

Разница в

grep login_err drwcsd.log

но, тут, конечно, могут быть нюансы с уровнем логгирования.

Находит только в URL от клиента. Как эти нюансы с уровнем логгирования починить? И нет ли идей по X-Forwarded-For?



#8 Kirill Polubelov

Kirill Polubelov

    Hr. Schreibikus

  • Dr.Web Staff
  • 4 362 Сообщений:

Отправлено 02 Декабрь 2016 - 17:32

Как эти нюансы с уровнем логгирования починить?

 

Это не ошибка. Увеличть уровень логгирования не сложно, но за это придется заплатить рамерами лога, как минимум.

 

И нет ли идей по X-Forwarded-For?

 

А он там, в принципе, есть?


(exit 0)

#9 qm2k

qm2k

    Newbie

  • Posters
  • 73 Сообщений:

Отправлено 02 Декабрь 2016 - 17:47

И нет ли идей по X-Forwarded-For?

 

А он там, в принципе, есть?

Ну, внешний доступ хочу сделать через мой прокси, подставляющий настоящий сертификат от Let's Encrypt. Соответственно, все соединения будут идти от моего прокси, а в X-Forwarded-For настоящий IP. Если есть какое-то более простое решение, буду рад услышать. (Я знаю что можно прописать сертификат и на самом сервере Dr.Web, но тогда его придется обновлять руками, что меня не устраивает.)



#10 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 858 Сообщений:

Отправлено 02 Декабрь 2016 - 18:05

А как-то вытащить заголовок запроса X-Forwarded-For реально, или это уже фантастика?

В хуке – фантастика.

В чем разница?

Разница в недостаточной вербозности логов, пожалуй. В all наверняка всё увидите. И заголовки в том числе.


Семь раз отрежь – один раз проверь

#11 qm2k

qm2k

    Newbie

  • Posters
  • 73 Сообщений:

Отправлено 06 Декабрь 2016 - 17:06

Короче, конечный результат (может, кому поможет):

 

/var/opt/drwcs/extensions/enabled/1002-users/enabled/admin_noauth.ds

local args = ... -- args.login, args.address, args.subsys, args.error
log_file = io.open("/var/opt/drwcs/log/admin_noauth.log", "a")
io.output(log_file)
local login = args.login
login = login:gsub('%%', '%%%%')
login = login:gsub(' ', '%%20')
login = login:gsub('\t', '%%09')
login = login:gsub('\r', '%%0D')
login = login:gsub('\n', '%%0A')
io.write(os.date("%Y-%m-%d %H:%M:%S"), ' ', login, ' ', args.address, ' ', args.subsys, ' ', args.error, '\n')

.

/etc/fail2ban/filter.d/drweb-auth.conf

[INCLUDES]
before = common.conf

[Definition]
failregex = ^ \S+ (tcp|ssl):\/\/<HOST>:[0-9]+ -?[0-9]+ [0-9]+$
ignoreregex =

.

/etc/fail2ban/jail.local

[drweb-auth]
enabled = true
port =  80,443,9080,9081
logpath = /var/opt/drwcs/log/admin_noauth.log

.

А с исходным IP-адресом решил проблему убрав внешний доступ, решив что установочные файлы юзерам вполне можно отправить и через облачный диск, а больше им там ничего не нужно.


Сообщение было изменено qm2k: 06 Декабрь 2016 - 17:10




Also tagged with one or more of these keywords: lua

Читают тему: 1

0 пользователей, 1 гостей, 0 скрытых