Что-то у меня fail2ban не завелся.

1 234
Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#31

А вот рано я радовался, аномалии продолжаются, я поставил file2ban на 2.5.2 работает отлично, а на той тачке где 2.6.6 ничего не завелось, решил откатывать там питон, каково же было удивление когда и с 2.5.2 не завелось, начал изучать, вот пока до чего добрался:

server/filter.py


def processLineAndAdd(self, line):
for element in self.processLine(line):
ip = element[0]
unixTime = element[1]
if unixTime < MyTime.time() - self.getFindTime():
break
if self.inIgnoreIPList(ip):
logSys.debug("Ignore %s" % ip)
continue
logSys.debug("Found %s" % ip)
self.failManager.addFailure(FailTicket(ip, unixTime))

Вот тут вот путем дебага удалось выяснить что unixtime почему-то показывает чило -1 год !!!!! т.е разница между unixtime и time - findtime получается год + 600.... ладно бы там я понял на часы... тайм зона и.т.п но реально показывает год, собственно на этом моменте и происходит break, так что надо выяснить почему такая лажа со временем и возможно решу баг\Фичу :D

На момент запуска: (Thu Jan 17 21:56:37 EST 2013)

unixTime = 1326858991.0 (!!!!) = ~ 17 Jan 2012 22:56:31

MyTime.time() = 1358477791.85

self.getFindTime() = 600

В итоге разница между unixtime и выражением MyTime.time() - self.getFindTime() получается постоянно в районе -31618200.

На рабочей машине, разница не превышает описанных 600 и число всегда положительное стремится к нулю при постоянном бруте с одного адреса.

(Пока правило не блокирует трафик, но в файрвол IP заносит)

Я в тихом шоке, питон забыл дату? На сервере стоит ntpd, синхронизация четкая :) Это на случай вопросов "а что date показывает?" :)

Как вам такая история? :)

---------- Добавлено 18.01.2013 в 08:22 ----------

Кароче я паходу решил ребус, немного извратился, изучил структуру софта, в общем интересная там штука есть :

server/datetemplate.py


def getDate(self, line):
date = None
dateMatch = self.matchDate(line)
if dateMatch:
try:
# Try first with 'C' locale
date = list(time.strptime(dateMatch.group(), self.getPattern()))
except ValueError:
# Try to convert date string to 'C' locale
conv = self.convertLocale(dateMatch.group())
try:
date = list(time.strptime(conv, self.getPattern()))
except ValueError, e:
# Try to add the current year to the pattern. Should fix
# the "Feb 29" issue.
conv += " %s" % MyTime.gmtime()[0]
pattern = "%s %%Y" % self.getPattern()
date = list(time.strptime(conv, pattern))
if date[0] < 2000:
# There is probably no year field in the logs
date[0] = MyTime.gmtime()[0]
# Bug fix for #1241756
# If the date is greater than the current time, we suppose
# that the log is not from this year but from the year before
if time.mktime(date) > MyTime.time():
date[0] = 2013
# date[0] -= 1
elif date[1] == 1 and date[2] == 1:
# If it is Jan 1st, it is either really Jan 1st or there
# is neither month nor day in the log.
date[1] = MyTime.gmtime()[1]
date[2] = MyTime.gmtime()[2]
return date

http://sourceforge.net/tracker/?func=detail&aid=1241756&group_id=121032&atid=689044

Собственно говоря ровно мой случай, получается вот такая вот штука, что если год < 2000, то взять "текущий" блин.... но следом срабатывает условие time.mktime(date) > MyTime.time()..... это у меня получается строка приходит из будущего? :) Похоже что дата в лог файле датируется более ранним временем нежели запуск функции ? как такое может быть? Капец :) Как вариант решил вопрос (на 2013 год хватит ;)) вот той вот строчкой в тот самом фиксе который предлагает автор, пока не стал до конца разбираться в причинах срабатывания этого условия .... но реально какой-то баг на лицо либо же помирает питончик :D , при этом на сервере где работает нормально стоит тот же питон и тот же fail2ban..... и та же OS .... Ну не шаманский ли бубен тут нужен?!!!!!!! 🤪 Либо надо все таки менять формат логов (что бы был YEAR) если это позволяет вообще pure-ftpd ;)

Ах да, это все дело запустил на python 2.6.6 .

У кого там 2.6.6 и ничего не завелось ? kgtu5, не желаете фичу затестить ?

Есть около 15.000 ipv4 !!! (http://onyx.net.ua/price.php#ipv4) Качественный хостинг с 2005 года - лучшее клиентам! (http://onyx.net.ua/)
1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий