Показаны сообщения с ярлыком Linux. Показать все сообщения
Показаны сообщения с ярлыком Linux. Показать все сообщения

25 июл. 2019 г.

Albert: продвинутый launcher для Linux

Albert dropdown screenshot

В дополнение к AutoKey давненько уже подсел на своей линуксовой рабочей станции на запускатель (и не только) приложений Albert. Тулза покрывает функциональность штатного приложения (в Ubuntu оно побогаче, в Mint-е поскромнее) и добавляет массу новых функций, включая расширение плагинами на питоне. Визуально это всплывающая строка вода с выпадающим списком опций.
Из коробки идет выполнение приложений, которые видны в $PATH, поиск файлов по имени, выполнение простых математических вычислений прямо в строке ввода (как в спотлайте и Alfred-е в macOS), которого сильно не хватает в Windows, открытие введенной строки в виде поискового запроса в дефолтном браузере, выполнение терминальных команд. Дефолтные плагины добавляют фичи типа конвертирования единиц измерения, работы со словарем, подыскивания смайликов по введенной строке, и прочие. Сильно рекомендую, ибо после него штатные запускатели кажутся крайне куцими.
Alfred, кстати, еще более комбайный комбайн. Но он только под macOS разрабатывается.

24 июл. 2019 г.

AutoKey: десктопная автоматизация для Linux

Некоторое время уже пользую утилиту AutoKey на рабочем компе под Linux Mint. Под Ubuntой тоже работает. Думаю, под остальными дистрибутивами тоже пойдет.
Основная фича программки — выполнение различных действий по хоткеям. Поддерживается скриптование на собственном языке и на питоне.
Основной паттерн использования тулзы для меня — вставка некоторых особо часто используемых строк (типа корпоративного почтового адреса при авторизации — он символов 30 занимает) либо редко используемых и потому часто забываемых консольных команд. Для ввода последнего использую функцию контекстного меню, в котором забиты короткие имена для команд. Поскольку текст вставляется через буфер клавиатуры, то работает и в графических приложениях, и в терминальных окнах. Особенно удобно для выполнения рутинных действий на разных серверах раз в месяц. Да и на каждый день тоже — слепой набор хорошо, но нажать 3 клавиши вместо 50 все равно будет быстрее.
Но мой паттерн использования — это процентов 10 от возможностей программки. Благодаря синергии командной строки и графического интерфейса Xorg автоматизировать можно очень многое.
Рекомендую, в общем.

3 июн. 2015 г.

Telnet over SSL

Все люди, хоть немного связанные с компьютерами, знают, что для проверки и простейших операций с удаленным хостом можно использовать старый дырявый телнет (ведь правда знают?):

telnet somehost.com 8080
Но иногда нужно подключиться к хосту по SSL (secure) подключению. Тогда можно использовать openssl:
openssl s_client -connect somesite.com:443

5 апр. 2014 г.

Notebook HP nx6125: Скрытые возможности

Есть у меня на хозяйстве вот такой старичок — HP Compaq nx6125. 2006 года выпуска. Машинка качественная, хорошо подогнанная, для своего времени очень мощная. На данный момент ее хватает только чтоб серфить в инете да фильмочки смотреть оттуда же. Для этого, собственно, и пользуем ее. Есть у нее стандартная ноутбуковская фича — тачпад. С двумя кнопками. Одна из первых, насколько я помню, получила специальную Scroll Zone на тачпаде — специальная вертикальная зона в правой части окошка, перемещение пальца в которой рассматривается как прокрутка колеса скроллинга мыши. Фишка стандартная и далеко не часто используемая. 
Однако недавно поставил я на него Linux Mint 16. И с удивлением заметил, что появился двухпальцевый скроллинг a-la Apple. То есть на момент производства этого аппарата (а это было не позднее 2005 года) уже существовали и использовались устройства ввода с мультитачем! Только вот программно они не поддерживались. Возникает вопрос: какие еще скрытые возможности есть у старых железок? Что этот ноут выкинет при очередном обновлении Линукса?

25 июл. 2012 г.

Bash, echo "1\n2" игнорирует "\n"

Столкнулся с тем, что Bash-скрипт не хочет преобразовывать символ "\n" в символ перевода строки. Команда
rettpop@host$ echo "Line1\nLine2"
Line1\nLine2

так и выводится. Оказалось, что в заголовке скрипта исполнителем прописан имеено Bash:
#!/bin/bash

Заменил эту строку на
 #!/bin/sh
 и все стало на свои места.
rettpop@host$ echo "Line1\nLine2"
Line1 Line2

Вообще, рекомендуется в шелл-скриптах *x-систем указывать исполнителем именно /bin/sh, т.к. это в основном символическая ссылка на оболочку по-умолчанию. Пруф-линк не приведу, но мои предпочтения подтверждались в старинных манускриптах по Юниксу.

17 июн. 2012 г.

SVN + Apache + Nginx. Ошибка коммита изображений

После переезда на новый хостинг столкнулся с тем, что SVN не хочет коммитить файлы изображений (jpg, png, etc). Выдает примерно такие ошибки:
Adding  (bin)  icon57x57.jpg
svn: Commit failed (details follow):
svn: Server sent unexpected return value (405 Not Allowed) in response to PROPFIND request for '/svn/!svn/wrk/6ec81701-d224-4232-851b-23f6d87b9e06/Bzzzer2/icon57x57.jpg'
svn: Server sent unexpected return value (405 Not Allowed) in response to PROPFIND request for '/svn/Bzzzer2/icon57x57.jpg'
Оказалось, что на сервере установлен Nginx, который и мешает загрузке картинок на сервер. Остальные файлы он игнорирует, ибо они не относятся к вебу - проекты Objective-C и C++. Для исправления этого положения нужно внести директорию репозитория в список игнорируемых Nginx-ом путей. Делается это в разделе
location ~* ^/(awstats/|webmail/|phpmyadmin/|server-status/|backups/|svn/) {^M
                        proxy_pass http://80.91.191.246:8080;^M
                        proxy_redirect http://sapisoft.com:8080/ /;^M
                        proxy_set_header Host $host;^M
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;^M
                        proxy_set_header X-Real-IP $remote_addr;^M
                }^M
соответствующего файла конфигурации соответствующего хоста, например /etc/nginx/vhosts/yourhost.com.cfg

10 февр. 2012 г.

Linux. Многопоточный консольный download-клиент

Стандартным дефакто ftp/http download-клиентом для *x систем является wget. Но у него отсутствует одна важная фича (которая, впрочем, с утолщением клиентских интернет-каналов постепенно нивелируется) - многопоточная загрузка файлов. Если толщина клиентского канала больше, чем отдает сервер, можно попробовать ускорить закачку используя несколько потоков. Тут на выручку приходит Axel Download Accelerator - последователь идеологии KISS и продолжатель функций wget. Он умеет создавать указанное количество потоков закачки (ежели, конечно, сервер такое позволяет). И дополнительные плюшки в виде индикации процесса, поиска зеркал, и прочих.
В Ubuntu он ставится через apt. Предполагаю, что для rpm-репозиториев тоже есть сборки. Ну, и сборку из сорцов еще тоже никто не отменял.

3 февр. 2012 г.

Linux. Однострочники

Сделать что-то с файлами в текущей директории:
for f in *; do {do_any_command_with_} $f; {do_one_more_command_with_} $f; {do_one_extra_command_with_} $f; done
И вариант с циклом по конечной последовательности индексов:
for ((i=1;i<=10;++i)); do echo $i; done

2 июн. 2011 г.

Девушки, аднака...

А теперь поговорим о девушках...


Генетика женская видать мзменяется постепенно.

17 мар. 2011 г.

Copypast: Плюс 100 к защите: Круговая оборона Linux десктопа

Копипаст статьи "Плюс 100 к защите: Круговая оборона Linux десктопа" с сайта Xakep.ru.Fdnjh - Евгений Зобнин. Ничего супернового, но как напоминалка - хорошая статейка. Имхо.

Плюс 100 к защите: Круговая оборона Linux десктопа

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

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

  1. Человек – существо общественно-зависимое. В любой сфере жизни нас окружают люди. Дом, место учебы, работа – везде и всегда мы находимся в обществе других людей, не все из них чисты на руку, бескорыстны и холодны к чужим секретам. Поэтому первая линия обороны – это, конечно же, обеспечение защиты от физического доступа к машине во время нашего отсутствия.
  2. Интернет полон придурков, кул-хацкеров и просто любопытных людей. Никто из нас не хочет подвергнуться взлому со стороны одного из них (или всех сразу). Поэтому вторая линия обороны – это защита сетевых рубежей от вторжения.
  3. Взломав машину, те самые придурки, кул-хацкеры и просто любопытные люди захотят получить доступ к нашим важным данным, включая пароли, сертификаты, кукисы и архивы баз данных, которые мы стащили, взломав чужую машину. Поэтому третья линия обороны – защита конфиденциальных данных от посторонних глаз с помощью сокрытия информации или шифрования.
  4. Получив желаемое, ПКЛ (придурки, кул-хацкеры, любопытные) захотят оставить на твоей машине черный ход, который в будущем будут использовать для регулярного обновления своего архива твоими данными, а также для рассылки спама или проведения DDoS. Четвертая линия обороны – проверка системы на наличие руткитов и прочей дряни.
  5. Даже если ПКЛ не засунут в недра машины свой бэкдор или DOS-бота, они все равно захотят уйти в чисто английской манере, не оставив после себя не только нежного «Тебя поимели, пупсик» (хотя первые два представителя тройки это, скорее всего, сделают), но и логов и другого доказательства своей вины и контактных данных. Во избежание их безнаказанности следует использовать пятую (и окончательную) линию обороны под названием аудитинг.

Это и есть пять основных рубежей, грамотно организовав защиту каждого из которых, ты сведешь вероятность быть поломанным к цифре, маячащей где-то далеко позади 0,1%.

От машины руки прочь!

Методы защиты от физического проникновения на твою машину весьма просты. Достаточно представить себя на месте подлеца, и все становится предельно ясно. Во-первых, мы можем просто продолжить работу с системой, потому как многие даже не удосуживаются заблокировать экран во время своего ухода. Правило первое: всегда блокируй экран (в большинстве сред ). Во-вторых, мы можем попробовать подобрать пароль, который нередко бывает равен комбинациям вроде «qwerty» или «123». Правило второе: используй сложные и надежные пароли (о том, как их придумать, читай в боковом выносе INFO). Мы можем перезагрузить компьютер и с помощью GRUB загрузить ОС в однопользовательском режиме, получив полный контроль над системой. Правило третье: установи пароль на GRUB (об этом во врезке).

Увидев, что GRUB запаролен, мы можем войти в меню BIOS, установить в качестве первого загрузочного устройства CD-ROM и загрузиться с LiveCD, получив полный доступ к содержимому жесткого диска. Правило четвертое: настрой загрузку только с жесткого диска и поставь пароль на BIOS. Но это нас не остановит: мы снимем крышку с корпуса и сбросим настройки CMOS вместе с паролем, просто вынув батарейку на несколько секунд. Правило пятое: покупай корпус с замком. Увидев замок на корпусе, мы забираем весь системник с собой и разбираем его на ближайшей свалке. Правило шестое: всегда пристегивай системник к батарее с помощью цепи.

Последнее правило, конечно же, шутка, но и в ней есть доля правды: эффективность защиты от физического доступа падает прямо пропорционально росту наглости взломщика. Кстати, есть еще одна рекомендация, связанная с запираемыми на замок системниками. Большинство из них имеют переднюю крышку, которая также обеспечивает некоторую защиту CD-привода, USB-разъемов и кнопок включения/сброса. Однако мы всегда можем зажать на клавиатуре для перезагрузки машины. Но комбинация не сработает, если открыть файл /etc/inittab, закомментировать строку «ca::ctrlaltdel:/sbin/shutdown -t3 -r now» и выполнить команду «/sbin/init q».

Угроза извне

Те, кто пролезает на машину жертвы из Сети, обычно используют несколько простых и проверенных приемов. Самое простое, что может сделать злоумышленник – просканировать твою машину на открытые порты и попытаться найти уязвимый сетевой сервис. В борьбе с такими экземплярами фауны кул-хацкеров поможет отключение ненужных демонов, своевременные обновления дистрибутива и чтение моей статьи «Огненная дуга», посвященной правильной настройке брандмауэра (см. ][ от 06.2010). Обломавшись на этом пути, хацкер может попытаться подсунуть тебе троян под видом легальной программы или использовать дыру в браузере. В этом случае все просто: ставь софт из официальных репозиториев дистрибутива, используй правильные браузеры свежей версии.

Поняв безуспешность своих попыток проникновения, взломщик может попробовать провести DoS/DDoS. От хорошей распределенной атаки ты, скорее всего, не спасешься, а вот небольшую волну вполне сможешь выдержать, если будешь следовать рекомендациям, описанным в статье «Устоять любой ценой» (][ от 09.2009).

Хорошей практикой в борьбе с дырами является настройка автоматического обновления ОС, благодаря которому система всегда будет оставаться в свежайшем состоянии. Такие дистрибутивы, как Ubuntu, Fedora, OpenSuSE, уже имеют в своем составе графические напоминалки, которые время от времени выскакивают из трея и сообщают об очередном обновлении. Это удобно, но быстро надоедает, гораздо эффективнее сделать так, чтобы система сама производила обновления в фоне, не отвлекая пользователя от работы. В Ubuntu это делается через графический интерфейс (System -> Administration -> Software Sources -> Updates -> Automatic updates, Install security updates without confirmation) или с помощью модификации файла /etc/apt/apt.conf.d/10periodic:

$ sudo vi /etc/apt/apt.conf.d/10periodic

APT::Periodic::Enable "1";
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "5";
APT::Periodic::Unattended-Upgrade "1";

Замечу, что это относится только к обновлениям безопасности, простой апдейт софта придется производить руками. От возможных дыр в софте также очень эффективны такие системы, как SELinux или AppArmor (уже интегрированные в Ubuntu, OpenSuSE и Fedora), которые просто не позволят уязвимому сервису выполнить код, подсунутый взломщиком (мы не раз писали о настройке популярных расширений безопасности для ОС Linux, подними архив ][).

Свой личный бастион

После проникновения в машину через уязвимый сервис взломщик скорее всего будет иметь очень ограниченные права и возможности (почти все сетевые сервисы в UNIX работают от какого-либо специального пользователя, не имеющего серьезных полномочий в системе), поэтому первое, что он попытается сделать – повысить свои права до root. Наша задача – приложить все силы для того, чтобы помешать ему это сделать, иначе машина окажется полностью в чужих руках. Ниже мы рассмотрим типичные приемы злоумышленников, направленные на получение root, и методы защиты от них.

1. Первым делом хацкер попытается выполнить команду su в надежде на то, что пароль root окажется пустым или настолько простым, что он сможет его подобрать. Мы обезопасим систему, просто добавив в файл /etc/pam.d/su строку «auth required pam_wheel.so» сразу после строки «auth sufficient pam_rootok.so». Теперь право использовать su будет только у пользователей, состоящих в группе wheel (естественно, ты должен себя в нее добавить).

2. Потерпев неудачу в получении прав root обычными методами, взломщик попытается залить на твою машину эксплойт, чтобы добыть права root'а через локальные дыры в безопасности. Но так как его права сильно ограничены, он сможет использовать всего несколько мест для заливки вредоносного кода: общедоступный каталог /tmp и приватный каталог взломанного сервиса (например, корневой каталог веб-сервера или FTP-сервера). Защититься довольно просто, достаточно вынести эти каталоги на отдельные разделы и подключить с опциями noexec (а для верности и nosuid,nodev). Например:

/dev/sda5 /tmp ext2 nosuid,noexec,nodev 0 0

Так взломщик не сможет выполнить свой эксплойт в указанном каталоге. Но не все так просто – знающий человек запустит программу с помощью динамического линковщика и легко обойдет данное ограничение:

$ /lib/ld-linux.so.2 /tmp/exploit

К сожалению, в стандартном ядре Linux защиты от данного вида атак нет, но она есть в патче RSBAC (www.rsbac.org), который в любом случае рекомендуется к установке.

3. Если каким-либо образом взломщику удастся обойти проблему запуска эксплойта, он сможет направить его действие всего в две стороны: ядро ОС или программы, имеющие SUID-бит. Только эти два компонента ОС могут дать ему заветный root-доступ. Но если с ядром все ясно (уязвимость либо есть, либо ее нет), то с SUID-софтом все немного сложнее. Даже если в одной из них будет найдена уязвимость, взлома можно легко избежать, просто сняв SUID-бит с программы. Для этого получи список SUID-софта с помощью find:

$ sudo find / -type f \( -perm -04000 -o \
-perm -02000 \) \-exec ls {} \;

А затем лиши некоторые из программ привилегий исполнения с правами root:

$ sudo chmod a-s /путь/к/бинарнику

Будь осторожным – оставив без прав важные системные программы, ты можешь обрушить всю систему. Как всегда, man в помощь.

4. Один из способов проползти в систему находится в области человеческой безалаберности. Чтобы заставить прочитать свои данные какие-либо важные системные утилиты и таким образом привести их в желаемое состояние, взломщик может найти открытые для всеобщей записи файлы и вставить в них какой-либо код (например, добавить в опции сетевого сервиса возможность входа без пароля или записать в файл код, который сорвет стек утилите, прочитавшей ее). Чтобы избежать такой ситуации, достаточно найти все общедоступные файлы и снять бит записи для всех:

# find /dir -xdev -type d \( -perm -0002 -a \
! -perm -1000 \) -print

5. Потерпев фиаско в борьбе за права суперпользователя, взломщик попытается разнюхать побольше информации о системе и утащить важные данные. В первую очередь это касается данных взломанного сервиса, например, файлов, выложенных на FTP-сервер, или страниц веб-сайта. Фактически защититься от этого можно только вовремя распознав атаку и запретив все подключения с помощью файера (либо просто вытащив кабель из сетевой карты). Второе – это данные о самом сервере, маршрутизация, ближайшие машины и т.д. Обычно их тоже невозможно скрыть без нарушения работоспособности системы. Третье – личные данные пользователей. В большинстве дистрибутивов файлы, создаваемые в домашнем каталоге пользователя, остаются видимыми всем подряд (маска 022), поэтому даже не имея каких-либо серьезных прав в системе, взломщик сможет их прочитать (кроме архиважных файлов с паролями различных программ, которые при создании защищают файл от посторонних). В борьбе с этим поможет одна коротенькая строчка, записанная в файл ~/.profile:

umask 077

Теперь все вновь создаваемые файлы пользователя будут защищены от посторонних глаз. Вообще, по-настоящему безопасная домашняя машина не должна иметь на своем борту никаких сетевых сервисов, кроме совсем важных и необходимых (OpenSSH, например), а если уж припрет выложить в локальную сеть свой файловый архив или сайт, воспользуйся системой виртуализации уровня ОС, такой как FreeBSD Jail или Linux VServer (обе они уже были подробно описаны на страницах журнала).

Кроме сетевых сервисов не исключена возможность подцепить заразу прямо через дыру в веб-браузере или каком-нибудь pidgin. Если такое произойдет – пиши пропало. Взломщик унесет все, включая пароли, сохраненные браузером, личную переписку и всю прочую конфиденциальщину (о методах получения root в этом случае я вообще молчу, их сотни). Даже если твои пароли будут зашифрованы, никто не помешает хацкеру унести все настройки того же Firefox, положить их на свою машину и броузить интернет от твоего имени. Единственное, что можно порекомендовать для защиты от такой ситуации – хранить все конфиденциальные данные на виртуальном разделе и подключать его к системе только по мере необходимости (полное шифрование /home не спасет, потому что взломщик окажется на уже расшифрованном разделе).

Хорошей идеей будет установка модуля Linux-ядра Yama (http://lkml.org/lkml/2010/6/23/25), созданного разработчиками из Canonical. Yama по умолчанию включен в дистрибутив Ubuntu и позволяет защитить систему от некоторых видов локальных атак:

  • Атака через подстановку символьной ссылки в общедоступном каталоге. Некоторые приложения создают во время своей работы символьные ссылки, создаваемые в каталоге /tmp или /var/tmp. В некоторых ситуациях взломщик может подменить эту ссылку, заставив программу обратиться к поддельному файлу. После установки Yama следовать по ссылкам, созданным в таких каталогах, можно будет только в том случае, если UID процесса, открывающего ссылку, и UID владельца ссылки совпадают.
  • Атака с использованием жестких ссылок. Само по себе создание жестких ссылок пользователем, не имеющим доступ к оригинальному файлу, не является проблемой, так как ссылка будет иметь те же права доступа. Однако через создание жесткой ссылки взломщик может подсунуть исходный файл другому привилегированному приложению и раскрыть содержащиеся в нем данные. Yama запрещает создание жестких ссылок пользователям, не имеющим доступа к оригинальному файлу.
  • Атака с использованием системного вызова ptrace. По умолчанию любой процесс может выполнить отладку другого процесса с помощью ptrace, если UID отлаживаемого процесса равен UID, вызвавшего ptrace. Это может привести к тому, что при взломе одного из пользовательских приложений взломщик сможет раскрыть состояние и конфиденциальную информацию другого приложения этого пользователя. Yama разрешает использовать системный вызов ptrace только для отладки процессов-потомков.

Истребляем нечисть

Что ж, мы защитили систему снаружи и внутри, но как обезопасить себя в том случае, если все это не поможет, и взломщик таки проникнет в систему? Попробуем разобраться.

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

Бэкдоры, трояны, боты и все остальные «нелегалы» могут быть как совсем простыми, так и весьма изощренными, выполненными в виде отдельной программы/скрипта, внедренными в легальные программы или же подключенными к ядру с помощью модуля. Однако это не имеет никакого значения, потому как любой нелегал может быть отловлен через анализ системы на модификации (никакой код не может быть внедрен в ОС на любом уровне без модификации окружения исполнения). А главное, что такой анализ легко провести через заблаговременную установку специальных систем, называемых HIDS (Локальные системы обнаружения вторжений).

Одна из самых популярных HIDS, доступных в UNIX-системах, носит имя Tripwire, однако в последнее время она потеряла свои позиции в пользу более открытого аналога под названием AIDE (Advanced Intrusion Detection Environment – продвинутая система обнаружения вторжений). Как и Tripwire, AIDE основана на простом предположении: если какие-то файлы в системе изменились без предупреждения – значит, произошло вторжение. На деле это выглядит еще проще: при первом запуске AIDE создает базу с контрольными суммами всех сколько-нибудь значимых для взломщика системных файлов и периодически сверяет ее состояние с актуальным состоянием системы. Если что-то изменилось, на предварительно указанный e-mail отправляется письмо с предупреждением и деталями изменения.

AIDE доступна в виде прекомпилированных пакетов для любого дистрибутива и может быть установлена с помощью стандартного пакетного менеджера:

$ sudo apt-get install aide

Конфигурация AIDE располагается в двух конфигурационных файлах:

  • /etc/default/aide – главный конфигурационный файл
  • /etc/aide/aide.conf – правила

Первый хранит основную конфигурацию AIDE и обычно даже не требует правки. Единственная опция, которую имеет смысл изменять, носит имя MAILTO и содержит адрес электронной почты, на который будут отправлены все отчеты об изменениях в файлах (по умолчанию – root). Второй хранит список правил, на основании которых ведется анализ состояния системы (права доступа, контрольные суммы и т.д.) В нем же задано место хранения базы данных, хранящей предыдущее согласованное состояние системы (/var/lib/aide/aide.db). Популярные дистрибутивы уже содержат список необходимых правил (которые могут быть вынесены в отдельные файлы каталога /etc/aide/aide.conf.d), поэтому мы не будем что-либо в них менять.
Чтобы инициализировать новую базу AIDE, воспользуемся командой aideinit:

$ sudo aideinit

После окончания ее работы в каталоге /var/lib/aide будет создана новая база с именем aide.db.new. Чтобы сделать ее базой согласованного состояния системы, произведем переименование:

$ sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

После этого можно произвести первую проверку системы:

$ sudo aide -c /etc/aide/aide.conf --check

При установке AIDE помещает себя в список заданий cron, поэтому проверки будут происходить каждый день. Однако не следует полностью полагаться на систему. Если взломщик сможет модифицировать системные файлы для установки бэкдора, он также сможет модифицировать и сам AIDE, включая базы данные и бинарные файлы, поэтому лучший способ использования AIDE заключается в помещении ее на USB-флешку и ручной запуск в случае необходимости (не забыв исправить путь поиска баз данных в файле aide.conf):

# cp /var/lib/aide/aide.db* /usr/bin/aide \
/etc/aide/aide.conf /etc/aide/aide.conf.d/* /media/флешка

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

Кроме HIDS общего назначения для UNIX-систем разработано несколько утилит, специализирующихся исключительно на руткитах. Программы chkrootkit и rkhunter используют базу сигнатур для поиска и обнаружения вредоносного ПО (rkhunter также проверяет целостность исполняемых файлов, загрузочных скриптов и анализирует сетевые интерфейсы на предмет прослушиваемых портов). Обычно их используют совместно с AIDE для создания дополнительного слоя безопасности. Доступны в любом дистрибутиве. Использовать предельно просто:

$ sudo chkrootkit
$ sudo rkhunter --check

На экране появится информация о проверяемых бинарниках, файлах доступа, проверки на известные типы руткитов и т.д. Обе программы написаны на языке shell, поэтому используют стандартные утилиты командной строки (awk, cat, grep, …) для выполнения проверок. Если ты не уверен в целостности этих утилит, помести их заведомо «чистые» версии на флешку и вызывай программы следующим образом:

$ sudo chkrootkit -p /media/флешка
$ sudo rkhunter --check --bindir /media/флешка

Выводы

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

Пароль на GRUB

Для установки пароля на GRUB необходимо сделать две вещи:

  1. Запустить команду /sbin/grub и набрать в ее интерактивной оболочке команду md5crypt. После этого программа запросит пароль и выведет на экран его md5-хеш.
  2. Открыть файл /boot/grub/grub.conf и добавить в него опцию «password --md5 хеш-пароля».

Tiger – анализатор локальной безопасности

Tiger – это пакет, состоящий из коллекции shell-скриптов, бинарных файлов и файлов данных, используемый для поиска проблем безопасности UNIX-систем. Он производит сканирование конфигурационных файлов, файловых систем, конфигурационных файлов пользователя и генерирует отчеты. В своей работе использует chkrootkit и John the ripper.

Zeppoo – поиск руткитов на уровне ядра

Zeppoo позволяет найти Linux руткиты, скрытые процессы и сетевые соединения, новые системные вызовы и многое другое, используя прямой доступ к памяти ядра с помощью файлов /dev/kmem и /dev/mem. Исходный код доступен на сайте проекта: http://sourceforge.net/projects/zeppoo.

INFO

Если с придумыванием сложных паролей туго, воспользуйся утилитой APG, которая поможет сгенерировать весьма сложный, но притом вполне читаемый пароль.

Поиск suid/sgid-файлов с несколькими ссылками:

$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls

6 мая 2010 г.

Простой мониторинг наличия серверов в сети

Сделал простенький мониторинг наличия в сети различных сетевых устройств: серверов, принтеров, роутеров, etc. Сделал его на основе скрипта Брендана Грегга (Brendan Gregg).
Скрипт, или несколько его копий - если есть несколько наборов IP-адресов, которые нужно мониторить -, у меня запускается из /etc/rc.local.
Сам скрипт можно скачать здесь

Использование скрипта следующее:
watchping.sh [-vhES][-e addr][-s priority][-l logfile][-w website][-t secs][-C controlhost][-i infile | hosts ...]

Описание опций (копипаст):

-h Usage help.
-v Verbose info on startup. Use until familiar with options.
-e Email this address. By default it emails root.
-E Don't send email.
-t Seconds to sleep between pings. Default is 60.
-s Use this "facility.priority" for syslog. By default it uses the "priority" variable in the script below.
-S Don't send messages to syslog. Default is to use syslog.
-w Web site. Update this website with ping status (coloured).
-l Log file. Append status messages here.
hosts A list of hosts to ping. By default, the list is fetched from hosts discovered in /etc/hosts (specified in the "hosts" variable in the script).
-i In list file. A text file containing the host list mentioned above. Syntax is a list of hostnames and/or IPs. Useful if the host list grows to be large.
-C Address of host, wich must be online. If offline, believe than world is down.

В оригинальном скрипте я добавил параметр -C, который позволяет по наличию указанного эталонного хоста проверять наличие сети вообще. Если сети нет, то остальные ошибки уже не важны. Ну, и поправил парсер списка хостов, чтобы можно было справа от имени/IP-адреса хоста добавлять коментарий.

Использую скрипт так:


/opt/watchping/watchping.sh -C 192.168.0.1 -e support@mail.com -i /opt/watchping/servers.lst > /dev/null 2>&1 &
/opt/watchping/watchping.sh -C 192.168.0.1 -e support@mail.com -i /opt/watchping/provs.lst > /dev/null 2>&1 &
/opt/watchping/watchping.sh -C 192.168.0.1 -e support@mail.com -i /opt/watchping/devices.lst > /dev/null 2>&1 &

1 апр. 2010 г.

Ubuntu. Список любимых приложений

Чтобы при переинсталляции системы вернуть себе любимые приложения скопом, нужно:
Создать и сохранить список установленных пакетов:
sudo dpkg --get-selections > installed_list.txt

После инсталляции новой системы сделать
sudo dpkg --set-selections < installed_list.txt
sudo apt-get -y update
sudo apt-get dselect-upgrade

19 февр. 2010 г.

Ubuntu. Некоторые команды wifi

Недавно очередной раз потребовалось мне получить информацию о имеющихся по соседству точек доступа WiFi. Сперва нашел утилиту WiFi Radar, которая показывает список соседних точек доступа и позволяет для каждой из них указать свои параметры. В принципе - аналог штатного гномовского менеджера.
На ubuntuforums.org наткнулся на топик "HOWTO: Wireless Security - WPA1, WPA2, LEAP, etc.", в котором, в том числе, упоминается команда:
sudo iwlist wlan0
которая дает довольно обильную информацию по имеющимся точкам доступа.
А так же
iwconfig
- типа ifconfig, только для беспроводных контроллеров.

20 янв. 2010 г.

Linux. GLPI. Инвентаризация IT-структуры предприятия

При наличии более, чем 5 компьютеров и сотрудников на предприятии, системный администратор (он же обычно по совместительству является и завхозом) сталкивается с вопросом инвентаризации имеющегося оборудования, пользователей, ПО... До какого-то предела это можно делать в электронных таблицах (Open Office SpreadSheet, MS Excel...). Потом упираемся в поиск, отчеты, шаблоны и т.д.

Я не упирался. Я сразу начал искать специализированный софт. Нашли мы Hardware Inspector. По крайней мере из просмотренных нами в 2006 году он оказался одним из самых удобных. Основной недостаток - платность (хотя и небольшая). Мелкие неприятности - иногда выскакивали ошибки, которые, в прочем, не мешали работать дальше. С переходом на Ubuntu возник еще один неудобств - HI писан под Windows. Работать через RDP - не наш путь.

После обновления Hardware Inspector-а на новую версию возникло большое неудобство работы с отчетами и поиском оборудования.

После непродолжительных поисков по совету Лиссяры в оборот был взят пакет GLPI. Вышеупомянутых недостатков Hardware Inspector он начисто лишен: бесплатен, кроссплатформеннен (LAMP - Linux Apache MySQL PHP), неплохо описан (в том числе на русском языке). По возможностям (пока что я его только начал осваивать), по крайней мере, не уступает HI. А учитывая возможность и количество плагинов, скорее всего переплёвывает оного на несколько порядков.

В Ubuntu установил его через
sudo aptitude install glpi
Но в репозитории находится версия 0.70. А на сайте лежит стабильная 0.72.3. Первый же плагин, который я попытался поставить, руганулся на старую версию. Поэтому я скачал свежий вариант с сайта производителя и обновил по инструкции оттуда же (просто скопировал содержимое архива в /usr/share/glpi, куда он был поставлен аптитьюдом).

upd: Вот попалась еще одна программка. БКО - База Компьютеров Организации. Автор один. Россиянин (вроде бы). Программа под Windows, но совсем бесплатная. Отзывы о программе положительные. Но сам я ее не пробовал.

Ubuntu 9.10, Lotus Notes 8.5.1. Не перерисовывается окно

Поставил Lotus Notes 8.5.1 на Ubuntu 8.10. Запускается, но нормально перерисовывает только менюшки, панельки и окно списка писем. Остальные окна (в том числе диалог конфигурации) не перерисовывает. Решение найдено ЗДЕСЬ со ссылкой СЮДА. Конкретно - п.п. 7. А еще конкретнее :):
1. скачать ОТСЮДА библиотеки к лотусу
2. рспаковать их
3. установить атрибуты чтения/запуска для всех, установить владельцем рута

-rwxr-xr-x 1 root root 116732 2009-09-20 01:26 libgdk_pixbuf-2.0.so.0
-rwxr-xr-x 1 root root 67240 2009-09-20 01:26 libgdk_pixbuf_xlib-2.0.so.0
-rwxr-xr-x 1 root root 679940 2009-09-20 01:26 libgdk-x11-2.0.so.0
-rwxr-xr-x 1 root root 4579940 2009-09-20 01:26 libgtk-x11-2.0.so.0

4. поместить в /opt/ibm/lotus/notes.

Lotus при запуске будет использовать их, а не общесистемные. После этих действий клиент Лотуса заработал нормально.

Однострочники: нечитаемые пароли

Субж.
echo "Vasya shel is kafe" | md5sum | base64

Хотя, как и во всех случаях работы с *x, есть много других вариантов. В частности:
mkpasswd

19 янв. 2010 г.

AIDE - продолжатель славных дел ADINF

Был когда-то такой пакет ADINF. Хотя, почему "был"?! Он и сейчас есть - www.adinf.com. Только я его не видел годов этак с середины девяностых. Тогда его довольно активно пользовали у нас. Основная задача - мониторинг и отображение измененных между проверками файлов на носителях. Ставили его в автозапуск (autoexec.bat) и при очередном старте системы он сообщал какие файлы были изменены. В принципе - очень простое и эффективное средство контроля. С какой радости вдруг ни с того, ни с сего будет изменяться kernel32.dll?! Изменился? Срочный алярм.
Однако, продукт сей не бесплатен и писан под Win-платформу. А вот AIDE - свободный и линуксовый. Идея та же. Ставим в кроне проверку, в случае компрометации системы изменением каких-либо критичных файлов делаем откат на ближайший бакап.

Краткая инструкция по приготовлению - здесь.

Еще одна утилита подобного функционала - AFICK (А ФИК пройдешь, наверное :) )

ZeroShell. Роутер для ленивых

Набрел на проект ZeroShell - LiveCD, представляющий собой сборку Linux, заточенную под функционал роутера, прокси, брандмауэра и прочих железяк, устанавливаемых на выходе в глобальную сеть. Образ занимает примерно 150МБ. Судя по документации, автоматом подхватывает все сетевые интерфейсы. Настраивается через вебморду. Настройки сохраняет на любом носителе, который видит Linux.
Должно быть удобная штука. Хотя, конечно, собранное руками всё равно надёжнее.

29 дек. 2009 г.

Металлолом

Пришлось два дня провозиться с железякой 95-го года производства. Точнее с тремя. Какие-то, на то время очень крутые, персоналки. 80 МБ рамы (4 симма по 20, получается, МБ - я таких не встречал никогда, хотя симмы застал); HDD 4GB; Pentium 133, Win 98 (на корпусе - наклеечка "Designed for Windows 95" :) ); 12-x CD-Rom (круть по тем временам). Пока разобрал корпус, придумал пару новых выражений нецензурных - [censored] и [censored][censored][censored][censored]. Позже скину фотки сего дела.
Задача была поставить на машинку какой-нибудь Linux. Для того, чтобы сотворить железяку, которая будет будить сервера, уснувшие в случае отключения света, но не проснувшиеся при его появлении. То есть такая ситуация.



  • На серверах (несколько штук подключены к одному smart-UPS, который, в свою очередь управляется на одном из серверов) поднят apcupsd.

  • Пропадает свет. Сервера корректно тушатся командами от мастера, затем выключается и сам мастер. При этом между выключением первого сервера и выключением самого UPS проходит около 5 минут
  • .
  • UPS отключает питание с выходов.

  • По включении питания UPS заряжается до указанного в настройках заряда батареи, включает питание на выходах, сервера начинают загружаться.



Но если питание в электросети появится до отключения UPS-а и после отключения первого сервера, то последний так и останется выключенным. Для этого было решено поставить какой-нибудь старый тазик, который будет включен прямо в электросеть, чтобы по появлению электричества начинать рассылать нужным серверам сообщения Wake On Lan.
Под руками оказались 3 полусобранные машины с вышеописанной конфигурацией. С загрузочныз компактов грузиться они упорно не хотят - если старт и происходит, то тут же процесс обрывается с разнообразными сообщениями о невозможности правильно сконфигурировать привод. С загрузкой с дискет примерно та же история.

После дня мученний скопировал имевшуюся под руками Slax - Live-дистрибутив Slackware. Скопировал его на диск c:\ одной из машинок. Прописал в autoexec.bat запуск. Без особых проблем он запускается. Но с непонятной периодичностью теряет сделанные настройки. То /root пропадает, то настройки сети... Полдня с ним провозился. Плюнул.

Подошел zipslack. Подключил винт с машинки к донору, распаковал на него пакет zipslack-а. Прописал, опять-таки, в autoexec.bat его запуск. Стартует, конфигурацию запоминает... Всё хорошо. Пришлось, правда скачать perl.tgz и установить его. Для того, что в пакет не входят компиляторы, которыми можно было бы собрать программку для отсылки WOL-пакетов. А perl поставился без компиляции, а перловый скрипт (взятый отсюда) очень даже нормально с этой задачей справляется.


Таким образом получился костыль 15-летнего возраста, который помогает молодым брендовым серверам, лет на 14 младше этого костыля. :)