LINUX.ORG.RU

Помогите скрипт настрочить. Ну или на крайняк установка fail2ban безпалева.

 , , , ,


0

1

Есть на работе древний, как говно мамонта, сервер ОС дебиан, наверное, его никогда не обновляли. Поэтому на сервере нет fail2ban, зато есть такой же древний астериск, который работает на нем много лет. Начальство предлагает мониторить активность подбора номеров командой tail -f и банить по айпи непристойным неприступным iptables.

Как написать скрипт, чтобы сам проверял номера на ниличие говнономеров 101, 1002, 999, 1234567и банил айпи. простыми словами:

команда sudo cat /var/log/asterisk/full | grep -i "wrong"

получает [2020-10-24 00:16:42] NOTICE[19025] chan_sip.c: Registration from '"цифры тут" <sip:номер@айпи сервера>' failed for 'айпи:порт' - Wrong password

if [ "$2" == "101" ]; then {

iptables -I INPUT "$1" -s "$2" -j DROP
echo "[ ban ] script banned IP: $2 Number $1" >> /root/log_scripta.txt
}
fi;

Я не могу это довести до ума. Потому что у меня не хватает знаний.

Или если можно как-то лучше сделать, предложите свой идеальный божественный вариант.

Спасибо, за прочтение этой темы и за помощь, если до этого дойдет. Я благодарен вам и желаю хорошего настроения!



Последнее исправление: bambie (всего исправлений: 4)

Слов написал много, а чего конкретно хочешь — непонятно.

на сервере нет fail2ban

The only required dependency needed to run Fail2ban is Python. You need: Python >=2.6, Python >=3.2, PyPy

anonymous
()
Ответ на: комментарий от anonymous

Я не могу установить fail2ban на тот динозавр.

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

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

bambie
() автор топика

Написать то конечно можно, но оно будет некрасивое и будет сложно разобраться в логике его работы. Ну и/или будет кривовато работать (с задержками например).

Проще сделать на си, скомпилировать либо прямо там, либо, если там нет компилятора, на другой старой системе (чтобы не было зависимостей от нового libc или ядра), возможно статически. Так и код будет простой и понятный, и надёжнее. Хоть и не «кросс-поатформенно» (под другую ОС придётся перекомпилировать), но это же пофиг?

Весь исходник (в аккуратной, околоидеальной реализации) будет в пределах 200 строк, бинарник (один, без доп. установок чего-либо) тоже маленький.

И разве в iptables нету списков айпишников? В ipfw (freebsd) есть, чтобы не делать по новому правилу на каждый бан.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от bambie

Так и не надо ничего обновлять. Ставишь python в отдельный префикс, и туда ставишь fail2ban по инструкции из readme

annulen ★★★★★
()

сервер ОС дебиан

версия?

на сервере нет fail2ban

Это набор скриптов, если нет в репах (у debian вроде диски для любой версии можно откопать), то можно накатить руками

Или если можно как-то лучше сделать, предложите свой идеальный божественный вариант.

На виртуалке поднимается актуальный debian/centos, собирается asterisk, переносятся конфиги и правятся под актуальную версию. После виртуалка становится sip сервером пока обновляется «старый сервер» и на него переносятся конфиги с виртуалки. Если в asterisk совсем не шарите, берите freepbx, он конечно со своими приколами, но если не отступать от базового функционала, то будет работать.

Kolins ★★★★★
()
Ответ на: комментарий от firkax

Я не умею си. И не хочу чтобы сложно разбираться и много строк. Так что, наверное, это не подходит.

И разве в iptables нету списков айпишников? В ipfw (freebsd) есть, чтобы не делать по новому правилу на каждый бан.

Обычно каждый раз новый айпишник ломится на сервер. Командой можно банить подсети с маской 24, а в крайнем случае с маской 16

bambie
() автор топика
Ответ на: комментарий от anonymous

А какая версия ОС? Давай я тебе лучше питон установить помогу?

$ uname -
3.2.0-4-mckinley #1 SMP Debian 3.2.46-1 ia64 GNU/Linux
$ python --version
Python 2.7.3

есть команда sudo apt-get install fail2ban вот что в кноце:

После данной операции, объём занятого дискового пространства возрастёт на 606 kB.
ВНИМАНИЕ: Следующие пакеты невозможно аутентифицировать!
  fail2ban
Установить эти пакеты без проверки [y/N]? n
E: Некоторые пакеты невозможно аутентифицировать

Я пока не пытался установить.

bambie
() автор топика
Ответ на: комментарий от Kolins

Версию написал выше.

На виртуалке…

Я знаю, как это работает. что (на рабочем сервере лучше не экспериментировать) нужно поднимать на виртуалке, но проблема может быть с переносом всяких конфигов и хрен знает, что там есть еще. Чтобы потом виртуалка стала временно основным сервером придется менять разные конфигурации - айпишники, мониторинги и все, что связанно с этим сервером. Я не хочу поднимать эту возню среди начальства, хотел вообще по-тихому все сделать. Астериск я шарю по новым мануалам, так что настроил бы с нуля без проблем, но походу сервер настраивали еще до моего рождения.

bambie
() автор топика
Ответ на: комментарий от anonymous

Пффф, и это проблема?

Если взглянуть на всю картину целиком, то для меня это проблема, да.

Кстати, Вам вот сюда: https://www.linux.org.ru/forum/job/

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

bambie
() автор топика
Ответ на: комментарий от bambie

Я пока не пытался установить.

Так попытайся. Не нравится из реп — ты можешь это легко сделать из исходников. Да хоть просто к себе в хомяк файлы скопируй и запускай.

Установить программу будет намного, гораздо проще, чем писать, отлаживать и потом ещё не пойми сколько времени поддерживать свой велосипед. Это у твоего «начальства» всё просто — команду дал и потом только знай наказывай. Но ты как специалист должен это понимать. Ты завтра скажи начальнику: мол, есть решение, но оно платное, 1000 рублей в час и от недели до месяца+ разработки. А есть готовый, отличный и бесплатный fail2ban, нужно только поставить. Пусть он и решит.

anonymous
()
Ответ на: комментарий от bambie

ia64

О, живой итаниум )

Некоторые пакеты невозможно аутентифицировать

Конечно, debian7 давным-давно снят с поддержки.

zemidius
()
Ответ на: комментарий от Kolins

На виртуалке поднимается актуальный debian/centos, собирается asterisk, переносятся конфиги и правятся под актуальную версию.

Ох уж эти адепты всеобновления и адепты виртуалок. Ещё докер приплести осталось. Ты понимаешь что на старом сервере могло быть что-то глубоко кастомное, которое, судя по словам автора, ломать НЕЛЬЗЯ, и что бизнес-требования несозмеримо важнее каких бы то ни было технических традиций? А того кастомного очевидно просто не будет на некоей сделанной с нуля виртуалке, если автор про него не знает. А если оно ещё и заточено под старые версии софта - то его нельзя будет просто перенести.

Так что, сначала - надо выяснить как всё работает сейчас, научиться настраивать его, а потом только пытаться собирать его аналог на новых версиях софта.

firkax ★★★★★
()
Ответ на: комментарий от bambie

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

Я тебе писал обратное. Если писать скрипты - да, будет что-то трудное для понимания и, вероятно, плохо работающее. На «языках программирования», т.е. на си - компактное и понятное.

firkax ★★★★★
()
Ответ на: комментарий от bambie

Обычно каждый раз новый айпишник ломится на сервер. Командой можно банить подсети с маской 24, а в крайнем случае с маской 16

Речь на про маску а про список. Т.е. правило одно - бан по списку адресов, а сам список можно динамически дополнять или сокращать.

firkax ★★★★★
()
Ответ на: комментарий от firkax

И вот у ТС дошли до момента, что никто не умеет это древнее говно поддерживать. А если оно завтра сломается, как это всё восстанавливать?

FireFighter ★★★
()
Ответ на: комментарий от firkax

А кто предлагает ломать? Я предложил поднять виртуалку, пересобрать там aster посвежее, перенести конфиги и разобраться в них. Потом менять реальный сервер на виртуальный и если все работает как раньше, то уже обновлять реальный (для которого будут актуальные конфиги на виртуальном).

которое, судя по словам автора, ломать НЕЛЬЗЯ

судя по словам автора он особо не копался что там и про остервенелый кастом с самописными модулями и хитровыдуманными вызовами agi речи не было.

Kolins ★★★★★
()
Ответ на: комментарий от bambie

но проблема может быть с переносом всяких конфигов и хрен знает, что там есть еще

Пока не перенесешь не узнаешь. Вообще начни с чтения extensions.conf и алгоритм обработки звонков нарисуй, станет понятнее.

Kolins ★★★★★
()
Ответ на: комментарий от Kolins

судя по словам автора он особо не копался

В том и дело, зато он вполне подозревает проблемы: «хрен знает, что там есть еще». Перенос «на новую машину» с такими настроениями очень часто оборачивается потерей какого-то функционала, который на старой машине был не на самом видном месте, без которого внешне вроде всё работает, но спустя какое-то время выяснится что работает немного, но существенно не так, как требовалось начальству (а эти требования расходятся с дефолтным поведением). И хорошо, если это выяснится не после того, как автор решит «о, новый сервер теперь в порядке, старый хард и бекапы можно затирать».

firkax ★★★★★
()
Ответ на: комментарий от firkax

Я тебе писал обратное.

Я понимаю, но я не умею программирование си. И также я не хочу на скриптах в результате получить говно-код не читаемый : |

Речь на про маску а про список.

Понимаю, но все используют только эти отдельные команды, со словами - так уже сто лет работает и хорошо.

bambie
() автор топика
Ответ на: комментарий от arto

Можно пару слов объяснений этой команды?

bambie
() автор топика
Ответ на: комментарий от zemidius

Конечно, debian7 давным-давно снят с поддержки.

Значит, из репозитория ставить не лучший вариант? будут отсутствующие ключи репозиториев или что-то еще? Потому что в сорс листах прописаны репозитории от старого debian7 и 6. Лучше всего было поставить из исходников, как говорит анонимус?

bambie
() автор топика
Ответ на: комментарий от Kolins

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

bambie
() автор топика
Ответ на: комментарий от tz4678

Ужасное предложение. Если вдруг все полетит к чертям, (такое иногда бывает при обновлениях) то придется откатывать рабочий сервер, пока остальные будут ждать и переживать аварию, будет много шума и я буду виноват.

bambie
() автор топика
Ответ на: комментарий от bambie

Ну дело твое. Могу еще предложить в iptables с l7-firewall/ndpi отлавливать сообщения с Wrong password и кидать в бан, но не знаю как хорошо оно будет работать на древнем debian

Kolins ★★★★★
()
Последнее исправление: Kolins (всего исправлений: 1)
Ответ на: комментарий от Extraterrestrial

Почему?

Как мне объяснили, сервер слишком старый для этого. Может так бы его уже установили.

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

Нужно чтобы сразу стало и работало. Минимум изменений в системе. И никаких обновлений пакетов, изменений в конфиге и никакой перезагрузки. Короче, по-тихому. И сервер слабый еще.

bambie
() автор топика
Ответ на: комментарий от FireFighter

Я думаю, что тот человек, который это все делал, давно уволился. Пока что это работает и его поддерживают как-то. Лично я бы не дышал на такой сервер. Но в будущем, я уверен, что грядет глобализация и рано или поздно все равно скажут что пора (но это будет не сегодня).

bambie
() автор топика
Ответ на: комментарий от bambie

А к астериску подключаются клиенты со всего мира что ли? Повему нельзя закрыть все входящие коннекты и открыть только клиентским ip?

Там более, что астериск наверняка древний и легко ломается через 100500 уязвимостей.

zemidius
()
Последнее исправление: zemidius (всего исправлений: 1)
Ответ на: комментарий от zemidius

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

Не-а. По-моему только по стране. Но там не знаю как, постоянно кто-то подключается, кто-то отключается.

bambie
() автор топика
Ответ на: комментарий от bambie

Ну в любом случае fail2ban вместо планируемого скорейшего обновления древнего неподдерживаемого софта, выставленного в интернет - это как при поносе попу пальцем затыкать, если по простому. Хотя бы vpn-ом прикрыть астериск - уже было бы гораздо лучше.

zemidius
()
Ответ на: комментарий от bambie

Установить эти пакеты без проверки [y/N]? n

Я не могу установить fail2ban на тот динозавр

Нажми у, и поставишь если репозиторий прописан живой. Если не живой, то прописать живой. Делов то. От используемой архитектуры не зависит.

einhander ★★★★★
()
Ответ на: комментарий от bambie

Лично я бы не дышал на такой сервер.

А что будешь делать если железо откажет? Тебе правильно советуют скопировать конфиг на другую машину и проверить работоспособность ее вместо этого сервера.

einhander ★★★★★
()

Ок, спасибо

bambie
() автор топика
Ответ на: комментарий от bambie

Ну распакуй python 2 и fail2ban в отдельный каталог из пакетов, настрой переменные окружения и запускай

Extraterrestrial ★★★★★
()
Ответ на: комментарий от bambie

Я не могу установить fail2ban на тот динозавр.

Это звучит как «я не хочу нормальное решение проблемы, я хочу пердолиться с кривыми и постоянно отваливающимися Bash-скриптами, которые будут читать какие-то выхлопы tail -f, пропуская мусор и давая бан нормальным клиентам».

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.