<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/simpleadmin/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя simpleadmin]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Thu, 23 Apr 2026 07:27:42 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Nginx. О чем не хотелось писать]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/572324/</guid>
      <link>https://habr.com/ru/articles/572324/?utm_campaign=572324&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/898/141/fee/898141feef1cbcec71e8273e74ee0101.jpg" /><p>Я не собирался писать на эту тему. Разговор неизбежно скатится к набившему оскомину <em>IfisEvil</em>. На самом деле это измусоленный вопрос и мне кажется, что вся проблема и шумиха вокруг него заключается лишь в том, что в документации нет последовательного ответа на корень этой проблемы. Поэтому сейчас поговорим про... наследование.</p><p>Наследование директив в <em>nginx</em> - это классная штука. Именно наследование позволяет писать простые и понятные конфиги. При слиянии конфигураций значение директивы и её функциональность переходит из вышестоящего контекста в текущий. Логично, что наследование не происходит от параллельных контекстов, например от соседнего <em>location</em> или <em>if</em>.</p><p>Вроде бы всё хорошо. Пока не возникают исключения.</p><p><em>N.B.: Здесь и далее описывается работа с nginx версии 1.21.1 (если не указано иное). Всё сказанное основывается лишь на опыте и ошибках автора. Вместе с тем автор не является разработчиком nginx и даже его маститым сварщиком, поэтому не стоит принимать слова автора как догму, а, наоборот, подвергать сомнению и самостоятельному тестированию.</em></p> <a href="https://habr.com/ru/articles/572324/?utm_campaign=572324&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Размышления простого админа</a>]]></description>
      
      <pubDate>Thu, 12 Aug 2021 06:53:33 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Настройка Linux]]></category><category><![CDATA[Системное администрирование]]></category><category><![CDATA[Nginx]]></category><category><![CDATA[*nix]]></category>
      <category><![CDATA[nginx]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Nginx. Фазы обработки запроса. If is Evil?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/570996/</guid>
      <link>https://habr.com/ru/articles/570996/?utm_campaign=570996&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Самое страшное зло в <em>Nginx</em> - это <em>if</em> в <em>location</em>. Об этом написано много, в том числе на <a href="https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/" rel="noopener noreferrer nofollow"><em>nginx.com</em></a>. Процитируем кусочек:</p><p><em>The only 100% safe things which may be done inside if in a location context are:<br>- return ...; <br>- rewrite ... last;</em></p><p>Казалось бы, если использовать конструкцию вида</p><p><em>location / {<br>  if ( $condition ) {<br>    return 418;<br>  } <br>  ... <br>}</em></p><p>то ничего страшного не произойдет, однако, при определенном <em>"умении"</em>, можно сломать даже то, что должно работать на 100%. Но будет ли виноват в нашей поломке <em>if</em>?</p> <a href="https://habr.com/ru/articles/570996/?utm_campaign=570996&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 03 Aug 2021 08:24:26 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Настройка Linux]]></category><category><![CDATA[Системное администрирование]]></category><category><![CDATA[Nginx]]></category><category><![CDATA[*nix]]></category>
      <category><![CDATA[nginx]]></category><category><![CDATA[IfisEvil]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Nginx. Трассировка. Взгляд землекопа]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/567978/</guid>
      <link>https://habr.com/ru/articles/567978/?utm_campaign=567978&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><em>Nginx</em> состоит из модулей и именно они выполняют всю реальную работу. Стандартные модули позволяют решить большинство задач, но наступает момент, когда необходимо  осуществить какие-то нетипичные действия и тогда мы либо берем сторонний модуль, либо пишем свой собственный. </p><p>При этом, даже если модуль давно написан и имеет хорошие отзывы, нет никакой гарантии, что его работа не вызовет проблем, причем, возможно, исключительно в нашей конфигурации или сборке<em>. </em>А <em>Nginx</em>, как известно, рождён для производительности, и, добавляя модули, мы не хотим этой производительности потерять. Поэтому каждая новая сборка должна завершаться отладкой и профилированием. </p><p>В недавней <a href="https://habr.com/ru/post/561758/" rel="noopener noreferrer nofollow">статье </a>мы сняли верхний слой грунта, но чтобы локализовать возможную проблему нам придётся копать намного глубже. В самом <em>Nginx </em>есть режим отладки, и он действительно помогает выявлять проблемы, но в качестве профилировщика не годится, так как сам вносит приличную задержку. Поэтому нам потребуется сторонний инструмент и тут, как нельзя лучше, подойдёт <em>dtrace</em>.</p> <a href="https://habr.com/ru/articles/567978/?utm_campaign=567978&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 19 Jul 2021 07:49:23 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Настройка Linux]]></category><category><![CDATA[Системное администрирование]]></category><category><![CDATA[Nginx]]></category><category><![CDATA[*nix]]></category>
      <category><![CDATA[nginx]]></category><category><![CDATA[dtrace]]></category><category><![CDATA[openresty]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Nginx. Фазы обработки запроса. Практика]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/567418/</guid>
      <link>https://habr.com/ru/articles/567418/?utm_campaign=567418&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/8fe/1d6/aaa/8fe1d6aaaa5c205007e1cde26abb262f.png" /><p>Хабру катастрофически не хватает такого формата постов как <em>"продолжение"</em> или <em>"дополнение"</em>. После написания статьи зачастую появляется материал, который хотелось бы добавить  к сказанному, но <em>update'ить</em> статью, с её сроком жизни в 1-2 дня, бессмысленно, а писать в комментариях невозможно из-за объёма материала. В то же время этого материала может быть недостаточно для новой статьи, да и, в силу того, что он сильно перекликается с предыдущей статьёй, придется либо постоянно её цитировать, либо оставлять пробелы, подразумевая, что читатель понимает о чем идет речь.</p><p>В итоге дополнительный материал, местами более важный чем сама статья,  копится, пылится в заметках и пропадает с концами.</p><p>Так бы случилось и с этой <a href="https://habr.com/ru/post/561758/" rel="noopener noreferrer nofollow">статьей</a>, но недосказанность заставляет вернуться к теме, так как разбор вопроса <em>"нужны ли теоретические знания порядка прохождения запроса на практике"</em> может помочь избежать составления неработающих конфигов. Поэтому продолжим разговор.</p> <a href="https://habr.com/ru/articles/567418/?utm_campaign=567418&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 13 Jul 2021 07:49:18 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Настройка Linux]]></category><category><![CDATA[Системное администрирование]]></category><category><![CDATA[Nginx]]></category><category><![CDATA[*nix]]></category>
      <category><![CDATA[nginx]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Nginx. О чем не пишут в книгах]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/561758/</guid>
      <link>https://habr.com/ru/articles/561758/?utm_campaign=561758&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/006/301/feb/006301febe304654c052920457bc7d2d.png" /><p>Эта статья родилась случайно. Слоняясь по книжному фестивалю и наблюдая, как дочка пытает консультантов, заставляя их искать <em>Иэна Стюарта</em>, мой глаз зацепился за знакомые буквы на обложке: <em>"Nginx"</em>.</p><p>Надо же, на полках нашлось целых три книги - не полистать их было бы преступлением. Первая, вторая, третья... Ощущение, будто что-то не так. Ну вроде страниц много, текст связный, но каково содержание? Установка <em>nginx</em>, список переменных и модулей, а дальше <em>docker, ansible</em>. Открываем вторую: <em>wget</em>, лимиты запросов и памяти, балансировка, <em>kubernetes, AWS. </em>Третья: <em>GeoIP</em>, авторизация, потоковое вещание, <em>puppet, Azure</em>. Ребята, а где про то, как вообще работает <em>nginx</em>? На кого рассчитаны ваши книги? На состоявшегося админа, который и так знает архитектуру этого веб-сервера? Да он вроде с базовыми настройками и сам справится. На новичка, который не знает как пользоваться <em>wget</em>? Вы уверены, что ему знание о существовании <em>ngx_http_degradation_module</em> и тем паче <em>"облака"</em> важнее порядка прохождения запроса?   </p><p>Итак. О чем не пишут в книгах.<br>(здесь и дальше мы говорим только о <em>NGX_HTTP_</em>)</p> <a href="https://habr.com/ru/articles/561758/?utm_campaign=561758&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Фазы обработки запроса</a>]]></description>
      
      <pubDate>Thu, 24 Jun 2021 13:47:38 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Настройка Linux]]></category><category><![CDATA[Системное администрирование]]></category><category><![CDATA[Nginx]]></category><category><![CDATA[*nix]]></category><category><![CDATA[C]]></category>
      <category><![CDATA[nginx]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Об использовании regexp в map nginx]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/558692/</guid>
      <link>https://habr.com/ru/articles/558692/?utm_campaign=558692&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e11/67d/448/e1167d4485a2c87ad9b6722df0e22c7c.png" /><p>Давно ничего не писал, поэтому разбавим конец пятницы простыми, но не всегда очевидными изысканиями в <em>Nginx</em>.</p><p>В этом веб-сервере есть замечательная директива <em>map, </em>которая позволяет существенно упростить и сократить конфиги. Суть директивы в том, что она позволяет создать новую переменную, значение которой зависит от значений одной или нескольких исходных переменных.  Ещё большую силу директива приобретает при использовании регулярных выражений, но при этом многие забывают, об одном важном моменте. Выдержка из мануала:</p> <a href="https://habr.com/ru/articles/558692/?utm_campaign=558692&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 21 May 2021 14:05:06 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Настройка Linux]]></category><category><![CDATA[Системное администрирование]]></category><category><![CDATA[Nginx]]></category><category><![CDATA[*nix]]></category>
      <category><![CDATA[nginx]]></category><category><![CDATA[map]]></category><category><![CDATA[regex]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[В поисках LD_PRELOAD]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/479858/</guid>
      <link>https://habr.com/ru/articles/479858/?utm_campaign=479858&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Эта заметка была написана в 2014-м году, но я как раз попал под репрессии на хабре и она не увидела свет. За время бана я про неё забыл, а сейчас нашёл в черновиках. Думал было удалить, но авось кому пригодится.<br>
<br>
<img src="https://habrastorage.org/webt/o1/8i/wf/o18iwf72_dlx0j9-qjr8zni5unq.png"><br>
<br>
В общем, небольшое пятничное админское чтиво на тему поиска «включенного» <i>LD_PRELOAD</i>.<br> <a href="https://habr.com/ru/articles/479858/?utm_campaign=479858&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Thu, 19 Dec 2019 20:19:42 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[*nix]]></category><category><![CDATA[C]]></category><category><![CDATA[Информационная безопасность]]></category><category><![CDATA[Ненормальное программирование]]></category><category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[ld_preload]]></category><category><![CDATA[libc]]></category><category><![CDATA[linux]]></category><category><![CDATA[ptrace]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Когда 'a' не равно 'а'. По следам одного взлома]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/465355/</guid>
      <link>https://habr.com/ru/articles/465355/?utm_campaign=465355&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Пренеприятнейшая история случилась с одним моим знакомым. Но насколько она оказалась неприятной для Михаила, настолько же занимательной для меня.<br>
<br>
Надо сказать, что приятель мой вполне себе <i>UNIX</i>-пользователь: может сам поставить систему, установить <i>mysql</i>, <i>php</i> и сделать простейшие настройки <i>nginx</i>.<br>
И есть у него десяток-полтора сайтов посвященных строительным инструментам.<br>
<br>
Один из таких сайтов, посвященный бензопилам, плотненько сидит в ТОПe поисковиков. Сайт этот — некоммерческий обзорник, но кому-то поперек горла и повадились его атаковать. То <i>DDoS</i>, то брутфорс, то комменты напишут непотребные и шлют абузы на хостинг и в РКН. <br>
Неожиданно всё стихло и это затишье оказалось не к добру, а сайт начал постепенно покидать верхние строчки выдачи.<br>
<br>
<img src="https://habrastorage.org/getpro/habr/post_images/528/5d5/582/5285d55827ddf5cb5705b364a417828f.png" alt="image"><br>
<br>
То была присказка, дальше сама админская байка.<br>
<br>
Время близилось ко сну когда раздался звонок телефона: «Сань, ты не глянешь мой сервер? Мне кажется меня хакнули, доказать не могу, но ощущение не покидает уже третью неделю. Может мне просто пора лечиться от паранойи?»<br> <a href="https://habr.com/ru/articles/465355/?utm_campaign=465355&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Mon, 02 Sep 2019 17:07:02 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[*nix]]></category><category><![CDATA[Nginx]]></category><category><![CDATA[Информационная безопасность]]></category><category><![CDATA[Настройка Linux]]></category><category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[unix]]></category><category><![CDATA[linux]]></category><category><![CDATA[nginx]]></category><category><![CDATA[gdb]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Чем проще задача, тем чаще я ошибаюсь]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/464951/</guid>
      <link>https://habr.com/ru/articles/464951/?utm_campaign=464951&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/614/756/ce6/614756ce63c0112265823c12415df1c5.png" alt="image"><br>
<br>
Эта тривиальная задача возникла в один из пятничных дней и должна была занять 2-3 минуты времени. В общем, как всегда.<br>
<br>
Коллега попросил поправить скрипт у него на сервере. Сделал, сдал ему и обронил ненароком: «Время спешит на 5 минут». Сервер его, пусть сам и разбирается с синхронизацией. Полчаса, час прошел, а он всё пыхтит и тихо матерится.<br>
<br>
«Бестолочь! — подумал я, переключаясь в консоль сервера — ну ладно оторвусь ещё на пару минут.»<br>
<br>
Смотрим, <i>ntp, rdate, sdwdate</i> не установлены, <i>timesyncd </i>отключен и не запущен.<br>
<br>
<pre><code class="plaintext"># timedatectl
      Local time: Sun 2019-08-25 20:44:39 +03
  Universal time: Sun 2019-08-25 17:44:39 UTC
        RTC time: Sun 2019-08-25 17:39:52
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
</code></pre><br>
Здесь сразу отмечу, что аппаратное время верное: по нему будет легче ориентироваться дальше.<br>
<br>
Отсюда и началась череда ошибок.<br> <a href="https://habr.com/ru/articles/464951/?utm_campaign=464951&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Mon, 26 Aug 2019 10:12:25 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Настройка Linux]]></category><category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[linux]]></category><category><![CDATA[debian]]></category><category><![CDATA[syscalls]]></category><category><![CDATA[auditd]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Почему (сегодня) return 444 не всегда полезен]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/415565/</guid>
      <link>https://habr.com/ru/articles/415565/?utm_campaign=415565&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В web-сервере Nginx есть замечательный код ответа 444, который «закрывает» соединение без отправки данных. Данный функционал весьма полезен при фильтрации паразитного трафика — если мы уверены, что клиент по каким-то критериям не является валидным, то нет необходимости его уведомлять, например, 403-м ответом. Эффективнее просто прекратить передачу данных, что, зачастую, позволяет существенно снизить нагрузку на сервер.<br>
<br>
Рекомендации использовать такие ответы можно встретить повсеместно в инструкциях по блокировках переходов по ссылкам с популярных сайтов и реферального спама, защите от DDoS и т.п.<br>
<br>
И, в общем-то, на протяжении многих лет эти советы можно было использовать почти не глядя, но… современные браузеры не стоят на месте и периодически преподносят нам новые сюрпризы.<br> <a href="https://habr.com/ru/articles/415565/?utm_campaign=415565&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Tue, 10 Jul 2018 07:16:02 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Nginx]]></category><category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[Nginx]]></category><category><![CDATA[Google Chrome]]></category><category><![CDATA[Firefox]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Сопроцессы: -что, -как, -зачем?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/307562/</guid>
      <link>https://habr.com/ru/articles/307562/?utm_campaign=307562&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Многие пользователи <i>Bash</i> знают о существании со-процессов, появившихся в 4-й версии <i>Bash'a</i>. Несколько меньшее количество знает о том, что сопроцессы в <i>Bash</i> не какая-то новая фича, а древний функционал <i>KornShell'a</i> появившийся ещё в реализации <i>ksh88</i> в 1988 году. Ещё меньшее количество пользователей shell'ов умеющих сопроцессить знают синтаксис и помнят как это делать. Вероятно, я отношусь к четвёртой группе — знающих о сопроцессах, периодически умеющих ими пользоваться но так и не понимающих «зачем?». Я говорю «периодически», так как иногда я освежаю в голове их синтаксис, но к тому моменту, когда мне кажется что «вот тот случай когда можно применить co-proc» я уже напрочь забываю о том как это делать.<br/>
<br/>
Этой заметкой я хочу свести воедино синтаксисы для разных шеллов чтобы на случай, если таки придумаю зачем они мне нужны, я если и не вспомню как это делать, то по крайней мере, буду знать где это записано.<br/>
<br/>
В заголовке статьи у нас 3 вопроса. Пойдём по порядку.<br/>
<br/>
<h3>Что?</h3><br/>
Что же такое co-process? Со-процессинг — это одновременное выполнение двух процедур, одна из которых считывает вывод другой. Для его реализации необходимо предварительно запустить <b>фоновый</b> процесс выполняющий функционал <b>канала</b>. При запуске фонового процесса его <i>stdin</i> и <i>stdout</i> присваиваются каналам связанными с пользовательскими процессами. Соответственно, один канал для записи, второй для чтения. Пояснять это проще на примерах, поэтому сразу перейдём ко второму вопросу.<br/>
 <a href="https://habr.com/ru/articles/307562/?utm_campaign=307562&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 12 Aug 2016 17:38:08 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[*nix]]></category><category><![CDATA[Оболочки]]></category><category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[coproc]]></category><category><![CDATA[bash]]></category><category><![CDATA[ksh]]></category><category><![CDATA[csh]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Дёргаем цепочку сертификатов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/304458/</guid>
      <link>https://habr.com/ru/articles/304458/?utm_campaign=304458&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Вчера, видимо, был шабаш https и клиенты стали массово слать сертификаты. Разумеется ни корневых ни промежуточных не прилагалось и просьба их выслать вызывала такое же недоумение как встречный поток у блондинки на дороге с односторонним движением.<br/>
<br/>
На 4-м сертификате дёргать их вручную стало лень (а я ленив по натуре), поэтому набросал «самокат» выцепляющий издателя и формирующий chain-файл для скармливания nginx'у.<br/>
Наверняка он не идеален и проверен лишь на полуторадесятках сертификатов, но чем богаты.<br/>
<br/>
Об устройстве x.509 много сказано (в том числе на хабре), поэтому повторяться не буду.<br/>
<br/>
Ниже просто пошаговая инструкция получения цепочки вперемешку с небольшой выжимкой из теории и не более того.<br/>
 <a href="https://habr.com/ru/articles/304458/?utm_campaign=304458&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 30 Jun 2016 13:26:27 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[*nix]]></category><category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[x509]]></category><category><![CDATA[ssl]]></category><category><![CDATA[openssl]]></category><category><![CDATA[FreeBSD]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Bash Co-Processes]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/280754/</guid>
      <link>https://habr.com/ru/articles/280754/?utm_campaign=280754&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Одной из новых функций в Bash 4.0 является coproc. Оператор coproc позволяет создавать со-процесс, который связан с командной оболочкой с помощью двух каналов: один для отправки данных в со-процесс, второй для получения из со-процесса.<br/>
<br/>
Впервые я нашёл применение этому пытаясь писать лог используя перенаправление <i>exec</i>. Цель состояла в том, чтобы опционально разрешить запись вывода скрипта в лог-файл после запуска сценария (например, вследствие опции <i>--log</i> командной строки).<br/>
<br/>
Основная проблема с логированием вывода после того как скрипт стартовал связана с тем, что его вывод уже мог быть перенаправлен (в файл или канал). Если мы перенаправим уже перенаправленный вывод, то не сможем выполнить команду так, как это было задумано пользователем.<br/>
 <a href="https://habr.com/ru/articles/280754/?utm_campaign=280754&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 04 Apr 2016 22:16:12 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[*nix]]></category><category><![CDATA[Системное администрирование]]></category>
      <category>bash</category><category>coproc</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Немного о сокетах, redis и битых яйцах]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/280668/</guid>
      <link>https://habr.com/ru/articles/280668/?utm_campaign=280668&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Работать в пятницу после обеда первого апреля не хочется — вдруг ещё техника выкинет какую-нибудь шутку. Потому решил о чем-либо написать. <br/>
Не так давно на просторах хабра в одной статье огульно охаяли сразу Unix-сокеты, mysql, php и redis. Говорить обо всём в одной статье не будем, остановимся на сокетах и немного на redis.<br/>
Итак вопрос: что быстрее Unix- или TCP-сокеты?<br/>
Вопрос, который не стоит и выеденного яйца, однако, постоянно муссируемый и писать не стал бы если б не опрос в той самой статье, согласно которому едва-ли не половина респондентов считает, что лучше/надёжнее/стабильнее использовать TCP-сокеты.<br/>
Тем, кто и так выбирает AF_UNIX, можно дальше не читать.<br/>
 <a href="https://habr.com/ru/articles/280668/?utm_campaign=280668&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 01 Apr 2016 13:03:18 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[NoSQL]]></category>
      <category><![CDATA[AF_INET]]></category><category><![CDATA[AF_UNIX]]></category><category><![CDATA[сокеты]]></category><category><![CDATA[redis]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Амнезия FreeBSD]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/275917/</guid>
      <link>https://habr.com/ru/articles/275917/?utm_campaign=275917&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Я никогда не понимал как работает распределение памяти во FreeBSD. Из всего многообразия документации полезное помнилось, лишь<br/>
<br/>
<blockquote>An urban myth has circulated for years that Linux did a better job avoiding swapouts than FreeBSD, but this in fact is not true. What was actually occurring was that FreeBSD was proactively paging out unused pages in order to make room for more disk cache while Linux was keeping unused pages in core and leaving less memory available for cache and process pages. </blockquote><br/>
<img align="right" width="50%" src="https://habrastorage.org/getpro/habr/post_images/20b/e23/149/20be2314990f8cdf3009281f2911880d.png"/><br/>
Ну лучше чем Linux, да и пусть. Я не против. Но хуже самого непонимая процесса выделения памяти меня убивала <i>Inactive</i> память. Что это такое и можно ли «это» безболезненно использовать? Считать ли эту память доступной для использования приложением?<br/>
<br/>
Под cut'ом больше вопросов чем ответов.<br/>
 <a href="https://habr.com/ru/articles/275917/?utm_campaign=275917&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 26 Jan 2016 12:19:13 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[*nix]]></category>
      <category><![CDATA[FreeBSD]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[А был ли who на сервере?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/270801/</guid>
      <link>https://habr.com/ru/articles/270801/?utm_campaign=270801&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Тяпница… тринадцатое… всё важное решили оставить на понедельник, а потому сделаю какую-нибудь гадость…<br/>
В связи с появивишимся на <a href="http://habrahabr.ru/company/ua-hosting/blog/270687/">хабре </a>пересказом <a href="http://www.itworld.com/article/2914650/linux/checking-last-logins-with-lastlog.html">статьи</a> решил немного отбалансировать данное руководство. Скрыть своё посещение, конечно, не совсем тривиально, но особых сложностей это не составляет. <br/>
Итак, задача:<br/>
Войти на сервер, выполнить некие действия и «подмести» за собой.<br/>
<br/>
Здесь и далее считаем, что никаких дополнительных инструментов слежения( за исключением «по умолчанию») в системе не используется и мы знаем пароль root'a.<br/>
<img align="right" width="50%" src="https://habrastorage.org/files/390/73c/459/39073c45922649a58baa934317068359.png"/><br/>
С чем работаем:<br/>
<br/>
<pre><code class="bash"># uname -ori
FreeBSD 10.0-RELEASE GENERIC
</code></pre><br/>
<pre><code class="bash"># `echo $SHELL` --version
tcsh 6.18.01 (Astron)
</code></pre><br/>
Описываемое ниже несколько диссонирует с упоминаемой выше статьей, т.к. оная в первую очередь ориентирована на Linux-пользователей, но общие принципы теже и после перехода во FreeBSD(c 9.0) на хранение данных в utmpx родство стало ближе.<br/>
<br/>
Поехали…<br/>
 <a href="https://habr.com/ru/articles/270801/?utm_campaign=270801&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 13 Nov 2015 13:03:34 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[*nix]]></category><category><![CDATA[Настройка Linux]]></category><category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[lastlogin]]></category><category><![CDATA[utmpx]]></category><category><![CDATA[freebsd]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[single-mode во FreeBSD с поддержкой сети]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/247553/</guid>
      <link>https://habr.com/ru/articles/247553/?utm_campaign=247553&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Это совсем маленькая заметка о том, что как нет ничего более постоянного чем временное, так и самая тривиальная(на первый взгляд) задача занимает больше всего времени.<br/>
В пятницу утром знакомый обратился с вопросом «Как пересобрать мир в single-mode на удалённом сервере без KVM?»<br/>
«Прописать в /etc/rc скрипт выполняющий /etc/netstart && service sshd start в части исполняемой в single-mode, а дальше всё как обычно», — ничтоже сумняшеся ответил я.<br/>
Но спустя часа два вопрос повторился и оказалось, что всё не так тривиально.<br/>
Уж не знаю было ли это просто моим заблуждением или всё-таки в ранних версиях FreeBSD /etc/rc частично выполнялся в single-mode(справедливости ради никогда не приходилось это проверять), но в 10-ке он действительно не работает.<br/>
<u><b>Итак, задача:</b></u><br/>
# uname -opr<br/>
FreeBSD 10.1-STABLE amd64<br/>
Необходимо перейти из multi-mode в single-mode и получить доступ по ssh.<br/>
 <a href="https://habr.com/ru/articles/247553/?utm_campaign=247553&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sun, 11 Jan 2015 08:19:43 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Системное администрирование]]></category><category><![CDATA[*nix]]></category>
      <category><![CDATA[FreeBSD]]></category><category><![CDATA[/etc/rc]]></category><category><![CDATA[init]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[SYN-флудим со спуффингом на 14 mpps или нагрузочная вилка V 2.0]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/229733/</guid>
      <link>https://habr.com/ru/articles/229733/?utm_campaign=229733&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Что-то меня пробило на написание заметок последнее время, поэтому пока энтузиазм не спал раздаю долги.<br/>
Год назад я пришёл на хабр со статьёй &quot;<a href="http://habrahabr.ru/post/183692/">TCP(syn-flood)-netmap-generator производительностью 1,5 mpps</a>&quot;, после которой многие писали и даже звонили с просьбой описать создание такой же «вилки» со спуффингом на максимуме возможностей 10GB сети. Я всем обещал, а руки всё не доходили.<br/>
Кто-то скажет, что это руководство для хакеров, но ведь свинья грязи найдёт, а те кому нужен этот инструмент в благонадёжных целях могу остаться ни с чем.<br/>
<br/>
<img src="https://habrastorage.org/getpro/habr/post_images/7dd/16f/3d1/7dd16f3d1900f29140050aa60d4de37c.jpg" alt="image"/><br/>
 <a href="https://habr.com/ru/articles/229733/?utm_campaign=229733&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 14 Jul 2014 10:58:13 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Высоконагруженные системы]]></category>
      <category><![CDATA[ddos]]></category><category><![CDATA[netmap]]></category><category><![CDATA[syn-flood]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Защищаем роутер от пользователя с помощью dd-wrt]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/229355/</guid>
      <link>https://habr.com/ru/articles/229355/?utm_campaign=229355&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Провайдер у которого я отбываю рабочую повинность выдаёт абонентам маршрутизаторы в безвозмездное пользование на период заключения договора. При выдаче роутера механики прошивают его, внося логин, пароль, ip и настраивая wifi. И всё бы ничего, но попадаются особо умные пользователи, которые любят понастраивать девайс, да и на маршрутизаторах есть кнопка сброса к заводским настройкам, после манипуляций с которой либо абонент ехал в офис, либо механик выезжал к абоненту заново настраивать устройство. Чаша терпения полнилась и последней каплей стал TL-WR841N, которых провайдер закупил крупную партию. <br/>
Мало того что педалька сброса не утоплена (а наоборот расположена так, что может быть нажата перекрученным кабелем да и просто хламом в котором иногда оказываются абонентские устройства) так ещё производитель совместил WPS и RESET на одной кнопке, что мягко говоря чуднОе решение.<br/>
<img src="https://habrastorage.org/getpro/habr/post_images/3da/581/d4f/3da581d4f71fe105d47059e832808e4d.png" alt="image"/><br/>
Был ещё один болезненный момент — с родной прошивкой TP-Link'a роутер не всегда восстанавливал соединение после обрыва связи. <br/>
Конечно, и наше решение имеет свои минусы, как-то невозможность смены паролей, но с этим мы готовы мириться.<br/>
Ну чтож… Начинаем «лечение».<br/>
 <a href="https://habr.com/ru/articles/229355/?utm_campaign=229355&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 10 Jul 2014 12:40:50 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Настройка Linux]]></category>
      <category><![CDATA[dd-wrt tp-link]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Socks-сервер Dante или как одна буква может «съесть» пару суток времени]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/218589/</guid>
      <link>https://habr.com/ru/articles/218589/?utm_campaign=218589&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Каждый раз сталкиваясь с таким «рабочим моментом» я задумываюсь надо ли его решение давать миру или оно мелочно для других, но на этот раз решил-таки выложить. Эта статья больше из разряда заметки на манжетах и написана лишь из-за скудности информации о настройке Dante в нете и хроманием на обе ноги официальной документации.<br/>
В пятницу утром заказчик обратился с просьбой поднять socks-сервер на ~100 пользователей, с авторизацией по логину/паролю, привязкой IP и отправкой запросов с того же IP к которому конектится пользователь. При этом заказчик поинтересовался сроком выполнения работ и, хоть я не люблю делать прогнозы по времени установки/настройки, заверил его, что часа через 3-4 альфа-версия будет готова. Ну правда — погуглив выбрать подходящий socks-сервер, установить, почитать маны, подправить под себя дефолтный конфиг… в 4 часа должен вложиться.<br/>
ОС FreeBSD 9.2, но всё нижеописанное справедливо и для 10-ки.<br/>
 <a href="https://habr.com/ru/articles/218589/?utm_campaign=218589&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 07 Apr 2014 19:14:55 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Системное администрирование]]></category><category><![CDATA[*nix]]></category>
      <category><![CDATA[socks]]></category><category><![CDATA[dante]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[«Дружим» redis с nginx]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/208590/</guid>
      <link>https://habr.com/ru/articles/208590/?utm_campaign=208590&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Не секрет, что для защиты от HTTP-DDoS зачастую используют связку nginx в качестве фронтенда и некий другой web-сервер в качестве бакенда. При этом ввиду большой нагрузки возникает проблема хранения логов для дальнейшего их анализа. Можно хранить в текстовом файле, но, естественно, анализировать/ротировать его весьма неудобно. Можно гнать данные напрямую в, например, mysql через пайп, но выигрывая в удобстве анализа мы проигрываем в производительности, особенно это заметно при фрагментации. Золотой серединой, пожалуй, будет no-sql решение. <br>
Для себя я выбрал redis.<br> <a href="https://habr.com/ru/articles/208590/?utm_campaign=208590&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 09 Jan 2014 17:32:03 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[NoSQL]]></category><category><![CDATA[Высоконагруженные системы]]></category>
      <category><![CDATA[nginx]]></category><category><![CDATA[redis]]></category><category><![CDATA[ddos]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[TCP(syn-flood)-netmap-generator производительностью 1,5 mpps]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/183692/</guid>
      <link>https://habr.com/ru/articles/183692/?utm_campaign=183692&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<b>Дано:</b><br/>
<pre><code class="bash"># pciconf -lv | grep -i device | grep -i network
    device     = I350 Gigabit Network Connection
# dmesg | grep CPU:
    CPU: Intel(R) Core(TM)2 Duo CPU     E7300  @ 2.66GHz (2666.69-MHz K8-class CPU)
# uname -orp
    FreeBSD 9.1-RELEASE amd64
</code></pre><br/>
<b>Задача: </b><br/>
Необходимо на данном оборудовании и ОС создать нагрузочную вилку в виде tcp(syn)-генератора трафика производительностью не менее 500kpps.<br/>
<br/>
<b>Решение:</b><br/>
 <a href="https://habr.com/ru/articles/183692/?utm_campaign=183692&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 18 Jun 2013 08:05:46 GMT</pubDate>
      <dc:creator><![CDATA[simpleadmin]]></dc:creator>
      <category><![CDATA[Высоконагруженные системы]]></category>
      <category><![CDATA[syn-flood]]></category><category><![CDATA[netmap]]></category><category><![CDATA[FreeBSD]]></category><category><![CDATA[ddos]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
