Почтой прислали

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35071
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Почтой прислали

Непрочитанное сообщение Alex Keda » 2007-06-01 18:29:45

почтой прислали. На сатью не тянет, но идея интеерсная писал(а):Недавно (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 &
Убей их всех! Бог потом рассортирует...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
o2x
мл. сержант
Сообщения: 112
Зарегистрирован: 2007-01-31 17:46:54

Непрочитанное сообщение o2x » 2007-06-02 18:00:09

Вот наваял скриптец запуска) Прописываем в 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
стреляли...
Сообщения: 35071
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-06-02 19:49:37

как когда-то посоветовали мне, юзайте rc.subr для таких целей - там масса функций по определению процесса и прочего..
Убей их всех! Бог потом рассортирует...

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Почтой прислали

Непрочитанное сообщение risk94 » 2008-06-16 3:49:52

или добавляем в /etc/syslog.conf следующую строку:

Код: Выделить всё

auth.info;authpriv.info     |exec /usr/local/sbin/sshguard
и делаем ему reload

и усе.

Идаже в случаее его падения - тутже поднимается!
Последний раз редактировалось risk94 2008-06-18 7:08:40, всего редактировалось 1 раз.

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Почтой прислали

Непрочитанное сообщение zingel » 2008-06-16 4:08:45

эта пакость появляется, по-крайней мере у меня, из-за того, что кончается место под цепочки 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 - можно пожертвовать мне денег

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Почтой прислали

Непрочитанное сообщение risk94 » 2008-06-16 9:45:53

а если время отлупа увеличить дополнительно?

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Почтой прислали

Непрочитанное сообщение zingel » 2008-06-17 4:17:59

а если время отлупа увеличить дополнительно?
где? (как-то не тянет городить патч для 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 - можно пожертвовать мне денег

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Почтой прислали

Непрочитанное сообщение risk94 » 2008-08-19 14:08:58

за 2 месяца работы насоздовал он цельную кучу папья и файлов в /tmp и в секурити-логах стало появлятся сообщение о том что не может залочить атакующего в связи с тем что не может создать временный файло. Подчистил руками /tmp - запахал обратно нормально.

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Почтой прислали

Непрочитанное сообщение zingel » 2008-08-20 8:08:09

там в конце стоит поставить /etc/netstart (когда подходят к концу цепочки)
Z301171463546 - можно пожертвовать мне денег

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Почтой прислали

Непрочитанное сообщение risk94 » 2008-08-21 7:54:13

zingel писал(а):там в конце стоит поставить /etc/netstart (когда подходят к концу цепочки)
поподробнее? И кто нить обращал внимание на то, что sshguard переодически в кору выпадает?

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Почтой прислали

Непрочитанное сообщение zingel » 2008-08-21 8:54:38

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

Код: Выделить всё

ipfw: limit xxx reached on entry 65534
команду

Код: Выделить всё

/etc/netstart
Z301171463546 - можно пожертвовать мне денег

risk94
лейтенант
Сообщения: 831
Зарегистрирован: 2007-06-01 19:27:51

Re: Почтой прислали

Непрочитанное сообщение risk94 » 2008-08-21 10:16:56

у мну фаер не ругается так