Q: У меня нет необходимости делать архивную копию всей системы, поэтому я веду архив на двух флешках. Их объемы в 64 Гб меня вполне устраивают. Однако данные становятся все более и более разнообразными, и, чтобы избежать ошибок разрушения архивных данных при копировании их из архива и иметь возможность его пополнять (то есть, по сути, работать с моим архивом), я собираюсь защитить флешки режимами «только чтение» и «чтение и запись». Подскажи: как это можно сделать? Использую ОС Windows и Linux.

A: Вопрос довольно интересный. Здесь есть несколько вариантов, имеющих свои плюсы и минусы. Начнем с самого простого. Для защиты от записи можно использовать тулзу fsutil. Суть ее проста. На флешке определяется свободное пространство и целиком заполняется. В итоге на ней просто нет места и файлы записывать некуда. Но есть и минус: некоторые вирусы пишут себя с заменой оригинала такого же размера, что может привести к плачевным результатам. Другой вариант — поставить пароль на доступ к флешке, зашифровать. Но и тут есть как преимущества, так и недостатки. Из последних — сбой по питанию может вывести из строя шифрованный контейнер, что окончательно убьет всю информацию. Также шифрование весьма негативно сказывается на сроке жизни флеш-накопителей. Последний вариант — это использование хардварного переключателя режима чтения и записи. Такой стоит на SD-картах памяти. При соответствующем навыке такой переключатель можно добавить и на обычную флешку. Что здесь выбрать, каждый решает сам, в зависимости от ценности информации и удобства пользования. Важно помнить только одно: никакой из способов не заменит полноценного бэкапа.

Q: Стоит убунта, с ядром 3.13, поставил на нее VirtualBox. В итоге он не работает. Его версия 4.12, ставил из репозитория дистрибутива. Вываливается ошибка kernel driver not installed. Что можно сделать?

A: Нужно поставить VirtualBox более новой версии с официального сайта. И поставить из deb-пакетов. Перед этим еще нужно не забыть удалить предыдущую версию из системы.

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

A: Для начала давай займемся русификацией. Для этого выполни в терминале

sudo apt-get install gimp-data language-pack-gnome-ru-base language-pack-gnome-ru

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

GIMP

Q: Решил себе на старенький компьютер поставить USB-модем. Стоит на нем Win XP. После установки интернет-модема вылетел синий экран смерти с цифрами 0x00000044, как теперь быть с покупкой?

A: Полное название данной ошибки — MULTIPLE_IRP_COMPLETE_REQUESTS, и появляется она при попытке драйвера завершить IRP, который уже завершен. В системе происходит следующее. Драйвер вызывает функцию IoCompleteRequest(), чтобы завершить IRP, но пакет уже завершен и вываливается в бсод. Данная бага весьма сложна в выявлении, так как драйвер, который пытается завершить собственный пакет дважды, чаще всего не является источником траблы. Наиболее распространенный вариант — когда два разных драйвера считают, что они рулят одним и тем же пакетом, и каждый пытается его завершить. Первый запрос успешно выполняется, а второй вызывает 0x00000044. Для решения данной ошибки нужно определить самого умного. Для этого нужно проанализировать дамп памяти. Сделать это можно, включив в настройках системы при краше записывать малый дамп памяти, после чего расшифровать его онлайн-сервисом, к примеру этим, или воспользоваться тулзой kdfe. О ней уже не раз писали на страницах журнала; если забыл или пропустил, можно посмотреть здесь. Когда виновник найдется, его нужно либо удалить, либо переустановить.

Q: В жизни каждого админа наступает период, когда хочется автоматизировать все по полному. Вот и до меня он докатился. Хочу наладить автоматизацию подключения по ssh, чтобы скрипт сам вводил пароли и отвечал на вопросы консоли. Каким инструментом это можно реализовать?

A: Автоматизация — дело хорошее. Для этих целей тебе поможет expect. Это утилита, которая парсит потоковый вывод консольных программ и в ответ на них отправляет заранее предусмотренный ответ. Перейдем сразу к примеру:

#!/usr/bin/expect
spawn ssh <user_name>@server
expect "password:"
send "<pass>\r"

Как видишь, ничего сложного нет. В первой строке объявляем, что будет использоваться наша утилита. Затем задаем команду, в нашем случае это ssh. Ждем запрос пароля от консоли и в последней строке отправляем наш пароль. По подобному принципу можно писать и более сложную автоматизацию. Скажем, подключение по FTP или установку и настройку каких-либо консольных утилит.

Q: Сижу разбираюсь в премудростях IIS. Никак не могу понять, что же такое пул в IIS, простыми словами. А из-за справки от MS в голове полный кавардак…

A: Если совсем вкратце, то пул отделяет веб-приложения между собой по разным процессам. Скажем, у тебя есть два пула. На первом сидит один сайт, а на другом двадцать. Если сайт на первом пуле вызовет какую-то ошибку и пул рухнет (а такое бывает), то отвалится только один сайт, те двадцать он никак не затронет, потому что они отделены границами процесса от него. Соответственно, если ошибку и соответствующий краш вызовет один из сайтов второго пула, уйдут в даун все сайты на пуле. Можно резюмировать. Все веб-приложения в пуле приложений выполняются одним и тем же рабочим процессом. Поскольку каждый рабочий процесс работает в качестве отдельного программного объекта, файла W3wp.exe, рабочий процесс, обслуживающий один пул приложений, изолирован от рабочих процессов, обслуживающих другой пул. Такая изоляция веб-приложений пулами улучшает их безопасность: уменьшается вероятность того, что одно приложение получит доступ к ресурсам другого. Более того, это разделение ограничивает веб-приложения одного пула от влияния находящихся на том же веб-сервере приложений из другого пула. Например, если одно веб-приложение не выполняется или использует слишком много ресурсов веб-сервера, то это не влияет на приложения в других пулах того же веб-сервера. Именно поэтому крупные проекты лучше всего сажать на отдельный пул.

Q: Какие виды анализа кода существуют?

A: Наиболее распространены DAST и SAST. О них и расскажу. DAST — динамический, иными словами требующий выполнения, анализ безопасности приложения без доступа к исходному коду и среде исполнения серверной части.

SAST — статический, или не требующий выполнения, анализ безопасности приложения, с доступом к исходному коду приложения серверных и клиентских частей. Первый — самый простой и распространенный способ поиска уязвимостей. Всякий раз, вставляя в каждое поле мудреную строку// , именно DAST ты и применяешь. Также его модуль используется в таких сканерах, как Nessus, w3af и sqlmap. Из минусов можно отметить, что не все точки входа будут найдены и чем более серьезный проект и используемые им технологии, тем дольше процесс, причем в днях и неделях. Плюс КПД сканера стремится к нулю. По SAST можно отметить, что по его методам обнаружения уязвимостей формируется огромное количество ложных срабатываний. Цифры за 10к далеко не предел. Поэтому выбирать инструмент нужно с умом и не забывать, что сканер никогда не найдет того, что способен увидеть человек.

Q: Захотелось рулить шедулером из командной строки. Как можно добавлять задания в таск шедулера через консоль… на винде?

A: Для этого есть аж две команды, которые тебе помогут. Первая — at. Скажем, тебе нужно добавить таск, который будет выполняться каждый день в 2:00, тогда команда будет такой:

at 02:00 /every:su,m,t,w,th,f,s "c:\Program\script.bat"

Для задач посложнее я советую воспользоваться schtasks. Для ознакомления со всеми возможностями данной утилиты выполняем стандартную команду:

schtasks /?

А для примера создадим таск, который будет выполняться каждые десять минут от имени системы (NT AUTHORITY\SYSTEM):

schtasks /create /sc minute /mo 10 /tn "Пример таска" /tr c:\Program\script.bat /ru "System"

Q: Стоит Linux Mint 15, на нем скайп, с версией 4.2. Все бы хорошо, но он неожиданно перестал работать... Говорит, ошибка соединения, никаких прокси или проблем со связью нет. Пробовал обновить пакет, но в репозиториях эта версия финальная. Что это и с чего бы вдруг скайп себя так решил повести?

A: Скайп вышел уже версии 4.3. Поэтому, похоже, и проблемы с подключением. Хотя, надо сказать, такой баг встречается далеко не на всех машинах с подобными конфигурациями. С чем это связано, одним разработчикам известно. Но выход есть. Для этого нужно удалить старую версию, запустить из консоли:

sudo apt-get remove skype skype-bin:i386 skype:i386

Теперь добавим репозиторий:

sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"

Остается только поставить новые пакеты:

sudo apt-get update
sudo apt-get install skype && sudo apt-get -f install

После этого скайп обновлен. Кстати, стоит отметить, что поддержки ALSA больше нет. Предлагается использовать PulseAudio. И если используется только ALSA, то смысла обновляться нет, звука не будет. Дистрибутива Ubuntu это не касается.

Skype

Q: Всегда интересовало, как работает компас на андроид-девайсах. Можешь рассказать?

A: Конечно! Принцип его работы довольно прост: он определяет, в какую сторону повернут мобильный телефон, и выдает данные на экран. Работает компас на базе GPS-навигатора, с помощью которого сигнал поступает на датчик, установленный в телефоне. Примерный алгоритм такой:

  1. По сигналам со спутников снимаем показания координат приемника, в нашем случае телефона.
  2. Отмечаем время, когда были определены координаты.
  3. Делаем тайм-аут для более точного определения координат.
  4. Повторяем пункты 1–3.
  5. Решается навигационная задача: из полученных координат двух точек и размера временного интервала вычисляется вектор скорости движения, после чего, зная вектор, мы с легкостью получаем направление движения и скорость движения. Здесь стоит учесть, что, если стоять на одном месте, эти точки будут равны и определить направление будет весьма затруднительно. Даже при малом движении на карте будут две точки, которые придадут более точные измерения.

Q: Какие есть утилиты нагрузочного тестирования сайта? Ну, кроме апачевского ab, конечно.

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

Q: Появилась задача просмотреть логи IIS. Вроде просто, но столбцов много, а что они означают — не совсем понятно. Поможешь?

A: Да! Смотри, там 15 столбцов, выкладываю названия на английском, с небольшими пояснениями для упрощения:

Client IP address — IP-адрес клиента.
User name — пользователь.
Date — дата.
Time — время.
Service and instance — инстанс или служба и образец. К примеру, MSFTPSVC1 для FTP.
Server name — имя сервера.
Server IP address — IP сервера.
Time taken — время, затраченное на выполнение запроса.
Client bytes sent — сколько байт отправлено клиентом.
Server bytes sent — сколько байт отправлено сервером.
Service status code — код статуса сервера, к примеру 200 OK.
Windows status code — код состояния винды.
Request type — тип запроса. 
Target of operation — таргет или объект операции, куда идет обращение.
Parameters (the parameters that are passed to a script) — параметры.

В файле журнала значения всех полей заканчиваются запятой (,). Дефис печатается как прототип для полей, не имеющих допустимого значения.


 

"БОЛЬШОЙ ВОПРОС": Налаживаем диалог.

Q: Как сделать взаимодействие с пользователем через bash-скрипты?

A: Покажу несколько классных примеров, которые можно использовать в своих скриптах. Один из способов сообщить данные программе — указать при запуске в командной строке. Содержатся эти параметры в переменных с номерами, что логично. К примеру: $0 — имя скрипта, $1 — первый параметр, $2 — второй параметр, и далее в таком же духе. Также существуют две вспомогательные переменные: $# содержит количество переданных аргументов и $@ содержит все аргументы, переданные скрипту, разделенные пробелами. Перейдем к вопросам и ответам да/нет:

case "$perem" in
y|Y) echo "Ввели «y», едем дальше..."
    ;;
n|N) echo "Ввели «n», завершение программы..."
    exit 0
    ;;
*) echo "Действие по дефолту..."
    ;;
esac

Так же интересно выглядят сообщения Fail/Ok, которые появляются справа под каждым действием скрипта:

SETCOLOR_SUCCESS="echo -en \33[1;32m"
SETCOLOR_FAILURE="echo -en \33[1;31m"
SETCOLOR_NORMAL="echo -en \33[0;39m"
# Команда, к которой будут выведены наши сообщения
rm test_file
if [ $? -eq 0 ]; then
    $SETCOLOR_SUCCESS
    echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
    $SETCOLOR_NORMAL
    echo
else
    $SETCOLOR_FAILURE
    echo -n "$(tput hpa $(tput cols))$(tput cub 6)[fail]"
    $SETCOLOR_NORMAL
    echo
fi

И на десерт — выбор ответа на примере select:

select item in "Xakep" "Mega Xakep"
do
  echo
  echo "You $item!"
  echo
  break
done

Пример взаимодействия


 

5 ШАГОВ: Система бэкапов


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

  1. Я рекомендую использовать open source проект Bacula. Bacula состоит из нескольких демонов, каждый из которых несет свою функциональную нагрузку. Скачать можно отсюда. Система построена по технологии клиент-сервер и для передачи данных использует протокол TCP. Бэкапы создаются в собственном, полностью открытом формате. Bacula состоит из четырех основных элементов: Director Daemon, Storage Daemon, File Daemon и Bacula Console. Все эти элементы реализованы в виде самостоятельных приложений.
  2. Director Daemon — это центральный элемент системы, управляющий ее остальными компонентами. Проще говоря, это диспетчер, который инициирует все процессы и отслеживает ход их выполнения. Storage Daemon — приложение, отвечающее за чтение/запись данных непосредственно на устройства хранения информации. File Daemon осуществляет обращение к резервируемым файлам и их дальнейшую передачу к SD. Также на стороне FD выполняется шифрование резервных копий, если это определено конфигурацией.
  3. Bacula Console — интерфейс администратора сиcтемы. Также Bacula Console может быть расширена с помощью GUI. К примеру, Tray Monitor и Bat. Первая устанавливается на компьютере админа и осуществляет наблюдение за работой системы резервирования, а вторая обеспечивает возможность управления. Bacula Catalog — база данных, в которой хранятся сведения обо всех зарезервированных файлах и их местонахождении в резервных копиях. Каталог необходим для обеспечения эффективной адресации к требуемым файлам. Поддерживаются базы MySQL, PostgreSQL и SQLite.
  4. Теперь о конфигурационных файлах демонов Bacula. Файлы конфигурации всех демонов Bacula состоят из описаний, так называемых ресурсов. Каждый из ресурсов характеризует определенный функционал демона. Более подробно можно прочесть в полной документации на сайте, где весьма полно описаны все возможности. Для использования уже готовых конфигов можно обратиться к ресурсу вики.
  5. По защите информации система поддерживает следующее:
- Все сервисы авторизуются с использованием CRAM-MD5.
- Сервисы Director и Storage могут быть запущены от имени обычного пользователя.
   - Сигнатуры MD5, SHA-1 для каждого файла в архиве.
- Контрольная сумма CRC для каждого блока, записанного на том (Volume).
- Использование ACL для управляющей консоли.
- Шифрование обмена с помощью TLS.
- Шифрование данных с помощью PKI.
- Проверка данных, похожая на систему обнаружения атак Tripwire.

Как видишь, система стоит того, чтобы ее изучить и использовать в своей работе.


 

ОДНОЗНАЧНОГО ОТВЕТА НЕТ: Born to frag


Q: Есть ли смысл участия в различных CTF?

ОТВЕТ1

A. Конечно! Где же еще можно набраться опыта по взлому? Да еще и в режиме соревнования. И с разбором заданий (врайтапов) после проведения CTF. Также командный дух и захватывающие сюжеты игр прилагаются. В рамках некоторых CTF попадают даже задания по локпикингу, поиску полезной инфы в мусоре и прочее.

ОТВЕТ2

B. Многие CTF основаны на заданиях, которые в реальной жизни никогда не встретишь. Да, это прибавляет живости ума решать нестандартные задачи, но подобные скиллы весьма косвенно можно использовать в повседневности. Плюс многие CTF проходят в рамках пиара компании-организатора, что вносит свой определенной уклон, который может в корне не совпасть с твоей деятельностью.

CTF


Check Also

DDoS на Bluetooth. Разбираем трюк, который поможет отключить чужую колонку

На свете существует не так много вещей, которые бесят практически всех без исключения. Это…

Оставить мнение