ТС, После того, как ваш пароль кто-то использует, и начнет оттуда брутить или делать то, что вы пишите в первом посте, хостер просто отключит ваш сервер уже на основании нарушений которые будет производить ваш сервер..... так что лучше подумайте еще разок и поменяйте пароль... (если это еще уместно) Затребовать возврат вы можете даже пользуясь услугой, при этом не поясняя причин.... идите этим путем, если хотите получить хоть какие-то возвраты ибо по пути "вот публичный сервер" он завтра же перестанет работать вполне официально, а вас еще занесут в базы невменяемых клиентов.... Ну а про Хостера говорить ничего не буду, читайте о чем пишут те , у кого вы заказываете услуги, возможно будет не плохой урок для вас.
Добрый день,
Размещение в Канаде.
Заказать прямо сейчас
[ Акция ]
Напоминаем читателям о том, что все еще продолжает свое действие акция, согласно условий которой можно приобрести следующий тариф: 5 GB HDD, 200 GB трафика, 50 доменов на акаунт, ssh, cPanel , всего за $6.50 в месяц, при оплате сроком на 3,6,12,24 месяца действуют существенные скидки.
Так же напоминаем, что есть в наличии еще 3 сервера, на базе Intel Core i7 , 32 гигабайта памяти, 1x1000 GB HDD, 100Mb/s включение (общее), личное +150$ к стоимости сервера. Установка 50$, стоимость в месяц 130$.
К оплате принимаются (WebMoney, Yandex, Приват24, Visa/MC и другие..)
Не едет не стреляет но красивый :) (c) Армии Мира :)
При условии метода связи домена с акаунтом используемого cpanel я бы тоже не давал такую возможность.
Вопросы удобства? :)
Без домена я думаю создавать акаунты никакого смысла нет, а поменять основной можно вообще без каких либо проблем, то вы со старыми сектантами общаетесь, или вообще подставными :)
А вот рано я радовался, аномалии продолжаются, я поставил 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, не желаете фичу затестить ?
В общем господа победа, дело видимо в regex, потому что:
__errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur) failregex = pure-ftpd: \(\?@<HOST>\) \[WARNING\] %(__errmsg)s \[.+\]$
Работает, а вот это:
__errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur) failregex = pure-ftpd(?:\[\d+\])?: \(.+?@<HOST>\) \[WARNING\] %(__errmsg)s \[.+\]$
Нет!!!!
Я не сильный знаток regex, но реально и в том и в том случае вывод
fail2ban-regex <logfile> <filter file>
дает ОДИНАКОВЫЙ результат.... Но во втором случае ... происходит то, что происходило у меня......
Теперь все выглядит значительно лучше !!!!!
Всем огромное спасибо за дискуссию!!!
С чего вы взяли, уже довольно давно и плотно пользую cPanel, никакая она не однодомная, все там в порядке, и кластеризация ДНС есть и перенос между панелями , и бекапы и все все все прочее... и так думают не адепты, а несколько сотен тысяч пользователей cPanel )
А питон какой?
rijy, скоро придут те, кто сделает это за деньги :D, ничего сложного в этом нет, натолкну на мысли: надо маркировать исходящую почту, есть два варианта вообще попадания в очередь вашей почты, которая исходит из почтового сервера, первый вариант, это через SMTP авторизацию, т.е для легальных почтовых клиентов, второй вариант, это всякие функции mail() и прочие, которые ставят в очередь почту локально. Могут быть конечно и другие способы попадания в очередь, но это не отсюда я думаю (например relay), так вот в первом случае, когда происходит SMTP авторизация, каждое письмо обладает в хидере информацией о том, кто авторизировался, а в случае работы приложений php/cgi ... и.т.п маркировать надо почту на стадии самого интерпретатора... для PHP Есть патч mail-headers, что-то подобное полагаю есть и для cgi... в случае mail-headers каждое письмо поставленное в очередь вашего почтового сервера будет содержать доп. информацию содержащую полный путь к сценарию который и породил это письмо. Можно писать простейшие враперы ан любом языке, но при опытных взломах.... их могут обходить, верный путь это patch для php (mail-headers).
Еще как вариант можно рассмотреть такой вид настройки, при которой например поставить в очередь почту локально будет вообще невозможно, допускаться будет почта только от relayhosts или от тех кто прошел smtp авторизацию.
Варианты решения есть, надо только подобрать оптимальный ;) а вечно искать шелы - это как минимум странно, у меня уже сценарии готовы под мои MTA для того что бы парсить эти хидеры и сразу смотреть где "зараза".... :)