Доступ на ESXi сервер через ssh по ключу

Доступ по ключу удобная штука, и не заменимая при автоматизации.

Для реализации доступа по ключу создаем пару ключей, как я присал в этой статье. Затем, если мы хотим заходить на пользователя root по ключу, то выполняем команду (изменив данные на свои):

cat ~/.ssh/id_dsa.pub | ssh root@esxi.machine.com ‘cat >> /etc/ssh/keys-root/authorized_keys’

Ключи в ESXi хранятся в файле /etc/ssh/keys-ИМЯ_ПОЛЬЗОВАТЕЛЯ/authorized_keys.
Тестируем (не забываем, что в папке ~/.ssh того пользователя, под которым ходим, должен быть приватный ключ с владельцем этот пользователь и правами 400):
ssh root@esxi.machine.com
http://geckich.blogspot.com/

Удаленное логирование сообщений роутера (например, Asus-16n)

Полезная фишка есть в сетевом оборудовании – запись своих логов на удаленный сервер. А дальше эти логи могут выгребаться каким-либо скриптом, отсылаться на электронную почту и так далее.

На самом сетевом оборудовании логирование на удаленный сервер настраивается по-разному, но как-правило нужно просто прописать адрес лог-сервера и – возможно – порт.

Заходим на сервер, на котором предполагается хранить логи раутера, и правим /etc/rsyslog.conf
Включаем модули для сбора удаленных логов:

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

И дописываем в секцию Rules правило для записи логов роутера в отдельный файл:

###############
#### RULES ####
###############

if $hostname contains ‘asus16n’ then /var/log/router.log;TraditionalFormat

Теперь все сообщения от источника с именем хоста asus16n будут записываться кроме общей лого-свалки, в отдельный файл /var/log/router.log. Для другого оборудовая скорее всего будут другие ключевые слова для парсинга логов.

Поправка:

В некоторых версиях rsyslog вместо TraditionalFormat нужно писать RSYSLOG_TraditionalFileFormat

http://geckich.blogspot.com/

Настройка автоматического выключения при low battery от UPS с помощью nut (Network UPS Tools)

Если имеются ИБП с подключением по USB, то целесообразно настроить корректное атовыключение рабочих станций на Oracle Linux 6.3 и Debian при отсутствии питания от сети. ИБП – Mustek PowerAgent 650 с USB.

1. Подключаем все провода, не забываем USB-кабелем соединить ПК и ИБП.
2. Устанавливаем Nut:

aptitude install nut

или

yum install nut

Особые извращенцы могут, конечно же, скомпилить из исходников 🙂
Различие между Debian и RHEL6 дистрибутивами только в том, что конфигурационные файлы в 1м случае лежат в /etc/nut, а во 2м – в /etc/ups 🙂

3. Настройка драйвера. Смотрим наши юсб-устройсва командой:

lsusb

Ищем среди них что-то типа:

Bus 001 Device 004: ID 0665:5161 Cypress Semiconductor USB to Serial


Если такого нет, то надо пошаманить с модулями ядра. В частности, нужны модули usb, usbhid.
Теперь меняем права, где цифры – номера шины (Bus) и устройства (Device) из предыдущей команды:

chown root:nut /dev/bus/usb/001/004

4. Переходим в папку с конфигами (cd /etc/ups или cd /etc/nut) и начинаем настраивать.
1) nano upsd.users
Добавляем пользователя, ставя свои имя и пароль:

[monuser]

password = secret
upsmon master

2) nano upsd.conf

Добавляем/раскомментируем:
LISTEN 127.0.0.1 3493

3) nano ups.conf
Добавляем описание ИБП:
[mustek_650]

driver = blazer_usb
        port = auto
        desc = “some comment”

Тут в поле driver с другими моделями возможно придется указывать другой драйвер – смотрите офиц. документацию. Тестировать на работоспособность можно командой (аргумент поменять понятно как), а затем получить инфо об ИБП:

upsdrvctl start

Network UPS Tools – UPS driver controller 2.6.4
Network UPS Tools – Megatec/Q1 protocol USB driver 0.08 (2.6.4)
Supported UPS detected with mustek protocol
Vendor information unavailable
No values provided for battery high/low voltages in ups.conf
Using ‘guestimation’ (low: 10.400000, high: 13.000000)!
Battery runtime will not be calculated (runtimecal not set)

4) nano upsmon.conf
Добавляем строчку с описанием нашего конкретного ИБП (данные пользователя должны соответствовтаь тому, что писали в upsd.users!):

MONITOR mustek_650@localhost 1 monuser secret master

5. Выставляем права для секьюрности:

chown root:nut upsd.conf upsd.users
chmod 0640 upsd.conf upsd.users
chown root:nut upsmon.conf
chmod 0640 upsmon.conf

6. Скрещиваем пальцы и запускаем 🙂
RHEL6: /etc/init.d/ups start
Debian: /etc/init.d/ups-monitor start
7. Тестируем. Проверим данные поступают ли от нашего УПСа:

upsc mustek_650@localhost


ups.status: OL – значит, что УСП найден, работает и питание от сети есть.

upsdrvctl -t shutdown
upsmon -c fsd


1я команда – симуляция только ответа от драйвера без выполнения команды на выключение, 2я – симуляция всего ивента, соответственно с выключением ПК.

http://geckich.blogspot.com/

vSphere Client не может подключиться к ESXi

Вы вводите заведомо валидные данные, и после паузы выпрыгивает ошибка типа такой:

The server ‘my.host.name’ could not interpret the client’s request. (The remote server returned an error: (503) Server Unavailable
Call “ServiceInstance.RetrieveContent” for object “ServiceInstance” on Server “my.host.name” failed.

При это с помощью SSH нормально можно зайти на хост. Точнее, нужно зайти и выполнить команду:

/sbin/services.sh restart

После завершения всех действий команды (когда вы опять увидите приглашение командной строки) можно будет снова зайти на ESXi гипервизор с помощью vSphere Client.

http://geckich.blogspot.com/

Авторизация в Apache c помощью MySQL (mod-auth-mysql)

MySQL авторизация – неплохой вариант, особенно для сайтов, использующих эту БД.
Порывшись в инете, разобрался, как её настроить и вот шаги, котором следует последовать 🙂
1. Устанавливаем необходимый софт (имеется в виду, что веб-сервер уже есть и настроен):
apt-get install libapache2-mod-auth-mysql
a2enmod auth_mysql

2. Создаем для примера БД:

mysql -u root -p
mysql> grant all on auth.* to auth_user@localhost identified by ‘<auth_password>’;
mysql> flush privileges;
mysql> create database auth;
mysql> use auth;
mysql> CREATE TABLE `clients` (
`username` varchar(25) NOT NULL default ”,
`passwd` varchar(25) NOT NULL default ”,
`groups` varchar(25) NOT NULL default ”,
PRIMARY KEY (`username`),
KEY `groups` (`groups`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> INSERT INTO `clients` VALUES (‘<username>’, ‘<password>’, ‘<group>’);

3. Редактируем файл виртуалхоста (или .htaccess нужной папки), например:

nano /etc/apache2/sites-available/default

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All

        </Directory>
        <Directory /var/www/>    
                AuthMYSQL on     #включает авторизацию по мускулю
                AuthMySQL_Authoritative on
                AuthMySQL_DB auth     #имя БД, в которой находится наша авторизация
                AuthMySQL_Host 127.0.0.1     #адрес или имя хоста с мускулем

                #AuthMySQL_Port 3306     #порт, если отличен от дефолтового
                #AuthMySQL_Socket <socket>    #сокет, если используется

                AuthMySQL_User auth_user     #пользователь БД
                AuthMySQL_Password <auth_password>     #пароль пользователя БД
                AuthMySQL_Password_Table clients     #таблица паролей
                AuthMySQL_Username_Field username     #поле, содержащее имя пользователя
                AuthMySQL_Password_Field passwd     #поле, содержащее праоль пользователя
                #AuthMySQL_Group_Table clients     #поле, содержащее принадлежность к группе
                AuthMySQL_Empty_Passwords off     #запретить пустые пароли
                Auth_MySQL_Encrypted_Passwords off    #если on - указывается, что пароли зашифрованы
                AuthMySQL_Encryption_Types Plaintext     #типа шифрования - может быть Plaintext, Crypt_DES, MySQL. Можно через пробел указывать несколько методов, которые будут использоваться по-очереди
                AuthBasicAuthoritative Off     #Отключить Basic-авторизацию - какойто костыль, без него не работает
                AuthUserFile /dev/null     #типа файл с паролями - тоже костыль
                Require valid-user     #требовать авторизацию. Тут также можно указывать имена групп (несколько - через пробелы): Require group assassins templars .Или конкретных пользователей: Require user leonardo vincent .Это удаобно, если прописывать опции в .htaccess
                AuthName "Please Auth!"     #приветствие
                AuthType Basic #костыль
                <Limit GET POST> #ограничения для запросов                Require valid-user     
                </Limit>     

                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                AddHandler mod_python .py
                PythonHandler index
        </Directory>

service apache2 restart

Идем на страничку http://127.0.0.1 и авторизуемся.
P. S.

1. http://www.cgi101.com/book/ch20/mod_auth_mysql.html – здесь неплохое описание опций.
2. Можно в конфиге апача или модуля прописать параметры подключения к БД – так в некоторых случаях секьюрнее:

Auth_MySQL_Info <host> <user> <password>
Auth_MySQL_General_DB <database_name>

Запуск Wireshark под обычным (non-root) пользователем

Всё нижесказанное валидно для Oracle Linux 6 (RedHat 6, CentOS 6) 64 бита, в других дистрибутивах команды будут немного отличаться. Wireshark установлен не из пакетов, а их исходников, как я писал здесь

1. Устанавливаем зависимости (если еще не установлены):

yum install ibcap.x86_64 libcap-devel.x86_64

2. Проверяем наличие группы wireshark и если ее нет, создаем:

cat /etc/group
groupadd wireshark

3. Добавляем пользователя, под которым нужно использовать wireshark, в эту группу:

usermod -a -G wireshark user
newgrp wireshark

Устанавливаем права команде dumpcap и добавляем ее в нашу группу:
setcap cap_net_raw,cap_net_admin=eip /usr/local/bin/dumpcap
chgrp wireshark
/usr/local/bin/dumpcap
chmod 750 /usr/local/bin/dumpcap
4. Проверяем:
getcap /usr/local/bin/dumpcap
su user
wireshark

Всё. Должно работать.

http://geckich.blogspot.com/

Установка Wireshark в Oracle Linux из исходников

Вначале попытался установить из пакетов, получил ерроры о конфликтах в зависимостях и решил попробовтаь из сорцов:

yum install libpcap libpcap-devel.x86_64
wget http://wiresharkdownloads.riverbed.com/wireshark/src/wireshark-1.8.2.tar.bz2
tar -xjvf wireshark-1.8.2.tar.bz2
cd wireshark-1.8.2
./configure
make
make install

Запускаем:

wireshark

http://geckich.blogspot.com/

Установка kDevelop 4 в Oracle Linux 6

Всё нижеизложенное  проделал в Oracle Linux 6.3, но скорее всего действия валидны и для RedHat/CentOS 6, т. к. они все “из одной пробирки”.

Итак. Последнюю версию kDevelop – 4.3 – установить мне не удалось, т. к. необходимые ей kdelibs-devel были слишком старой версии в системе, а чтобы их обновить, пришлось бы переколбашивать всю систему с высоким шансом ее угробить, потому пришлось поставить старенькую версию kDevelop – 4.0.2.

1. Ставим зависимости:

yum install qtwebkit.x86_64 kdelibs-devel kdebase-workspace-devel

2. Качаем отсюда http://download.kde.org/stable/kdevelop/4.0.2/src/ и распаковываем сорцы:

cd /home/user/Downloads
wget http://download.kde.org/stable/kdevelop/4.0.2/src/kdevelop-4.0.2.tar.bz2
wget http://download.kde.org/stable/kdevelop/4.0.2/src/kdevplatform-1.0.2.tar.bz2
tar -xjvf kdevelop-4.0.2.tar.bz2
tar -xjvf kdevplatform-1.0.2.tar.bz2

3. Компилится оно немножко по-задроченному, потому создаем папки и копируем сорцы куда надо:

mkdir -p /home/user/src/kdevplatfom/build
mkdir -p /home/user/src/kdevelop/build
cp -R /home/user/Downloads/ kdevplatfom -1.0.2/* /home/user/src/kdevplatfom/
cp -R /home/user/Downloads/kdevelop-4.0.2/* /home/user/src/kdevelop/

4. Компилим и устанавливаем kdevplatform:

cd /home/user/src/kdevplatfom/
cmake -DCMAKE_INSTALL_PREFIX=/home/user/Downloads/kdevelop-4.0.2 ../
make
make install

5. Компилим и устанавливаем kdevelop:

cd /home/user/src/kdevelop
cmake -DCMAKE_PREFIX_PATH=/home/user/Downloads/kdevelop-4.0.2 -DCMAKE_INSTALL_PREFIX=/home/user/kdevelop4 ../
make install

6. Если всё делали из-под root, то фиксим права:

chown -R user:user /home/user/kdevelop4

7. Запускаем!

cd /home/user/kdevelop4/bin
./kdevelop

http://geckich.blogspot.com/

Установка RoundCube Webmail

Сразу определюсь: ОС – Debian, MTA – Postfix, использую только защищенные подключения, веб-сервер Apache + modphp5.
В Debian, как всегда, есть два пути – ставить из сорцов или из пакетов. Я выбрал 2й путь.

apt-get install roundcube roundcube-mysql libapache2-mod-evasive
nano /etc/apache2/conf.d/roundcube

Добавляем строчки:

Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/

Alias /roundcube /var/lib/roundcube

chown -R www-data /var/lib/roundcube/
nano /var/lib/roundcube/config/main.inc.php

Здесь прописываем конфиги для своего почтового сервера. Пример:

$rcmail_config[‘force_https’] = TRUE;
$rcmail_config[‘default_host’] = ‘ssl://localhost:993’;
$rcmail_config[‘imap_auth_type’] = ‘check’;
$rcmail_config[‘smtp_server’] = ‘127.0.0.1’;
$rcmail_config[‘smtp_port’] = 465;

$rcmail_config[‘smtp_user’] = ‘%u’;

$rcmail_config[‘smtp_pass’] = ‘%p’;

$rcmail_config[‘smtp_auth_type’] = ‘LOGIN’;

nano /etc/apache2/sites-available/roundcube

<VirtualHost *:443>

    ServerAdmin admin@domain.com
    DocumentRoot /var/lib/roundcube/
    DirectoryIndex index.php

    ServerName webmail.domain.com
    ServerAlias www.webmail.domain.com


    SSLEngine On
    SSLCertificateFile /etc/ssl/server.cert
    SSLCertificateKeyFile /etc/ssl/server.key

</VirtualHost>

a2enmod ssl
a2ensite default-ssl


Чтобы увеличить максимальный размер вложенных в письмо файлов, нужно поменять следующее. Итак, приступим.

nano /etc/php5/apache2/php.ini

memory_limit = 256M
post_max_size = 128M
upload_max_filesize = 64M

Размеры ставьте как вам надо, но должно быть так: memory_limit > post_max_size > upload_max_filesize
Далее:

nano /etc/postfix/main.cf

message_size_limit = 64000000

Это значение в байтах.
И теперь самое западлянское, которое я не сразу нашел:

nano /var/lib/roundcube/.htaccess

php_value       upload_max_filesize     64M

php_value       post_max_size           128M
php_value       memory_limit            256M

Перезагружаем сервисы и смело топаем на https://webmail-address.int/roundcube

/etc/init.d/postfix restart

/etc/init.d/apache2 restart

http://geckich.blogspot.com/

Разрешение обычным пользователям использовать tcpdump

Возникла потребность разрешить программерам юзать tcpdump. Давать им рутовую консоль как-то не кошерно, потому нашел решение:

which tcpdump
chmod 4755 /sbin/tcpdump

Для зпрещения – chmod 700 или 755

http://geckich.blogspot.com/