1. bash / Говнокод #27268

    0

    1. 1
    $ find ~ -name .git -type d -prune -printf "***\n%p\n***\n" -exec git -C '{}/..' status  \;

    Запостил: MAKAKA, 21 Февраля 2021

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

    • давайте течь от команды ``find``
      вот так я проверяю статусы своих проектов
      Ответить
    • перешел на sshguard.

      Есть два варианта:
      * цепочка, куда он будет срать -j DROPами, а я буду в нее -j из INPUT
      * использовать ipset

      Вроде как мулион CIDR адресов проще хранить в ipset. Это правильнее?
      Ответить
      • А есть ли смысл? Пароли у тебя всяко отключены, а ключи брутить бесполезно. Выглядит как бесполезный оверхед.

        Про ipset согласен. Он быстрее линейного поиска.
        Ответить
        • смысл в том, чтобы не читать потом в логах
          115.57.127.137 (115.57.127.137): 1697 Times
          Ответить
          • Х.з., этот срач там всё равно будет, у этих ботнетов овердохуя айпишников же, годы пройдут пока всех перебанишь и они начнут повторяться.

            Ну будет 16 раз вместо 1600.
            Ответить
            • >Ну будет 16 раз вместо 1600.
              так в том-то и дело:)

              чем меньше пидорасов тем лучше. Кстати, я хочу загрузить в ipset российские сети из geoip.
              Я за пределы Роиссии всё равно не ежжу, а многих пидорсов это отсечет
              что думаешь?
              Ответить
              • Осетинского пидораса не отсечёт.
                Ответить
                • ну пидарасу нужно еще найти мой порт (он ожидаемо не 22) и начать там подбирать пароль

                  Кстати, в истории про чувака, которому поломали RDP в Querty, порт был совсем не стандартный. но это его не спасло
                  Ответить
                  • Какой смысл делать нестандартный порт? Чтобы тебе в логи меньше срали?
                    Ответить
                    • да. ну и если вдруг по какой-то причине придется включить парольный доступ, то тоже будет спокойнее.

                      Если есть возможность уменьшить соприкосновение с говном, то лучше же уменьшить, нет?

                      ps: в случае RDP всё еще хуже, так как там нет ключа, но RDP вообще без VPN нельзя никогда и никому
                      Ответить
                      • А зачем тебе смотреть в логи? Если не видишь говно, то можно считать, что его и нет.
                        Ну и пароль 123 не ставь.
                        Ответить
                        • если не смотрел логи (точнее не читать сводки с фронта логвотча) то можно проебать важный момент в жизни сервера:)
                          Ответить
                          • Какой момент?
                            Ответить
                            • момент сдыхания ssd
                              момент прихода urgent обновления, которое нужно поставить
                              момент взлома и захода к тебе с логином admin (ну вдруг там дырку в ssh нашли)
                              Ответить
                              • Попытки входа по ssh и другие важные логи срутся в 1 общий лог? То есть среди сорока тысяч записей с ботнета ты просматриваешь инфу о состоянии ssd?
                                Ответить
                                • куда именно срутся зависит от настроек syslog.
                                  Обычно ssh срутся в secure.

                                  logwatch собирает из этого дайджест, и про каждый ip пишет, сколько раз он пытался к тебе пробиться
                                  Ответить
                                  • Так выкинь нахуй эту инфу. Что она тебе даёт? Потешить ЧСВ, что к тебе пытались пробиться, но не пробились?
                                    Ответить
                                    • Трудно объяснить зачем нужно знать, что в целом происходит с твоим сервером.
                                      Ответить
                    • Хм, а если открыть фейковый ssh на 22, то тупые боты не буду сканить другие порты?
                      Ответить
                      • хороший вопрос, кстати!:)

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

                          А продвинутые ботнеты, я думаю, уже давно научились понимать что к чему и отключаться по таймауту или при кривом ответе.
                          Ответить
                          • >tarpit
                            я так в молодости со спамом боролся. Когда к тебе пидарас подключается, то он обычно делает это с маленьким таймаутом, потому что у пидараса еще миллион лохов на очереди, пидарасу торопиться надо.

                            А нормальный сервер никуда не торопится, так что таймаут в 2 секунды для него не проблема
                            Ответить
                            • Угу, для почты ещё graylist плагин был. Говоришь отправителю зайти через полчаса. Не зашёл -- да и хуй с ним, значит спамер.
                              Ответить
                              • Угу, MTA вроде при ошибке 4xx должен еще несколько раз попробовать прежде, чем послать отправителю NDR.

                                Только вот как ты объянпишь питуху, что его письмо пол часа идет, как в 1988-м году?
                                Ответить
                                • Пока позвонит -- уже и письмо придёт и в вайтлист добавится.
                                  Ответить
                                  • как у хуёвого админа
                                    --Я тут письмо отсылал пол часа назад. Говорят, оно не пришло
                                    --Ща (смотрит ``mailq``), сейчас поправлю
                                    Ответить
        • Кстати, оцени масштаб отсоса убунтблядей.

          У убунтублядей по умолчанию стоит ufw. Это такой тул для тех, кто слишком туп для iptables.

          ufw по умолчанию делает ``-P INPUT DROP`` и первым правилом -j в какие-то свои цепочки.

          В ``sshguard-setup`` написано, что он создает ipset sshguard4, и предлагает в iptables делать
          ``-m set --match-set sshguard4 src -j DROP``

          У ufw есть спец файл before.rules, в который можно срать кастомными правилами.

          Но разумеется ufw стартует ДО sshguard, не видит такого сета, падает, и машина остается с пустым INPUT с политикой DROP по умолчанию.

          Мучающиеся пользователи обоссаного ufw пишут свои юниты с Before=ufw.service
          https://selivan.github.io/2018/07/27/ipset-save-with-ufw-and-iptables-persistent-and.html

          А белый человек просто берет ``netfilter-persistent``: У него есть плагин для ipset и iptables, и разумеется ipset идет раньше.

          Так что счастливые пользователи ufw либо используют цепочку вместо ipset (цепочку создать в ufw можно, так как она тоже создается через iptables) либо пилят свой юнит

          В этом есть еще глобальный отсос прыщеблядей, потому что iptables и ipset это разные тулы. А должны быть конечно одной и той же тулой.

          В файрволах для белых людей типа pf и таблицы адресов, и правила для работы с ними создаются одинаково
          Ответить
          • > кастомными правилами

            А вкатить туда пустой сет, который потом sshguard наполнит не прокатит? Тогда его скрипт упадёт?

            Или это не шелл скрипт, а именно набор ПРАВИЛ для iptables?
            Ответить
            • Это не скрипт, это набор правил, примерно как из ``iptables-restore``. Там можно писать только команды ``iptables``
              Ответить
          • > netfilter-persistent

            Х.з., мне вообще не нравится идея таскать персистентный снимок правил. Он поди ещё и автоматом всё говно сохраняет, а не когда ты попросишь?
            Ответить
            • netfilter-persistent сохраняет, когда попросишь.
              Работает так:

              * делаешь нужные тебе правила
              * читаешь -L , убеждаешься, что всё ок
              * говоришь ему save

              При старте он их поднимает. из ненужного говна он сохраняет разве что счетчики.
              А как тебе нравится? Шел скрипт с iptables при загрузке?

              Лучше всего конечно pf со своим pf.conf, но увы
              Ответить
              • А, как на сиське copy ru st. Ну это терпимо. Хотя по структуре будет как помойка, конечно.

                Да, шелл скрипт. Его хоть читать и документировать можно, в отличие от.
                Ответить
                • ну так netfilter-save делает именно это: сохраняет текущий слепок используя ``iptables-save``
                  # netfilter-persistent save
                  run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
                  # cat /etc/iptables/rules.v4
                  # Generated by iptables-save v1.8.7 on Sun Feb 21 05:19:25 2021
                  *filter
                  :INPUT DROP [29:1670]
                  :FORWARD DROP [0:0]
                  :OUTPUT ACCEPT [17:1098]
                  -A INPUT -i lo -s 127.0.0.1 -j ACCEPT
                  -A INPUT -p tcp -m tcp --dport 22 -i enp0s3 -j ACCEPT
                  -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -i enp0s3 -j ACCEPT
                  -A INPUT -p icmp -m icmp --icmp-type 8 -i enp0s3 -j ACCEPT
                  -A INPUT -m limit --limit 10/min -j LOG
                  -A INPUT -j DROP
                  -A FORWARD -j DROP
                  COMMIT
                  # Completed on Sun Feb 21 05:19:25 2021

                  Комментировать можно через ``-m comment``, да и править руками.

                  Но я согласен, что писать руками удобнее
                  Ответить
                  • > Комментировать можно через `-m comment'

                    Бля, ну это как json комментировать через фейковые поля... Выглядит как говно, если честно.

                    Да и добавлять правила в середину таблицы не особо приятно. А в скрипте это просто курсор подвинуть.
                    Ответить
                    • >середину
                      L --line-number
                      а потом -I [номер] вроде

                      Какой дистриб предлагает скрипт по умолчанию кроме слаки?
                      не хочется делать самопал
                      Ответить
                      • > -I [номер]

                        Сразу вспоминается древний бейсик или какой-нибудь ed...
                        Ответить
                        • ну да) ну вот правила, сохраненные iptables-save, можно править прямо в vim

                          Кстати, проблему возможно можно решить с помощью nfttables: там вроде наконец один интерфейс для работы И с таблтцами адресов, и с правилами, но могу напиздеть
                          Ответить
              • Ну и с шелл скриптом можно делать прикольные штуки в духе тестового режима с откатом по таймауту.

                Ибо "делаешь правила" часто заканчивается отвалом консоли, особенно по ньюфажеству.
                Ответить
                • Сейчас это не так страшно, потому что у нормальных VPS есть доступ к консоли, а у железок серверных -- тоже. На худой конец можно воткнуть кабель в rs232 или usb (если ядро умеет) и сделать типа как reverse telnet в циско: sshнулся на порт другого сервера, и попал на свою консоль.

                  Но лучше всего проблему решил микрот:
                  https://wiki.mikrotik.com/wiki/Manual:Console#Safe_Mode

                  Хз, почему никто эту идею у него не подрезал
                  Ответить
          • линукс это просто
            Ответить
          • Кстати, у centos эта проблема решена. Там есть сервис ipset, и он умеет стартовать раньше iptables.
            правда, sshguard там по умолчиню не имеет конфига, а в экзампле лежит кривой, так что чуток нужно попирдолица и почитать ман
            Ответить
      • Это как-то связано с твоим постом, или ты просто сюда насрал?
        Ответить
        • я сру случайными комментами в случайные посты

          У птиц есть такая фишка. У них нету сфинктера, потому процесс сранья они не контролируют.
          Ответить
          • не подавай идеи
            Ответить
            • Птицам?
              Ответить
              • ракам
                Ответить
                • А раки поди как птицы устроены в этом плане?
                  Ответить
                  • Вполне возможно.

                    Умение контролировать свои эмоции и сранье -- удел высших существ. Млекопитающих всяких
                    Ответить
                    • Кстати, а зачем эта фича понадобилась млекопитающим?
                      Ответить
                      • Сфинктер ануса - недостаточно корректное, с точки зрения анатомии, наименование мышц ануса, выполняющих функции запирающегося клапана прямой кишки.

                        Анатомически существуют два разных сфинктера:

                        Внутренний сфинктер ануса (The internal sphincter of the anus) - гладкомышечный, непроизвольно сокращаемый сфинктер.
                        Внешний сфинктер ануса (The external sphincter of the anus) - состоящий из поперечно-полосатой мускулатуры, сокращаемый произвольно то есть управляемый сознанием сфинктер.
                        Ответить
                        • У гомосексуалистов он становится произвольно сокращаемым, что значительно извращает акт дефекации. Для того, чтобы расслабиться, я начинаю теребить бумагу, иначе всё говно всасывается обратно в жопу.
                          Ответить
                      • В целом фича полезная. во-первых не гигиенично срать там, где спишь.
                        Млеки не летают, так что бОльшую часть жизни они проводят в каком-то закрытом пространстве, и зачем там срать?

                        во-вторых наверное тебя по говну учуит хищник(если ты жертва) или жертва (если ты хищник)

                        Знаешь же про медведя и колокольчик?

                        ЗЫ: это всем бы не помешало, но видимо не все развились
                        Ответить
                      • на запрос "эволюция сфинктера" ddg выдал:

                        – История появления и эволюция компьютера
                        – Эволюция компьютера - Дилетант
                        – Эволюция Windows - как менялась самая популярная система
                        – Эволюция Интернета
                        Ответить
                      • https://ru.wikipedia.org/wiki/Искусственный_сфинктер_мочевого_пузыря
                        Ответить
                  • я о том, что рак увидит, что у птиц нет сфинктера и полезет проверять, а потом вернётся на гк делиться результатами
                    Ответить
                    • Ну я знаю, что у владельцев домашних птиц есть такая проблема: если ты выпускаешь её из клетки, то она тусит по квартире, и может серануть случайно где-то без всякого злого умысла. Но вроде если быстро убрать, то не проблема
                      Ответить
                  • а раки как птиииицы
                    они одиноки
                    но всё-таки раки не так жестоки
                    Ответить
    • сайт колтлина заблокировали
      https://isitblockedinrussia.com/?host=http%3A%2F%2Fkotlinlang.org%2F

      ахахах
      Ответить
      • Я подожду, пока на Хабре про это напишут.
        Ответить
      • Есть здесь те, кому не похуй?
        Ответить
      • Ленинский районный суд г. Владимира
        Ответить
        • На районный страшный суд
          подсудимых принесут
          Прокурора и истца
          Ламца дрица гопцаца
          Ответить
    • назовите ваш любимый способ деплоя небольшого петпроекта на VPS
      Ответить
      • Пилить его прямо там.
        Ответить
        • Спасибо! Это как если бы пхпшника взяли в гугл
          Ответить
      • scp для совсем небольшого

        git pull для покрупнее
        Ответить
        • а как ты выолпняешь нужные после установки действия?

          >git pull
          на прдакш сервере доступ к гиту?
          Ответить
          • Руками, лол. Можно скриптец накатать и закинуть в папку с проектом.

            > на прдакш сервере доступ к гиту?

            - pet project же, что такого? По ключу всё равно доступ. На том же гх можно настроить read-only access
            Ответить
            • > read-only access

              У ngk вообще был r/w доступ на его репу... Ибо кому она нахуй сдалась.

              На серваке пилил, оттуда же коммитил.
              Ответить
              • Кстати, а как правильно сделать разделение по юзерам на обычном ванильном git'е?

                Я так понимаю, что тот же гх чисто по имейлу в коммите юзверя определяет?
                Ответить
                • > разделение по юзерам на обычном ванильном git'е

                  А никак. Что напишешь в переменной -- то и закоммитит. Никаких проверок там нет.

                  Ты вон даже на гитхабе можешь коммитить от имени Линуса.
                  Ответить
                • git нужно пускать по ssh, а ssh по ключу. Так и ограничивать.
                  Ответить
                  • Ограничивать это понятно. А авторство чисто из имейла, ну или из gpg, если продвинутый?
                    Ответить
                    • Ну ты можешь хук приделать, который сверяет имя в коммите и имя в пуше.

                      Хотя никто вроде так не делает.
                      Ответить
                      • Если пуш по ключу, то это же не сработает?

                        Я просто к тому, насколько просто иметь командный git просто как git over ssh, без гитлабов, gitea и прочего
                        Ответить
                        • Ключ к юзеру же привязан, публичная часть у него в хомяке лежит. Так что юзера ты точно знаешь.

                          Но "права на ветки" и т.п. будешь сам прикручивать, емнип.
                          Ответить
                          • Я не сильно понимаю, что такое «право на ветку»
                            Ответить
                            • Ну, к примеру, чтобы мастер нельзя было форспушить. Или чтобы пушить в него могли только конкретные люди или сервисные учётки.

                              Для одного человека, конечно, вообще насрать.
                              Ответить
                    • Ну и опять же, я иногда ветки коллег доделывал. А они -- мои. Как это пушить потом, если авторство проверяется?
                      Ответить
                      • Потому в кернеле есть разделение на author(s), reviewer(s) и commiter
                        Ответить
                        • author/commiter это больше про воркфлоу с патчами на почту, имхо.
                          Ответить
            • руками не интересно)
              Я собираю разные подходы

              * сборку пакета и установку
              * пул из гита и запуск шелскрипта
              * python fabric и иже с ними (для удаленного запуска)
              * контейнеры гит
              Ответить
        • А какой твой любимый SCP? Мой — SCP-5987 - Сиреноголовый.
          Ответить
      • Питухи, это был серьезный вопрос между прочим!
        У меня вот при выкладке много всякого говна происходит
        DJANGO_SETTINGS_MODULE=makaka_site.settings.build
        
        [ -n "$MAKAKA_STATIC" ] && rm -r $MAKAKA_STATIC || die "No static set";
        pip3 install --upgrade -r $SITE/requirements.prod.txt || die "Install filed"
        python $SITE/manage.py compilemessages --locale=ru_RU || die "Compile message failed"
        python $SITE/manage.py collectstatic || die "Collect static failed"
        python $SITE/manage.py compress || die "Compress failed"
        python $SITE/manage.py migrate || die "Migrate failed"
        echo "Gzipping static"
        find $MAKAKA_STATIC \( -name '*.css' -o -name '*.js' \) -exec gzip --best -k {} \;
        DJANGO_SETTINGS_MODULE=makaka_site.settings.prod


        А в другом месте делается rsync, чтобы всё не пересоздавать.
        И есть еще фронтэнд с ``npm install`` и вебпаком!

        Неужели каждый свое пилит?
        Ответить
        • а ты ищешь какое-то универсальное решение?
          Ответить
          • нет, просто сравниваю разные

            просто интересно, кто как делает
            Ответить
        • контейнеры же придумали
          Ответить
          • а какая разница? ну будет у тебя то же самое, но внутри контейнера, не?
            Ответить
            • Это будет уже другое то же самое.
              Ответить
            • Это будет докерфайл в котором вся эта хуйня описана однообразно

              сборка статики разве не должна быть частью пайплайна фронта?
              а гзип - настройкой сервера?
              Ответить
              • Что значит "однообразно"?
                Как еще она может быть описана кроме как шелл скриптом?

                >сборка статики разве не должна быть частью пайплайна фронта?
                Должна. В этом конкретном проекте ее нет, но если бы была -- то конечно бы я ее туда включил.

                >а гзип - настройкой сервера?
                Это предархивирование. Каждый .css и .js файл архивируется в .gz.
                А потом nginx берет уже готовую gz версию, не архивя ничего на лету (gzip_static)
                Ответить
                • однообразно это значит что все дежрат скрипты в таскраннерах (или шелл файлах) и зовут их из докерфайла, никто не пишет по-своему
                  Ответить
                  • То есть сначала все пилят на коленке свои скрипты, потом их просто переиспользуют?
                    Ответить
                    • Ну у тебя есть инструмент, скажем webpack. Ты а нем полносью описываешь процесс билда который для каждого проекта уникален (ну или пиздишь с интернета) а потом зовешь через npm run build

                      Саму конфигурацию ты пишешь "на коленке" но на вебпаке пишут многие, и докерфайл пишут многие поэтому каждый новый скрипт понятен и в него легко въехать человеку с улицы что и отличает его от поделки на коленке
                      Ответить
                      • В вебпаке ты описываешь только процесс сборки фронта, а есть еще некоторые действия для бека.

                        Я правда не понимаю, чем написание шелл скрипта отличается от написания того же самого в RUN в докере)

                        Однако, докер хотя бы автоматизирует процесс (docker pull итд)
                        Ответить
                        • для фронта один докерфайл, для бека - второй, потом варишь их docker-compose или vagga

                          >чем написание шелл скрипта отличается от написания того же самого в RUN в докере

                          если ты все равно используншьдокер для деплоя, почему бы на нем и не написать?
                          Ответить
          • и что? как тут поможет контейнер?
            Ответить
        • Ты веб макака?
          Ответить
        • А проблема в чём?
          Ответить
    • лол!
      https://i.postimg.cc/Dy2xYhGr/image.png
      Ответить
    • На всём ГК обитал лишь один человек, чьему члену я позволил бы погрузиться в недра своего ануса и чьим говном я испачкал бы свой член: Тарас Березняк. Но он был слишком манерным, к тому же сейчас у него наверняка много поклонников, ибо нужно как-то сымать стресс от ёбли с сёй++. Девушка тупо не может выдержать такую нагрузку - вот и приходится шкодерам ебать друг друга. С потерей тарасбера, статус единственного и неповторимого перешёл на Страйко.
      Ответить
    • Bash
      Ответить
      • Совершенно нет.

        Это find, она может в любом shell работать
        Ответить

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