воскресенье, 30 декабря 2012 г.

android vs symbian


Краткие итоги после шести лет использования symbian и недавнего перехода на android.

Что было в symbian:

  • Полноценная qwerty-клавиатура (никакой сенсор не заменит по удобству набора).
  • Возможность установки софта на карту памяти (в андроиде это очень своеобразно реализовано и в итоге свободное место во встроенной памяти очень быстро закачивается).
  • Постоянный мерзкий системный звук на любые изменения (почти как в винде)
  • Почти все стандартные приложения непригодны для использования из-за крайне низкого функционала (к примеру стандартный будильник не имеет повтора, не говоря уже о срабатывании только по рабочим дням)
  • Может прозрачно подключаться к Wi-Fi ad hoc (в андроиде для этого нужно сначала получить рута, а потом отредактировать wpa_supplicant.conf)



Что есть в android:

  • Множество рабочих столов (например можно поставить вызов в одно касание)
  • Хоть и сильно урезанный но все равно работоспособный линуксовый терминал
  • Колоссальный выбор софта (много мусора, но можно найти действительно качественные утилиты которых очень не хватало на symbian)
  • Интеграция со всеми сервисами гугла (удобно когда все синхронизируется и при этом не глючит как тот же iCloud)
  • Удобный и в большей части логичный интерфейс (в symbian все настройки были размазаны по разным местам)
  • Полученные по bluetooth файлы автоматически ложатся на карту памяти


суббота, 27 октября 2012 г.

FreeBSD & SMS



Возникла необходимость отсылать смс из терминала FreeBSD.
Для этих целей можно использовать обычный мобильный телефон.
Например берем Nokia 2730 classic и подключаем к usb порту.
В логе видим:
Oct 26 14:12:32 nagios kernel: ugen1.2: <Nokia> at usbus1
Oct 26 14:12:32 nagios kernel: umodem0: <Nokia Nokia 2730 classic, class 2/0, rev 2.00/9.41, addr 2> on usbus1
Oct 26 14:12:32 nagios kernel: umodem0: data interface 2, has CM over data, has break
Oct 26 14:12:32 nagios kernel: umodem1: <Nokia Nokia 2730 classic, class 2/0, rev 2.00/9.41, addr 2> on usbus1
Oct 26 14:12:32 nagios kernel: umodem1: data interface 10, has CM over data, has break
Oct 26 14:12:32 nagios root: Unknown USB device: vendor 0x0421 product 0x02ba bus uhub1

Из портов ставить утилиту Gammu (Gnu All Mobile Management Utilities):
cd /usr/ports/comms/gammu/ && make install clean

Создаем простой конфиг:
cat /etc/gammurc
[gammu]
port = /dev/cuaU0
connection = at115200
startinfo = no
name=Nokia
synchronizetime = no
use_locking = no
gammucoding = utf8
model=2730

И проверяем как определился телефон:
gammu --identify

Для проверки отправляем смс:
echo "message test" | gammu sendsms TEXT 050xxxxxxx

В дальнейшем это можно использовать в различных скриптах и утилитах.

вторник, 23 октября 2012 г.

Nagios, nrpe


На данный момент nagios должен полностью функционировать, мониторить различные устройства и серверы.
При возникновении проблем - приходят письма на почту.
Теперь можно установить агенты на клиентские для nagios хосты.
В портах FreeBSD можно обнаружить nrpe - Nagios Remote Plugin Executor

Установка стандартная:
cd /usr/ports/net-mgmt/nrpe2/ && make install clean

Особых зависимостей замечено не было.

После установки в конфиге нужно изменить всего одну опцию:
cat /usr/local/etc/nrpe.cfg
allowed_hosts=xxx.xx.xx
Указав адрес сервера nagios.

После этого добавить в rc.conf
nrpe2_enable="YES"

и запустить /usr/local/etc/rc.d/nrpe2 start

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

Система мониторинга Nagios полностью готова для использования в "продакшине".

понедельник, 22 октября 2012 г.

Nagios, notify


После того как мониторинг заработал хотя бы для двух-трех хостов нужно настроить отправку уведомлений на почту.
По умолчанию стоят неправильные пути к почтовому мейлеру, но даже если их исправить все равно почта не будет приходить. Причина - не настроен sendmail.
Решений несколько: можно долго разбираться с конфигами sendmail, поставить postfix или же просто установить утилиту sendEmail и прописать ее в конфигах nagios. Что я и сделал.

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

notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/local/bin/sendEmail -s $USER7$ -t $CONTACTEMAIL$ -f $USER5$ -l /var/log/sendEmail -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -m "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n"
        }
notify-service-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/local/bin/sendEmail -s $USER7$ -t $CONTACTEMAIL$ -f $USER5$ -l /var/log/sendEmail -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -m "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n"

Если внимательно изучить выше написанное, можно заметить что используется несколько новых переменных.
Их нужно прописать вручную (при генерировании и размещении конфигов они не затираются):

cat /usr/local/etc/nagios/resource.cfg
# Sets $USER1$ to be the path to the plugins
$USER1$=/usr/local/libexec/nagios
# mail from
$USER5$=nagios@domain.somein.ua
# mail server
$USER7$=nagios.ua

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

воскресенье, 21 октября 2012 г.

Nagios, NConf


Советую сразу побродить по всему меню чтобы появилось представление о возможностях.

В разделе Hostgroups, linux-servers я переименовал в unix-servers.
А в Contacts отредактировал пользователя nagiosadmin, прописав свои контактные данные.
Ну а в закладке Hosts имеем по умолчанию 4 хоста для мониторинга, из которых реально пригодится только localhost. Именно здесь и нужно будет добавлять все наше оборудование.

После того как будет готова хотя бы самая простая конфигурация нужно будет внести изменения в Nagios.

Скопируем *-sample файлы в файлы конфигурации:
# cd /usr/local/etc/nagios
# cp cgi.cfg-sample cgi.cfg
# cp nagios.cfg-sample nagios.cfg
# cp resource.cfg-sample resource.cfg

Теперь необходимо отредактировать nagios.cfg. Находим все вхождения строк, которые начинаются на cfg_dir и cfg_file и комментируем или удаляем их.

И соответственно дописываем:
cfg_dir=/usr/local/etc/nagios/global
cfg_dir=/usr/local/etc/nagios/Default_collector

В старых версиях nconf нужно было использовать специальный скрипт, который распаковывал конфигурацию в nagios. В версии 1.3.0 все уже значительно проще - нужно раскомментировать пару строк в файле deployment.ini и после того во время каждого генерирования конфигов будет появляется кнопка deploy, нажатие на которую соответственно будет приводить к размещению конфигов по конфигурационным директориям nagios.

Так же желательно скопировать файлы изображений для их корректного  отображения:
# cp -r /usr/local/www/nconf/img/logos /usr/local/www/nagios/images/

Теперь генерируем конфигурационные файлы Nagios-а,  нажав в NConf на ссылку Generate Nagios config. А затем, если все прошло без ошибок, жмем появившуюся внизу кнопку Deploy.

Переходим на web-интерфейс Nagios и радуемся результату всех трудов и стараний.

Базовая настройка успешно закончена.

вторник, 16 октября 2012 г.

Nagios, configuring



Теперь два варианта дальнейших действий.
Первый - редактировать конфиги Nagios вручную, второй - установить web интерфейс конфигурирования.
В качестве эксперимента поставим web интерфейс.
Выбор остановился на Nconf (Enterprise Nagios configurator).
В портах Nconf пока отсутствует, поэтому идем на страницу проекта и ищем последнюю версию для загрузки.
# cd /usr/local/www
# wget http://sourceforge.net/projects/nconf/files/nconf/1.3.0-0/nconf-1.3.0-0.tgz

Распаковываем архив и меняем владельца:
# tar -xzf nconf-1.3.0-0.tgz
# chown -R www:www nconf

Добавим в конфигурационный файл Apache:
Alias /nconf/ "/usr/local/www/nconf/"
<Directory /usr/local/www/nconf/>
        Order deny,allow
        Allow from all
        AuthName "Nagios configurator Access"
        AuthType Basic
        AuthUserFile /usr/local/etc/nagios/htpasswd.users
        Require valid-user
</Directory>

И перезапускаем Apache:
# apachectl configtest
# apachectl graceful

На всякий случай смотрим требования:
head -n 36 /usr/local/www/nconf/README

Апач и пхп должны были стать по зависимостям.

# pkg_info | grep mysql если нет то нужно доставить.

Установим perl-DBI:
# cd /usr/ports/databases/p5-DBI && make install clean && rehash
Аналогично выполним установку perl-DBD-MySQL. Обратите внимание на версию, какая версия MySQL такую версию и выбирать:
# cd /usr/ports/databases/p5-DBD-mysql51 && make install clean && rehash

Приступим к установки nconf.
Запускаем скрипт установки:  http://ip_address/nconf/INSTALL.php.
Вначале будет проверка системных требований.

Шаг 1. Конфигурация MySQL.
Предварительно создадим саму базу и пользователя с необходимыми правами.
# mysql -u root -p
mysql> CREATE DATABASE nconf;
mysql> GRANT ALL ON `nconf`.* TO 'nconf'@'localhost' IDENTIFIED BY 'nconf_user_pass_here';
Теперь заполним поля и жмем "Next"

Шаг 2. Конфигурирование.
Главное указать правильный путь к бинарнику Nagios - если не уверены лучше сделать
# whereis nagios

Шаг 3. Настройка аутентификации.
Без аутентификации. Не будем усложнять, кто имеет доступ к самому Nagios, тот имеет доступ и к NConf (чуть позже пропишем в конфигах апача).

Шаг 4. Завершение установки.
Нужно удалить инсталяционные файлы и директории:
# rm -R /usr/local/www/nconf/INSTALL
# rm /usr/local/www/nconf/INSTALL.php
# rm -R /usr/local/www/nconf/UPDATE
# rm /usr/local/www/nconf/UPDATE.php
После этого жем Finish.

Если все прошло успешно - имеем установленный NConf.

понедельник, 15 октября 2012 г.

Nagios, the beginning


Возникла необходимость в системе круглосуточного, всепогодного :-) мониторинга серверов и активного сетевого оборудования.

Выбор остановился на системе Nagios, ранее уже был весьма успешный опыт его использования, правда ветки 2.x и на Сentos.

Теперь платформа уже FreeBSD, и самая свежая на момент написания версия Nagios в портах да и на официальном сайте тоже - 3.4.1

Установка крайне простая:

cd /usr/ports/net-mgmt/nagios && make install clean && rehash

Даже если и в системе не было апача и php они доставятся по зависимостям.
Так же соберется множество плагинов Nagios.

После завершения установки:

Добавляем в автозапуск
# echo '# Nagios' >> /etc/rc.conf
# echo 'nagios_enable="YES"' >> /etc/rc.conf

Добавляем в апач

# cat /usr/local/etc/apache22/Includes/nagios.conf
ScriptAlias /nagios/cgi-bin "/usr/local/www/nagios/cgi-bin"
<Directory "/usr/local/www/nagios/cgi-bin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
</Directory>
Alias /nagios "/usr/local/www/nagios"
<Directory "/usr/local/www/nagios">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
</Directory>

Используем авторизацию для доступа к Nagios:

# htpasswd -c /usr/local/etc/nagios/htpasswd.users username

Обязательна поддержка обработки cgi-скриптов. В секции <IfModule mime_module> должна быть раскомментирована строка "AddHandler cgi-script .cgi".

Проверим синтаксис конфигурационного файла, и если все в порядке, перезапускам Apache:
# apachectl configtest
# apachectl restart

Теперь можно проверять работает ли авторизация, и открывается ли главная страница Nagios.

воскресенье, 14 октября 2012 г.

More secure squid


По умолчанию squid передает в заголовке  X-Forwarded-For внутренний ip адрес, что не есть хорошо.

С помощью сервиса checker.samair.ru в этом можно убедиться.

Установив опцию forwarded_for off, заголовок по прежнему будет передаваться, но уже со значением unknown.
Это уже лучше, но например сайт ex.ua откажется открываться мотивируя это тем что обнаружен прокси.

Если же прописать forwarded_for delete (версия squid 3.1), то заголовок будет полностью удален и тот же ex.ua будет работать в обычном режиме.

Теперь только заголовок HTTP_VIA может выдать что используется прокси, но это уже другая история (опция via on | off решает данную задачу).

суббота, 13 октября 2012 г.

Сервер племени апачей


-) Если не работают параметры в файле .htaccess в первую очередь смотреть наличие директивы
AllowOverride All

-) Если нужно быстро посмотреть с какими модулями сейчас загружен апач, можно создать файл mods.php следующего содержания:

<?php
print_r(apache_get_modules());
?>

-) Потребовалось создать файлообменник за 15 мин.
Задача была решена просто и эффективно.
Создается два файла.
index.html

<html>
<head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>Uploads</title>
</head>
<body>
<h1>Uploads</h1>
<form action='upload.php' method='post' enctype='multipart/form-data'>
<input type='file' name='uploadfile'>
<input type='submit' value='SEND'></form>
</body>
</html>

И
upload.php

<?PHP
// Куда будем сохранять файл:
$uploaddir = '/usr/local/www/apache22/data/files/';
$uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);

// Проверяем существует ли файл
if (@fopen($uploadfile, "r"))
{
echo "<font color=red size=5>File with the same name already exists.
Please choose another name.</font>"; exit; }
// Копируем файл из места временного хранения:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
// Выводим информацию о загруженном файле:
echo "<h3>Информация о загруженном на сервер файле: </h3>";
echo "<p>Адрес по которому доступен файл<font color=red size=5> http://files.xx/files/".$_FILES['uploadfile']['name']."</font></p>";
echo "<p>Размер загруженного файла в байтах: ".$_FILES['uploadfile']['size']."</p>";
?>

четверг, 11 октября 2012 г.

vsftpd - very, very secure


Внезапно столкнулся с необычным поведением vsftpd.
При подключении он стал выдавать сообщение - vsftpd refusing to run with writable root и соединение обрывалось.
Оказалось что это такая своеобразная реакция его разработчиков на найденные уязвимости в линуксе.

Выходов как всегда несколько, можно например скомпилировать vsftpd-ext.

Но самый быстрый и простой выход - убрать права записи с папки в которую "чрутится" пользователь. Или просто сменить владельца этой папки на рута.
А внутри ее уже создать папку с полными правами, где пользователь сможет и загружать файлы и удалять.


Пользователи должны быть прописаны в
chroot_list_file=/usr/local/etc/vsftpd.chroot_list
и
userlist_file=/usr/local/etc/vsftpd.user_list

Так же в файле vsftpd.conf должны присутствовать опции
chroot_local_user=NO
chroot_list_enable=YES

среда, 10 октября 2012 г.

Postfix tricks


-) Всеми любимый провайдер Укртелеком по умолчанию закрывает всем клиентам 25-й tcp порт, отправка почты становится невозможной.
Решение - заявка с просьбой открыть 25-й порт, например через форму обратной связи на сайте my.ukrtelecom.ua
Выполняется обычно в течении суток.

-) Meta.ua весьма своеобразно настраивает свой антиспам. Если в логах появляется сообщение You have exceeded number of addressees for one letter.Only 1 recipient(s), это означает что письмо было отброшено и нужно отсылать по одному письму каждому адресату.

-) Опция always_bcc = address
Доставляет копии ВСЕХ сообщений (входящих и исходящих) на указанный адрес (поддерживается с Postfix v.2.1). Например, указав в /usr/local/etc/postfix/mail.cf строку always_bcc = backup@mydomain.ua можно сделать полный бэкап всей почты на адрес backup@mydomain.ua, вот только не повезет тому, кто это всё разгребать будет.

-) Если размер свободного пространства ящика получателя не позволяет сохранить письмо, ответ сервера (сообщение о недоставке) скорее всего будет с кодом ошибки 5xx. А это означает что получатель письма не увидит, пока не почистит свой ящик.

host smtp.somename.net said: 552 username@domain.com.ua account is full (quota exceeded), rejecting

Ошибка 5xx обычно эквивалентна статусу доставки failed, повторная отправка письма не осуществляется.

-) Перенос почтового домена с одного сервера на другой.

Сначала в конфиге main.cf нужно добавить новый домен
mydestination = newdomain.ua

Так же проверить /usr/local/etc/postfix/transport на наличие упоминаний домена, который переносится.
Если есть - безжалостно комментировать и обновляться (postmap /usr/local/etc/postfix/transport)

После этого можно уже, используя postfix admin, создавать домен и почтовые ящики.

В некоторых случаях еще придется вручную создать директорию newdomain.ua в файловой системе, в /var/mail/, и поставить соответствующего владельца.

И естественно меняем значение MX записи в своей зоне.


вторник, 9 октября 2012 г.

DNS tricks


1) NS (name server)
После регистрации доменного имени можно не использовать ns сервера регистратора, а поднять свои.
И затем либо через веб форму либо путем отправки письма в соответствии с RFC (если регистратор по прежнему живет в конце 90-х начале 2000-х) отсылается заявка на изменение NS записей в файле зоны.

Так же для этого потребуется nic-handle.
Nic-handle – это ссылка на запись, которая размещена в базе данных той или иной организации, регулирующей деятельность во всемирной сети.
В этой базе данных размещена информация о организации или человеке: название (фамилия, имя), e-maіl адрес, контактный телефон, адрес и т.д.
Ее можно зарегистрировать на hostmaster.ua

После того как регистратор доменного имени внесет все изменения вы становитесь практически полноправным администратором своего домена - можно собственноручно добавлять MX записи и поддомены, меняя конфигурацию на своих NS серверах.

2) При отсутствии PTR записи у провайдера, который выделяет статический белый ip-адрес, ощутимая часть почтовых серверов отбрасывает письма.
Выход - запрос к провайдеру с просьбой прописать корректную обратную зону.
Срок выполнения от 10 мин до суток.

3) Так же почтовые серверы проверяют наличие специальной TXT записи, для этого используется SPF – Sender Policy Framework.
SPF позволяет владельцу домена указать в TXT-записи домена специальным образом сформированную строку, указывающую список серверов, имеющих право отправлять email-сообщения с обратными адресами в этом домене.

К примеру запись  TXT     "v=spf1 +mx -all" означает, что используется версия spf1, разрешается прием писем, если отправляющий хост указан в одной из MX-записей и все сообщения, не прошедшие проверку с использованием перечисленных механизмов, следует отвергать.

4) Перед применением изменений в named.conf, лучше сделать named-checkconf named.conf и только убедившись, что все в порядке делать /etc/rc.d/named reload

5) Чтобы посмотреть интересующий тип записи dns с помощью nslookup, нужно выполнить
nslookup -type=mx ya.ru

Работает на всех платформах. Кстати вы знали что в винде используется nslookup, который распространяется под лицензией BSD?

6) Если нужно чтобы запрос обработал определенный dns сервер -
nslookup ya.ru 8.8.8.8

7) Редко используемый, но иногда полезный трюк. Посмотреть подробно как выполняется запрос начиная от корневого dns сервера (точки):

 dig ya.ru +trace

8) Для того чтобы проверить изменения внесенные в конфигурацию DNS, можно сделать

ipconfig /flushdns - очистка кеша dns на винде
/etc/init.d/nscd restart - очистка кеша dns в юниксе (name service caching daemon)

И затем уже использовать nslookup или dig

9) Неплохой сервис для проверки всех типов записей DNS из мира - digwebinterface.com

10) И напоследок.
Не забываем после любого изменения в файле зоны увеличивать serial

понедельник, 8 октября 2012 г.

First

Итак, блог создан.


xxx - Я настроил венду так, что она у меня выключается за 8(!!!) секунд. А Вам слабО ?
yyy - Электрик 3-го разряда Виктор Кузьмич Косоруков выиграл ваше соревнование заочно, выключив в одну секунду 463 винды, 12 линуксов, кластер на Солярке и телефонную станцию и даже не узнав об этом, потому что был пьян.