почтой прислали. На сатью не тянет, но идея интеерсная писал(а):Недавно (25 май 2007 ) вышла маленькая статья в разделе "Советы" на http://www.opennet.ru/tips/info/1424.shtml
Почитавши её, присмотревшись к ссылке http://www.lissyara.su/?id=1069 решил и себе что то эдакое поставить.
Остановился на sshguard.
Залезаем в порты и делаем make install (без clean)
В окне CONFIG выбираем файрвол ipfw
[ ] PF Use PF as firewall backend
[X] IPFW Use IPFW as firewall backend
Жмём ОК и ждём когда установится.
После установки будет выдан вариант запуска
tail -n 0 -f /var/log/auth.log | /usr/local/sbin/sshguard &
Я запустил и стал ждать первую жертву данной программы. И дождался -). Но программа настроена так, чтобы добавлять в правила ipfw блокирующие правила с 50000 номера по random. Жертва попала в правила - но они не сработали , так как перед этим уже стояли разрешающие правила.
Останавливаем слежение за логами и после недолгих раздумий лезем в папочку /usr/ports/security/sshguard/work/sshguard-0.91/fwalls и правим там файлик ipfw.c
Редактируем строки
#define IPFW_RULERANGE_MIN 1
#define IPFW_RULERANGE_MAX 99
определяя этим номера правил с 1 по 99
и строку
sprintf(command, "ipfw add %u drop ip from %s to me 22 ", ruleno, ip);
чтобы добавить конкретный порт ssh, так как старое правило блокирует ВЕСЬ доступ с "засветившегося" айпишника.
Заходим в /usr/ports/security/sshguard/work/sshguard-0.91 и по старинке делаем давно "забытую" последовательность команд:
./configure --with-firewall=ipfw
make
make install
Запускаем tail -n 0 -f /var/log/auth.log | /usr/local/sbin/sshguard & и смотрим логи auth.log - должна появится следующая строка
May 29 11:00:34 gate sshguard[74268]: Started successfully [(a,p,s)=(4, 420, 1200)], now ready to scan.
При подборе доступа к ssh в логах должно появится следующие строки ( пусть не обижаются владельцы айпишников - логи подлиные )
Jun 1 01:13:03 gate sshd[51879]: Invalid user rfmngr from 201.17.146.59
Jun 1 01:13:09 gate sshd[51882]: Invalid user sales from 201.17.146.59
Jun 1 01:13:18 gate sshd[51884]: Invalid user recruit from 201.17.146.59
Jun 1 01:13:26 gate sshd[51886]: Invalid user alias from 201.17.146.59
Jun 1 01:13:26 gate sshguard[74270]: Blocking 201.17.146.59: 4 failures over 23 seconds.
а в правилах файрвола строка
00020 drop ip from 201.17.146.59 to me dst-port 22
Она исчезает спустя некоторое время - оставляя только в логах запись:
Jun 1 01:22:06 gate sshguard[74270]: Releasing 201.17.146.59 after 520 seconds.
Теперь осталось добавить в /etc/rc.local строку
tail -n 0 -f /var/log/auth.log | /usr/local/sbin/sshguard &
для запуска программы.
PS у меня крутится на машинке несколько систем jail. Для защиты их от подбора доступа по ssh были добавлены строки в /etc/rc.local вот такого содержания:
tail -n 0 -f /share/jails/system1/var/log/auth.log | /usr/local/sbin/sshguard &
Почтой прислали
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Почтой прислали
Убей их всех! Бог потом рассортирует...
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- o2x
- мл. сержант
- Сообщения: 112
- Зарегистрирован: 2007-01-31 17:46:54
Вот наваял скриптец запуска) Прописываем в cron
Код: Выделить всё
#! /bin/sh
# В кроне прописываем запуск раз в день sshguard
# Если процес запущен и найден - выход. Иначе - запуск.
tail="/usr/bin/tail"
guard="`ps -ax | grep sshguard | head -1 | awk -F/ '{print $5}'`"
if [ $guard = sshguard ]
then
echo "Процесс $guard уже запущен";
exit 0;
else
echo "Запускаем sshguard..."
$tail -n 0 -f /var/log/auth.log | /usr/local/sbin/sshguard &
exit 0;
fi
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- лейтенант
- Сообщения: 831
- Зарегистрирован: 2007-06-01 19:27:51
Re: Почтой прислали
или добавляем в /etc/syslog.conf следующую строку:
и делаем ему reload
и усе.
Идаже в случаее его падения - тутже поднимается!
Код: Выделить всё
auth.info;authpriv.info |exec /usr/local/sbin/sshguard
и усе.
Идаже в случаее его падения - тутже поднимается!
Последний раз редактировалось risk94 2008-06-18 7:08:40, всего редактировалось 1 раз.
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
Re: Почтой прислали
эта пакость появляется, по-крайней мере у меня, из-за того, что кончается место под цепочки ipfw, естественно, что таймер ipfw флешит повторяемые цепочки,
я решил эту проблему увеличив количество доступных по-умолчанию цепочек и такие сообщения пропали.
Код: Выделить всё
ipfw.c
.........
do_time, /* Show time stamps */
if (do_time == 2)
else if (do_time == 1) {
do_time = 1;
do_time = 2; /* numeric timestamp */
.........
do_expired, /* display expired dynamic rules */
if (!do_expired) {
do_expired = 1;
............
show_dyn_ipfw(ipfw_dyn_rule *d, int pcwidth, int bcwidth)
{
struct protoent *pe;
struct in_addr a;
uint16_t rulenum;
char buf[INET6_ADDRSTRLEN];
if (!do_expired) {
if (!d->expire && !(d->dyn_type == O_LIMIT_PARENT)) #Вот тут оно и флешит.....если кончилось всё нах
return;
}
bcopy(&d->rule, &rulenum, sizeof(rulenum));
printf("%05d", rulenum);
if (pcwidth>0 || bcwidth>0)
printf(" %*llu %*llu (%ds)", pcwidth,
align_uint64(&d->pcnt), bcwidth,
align_uint64(&d->bcnt), d->expire);
switch (d->dyn_type) {
case O_LIMIT_PARENT:
printf(" PARENT %d", d->count);
break;
case O_LIMIT:
printf(" LIMIT");
break;
case O_KEEP_STATE: /* bidir, no mask */
printf(" STATE");
break;
}
if ((pe = getprotobynumber(d->id.proto)) != NULL)
printf(" %s", pe->p_name);
else
printf(" proto %u", d->id.proto);
if (d->id.addr_type == 4) {
if (d->id.addr_type == 4) {
a.s_addr = htonl(d->id.src_ip);
printf(" %s %d", inet_ntoa(a), d->id.src_port);
a.s_addr = htonl(d->id.dst_ip);
printf(" <-> %s %d", inet_ntoa(a), d->id.dst_port);
} else if (d->id.addr_type == 6) {
printf(" %s %d", inet_ntop(AF_INET6, &d->id.src_ip6, buf,
sizeof(buf)), d->id.src_port);
printf(" <-> %s %d", inet_ntop(AF_INET6, &d->id.dst_ip6, buf,
sizeof(buf)), d->id.dst_port);
} else
printf(" UNKNOWN <-> UNKNOWN\n");
printf("\n");
}
..............
Z301171463546 - можно пожертвовать мне денег
-
- лейтенант
- Сообщения: 831
- Зарегистрирован: 2007-06-01 19:27:51
Re: Почтой прислали
а если время отлупа увеличить дополнительно?
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
Re: Почтой прислали
где? (как-то не тянет городить патч для ipfw), а с другой стороныа если время отлупа увеличить дополнительно?
Код: Выделить всё
[root@zingel ~/path/small]# diff -uNr ~/path/small/ipfw.c /usr/src/sbin/ipfw/ipfw.c
--- /root/path/small/ipfw.c 2008-06-17 04:28:50.000000000 +0300
+++ /usr/src/sbin/ipfw/ipfw.c 2008-01-29 19:44:18.000000000 +0300
@@ -1481,7 +1481,7 @@
if (do_time == 2)
printf("%10u ", rule->timestamp);
else if (do_time == 1) {
- char timestr[60];
+ char timestr[30];
time_t t = (time_t)0;
if (twidth == 0) {
@@ -6151,7 +6151,7 @@
break;
case 'T':
- do_time = 3; /* numeric timestamp */
+ do_time = 2; /* numeric timestamp */
break;
пересобиру, поюзаю, отпишу.
Z301171463546 - можно пожертвовать мне денег
-
- лейтенант
- Сообщения: 831
- Зарегистрирован: 2007-06-01 19:27:51
Re: Почтой прислали
за 2 месяца работы насоздовал он цельную кучу папья и файлов в /tmp и в секурити-логах стало появлятся сообщение о том что не может залочить атакующего в связи с тем что не может создать временный файло. Подчистил руками /tmp - запахал обратно нормально.
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
Re: Почтой прислали
там в конце стоит поставить /etc/netstart (когда подходят к концу цепочки)
Z301171463546 - можно пожертвовать мне денег
-
- лейтенант
- Сообщения: 831
- Зарегистрирован: 2007-06-01 19:27:51
Re: Почтой прислали
поподробнее? И кто нить обращал внимание на то, что sshguard переодически в кору выпадает?zingel писал(а):там в конце стоит поставить /etc/netstart (когда подходят к концу цепочки)
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
Re: Почтой прислали
в кору он падает...всегда....я имею ввиду, что стоит делать после сообщения
команду
Код: Выделить всё
ipfw: limit xxx reached on entry 65534
Код: Выделить всё
/etc/netstart
Z301171463546 - можно пожертвовать мне денег
-
- лейтенант
- Сообщения: 831
- Зарегистрирован: 2007-06-01 19:27:51
Re: Почтой прислали
у мну фаер не ругается так