• Курс молодого бойца: защищаем сам маршрутизатор

      Следуя аксиомам безопасности, будем считать, что любой узел в сети является потенциальной целью. Поэтому хорошо бы знать, какие потенциально уязвимые места есть у этих самых узлов. Рассмотрим маршрутизатор cisco. Сразу же возникнет возражения: их много, сервисы поддерживаемые – разные и вообще, трудно свалить в одну кучу CRS-1 и древний 1600. Однако, я не ставлю своей целью охватить всё, но кое какие общие вещи опишу.
      Читать дальше →
      • +6
      • 39.5k
      • 3
    • Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

        Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

        Введение


        С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
        Статья большая, так что будет поделена на логические блоки:

        0. Зачем вообще что-то оптимизировать?
          
        1. Оптимизация ОС (FreeBSD)
          1.1 Переход на 7.х 
          1.2 Переход на 7.2
          1.3 Переход на amd64
          1.4 Разгрузка сетевой подсистемы
          1.5 FreeBSD и большое кол-во файлов
          1.6 Softupdates, gjournal и mount options
          
        2. Оптимизация фронтенда (nginx)
          2.1 Accept Filters
          2.2 Кеширование
          2.3 AIO
          
        3. Оптимизация бэкенда
          3.1 APC
          3.1.1 APC locking
          3.1.2 APC hints
          3.1.3 APC fragmentation
          3.2 PHP 5.3
          
        4. Оптимизация базы данных
          4.1 MySQL 
          4.1.1 Переход на 5.1
          4.1.2 Переход на InnoDB
          4.1.3 Встроеный кеш MySQL - Query Cache
          4.1.4 Индексы
          
        4.2 PostgreSQL
          4.2.1 Индексы
          4.2.2 pgBouncer и другие.
          4.2.3 pgFouine
          
        4.3 Разгрузка базы данных
          4.3.1 SphinxQL
          4.3.2 Не-RDBMS хранилище
          4.4 Кодировки
          4.5 Асинхронность
          
        Приложение. Мелочи.
          1. SSHGuard или альтернатива.
          2. xtrabackup
          3. Перенос почты на другой хост
          4. Интеграция со сторонним ПО
          5. Мониторинг
          
         6. Минусы оптимизации

        Кому что-нибудь из этого списка интересно, жмём сюда...
      • Мониторинг погоды или Cacti HowTo

          Этот пост можно было б начать по разному. Можно по делу: как необходима система мониторинга для поиска ошибок системы и как она помогает обнаружить узкие места. Но, сейчас лето, время отдыха на природе, и начну с того, как я решил узнать, как же часто менятеся прогноз погоды, с помощью популярного средства мониторинга Cacti. Под катом, о любопытный читатель!, тебя ждут рассказы о том как настроить мониторинг произвольных данных в Cacti, да не просто, а с картинками.

          итак...
        • Доставка видеоконтента пользователям

            [ Часть I. Доставка видеоконтента ] [ Часть II. CDN своими руками ]

            Что такое «контент» для видеохостинга? Во-первых, контент видеохостинга – это просто видео, которое представляет собой набор файлов в различных форматах, в частности, в формате FLV для просмотра пользователем через Flash Player. Эти файлы статичны, видеохостинг при загрузке пользователем видеоролика осуществляет конвертацию во все требуемые форматы с необходимым битрейтом. Хранение такого контента — это хранение обычных файлов, только довольно большого размера. Отдача контента — это, по сути, организация скачивания файлов.
            Во-вторых, контент видеохостинга — это «живые» потоки или вещания. Вещания не записываются на диск, не происходит их конвертация, потоки раздаются клиентам с учетом пропускной способности каналов (происходит пропуск пакетов, если канал клиента недостаточен для получения потока вещания в полном качестве). Отдача контента в данной ситуации — это раздача потока на большое количество подключенных пользователей (тысячи смотрящих).
            Читать дальше →
          • Пишем простейший торрент трекер на php

              Обмен файлами всегда привлекал людей, для этого собственно и был изобретен протокол BitTorrent.

              Большинство торрент трекеров написано на PHP, хотя встречаются и такие, которые написаны на C# языке, но для ознакомления мы будем использовать именно PHP.

              Давайте рассмотрим что из себя представляет трекер.
              Читать дальше →
            • Windows-компьютер без антивирусов

                Предупреждение: Описанное в статье несколько устарело, т.к. я забросил винды в эпоху Windows 2003.

                Каждый раз, когда меня знакомые спрашивают: «какой антивирус лучше?», я могу сказать только одно: «антивирус — как придворный шаман. Бывают лучше, бывают хуже, но определить, кто лучше камлает, не получится». Антивирус не гарантирует защиту от вирусов, более того, у него есть полное моральное право пропустить новую заразу и начать её детектить дня через 2-3 после «инцидента». Т.е. как основное средство защиты он годится не очень.

                Ниже описывается настройка windows, которая позволит защититься от любых реальных (т.е. встречающихся в природе) вирусов без использования антивирусов. Данная конфигурация уже 3 с половиной года работает на терминальном сервере, где пользователи (в лучшие времена до 70 человек) совсем не стесняются притаскивать на флешках всяких засранцев, лазать по сети где попало и т.д.

                Теория


                Любой уважающий себя вирус, оказавшись запущенным, тем или иным методом стремится в системе закрепиться, т.е. создаёт исполняемый файл или библиотеку, которая прописывается тем или иным образом в запуск. «Авто» запуск или в форме «дополнения» к другим исполняемым файлам (debugger, hander, плагин, и т.д.) — не важно. Важно: существует барьер под названием «запуск кода». Даже старые-добрые вирусы, дописывающие себя в исполняемые файлы, всё равно должны иметь возможность писать в файлы, которые предполагается запускать.

                Безусловно, есть вирусы, размножающиеся без создания файлов (например, мс-бласт). Но условием появления этого вируса должна быть доступность сервера для обращений с носителей вируса или запуск кода через эксплоит в браузере\сетевой компоненте. В случае дыры в браузере дальнейшее размножение не возможно (т.к. нужно обращаться к браузерам на других машинах, а это требует поднятия сервера, куда будут ходить другие пользователи и мотивации пользователям ходить именно на этот узел). В случае дыры в сетевой компоненте и размножения без сохранения на диск, описанная мною методика с большой вероятностью работать не будет и возможна эпидемия. Однако, я не уверен, что антивирусы поймают такой 0day эксплоит, плюс, их (дыры) довольно резво фиксят, так что этот сценарий я откладываю как маловероятный. Наличие же файрволов ещё более уменьшает их опасность. От не-0day вполне же спасает своевременная (автоматизированная) установка обновлений.

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

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

                Однако, запреты и разрешения не будут иметь смысла, если не сформулировать правила, которые запретят запуск «чужаков».

                Модель безопасности


                Перед тем, как описать подробно конфигурацию, сформулирую теоретические принципы её организации:

                1. То, куда пользователь может писать закрыто для запуска.
                2. То, что пользователь может запускать, закрыто для записи.
                Читать дальше →
              • TOP'ай сюда

                  Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

                  top

                  Все мы знаем top — самую простую и самую распространённую утилиту из этого списка. Показывает примерно то же, что утилита vmstat, плюс рейтинг процессов по потреблению памяти или процессора. Совсем ничего не знает про загрузку сети или дисков. Позволяет минимальный набор операций с процессом: renice, kill (в смысле отправки сигнала, убийство — частный случай). По имени top суффикс "-top" получили и все остальные подобные утилиты в этом обзоре.

                  atop


                  Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.

                  В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса, способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).

                  Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.
                  Читать дальше →
                • Плазменное радио

                    Не уверен, что это можно отнести к теме «работа со звуком», но более подходящего блога я не нашел.

                    Простой, но довольно эффектный опыт можно провести, имея 90-метровый стальной провод, висящий на 110-метровой вышке недалеко от мощного радиопередатчика:


                    Из-за большой длины провода, он хорошо поглощает энергию радиоволны, вещающей на частоте 549 кГц с амплитудной модуляцией. Это позволяет слышать модулирующий аудиосигнал без каких-либо дополнительных устройств, прямо от колебаний мощной электрической дуги идущей от этого провода в землю.
                  • Большие потоки трафика и управление прерываниями в Windows

                      Мне очень понравился топик про распределение нагрузки от прерываний сетевого адаптера по процессорам, поэтому я решил описать как это делается в Windows.

                      Disclaimer: судя по некоторым комментариям в предыдущих постах, мне стоит повторить то, с чего я начал первый пост: я не даю (и не могу давать) общеприменимых рецептов. Особенно это касается производительности, где мельчайшая неучтенная деталь может катастрофически повлиять на результат. Вернее рекомендацию то я даю: ТЕСТИРОВАНИЕ И АНАЛИЗ. Смысл моей писанины в том, чтобы дать людям как можно больше информации для анализа, ведь, чем больше понимаешь в том, как что либо работает, тем легче находить пути устранения боттлнеков.

                      Итак, масштабируемость пропускной способности сети. Потребуется Windows Server 2003 SP2+. Сетевая карта, поддерживающая Receive Side Scaling (можно с достаточной долей уверенности сказать, что подойдет любая серверная сетевая карта, выпущенная в последние 5 лет или любая вообще 1Gb+ NIC, хотя частенько можно увидеть RSS и на 100Mb). Устанавливаем Windows Server и драйвера на карту…

                      Настройка...
                    • Псевдографика в консоли Unix/Linux. Немного больше User Friendly чем вы могли себе позволить

                      Привет! Бывает, хочется забыть о «скучной» консоли, разбавить ее хоть капелькой интерактива, особенно если часто приходиться делать одни и теже операции и тем более если вы пишите для облегчения своей участи скрипты. Итак, псевдографика. За мной читатель, я покажу тебе такую консоль!
                      Читать дальше →