Содержание статьи
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
После этого нужно в настройках интерфейса сменить язык на русский. Теперь переходим к наиболее интересному — к изменениям самого редактора. Для этого я настоятельно рекомендую прочесть и выполнить данные в статье рекомендации. Думаю, после этих нехитрых действий ты получишь удобный и радующий глаз рабочий инструмент.
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 это не касается.
Q: Всегда интересовало, как работает компас на андроид-девайсах. Можешь рассказать?
A: Конечно! Принцип его работы довольно прост: он определяет, в какую сторону повернут мобильный телефон, и выдает данные на экран. Работает компас на базе GPS-навигатора, с помощью которого сигнал поступает на датчик, установленный в телефоне. Примерный алгоритм такой:
- По сигналам со спутников снимаем показания координат приемника, в нашем случае телефона.
- Отмечаем время, когда были определены координаты.
- Делаем тайм-аут для более точного определения координат.
- Повторяем пункты 1–3.
- Решается навигационная задача: из полученных координат двух точек и размера временного интервала вычисляется вектор скорости движения, после чего, зная вектор, мы с легкостью получаем направление движения и скорость движения. Здесь стоит учесть, что, если стоять на одном месте, эти точки будут равны и определить направление будет весьма затруднительно. Даже при малом движении на карте будут две точки, которые придадут более точные измерения.
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 ШАГОВ: Система бэкапов
Если много рабочих станций и серверов, то хочется использоваться какую-то хорошую систему для бэкапов данных, с должной защитой последних. Также хочется иметь возможность тонкой настройки и многоплатформенность. Какую систему можно использовать для этих целей?
- Я рекомендую использовать open source проект Bacula. Bacula состоит из нескольких демонов, каждый из которых несет свою функциональную нагрузку. Скачать можно отсюда. Система построена по технологии клиент-сервер и для передачи данных использует протокол TCP. Бэкапы создаются в собственном, полностью открытом формате. Bacula состоит из четырех основных элементов: Director Daemon, Storage Daemon, File Daemon и Bacula Console. Все эти элементы реализованы в виде самостоятельных приложений.
- Director Daemon — это центральный элемент системы, управляющий ее остальными компонентами. Проще говоря, это диспетчер, который инициирует все процессы и отслеживает ход их выполнения. Storage Daemon — приложение, отвечающее за чтение/запись данных непосредственно на устройства хранения информации. File Daemon осуществляет обращение к резервируемым файлам и их дальнейшую передачу к SD. Также на стороне FD выполняется шифрование резервных копий, если это определено конфигурацией.
- Bacula Console — интерфейс администратора сиcтемы. Также Bacula Console может быть расширена с помощью GUI. К примеру, Tray Monitor и Bat. Первая устанавливается на компьютере админа и осуществляет наблюдение за работой системы резервирования, а вторая обеспечивает возможность управления. Bacula Catalog — база данных, в которой хранятся сведения обо всех зарезервированных файлах и их местонахождении в резервных копиях. Каталог необходим для обеспечения эффективной адресации к требуемым файлам. Поддерживаются базы MySQL, PostgreSQL и SQLite.
- Теперь о конфигурационных файлах демонов Bacula. Файлы конфигурации всех демонов Bacula состоят из описаний, так называемых ресурсов. Каждый из ресурсов характеризует определенный функционал демона. Более подробно можно прочесть в полной документации на сайте, где весьма полно описаны все возможности. Для использования уже готовых конфигов можно обратиться к ресурсу вики.
- По защите информации система поддерживает следующее:
- Все сервисы авторизуются с использованием 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 проходят в рамках пиара компании-организатора, что вносит свой определенной уклон, который может в корне не совпасть с твоей деятельностью.