четверг, 28 сентября 2017 г.

Назначение shortcut для выключения linux

В Ubuntu не предусмотрена комбинация клавиш для быстрого выключения.
Можно мышкой тыкать или с помощью <Alt-F10>-><Left>-><Up>-><Enter>

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


Для этого нужно поставить пакет ConsoleKit.

sudo apt-get install consolekit

После завершения установки открыть окно назначения shortcuts.
Нажав на [+] добавить новый shortcut.



Написать в поле Name любую метку, например Shutdown, а в поле Command ввести следующую команду:

/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Осталось присвоить комбинацию клавиш. Я назначил <Super>+<Q>

пятница, 22 сентября 2017 г.

Мой RVi-R04LA White хакнули.

У меня вместо глазка установлен видеорегистратор. Очень удобно. Не нужно прижиматься к глазку двери. На мониторе видно кто пришел и все такое.

В качестве видеорегистратора я использую RVi-R04LA White. Это клон китайского регистратора, выпущенный под торговой маркой нашей российской компании RVi. Специалисты, судя по всему, сделали перевод интерфейса на русский язык, продали ее и подобные китайские клоны и написали про себя мегапафосные строки про то, как они формируют уверенность и глубоко понимают потребности.
У этих господ из RVi есть форум.

DVR я установил в 2014 году и с тех пор она исправно трудилась.

Напрягало, что компания не давала пароль root.
Да и черт с ним, думал я. Не такое уж важное устройство, чтоб по этому поводу сильно переживать.

Ну и вот, накануне случилось то, что должно было случиться: эту штуку хакнули. Я просыпаюсь, а у меня черные экраны и подписи к ним: HACKED.
 

Прикольно так, ты ни сном ни духом, а твои камеры смотрит китайский брат. Хорошо, что мои то на лестничную клетку выведены, а те у кого камеры установлены в приватной зоне? Это как? Господа из RVi, расскажите мне про вашу миссию.

Ну да ладно, смотрим что случилось. Заходим в информацию о сети. Замечательно. Мой DVR смотрит не на мой рацтер а на какой то левй адрес в сети. По второму экрану видим, что адрес не мертвый, а он забирает трафк от моего DVI.



Захожу в настройки сети. Да. Все в порядке. Меня перенастроили.



Идем в форум RVi. Там многочисленные стенания и мольбы о помощи и сообщения от администраторов, что компания работает над этой проблемой.
Ага. Они оставили бэкдор для себя. И через этот бэкдор (или через еще один) китайцы их меня наказали.

Смотрим лог устройства. Видно, что к моему устройству подключился некто с адреса 195.209.58.2. Судя по всему удаленно перепрошил и перезагрузил DVR.
Затем, в 10 часов зашли с адресов 46.249.21.95, 109.197.230.38. Добавили своего пользователя и уже потом изменили конфигурацию сети.
Из сообщений на форуме видно, что смена пароля спасает примерно часа на три.





Какие отсюда выводы?
Да вывод один. Известен давно. Проприетарный софт всю твою информацию передаст кому надо, либо хитрожопому комерсанту, либо еще более хитрожопому китайцу, либо Большому Брату.
Все трое обладают высокими моральными качествами. Будьте уверены.
А пока я отключил регистратор. До выходных.

понедельник, 31 июля 2017 г.

SDS2104X - новая игрушка в моей лаборатории

Многих из нас объединяет занятие радиоэлектроникой. Кто-то делает это в свободное время, а у кого-то это еще и профессиональная деятельность. Но в любом случае сколько нибудь серьезные конструкции отладить без осциллографа очень проблематично. В большинстве случаев — невозможно. Я расскажу о своем выборе. Надеюсь рассказ будет полезным.

Итак, прежде всего нужно определиться с моделью. Здесь много за и против. Я остановился на Siglent sds2104x.

Спецификация на осциллограф приведена по ссылке: SDS2000X_Datasheet.pdf

После посмотрел где наиболее выгодные условия. Прист отпал сразу со своими ценами почти в два раза выше, чем производителя. На Aliexpress цены, как в Европе. Siglent.ru — после общения по телефону отпал из-за слабого ассортимента и моего недоверия.

В итоге остановился на Siglent.eu.

Компания находится в Нидерландах.

Я списался с представителем компании. После 3-х дней переговоров Jonas убедил меня взять четырехканальный прибор за 865,00 EUR, что по курсу на день оплаты составило 58000 рублей (аналогичный в Присте стоит 118 т.р.).

Оплатил через Paypal (это отдельная история на 2 недели). Из Нидерландов Осциллограф был отправлен 19 июля, а 25 я его забрал с почты.

Date        Time     Location    Status
Tue Jul 25  12:42    RU          Shipment delivered
Mon Jul 24  19:21    RU          Addressee not present
Mon Jul 24  19:20    RU          Driver is en route
Mon Jul 24  19:12    RU          Shipment in depot
Sun Jul 23  21:25    RU          Released by customs
Sun Jul 23  17:51    RU          Shipment at customs
Sun Jul 23  14:27    RU          Received in country of destination
Thu Jul 20  08:30    NL          Sent to country of destination
Wed Jul 19  21:11    NL          Parcel received and in sorting process
Wed Jul 19  13:59    NL          Parcel received and in sorting process
Wed Jul 19  13:57                Shipment is expected, but not yet in sorting process

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

Осциллограф был упакован в фирменную картонную коробку и оклеен сверху упаковочной бумагой. Так же присутствовала наклейка «стекло, боится воды».

Судя по нетронутой фирменной почтовой упаковке его нигде не вскрывали.

В общем королевской почте Нидерландов респект. И нашей российской — тоже.



Комплектация


Комплектация небогатая, стандартная:

  • провод питания
  • провод USB
  • 4 щупа с аксессуарами
  • диск с ПО
  • тоненькая инструкция
  • и листок с заверениями, что все сделано хорошо.

Щупы обычные. С делителем 1:1 или 1:10.

К каждому щупу прилагается набор цветных колец и отвертка для калибровки



Внешний вид


Осциллограф имеет размеры 352х224х100 мм

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

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

Справа от экрана, в нижней части расположены входные аттенюаторы, кнопки включения каналов и регуляторы сдвига осциллограммы по вертикали.

Органы управления, расположенные в центральной части можно разделить на 4 функциональные зоны:

  • многофункциональная ручка выбора режима
  • управление срабатыванием триггера
  • выбор функций прибора и режимов измерения-отображения
  • управление декодерами и математическими операциями

В верхней части находятся:

  • органы управления горизонтальной разверткой
  • синяя кнопка автоустановки режима измерения
  • однократной, непрерывной синхронизации
  • кнопка возврата настроек в исходное состояние
  • кнопка Clear Sweeps

Давайте посмотрим, что находится на задней стенке прибора

Мы видим разъем питания, сетевой разъем, два коннектора BNC для подачи сигнала на внешнюю синхронизацию, вентилятор и разъем механической защиты от кражи.



Эргономика


После недели использования для меня очевидно, что эргономика и простота использования были важными критериями при разработке этого осциллографа. В отличие от тысячной серии Rigol здесь на каждый канал присутствует отдельный аттенюатор. Это очень удобно. Кроме того в приборе сделан упор на включение наиболее востребованных функций одним нажатием.

Об органах управления можно сказать, что они расположены логично и удобно. Кнопочки тактильно очень приятные. Кнопки с «фиксацией» подсвечиваются зеленым цветом. Не очень понравились поворотные ручки. На мой вкус могли бы сделать из побольше диаметром. Кроме того, когда на них нажимаешь, возможно изменение установки. Но это, думаю дело привычки.



Включаем


При первом включении активизируется 1-й канал. В дальнейшем прибор будет запоминать последние режимы и автоматически их устанавливать. Если будет необходимо, то можно сбросить все настройки и вернуться к дефолтным значениям нажатием на кнопку «Default».

Сразу можно отметить большой дисплей. Цветовая гамма выбрана хорошо. Зона отображения занимает почти весь экран и расчерчена в виде сетки 14х8. Это стандартное количество делений принятое в аналоговых осциллографах.

Снизу под экраном располагаются 6 функциональных кнопок, над которыми появляются контекстно-зависимые подписи и синяя круглая кнопка сохранения экрана. Экраны сохраняются на флэшке в виде BMP файла с разрешением 800х480.

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

Первым делом посмотри шумы. Выставляем самую высокую чувствительность 1 mV на деление.

Мы видим шумы с амплитудой до 3 мВ. По спецификации: stdev ≤ 0.5 div (≥ 2mV/div).

Подключим щуп и замкнем его вход на массу.

Видим, что шум вместе с наводками составляет около 5 мВ



Встроенный генератор


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

Посмотрим работу и основные функции прибора при измерении сигналов от встроенного генератора.

Можно выбрать вид сигнала, амплитуду, частоту, смещение. В общем все основные параметры нам доступны.

Проверим возможности генератора по частоте. Синус у генератора на максимальной частоте 25 МГц вполне приличный.

Меандр 5 МГц вполне еще можно называть меандром.

Для исследования фронта мы воспользовались функцией записи сигнала в память и последующего воспроизведения. В советских приборах эта функция называлась «лупа времени». Мы выделили участок сигнала и развернули его отдельно. Очень полезная функция. В целом генератор вполне юзабельный.



Встроенные измерения и статистика


Осциллограф позволяет производить различные измерения.

Посмотрим какие параметры сигнала можно измерять.

При выборе параметра на экране дается короткое, но достаточно ясное объяснение смысла этого параметра.

Кроме того, осциллограф позволяет выводить на экран статистику.

Полоса пропускания


Полоса пропускания является одним из важнейших показателей осциллографа. Она определяет область применения прибора. Давайте оценим полосу пропускания нашего прибора. Для этого нам потребуется внешний генератор от которого подадим сигнал с частотами от 1 кГц, до 100 МГц. Я использовал Siglent sdg2042х хакнутый до 120 МГц. Для контроля я выставил курсоры по периоду и амплитуде.

Я не стал приводить все реперные точки. До 20 МГц полоса линейная. После начинается спад. Выше это показометр. Но в целом все равно хороший.



Синхронизация


Осциллограф имеет стандартный джентльменский набор, включающий синхронизации по фронтам, по импульсу, по видео сигналу, по окну, iis данным и много чему еще.

Синхронизация у осциллографа очень недурна. Если есть за что зацепиться — он зацепится.

Как пример — осциллограмма сложного сигнала с амплитудной модуляцией.



Математические вычисления


Осциллограф имеет возможность выполнять различные математические операции над сигналами: сложение, вычитание, БПФ и др.

На осциллограмме показана БПФ над синусоидальным сигналом

и над меандром




LAN - сетевое подключенине


Осциллограф, как я писал выше, имеет возможность подключения по сети.

Сканирование командой map показывает какие протоколы поддерживаются:

$ nmap 192.168.56.22

Starting Nmap 7.01 ( https://nmap.org ) at 2017-07-30 21:13 MSK
Nmap scan report for 192.168.56.22
Host is up (0.00081s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
80/tcp   closed http
111/tcp  open   rpcbind
9009/tcp open   pichat

Nmap done: 1 IP address (1 host up) scanned in 8.55 seconds

Видно, что http протокол закрыт, а открыты два протокола rpcbind и pichat. они используются для поддержки протокола VXI-11 (VXIbus Consortium) для организации связи с прибором

Существует открытая реализация обмена по этому протоколу написанная на языке python.

$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import vxi11
>>> instr =  vxi11.Instrument("TCPIP::192.168.56.22::INSTR")
>>> print(instr.ask("*IDN?"))
*IDN SIGLENT,SDS2104X,SDS2XJBC1L1232,1.2.2.1 R9
>>> 


Жадность


За использование трех дополнительных функций встроенный генератор, цифровой анализатор и декодер предлагается заплатить отдельные деньги в размере 434 евро.

Пока взлома нет.



Видеообзоры


В сети есть пара тройка неплохих видеообзоров этого прибора. Видеообзор от главного редактора журнала Design World

На широко известном видеоблоге eevblog есть видеообзор с разборкой



Выводы


Я долгое время проработал с советскими осциллографами, можно сказать легендарными С1-65, С1-74 и малогабаритным С1-94. Последний год не шатко — не валко пользовался UNI-T 2102CEL-R.

SDS2104x — безусловно великолепное устройство, которое дает удобство использования и широкий набор функций. Несмотря на мелкие косяки и жадность с дополнительными лицензиями, мне прибор очень нравится. Он может кроме осциллографа заменить собой мультиметр, генератор сигналов и цифровой анализатор.

Китайщиной от него и не пахнет.

Я конечно не рассмотрел все функции и режимы, коих здесь очень много.

Но, надеюсь, общее представление о приборе составил.



Полезные ссылки:

пятница, 10 февраля 2017 г.

Проектирование лабораторного источника питания.


 

Когда то я работал разработчиком РЭА.Как мне кажется очень неплохим.
Решил взяться за старое 8-)

Недавно я собрал для разработки и отладки домашних поделок двухполярный линейный бдлок питания.

Сейчас заморочился сделать блок питания с процессорным управлением.

Конечно дешевле купить китайский. Стоят они около 100 баксов.
Вот модель, которая называется KORAD KA3005P. Это очень хорошая конструкция. Внутри установлен линейный стабилизатор. Управление полностью от микроконтроллера. Позворляет стабилизировать ток ил напряжение. Можно сохранить четыре установки.

Но мы же сами с усами. Будем сами разрабатывать и собирать.

Вот хороший цикл статей по проектированию блока питания с цифровым управлением:

Fully Programmable Modular Bench Power Supply:
 
Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9
Part 10
Part 11
Part 12
Part 13
Part 14

среда, 11 января 2017 г.

Гайд по обеспечению безопасности Linux-системы


Коллега на работе показал мне статью из журнала Хакер по защите систем на базе Linux.
Статья просто великолепна, и, учитывая, что интернет сейчас активно перлюстрируется размещаю ее у себя в блоге. На всякий случай




Введение
Пароль
Шифруемся
Заметаем следы
Предотвращение BruteForce-атак
Угроза извне
Выявляем вторжения
Кто-то наследил…
За пределами
Луковая маршрутизация
Борьба с флудом
Выводы


Никто из нас не хочет, чтобы личная информация попала в чужие руки. Но как защитить систему от атак и хищений данных? Неужели придется читать километровые мануалы по настройке и алгоритмам шифрования? Совсем не обязательно. В этой статье я расскажу, как сделать Linux-систему безопасной буквально за 30 минут.


Введение

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

Когда я потерял смартфон, мне сильно повезло, что установленный на него антивор оказался работоспособным и позволил удаленно стереть все данные из памяти девайса. Когда я по невнимательности открыл SSH-порт на домашней машине с юзером без пароля (!) во внешний мир (!!), мне сильно повезло, что на машину пробрались скрипт-кидди, которые кроме смешной истории шелла не оставили никаких серьезных следов своего пребывания в системе. Когда я случайно опубликовал в интернете листинг со своим паролем от Gmail, мне сильно повезло, что нашелся добрый человек, который предупредил меня об этом.

Может быть, я и раздолбай, но я твердо уверен, что подобные казусы случались со многими, кто читает эти строки. И хорошо, если эти люди, в отличие от меня, серьезно позаботились о защите своей машины. Ведь антивор мог бы и не сработать, и вместо скрипт-кидди в машину могли пробраться серьезные люди, и потерять я мог не смартфон, а ноутбук, на котором кроме пароля пользователя не было никакой другой защиты. Нет, полагаться на одну двухфакторную аутентификацию Google и дурацкие пароли в наш век определенно не стоит, нужно что-то более серьезное.

Эта статья — гайд параноидального юниксоида, посвященный тотальной защите Linux-машины от всего и вся. Я не решусь сказать, что все описанное здесь обязательно к применению. Совсем наоборот, это сборник рецептов, информацию из которого можно использовать для защиты себя и данных на тех рубежах, где это нужно именно в твоей конкретной ситуации.


Пароль!

Все начинается с паролей. Они везде: в окне логина в Linux-дистрибутиве, в формах регистрации на интернет-сайтах, на FTP- и SSH-серверах и на экране блокировки смартфона. Стандарт для паролей сегодня — это 8–12 символов в разном регистре с включением цифр. Генерировать такие пароли своим собственным умом довольно утомительно, но есть простой способ сделать это автоматически:

$ openssl rand -base64 6

Никаких внешних приложений, никаких расширений для веб-браузеров, OpenSSL есть на любой машине. Хотя, если кому-то будет удобней, он может установить и использовать для этих целей pwgen (поговаривают, пароль получится более стойким):

$ pwgen -Bs 8 1

Где хранить пароли? Сегодня у каждого юзера их так много, что хранить все в голове просто невозможно. Довериться системе автосохранения браузера? Можно, но кто знает, как Google или Mozilla будет к ним относиться. Сноуден рассказывал, что не очень хорошо. Поэтому пароли надо хранить на самой машине в зашифрованном контейнере. Отцы-основатели рекомендуют использовать для этого KeePassX. Штука графическая, что не сильно нравится самим отцам-основателям, но зато работает везде, включая известный гугль-зонд Android (KeePassDroid). Останется лишь перекинуть базу с паролями куда надо.


Шифруемся

Шифрование — как много в этом слове… Сегодня шифрование везде и нигде одновременно. Нас заставляют пользоваться HTTPS-версиями сайтов, а нам все равно. Нам говорят: «Шифруй домашний каталог», а мы говорим: «Потом настрою». Нам говорят: «Любимое занятие сотрудников Dropbox — это ржать над личными фотками юзеров», а мы: «Пусть ржут». Между тем шифрование — это единственное абсолютное средство защиты на сегодняшний день. А еще оно очень доступно и сглаживает морщины.

В Linux можно найти тонны средств шифрования всего и вся, от разделов на жестком диске до одиночных файлов. Три наиболее известных и проверенных временем инструмента — это dm-crypt/LUKS, ecryptfs и encfs. Первый шифрует целые диски и разделы, второй и третий — каталоги с важной информацией, каждый файл в отдельности, что очень удобно, если потребуется делать инкрементальные бэкапы или использовать в связке с Dropbox. Также есть несколько менее известных инструментов, включая TrueCrypt например.

Сразу оговорюсь, что шифровать весь диск целиком — задача сложная и, что самое важное, бесполезная. Ничего особо конфиденциального в корневом каталоге нет и быть не может, а вот домашний каталог и своп просто кладезь инфы. Причем второй даже больше, чем первый, так как туда могут попасть данные и пароли уже в расшифрованном виде (нормальные программеры запрещают системе скидывать такие данные в своп, но таких меньшинство). Настроить шифрование и того и другого очень просто, достаточно установить инструменты ecrypts:

$ sudo apt-get install ecryptfs-utils

И, собственно, включить шифрование:

$ sudo ecryptfs-setup-swap
$ ecryptfs-setup-private

Далее достаточно ввести свой пароль, используемый для логина, и перезайти в систему. Да, все действительно так просто. Первая команда зашифрует и перемонтирует своп, изменив нужные строки в /etc/fstab. Вторая — создаст каталоги ~/.Private и ~/Private, в которых будут храниться зашифрованные и расшифрованные файлы соответственно. При входе в систему будет срабатывать PAM-модуль pam_ecryptfs.so, который смонтирует первый каталог на второй с прозрачным шифрованием данных. После размонтирования ~/Private окажется пуст, а ~/.Private будет содержать все файлы в зашифрованном виде.

Не возбраняется шифровать и весь домашний каталог целиком. Производительность при этом упадет не сильно, зато под защитой окажутся вообще все файлы, включая тот же сетевой каталог ~/Dropbox. Делается это так:

# ecryptfs-migrate-home -u vasya

Кстати, места на диске должно быть в 2,5 раза больше, чем данных у vasya, так что рекомендую заранее почиститься. После завершения операции следует сразу войти под юзером vasya и проверить работоспособность:

$ mount | grep Private
/home/vasya/.Private on /home/vasya type ecryptfs ...

Если все ок, незашифрованную копию данных можно затереть:

$ sudo rm -r /home/vasya.*

Ecryptfs предупреждает нас


Заметаем следы

ОK, пароли в надежном месте, личные файлы тоже, что теперь? А теперь мы должны позаботиться о том, чтобы какие-то куски наших личных данных не попали в чужие руки. Ни для кого не секрет, что при удалении файла его актуальное содержимое остается на носителе даже в том случае, если после этого произвести форматирование. Наши зашифрованные данные будут в сохранности даже после стирания, но как быть с флешками и прочими картами памяти? Здесь нам пригодится утилита srm, которая не просто удаляет файл, но и заполняет оставшиеся после него блоки данных мусором:

$ sudo apt-get install secure-delete
$ srm секретный-файл.txt home-video.mpg

Как всегда, все просто до безобразия. Далее, если речь идет о всем носителе, то можно воспользоваться старым добрым dd:

# dd if=/dev/zero of=/dev/sdb

Эта команда сотрет все данные на флешке sdb. Далее останется создать таблицу разделов (с одним разделом) и отформатировать в нужную ФС. Использовать для этого рекомендуется fdisk и mkfs.vfat, но можно обойтись и графическим gparted.


Предотвращение BruteForce-атак

Fail2ban — демон, который просматривает логи на предмет попыток подобрать пароли к сетевым сервисам. Если такие попытки найдены, то подозрительный IP-адрес блокируется средствами iptables или TCP Wrappers. Сервис способен оповещать владельца хоста об инциденте по email и сбрасывать блокировку через заданное время. Изначально Fail2ban разрабатывался для защиты SSH, сегодня предлагаются готовые примеры для Apache, lighttpd, Postfix, exim, Cyrus IMAP, named и так далее. Причем один процесс Fail2ban может защищать сразу несколько сервисов.

В Ubuntu/Debian для установки набираем:

# apt-get install fail2ban

Конфиги находятся в каталоге /etc/fail2ban. После изменения конфигурации следует перезапускать fail2ban командой:

# /etc/init.d/fail2ban restart

Угроза извне

Теперь позаботимся об угрозах, исходящих из недр всемирной паутины. Здесь я должен был бы начать рассказ об iptables и pf, запущенном на выделенной машине под управлением OpenBSD, но все это излишне, когда есть ipkungfu. Что это такое? Это скрипт, который произведет за нас всю грязную работу по конфигурированию брандмауэра, без необходимости составлять километровые списки правил. Устанавливаем:

$ sudo apt-get install ipkungfu

Правим конфиг:

$ sudo vi /etc/ipkungfu/ipkungfu.conf
# Локальная сеть, если есть — пишем адрес сети вместе с маской, нет — пишем loopback-адрес
LOCAL_NET="127.0.0.1"

# Наша машина не является шлюзом
GATEWAY=0

# Закрываем нужные порты
FORBIDDEN_PORTS="135 137 139"

# Блокируем пинги, 90% киддисов отвалится на этом этапе
BLOCK_PINGS=1

# Дропаем подозрительные пакеты (разного рода флуд)
SUSPECT="DROP"

# Дропаем «неправильные» пакеты (некоторые типы DoS)
KNOWN_BAD="DROP"

# Сканирование портов? В трэш!
PORT_SCAN="DROP"

Для включения ipkungfu открываем файл /etc/default/ipkungfu и меняем строку IPKFSTART = 0 на IPKFSTART = 1. Запускаем:

$ sudo ipkungfu

Дополнительно внесем правки в /etc/sysctl.conf:

$ sudo vi /etc/systcl.conf
# Дропаем ICMP-редиректы (против атак типа MITM)
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
# Включаем механизм TCP syncookies
net.ipv4.tcp_syncookies=1
# Различные твики (защита от спуфинга, увеличение очереди «полуоткрытых» TCP-соединений и так далее)
net.ipv4.tcp_timestamps=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_max_syn_backlog=1280
kernel.core_uses_pid=1

Активируем изменения:

$ sudo sysctl -p

Выявляем вторжения

Snort — один из любимейших инструментов админов и главный фигурант всех руководств по безопасности. Штука с долгой историей и колоссальными возможностями, которой посвящены целые книги. Что он делает в нашем гайде по быстрой настройке безопасной системы? А здесь ему самое место, Snort можно и не конфигурировать:

$ sudo apt-get install snort
$ snort -D

Все! Я не шучу, стандартных настроек Snort более чем достаточно для защиты типовых сетевых сервисов, если, конечно, они у тебя есть. Нужно только время от времени просматривать лог. А в нем можно обнаружить строки типа этих:

[**] [1:2329:6] MS-SQL probe response overflow attempt [**]
[Classification: Attempted User Privilege Gain] [Priority: 1]
[Xref => [url]http://www.securityfocus.com/bid/9407][/url]

Упс. Кто-то пытался вызвать переполнение буфера в MySQL. Тут сразу есть и ссылочка на страницу с детальным описанием проблемы. Красота.


Кто-то наследил…

Кто-то особенно умный смог обойти наш брандмауэр, пройти мимо Snort, получить права root в системе и теперь ходит в систему регулярно, используя установленный бэкдор. Нехорошо, бэкдор надо найти, удалить, а систему обновить. Для поиска руткитов и бэкдоров используем rkhunter:

$ sudo apt-get install rkhunter

Запускаем:

$ sudo rkhunter -c --sk

Софтина проверит всю систему на наличие руткитов и выведет на экран результаты. Если зловред все-таки найдется, rkhunter укажет на место и его можно будет затереть. Более детальный лог располагается здесь: /var/log/rkhunter.log. Запускать rkhunter лучше в качестве cron-задания ежедневно:

$ sudo vi /etc/cron.daily/rkhunter.sh
#!/bin/bash
/usr/bin/rkhunter -c --cronjob 2>&1 | mail -s "RKhunter Scan Results" vasya@email.com

Заменяем email-адрес Васи на свой и делаем скрипт исполняемым:

$ sudo chmod +x /etc/cron.daily/rkhunter.sh

Базу rkhunter рекомендуется время от времени обновлять с помощью такой команды:

$ sudo rkhunter --update

Ее, кстати, можно добавить перед командой проверки в cron-сценарий. Еще два инструмента поиска руткитов:

$ sudo apt-get install tiger
$ sudo tiger
$ sudo apt-get install lynis
$ sudo lynis -c

По сути, те же яйца Фаберже с высоты птичьего полета, но базы у них различные. Возможно, с их помощью удастся выявить то, что пропустил rkhunter. Ну и на закуску debsums — инструмент для сверки контрольных сумм файлов, установленных пакетов с эталоном. Ставим:

$ sudo apt-get install debsums

Запускаем проверку:

$ sudo debsums -ac

Как всегда? запуск можно добавить в задания cron.

rkhunter за работой

В моей системе руткитов нет


За пределами

Теперь поговорим о том, как сохранить свою анонимность в Сети и получить доступ к сайтам и страницам, заблокированным по требованию различных организаций-правообладателей и прочих Мизулиных. Самый простой способ сделать это — воспользоваться одним из тысяч прокси-серверов по всему миру. Многие из них бесплатны, но зачастую обрезают канал до скорости древнего аналогового модема.

Чтобы спокойно ходить по сайтам и только в случае необходимости включать прокси, можно воспользоваться одним из множества расширений для Chrome и Firefox, которые легко находятся в каталоге по запросу proxy switcher. Устанавливаем, вбиваем список нужных прокси и переключаемся на нужный, увидев вместо страницы табличку «Доступ к странице ограничен по требованию господина Скумбриевича».

В тех ситуациях, когда под фильтр попал весь сайт и его адрес внесли в черный список на стороне DNS-серверов провайдеров, можно воспользоваться свободными DNS-серверами, адреса которых опубликованы здесь. Просто берем два любых понравившихся адреса и добавляем в /etc/resolv.conf:

nameserver 156.154.70.22
nameserver 156.154.71.22

Чтобы разного рода DHCP-клиенты и NetworkManager’ы не перезаписали файл адресами, полученными от провайдера или роутера, делаем файл неперезаписываемым с помощью расширенных атрибутов:

$ sudo chattr +i /etc/resolv.conf

После этого файл станет защищен от записи для всех, включая root.

Чтобы еще более анонимизировать свое пребывание в Сети, можно воспользоваться также демоном dnscrypt, который будет шифровать все запросы к DNS-серверу в дополнение к прокси-серверу, используемому для соединения с самим сайтом. Устанавливаем:

$ wget http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.3.2.tar.bz2
$ bunzip2 -cd dnscrypt-proxy-*.tar.bz2 | tar xvf -
$ cd dnscrypt-proxy-*
$ sudo apt-get install build-essential
$ ./configure && make -j2
$ sudo make install

Указываем в /etc/resolv.conf loopback-адрес:

$ vi /etc/resolv.conf
nameserver 127.0.0.1

Запускаем демон:

$ sudo dnscrypt-proxy --daemonize

Кстати, версии dnscrypt есть для Windows, iOS и Android.


Луковая маршрутизация

Что такое луковая маршрутизация? Это Tor. А Tor, в свою очередь, — это система, которая позволяет создать полностью анонимную сеть с выходом в интернет. Термин «луковый» здесь применен относительно модели работы, при которой любой сетевой пакет будет «обернут» в три слоя шифрования и пройдет на пути к адресату через три ноды, каждая из которых будет снимать свой слой и передавать результат дальше. Все, конечно, сложнее, но для нас важно только то, что это один из немногих типов организации сети, который позволяет сохранить полную анонимность.

Тем не менее, где есть анонимность, там есть и проблемы соединения. И у Tor их как минимум три: он чудовищно медленный (спасибо шифрованию и передаче через цепочку нод), он будет создавать нагрузку на твою сеть (потому что ты сам будешь одной из нод), и он уязвим для перехвата трафика. Последнее — естественное следствие возможности выхода в интернет из Tor-сети: последняя нода (выходная) будет снимать последний слой шифрования и может получить доступ к данным.

Тем не менее Tor очень легко установить и использовать:

$ sudo apt-get install tor

Все, теперь на локальной машине будет прокси-сервер, ведущий в сеть Tor. Адрес: 127.0.0.1:9050, вбить в браузер можно с помощью все того же расширения, ну или добавить через настройки. Имей в виду, что это SOCKS, а не HTTP-прокси.


Борьба с флудом

Приведу несколько команд, которые могут помочь при флуде твоего хоста.

Подсчет количества коннектов на определенный порт:

$ netstat -na | grep ":порт\ " | wc -l

Подсчет числа «полуоткрытых» TCP-соединений:

$ netstat -na | grep ":порт\ " | grep SYN_RCVD | wc -l

Просмотр списка IP-адресов, с которых идут запросы на подключение:

$ netstat -na | grep ":порт\ " | sort | uniq -c | sort -nr | less

Анализ подозрительных пакетов с помощью tcpdump:

# tcpdump -n -i eth0 -s 0 -w output.txt dst port порт and host IP-сервера

Дропаем подключения атакующего:

# iptables -A INPUT -s IP-атакующего -p tcp --destination-port порт -j DROP

Ограничиваем максимальное число «полуоткрытых» соединений с одного IP к конкретному порту:

# iptables -I INPUT -p tcp --syn --dport порт -m iplimit --iplimit-above 10 -j DROP

Отключаем ответы на запросы ICMP ECHO:

# iptables -A INPUT -p icmp -j DROP --icmp-type 8

Выводы

Вот и все. Не вдаваясь в детали и без необходимости изучения мануалов мы создали Linux-box, который защищен от вторжения извне, от руткитов и прочей заразы, от непосредственно вмешательства человека, от перехвата трафика и слежки. Остается лишь регулярно обновлять систему, запретить парольный вход по SSH, убрать лишние сервисы и не допускать ошибок конфигурирования.