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

Задачи на собеседованиях. Задачи от компании Abbyy

Вопросы на собеседовании в стиле «почему крышка от канализационного люка круглая?» — это с…