1. Куча / Говнокод #26814

    +1

    1. 1
    2. 2
    3. 3
    Вы уронили продуктовое приложение и SSH-доступ изнутри виртуалки к нему,
    все сессии потеряны. Доступ к виртуалке надо просить через заказчика, и это косяк.
    Ваши действия?

    Запостил: vistefan, 23 Июля 2020

    Комментарии (203) RSS

    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • > Попроси доступ, и сделай вывод о том, что всегда обязательно нужно иметь доступ к консоли.
      This.

      А когда работаешь с «Iptables» на удалённой виртуалке — советую использовать вот такой шаблон:
      #!/bin/bash
      
      iptables -A ........
      
      
      echo "OK."
      sleep 5s
      
      echo "Failed. Falling back."
      
      iptables -t filter -F
      iptables -t filter -X
      iptables -t filter -Z
      iptables -t raw -F
      iptables -t raw -X
      iptables -t raw -Z
      iptables -t mangle -F
      iptables -t mangle -X
      iptables -t mangle -Z
      iptables -t nat -F
      iptables -t nat -X
      iptables -t nat -Z

      Выполняешь скрипт, после «OK» нажимаешь «Ctrl+C». Если проебался и отрубил SSH — через пять секунд скрипт всё откатит к чистому листу. Не спасает от отрубания всех входящих соединений, но это уже экзотика.
      Костыль, конечно, но если уж накатывать на прод нетестированные правила…
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • > скрипт нужно нохапать же, иначе у него tty отвалится, и баша с собой заберет, не?
          В принципе да, так будет правильнее, но для немедленного отваливания сессии нужно ухитриться отправить TCP-reset от имени клиента, а это нетривиально. В большинстве случаев SSH-трафик просто будет DROPнут, и за пять секунд сессия отвалиться не успеет.
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • Клиент закроется, но сервер-то об этом не узнает (ему TCP-RST не придёт, он же REJECTится) и будет молча ждать таймаута.
              Ответить
            • > Альсо, у тебя может самого в этот момент что-то отвалиться, а пока будешь чинить -- таймаут TCP придет
              Поэтому скрипт перед очисткой и спит всего несколько секунд. Когда сессия отвалится по таймауту — правила уже давно будут очищены.
              Ответить
              • показать все, что скрытоvanished
                Ответить
                • Да тут похоже речь не про деплой, а кто-то шаловливыми ручками полез что-то править по ftp
                  Ответить
                  • показать все, что скрытоvanished
                    Ответить
                    • Вообще я в этом нихуя не понимаю.

                      Но мне кажется странным, что правила фаервола лежат там же, где боевое приложение. А как же балансировщики, роутинг и прочие непонятные мне слова?
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                      • > Но мне кажется странным, что правила фаервола лежат там же, где боевое приложение. А как же балансировщики, роутинг и прочие непонятные мне слова?
                        Распространённая ошибка, кстати. Боевой сервер за балансировщиками и проксями, у которого не настроен фаерволл — это как полный комплект брони с дыркой на заднице. Рано или поздно он утечёт (или перебором, или более экзотическими методами) — и всё, дальше всё зависит от степени безалаберности админа.
                        Именно поэтому я за
                        #!/usr/bin/env bash
                        
                        SET_NAME_CLOUDFLARE=cloudflare
                        IPS_URL="https://www.cloudflare.com/ips-v4"
                        
                        now=$(date '+%d-%m-%Y %H:%M:%S')
                        echo "Started Cloudflare IPv4 update script at $now"
                        
                        ipset -L $SET_NAME_CLOUDFLARE >/dev/null 2>&1
                        if [ $? -ne 0 ]; then
                            ipset create $SET_NAME_CLOUDFLARE hash:net
                        else
                            ipset -F $SET_NAME_CLOUDFLARE
                        fi
                        
                        curl -sS $IPS_URL | grep -E "^[0-9\./]+$" | xargs -I % ipset add $SET_NAME_CLOUDFLARE %
                        
                        now_end=$(date '+%d-%m-%Y %H:%M:%S')
                        entries_num=$(expr `ipset -o save list $SET_NAME_CLOUDFLARE | wc -l` - 1)
                        echo "Done Cloudflare IPv4 update script at $now_end: $entries_num total entries"
                        echo ""
                        .
                        Ответить
                        • > от степени безалаберности админа

                          А дальше монга без пароля, угу. Она же за балансировщиком и фаерволом.
                          Ответить
                        • показать все, что скрытоvanished
                          Ответить
                          • > На AWS продакшен сервер может вообще не иметь внешнего IP, и быть доступен только из VPC, в которую входит балансировщик.
                            Ну так это фактически и есть фаерволл, запрещающий прямой доступ к серверу. Кто сказал, что «фаерволл» должен быть в виде кучки правил «iptables»?
                            Ответить
                            • показать все, что скрытоvanished
                              Ответить
                              • Ну как это не имеет? Тебе в любом случае придётся в «AWS» настраивать доступ к серверу приложений (пусть и путём помещения его в «VPC»).
                                >>> Кто сказал, что «фаерволл» должен быть в виде кучки правил «iptables»?
                                Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                                  • Я сказал, что это распространённая ошибка. Окей, в случае с «AWS VPC» на боевом сервере нет никаких «правил файрвола» (хотя настраивать файрвол всё равно нужно). Но если ты возьмёшь эдак процентов девяносто сайтов, «защищённых» «Cloudflare», то увидишь, что на них спокойно можно зайти по их реальному адресу, что является грубой ошибкой конфигурации (во-первых, теряются все защитные свойства, во-вторых, появляется возможность крупно наебать бан по IP).
                                    Или вот реальный пример статейки на «Хабре», написанной вчера: https://habr.com/post/512152/, там в разделе «Прямое подключение» просто-таки хрестоматийный пример такого рода ошибки.
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • Нахождение в приватной сети это круто, но не отменяет настроек фаервола.
                                        Ответить
                                        • показать все, что скрытоvanished
                                          Ответить
                                          • Да, настроен. Зачем портами наружу светить если они явно не требуются соседним тачкам? Сегодня сеть приватная, а завтра один из серваков слегка ломанут или во внешнем фаере админы накосячат.
                                            Ответить
                                            • показать все, что скрытоvanished
                                              Ответить
                                              • Вот, кстати, да, Борманд вполне реальный пример привёл. Конечно, в повседневной жизни кейсы взлома локальной сети рассматривать непродуктивно, но вот для крупных/дорогих сервисов может быть очень важно, что злоумышленник, проникший на какую-нибудь машину для сбора лишних байтов, не получит лёгкого и простого доступа к окружающим серверам.
                                                Ситуация, когда всю сеть компании ломает чувак, взломавший рабочий ЭВМ уборщицы тёти Маши, довольно распространены.
                                                Ответить
                                                • То есть сначала чуваки засунули пека уборщицы в одну сетку с боевыми серваками, а потом решили замести срань фаерволом под коврик?

                                                  Какой энтерпрайз )))
                                                  Ответить
                                                  • Ну дык. Типичная проблема больших систем. Ошибки копятся, никто не понимает как это работает в целом и рано или поздно комп уборщицы попадает в продакшен.

                                                    В идеальном мире, конечно, всё правильно настроено и код без багов пишется. Но в реальном мире лучше перестраховаться и сделать защиту на всех уровнях, где это получается. Авось хакерам надоест и они пойдут искать что-то более лёгкое.
                                                    Ответить
                                                    • показать все, что скрытоvanished
                                                      Ответить
                                                    • Ну ок.

                                                      У меня нет опыта в этом, потому спорить не буду.

                                                      Хотя выглядит немного, как оверкилл, который всё равно в итоге не поможет.
                                                      Ответить
                                                      • > который всё равно в итоге не поможет.

                                                        Дык ты по определению в проигрышном положении по отношению к хакеру. Всегда. Ему надо найти одну дыру в твоём коде или конфиге. Тебе надо закрыть все.

                                                        Поэтому все способы, которые уменьшают поверхность атаки хороши: поставить пароль на монгу, врубить фаер хотя бы на минималках, чтобы лишние сервисы случайно не засветились, настроить VPC как guest выше пишет.

                                                        Налажать можно на любом из этих этапов. Но есть шанс, что остальные тебя подстрахуют.
                                                        Ответить
                                                • показать все, что скрытоvanished
                                                  Ответить
                                              • > software defined network

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

                                                Поэтому прикрыть жопу фаервольчиком не помешает. Хотя бы минимальным, который экспозит только те порты, которые нужны для работы данного контейнера (да, я понимаю, что в контейнерах обычно ничего лишнего нет, но shit happens).

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

                                                    И опытная крестоблядь заодно. Замечательное сочетание для развития паранойи.
                                                    Ответить
                                                    • Подтверждаю. Когда из-за отсутствия переноса строки в конце файла единицы трансляции компилятор получает право сделать «rm -rf /*», паранойя развивается очень быстро.
                                                      Ответить
                                                      • Да ладно, PHP вон тоже от наличия переноса строки в конце файла получает право отправить заголовки...
                                                        Ответить
                                                        • А можно поставить в конце файла собачку?
                                                          Ответить
                                                          • Нет, но можно поставить её перед отправкой хедеров.
                                                            Ответить
                                                • показать все, что скрытоvanished
                                                  Ответить
                                                • показать все, что скрытоvanished
                                                  Ответить
                                                  • В венде ж наоборот все пердолятся чтобы выключить фаер. А по дефолту он неплохо настроен, особенно если сказать что это не локалка.
                                                    Ответить
                                                    • показать все, что скрытоvanished
                                                      Ответить
                                                      • Есть шара с антивирусником и бекапами, есть принтсервер. Нахуй друг другу на тачки лазить то?

                                                        Десктопные тачки не должны ничего хостить. Иначе это колхоз какой-то.
                                                        Ответить
                                                        • показать все, что скрытоvanished
                                                          Ответить
                                                          • Да, закрыл бы.

                                                            > ну как я музыку-то коллеге передам?

                                                            Во вконтакте скинешь ссылку лол, один хер все там слушают. Или я уже отстал от жизни и сейчас это делают как-то по-другому?
                                                            Ответить
                                                          • > ну как я музыку-то коллеге передам?
                                                            Вопрос на миллион: нахуя на работе, за рабочим компом передавать кому-то музыку? На работе работать надо, ёба!

                                                            UPD: Ладно, ладно, я понимаю, зачем это надо работнику. А почему это должно волновать администратора?
                                                            Ответить
                                                            • показать все, что скрытоvanished
                                                              Ответить
                                                            • показать все, что скрытоvanished
                                                              Ответить
                                                              • > Потому что зачем залупаца с сотрудниками на пустом месте?
                                                                Ну а почему бы тогда не поставить «Стим» на все компы, чтобы совсем заебись стало?

                                                                > Ясен хуй, что в идеальном мире их надо в документооборот пихать, но это так не работает.
                                                                По-умолчанию всё должно быть максимально закрыто и заблочено. Разумеется, если у конкретной конторы есть реальная рабочая необходимость в открытом SMB-сервере на всех машинах, то ничего не поделаешь. Но это, повторюсь, должна быть, во-первых, необходимость, а во-вторых — рабочая.

                                                                Ну и да, «SMB» — это настолько дырявое говно, что его просто страшно запускать. В нём чуть ли не каждый год очередную 10/10 CVE находят.
                                                                Ответить
                                                                • показать все, что скрытоvanished
                                                                  Ответить
                                                                  • > Даже SMB3?
                                                                    Пф-ф-ф.
                                                                    https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796
                                                                    > An attacker who successfully exploited the vulnerability could gain the ability to execute code on the target server or client.
                                                                    > To exploit the vulnerability against a server, an unauthenticated attacker could send a specially crafted packet to a targeted SMBv3 server. To exploit the vulnerability against a client, an unauthenticated attacker would need to configure a malicious SMBv3 server and convince a user to connect to it.
                                                                    > Published: 03/12/2020

                                                                    Сколько решето не нумеруй — оно так решетом и останется.
                                                                    Ответить
                                                                    • показать все, что скрытоvanished
                                                                      Ответить
                                                                      • > Остается надеется на то, что внутри сети всё таки хакиров нету
                                                                        Ну да, и на то, что кто-то не запустит удачную картинку.jpeg.exe. «EternalBlue» (привет, SMB), «WannaCry» (> Параллельно с шифрованием программа проводит сканирование произвольных адресов Интернета и локальной сети для последующего заражения новых компьютеров), «Petya» (> вредоносное ПО по-прежнему будет использовать «точку опоры» на заражённом ПК, с целью распространиться в другие компьютерные системы через локальную сеть), тысячи их.
                                                                        Ответить
                                                                        • показать все, что скрытоvanished
                                                                          Ответить
                                                                          • > И вирус всё равно туда придет, и зашифрует всё нахрен.
                                                                            Ну да, есть такое. В случае с Бормандовской методой зашифрованы окажутся комп лоха нерадивого сотрудника и шара, а в случае с открытым везде «SMB» лежать будет вся маршрутка локалка, включая комп Большого Босса :-).

                                                                            > Вы только что объяснили мне, что половина MS технологий нахуй не нужна, например)
                                                                            Она была бы нужна, если бы «MS» выкинула нахуй весь код «SMB» и написала его с нуля, по современным и безопасным мето́дам (на пuтухе).
                                                                            Ну потому что неавторизованное RCE одним пакетом в 2020-м году, в современном приложении — это ж пиздец хтонический.
                                                                            Ответить
                                                                            • показать все, что скрытоvanished
                                                                              Ответить
                                                                              • Ну базу 1С всё равно придётся восстанавливать, просто во втором случае в добавок к ней придётся пердолиться вообще со всеми рабочими компами («а куда пропал Новый Документ (14).rtf?!», повторить 100 раз). А вот если бэкапы тоже заливались по «SMB»…

                                                                                > С ноля MS переписивать не будет: проще сделать вебговно в облаке с доступом по https. По https, вроде как, Петя не ходит.
                                                                                Ну тоже вореант, кстати. Всяческих облакоподобных решений сейчас как грязи развелось. Правда, насколько они enterprise-ready — хуй знает.

                                                                                > На тайпскрипте, следуя модным тенденциям.
                                                                                Подтверждаю. Какой багор )))

                                                                                > А как дела у юниксов с NFS?
                                                                                Совсем не в теме, извини.
                                                                                Ответить
                                                                          • Поставь уже восьмую одинэску, там вроде шара не требуется.
                                                                            Ответить
                                                                            • показать все, что скрытоvanished
                                                                              Ответить
                                                                              • > Тогда зачем вообще шары в 2020?
                                                                                Музыку передавать.
                                                                                Ответить
                                                                              • Да, там какой-то SQL сервак был. То ли мс то ли постгрес вообще. Видимо надоело им фокспро-на-шаре.

                                                                                > зачем вообще шары

                                                                                А х.з. Ну одну на серваке то удобно держать. И права настроить можно и интеграция с доменом хорошая.

                                                                                А зачем они на клиентских тачках - хер бы знал, для домашней локалки где нет хорошего роутера или наса, наверное.
                                                                                Ответить
                                                                                • показать все, что скрытоvanished
                                                                                  Ответить
                                                                                  • Да :(

                                                                                    Ответ от мс, как в далёкие годы: всё ок, просто не скачивайте petya.exe
                                                                                    Ответить
                                                                                    • показать все, что скрытоvanished
                                                                                      Ответить
                                                                                      • Ну то что помойка и контроллер на одном компе - это уже странно. Видимо бюджета админу совсем не дали. Даже на виртуалку.
                                                                                        Ответить
                                                                                      • > В политике можно запретить скачку .exe, и антивирь все поставить
                                                                                        Я за «SRP» и «AppLocker». Запретить и не пущщать!

                                                                                        …Правда, для грамотной настройки этого ебаться придётся столько, что легче будет пойти и утопиться. Там целая IT-рота админов нужна будет.
                                                                                        Ответить
                                                                                        • Ну кстати я родителям включил политику про запрет запуска скачанных экзешников. Пять лет полёт нормальный. Ни вирей ни рекламного говна. Браузера им хватает.
                                                                                          Ответить
                                                                                          • Ну, полноценно настроенный «SRP» — это когда запуск экзешников/скриптов и загрузка DLL разрешена только из анально огороженных read-only (для текущего юзера) папок. Для этого надо с практически каждой установленной программой ебаться отдельно, потому что долбоёбы обязательно хотят насрать в папку установки или выполнить какое-то говно из %TEMP%. Я некоторое время на домашнем компе такое держал, потом заебался в край и забил.
                                                                                            Ответить
                                                                                            • показать все, что скрытоvanished
                                                                                              Ответить
                                                                                              • > Ну это всегда трейдофф.
                                                                                                Подтверждаю.

                                                                                                > **умные проги правда умеют в домашнюю папку LOCALAPPDATA уже
                                                                                                А некоторое слишком умное говно туда ставится, лол.
                                                                                                Ответить
                                                                                                • показать все, что скрытоvanished
                                                                                                  Ответить
                                                                                                  • То, что туда текущий пользователь может писать что угодно.

                                                                                                    >>> полноценно настроенный «SRP» — это когда запуск экзешников/скриптов и загрузка DLL разрешена только из анально огороженных read-only (для текущего юзера) папок
                                                                                                    Ответить
                                                                                                    • показать все, что скрытоvanished
                                                                                                      Ответить
                                                                                                      • Если уж на то пошло, то я за программу, которая вообще никуда не ставится. Распаковал из архива куда тебе удобнее — и пользуйся.
                                                                                                        Ответить
                                                                                                        • показать все, что скрытоvanished
                                                                                                          Ответить
                                                                                                          • И автозапуск, обязательно автозапуск!
                                                                                                            И в таскбар насрать.

                                                                                                            И пункт «Не отметьте галочку, если вы не согласны с неустановкой инновационного антивируса McAffee (1 мес. беслпатно!)».
                                                                                                            Ответить
                                                                                                            • показать все, что скрытоvanished
                                                                                                              Ответить
                                                                                                            • P. S. https://govnokod.ru/14237#comment210096
                                                                                                              >>>
                                                                                                              Можно галочку дублировать, располагать каждый раз в случайном месте или
                                                                                                              предлагать пользователю (не)сложный ребус.
                                                                                                              
                                                                                                              ☑ Я согласен, что эта прога может поиметь мой комп.
                                                                                                              ☑ Я не согласен, что эта прога может поиметь мой комп.
                                                                                                              ☑ Я согласен, что эта прога может поиметь мой комп, но не надо её устанавливать.
                                                                                                              ☑ Я знаю, что эта прога может поиметь мой комп, и хочу её установить.
                                                                                                              ☑ Я знаю, что эта прога может поиметь мой комп, и хочу её не установить.
                                                                                                              ☑ Я знаю, что эта прога может поиметь мой комп, и категорически против завершения процесса её неустановки.
                                                                                                              Ответить
                                                                                      • Пиздец, да.

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

                                                                                        Только спрашивается, а нахуя тогда целая винда?
                                                                                        Ответить
                                                                                        • показать все, что скрытоvanished
                                                                                          Ответить
                                                                                          • У меня был случай, когда у заказчика вся контора сидела на винде + говнобуках hp, там реально всё от и до было от майков. И тут мы такие двое пацанов, я и мой коллега, на маках.

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

                                                                                            Ещё там был очень ограниченный список софта, который можно было поставить. Но зато девелоперам разрешалось иметь папку типа C:\Work, в которой можно было невозбранно запускать любые бинари.

                                                                                            Хромимум в любом случае вряд ли бы взлетел, но планшета с какой-нибудь WinRT хватило бы за глаза. Впрочем, хороший виндовый планшет стоит примерно столько же, наверное, сколько и ноут.
                                                                                            Ответить
                                                                                            • Ну виндовые планшеты они и есть ноуты обычно. Просто клава отрывается.
                                                                                              Ответить
                                                                                              • Разве Surface это планшет?
                                                                                                Ответить
                                                                                                • Ну да. Планшет с клавой. Как и леново и ещё куча других клонов сурфейса с интелом и вендой.
                                                                                                  Ответить
                                                                                                  • Ой, я хотел написать "Разве Surface это ноут?"

                                                                                                    Ну да, планшет конечно
                                                                                                    Ответить
                                                                                            • показать все, что скрытоvanished
                                                                                              Ответить
                                                                                              • На почту можно было зайти через vpn и вебморду. К сетке, в которой крутились все сервисы, маки почему-то подключаться не хотели.

                                                                                                Только там сессия жила где-то час, а потом надо было заново переподключаться с бубном.
                                                                                                Ответить
                                                                                              • > Какой секурити:)))
                                                                                                Подтверждаю. На каждую скомпилированную версию бинаря писать заявление на включение исполняемого файла в белый список, SHA-256, дата, подпись.
                                                                                                Ответить
                                                                • Тю, норм, мы так когда-то скопировали с флешки сеговский Мортал на все компы в аудитории. Преподша опоздала, заходит, а у неё дюжина рыл расселись парами и шпилят.
                                                                  Ответить
                                  • Ну и чтоб далеко не отходить — ещё реальный пример: резольвим x64dbg.com, видим IP-адреса «Cloudflare», немножечко копаемся, прописываем в «hosts» строчку «199.247.25.17 x64dbg.com» — и вуаля, мы можем зайти напрямую на их боевой сервер.
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • Ага. Как и любой другой внешний антиддос, кстати (вроде того же «Qrator»-а). Так что при использовании таких проксирующих серверов безопасность должна состоять из двух частей: во-первых, реальный IP боевого сервера никто не должен знать, а во-вторых, доступ к веб-серверу должен быть жёстко ограничен только IP-адресами из подсетей «Cloudflare». Если забить на вторую часть, то в конце-концов реальный IP таки кто-то найдёт (если очень упорный — то перебором всего интернета), и будет бо-бо.
                                        Ответить
                                        • показать все, что скрытоvanished
                                          Ответить
                                          • Это, в принципе, касается не только антиддосов, а вообще всех ситуаций, когда трафик проходит через несколько серверов, которые по какой-то причине доступны извне (выше ссылку на реальный пример с «Хабра» кидал). Очень часто админы думают, что если у них пользователи идут через контролируемый прокси, то заморачиваться какими-то другими ограничениями (файрвол, VPC, etc.) не нужно.

                                            > Разрешено должно быть только то, что необходимо. Все остальное -- запрещено.
                                            Подтверждаю.
                                            Ответить
        • > иногда нужно было куда-то ехать ногами

          Ну да. И это даёт замечательный опыт, мне одного такого факапа хватило. С виртуалками скучно, можно тупо зайти в консоль на сайте хостера да пофиксить.
          Ответить
      • > Выполняешь скрипт, после «OK» нажимаешь «Ctrl+C». Если проебался и отрубил SSH — через пять секунд скрипт всё откатит к чистому листу.

        Можно просто по крону запускать раз в 5 минут некую поебень, которая пингует хуйню, если хуйня не пингуется то тогда вся хуйня с иптаблес сбрасывается.
        Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий