Translate

четвер, 8 вересня 2011 р.

Налаштування Nagios 3 + NRPE

В цій статті хочу коротко описати про налаштування системи моніторингу Nagios. Надалі планую статтю доповнити. Тож приступимо.

1) Встановлюємо необхідні пакети:

# apt-get install nagios3

По залежностях має потягнути за собою купу всього разом з апачем.

apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common bsd-mailx libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
  libgd2-noxpm libnet-snmp-perl libpq5 libradius1 nagios-images nagios-plugins nagios-plugins-basic nagios-plugins-standard nagios3-cgi nagios3-common
  nagios3-core php5-cli php5-common postfix snmp whois

2) Створюємо юзера та пароль:

# cd /etc/nagios3; htpasswd -c htpasswd.users nagiosadmin

Тепер можна залогінитись на нагіос і побачити приблизно таке:

неділя, 4 вересня 2011 р.

Боротьба з КПІ-Телеком.


Деякі "розумні" провайдери можуть визначати клієнтів які знаходяться "за NAT-ом". Тобто припустимо ситуацію, що ви купили роутер правильно його налаштували, NAT-IP присвоївся, мало б усе працювати, але от біда, не працює. На преший погляд тупикова ситуація, але не все так безнадійно...

Певні провайдери можуть визначати наявність додаткового роутера у мережі, читаючи значення TTL (time to live) в мережевих пакетах, що ви відсилаєте. TTL- це так би мовити час життя пакету, коротше кажучи, його придумано для того, щоб пакети не блукали постійно в мережі і самознищувались. Проходячи через кожен роутер, його значення частіше за все падає на одиницю.

З іншої сторони, наприклад, iptables на роутері (гейтвеї) фільтрує трафік і знищує всі пакети з нестандартним TTL ( а частіше знищує пакети з певним TTL, типу з 128-1=127 (windows) чи 64-1=63 (*nix) ), таким чином визначаючи наявність вашого роутера. Далі представлено такий собі воркераунд . :)

Логічно припустити, що треба зробити так, щоб пакети відправлені з вашої клієнської машини на роутер були вже на один більшими, тобто TTL мав значення 65. (пакет приходить на роутер - значення падає до 64 - пакет відсилається на шлюз провайдера, і так як його значення дефолтне, направляється далі куди треба).

Міняємо значення ТТL на тачці. На Windows це робиться приблизно так http://winitpro.ru/index.php/2010/10/28/menyaem-znachenie-time-to-live-ttl-v-windows-server-2008vista7/ , значення, зрозуміло, має бути наприклад, 129. Якщо результату не досягнуто - спробуйте встановити 65.

На лінуксі все навіть простіше:

# echo 65 > /proc/sys/net/ipv4/ip_default_ttl

Додаємо команду в автозагрузку в /etc/rc.local чи як pre-up в загрузку мережі в /etc/network/interfaces.

Деякі відносно нормальні роутери вміють не змінювати TTL:


Але це, насправді, не дуже нормальна практика.

понеділок, 2 травня 2011 р.

dig. Копаємо DNS

Приводом до написання статті послужила так би мовити відсутність нормального російсько чи україномовного хавту в інтернеті. Тож спробую нейтралізувати такі пробіли.

Як відомо, dig - програма з CLI-інтерфейсом, що призначена для опитування DNS-серверів на предмет інформації про хост що нас цікавить і тд. Спробую пояснити на конкретних прикладах.

1) Почнемо з найтривіальнішого прикладу, спробуємо дізнатись дані про перший доменнейм, який прийшов нам на думку (одразу в самому виводі прокоментую що значить виведене):

:~$ dig ubuntu.com

#Програма розповідає трішки про себе (версія програми) та про глобальні опції котрі вона використовує. 

; <<>> DiG 9.7.1-P2 <<>> ubuntu.com
;; global options: +cmd

#dig написав про деякі технічні деталі, які він отримав від ДНСа.

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64973
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 0

#Якщо нічого не вказувати в запиті, то по замовчуванню йде запит на наявність A-запису на ДНС-сервері. Власне це нагадування dig-а, щодо того який запит ми зробили.

четвер, 12 серпня 2010 р.

Використання мобільного телефону у якості модему в Ubuntu 10.04

Всім привіт. Ось виявилась чудова нагода, вирішив поділитись досвідом. До створення статті мене підштовхнула відсутність як такого звичайного провідного інтернету, а дивитись "Криве дзеркало" по телевізору - це є зовсім не добра альтернатива. Але потім, згадавши, що таки маю телефон з можливістю використовувати його як модем, вирішив використати GSM-мережу для коннекту зі світом. Дана робота була пророблена з операційною системою Ubuntu Linux 10.04, але, я думаю, працюватиме на будь-якому пінгвіні.
Тож до діла! Перш за все, встановимо допоміжний софт, для убунти/дебіана це робиться так:

sudo aptitude install wvdial

Це PPTP-дзвонилка, man wvdial розповість вам про неї більше. Підключивши телефон, далі робимо наступне:

четвер, 11 березня 2010 р.

HOWTO: Фоновий режим, або як правильно запускати програми з консолі

Напевне часто буває шо запустив програму з консолі, програма ще потрібна, а тримати вікриту консоль не хочеться. І як зробити шоб кносоль "відпустив програму"?

І так давайте поексперементуємо...
Виберема якусь програму (бажано гуішну) шоб швидко запускалась і безболісно закриваась) Я візьму gnome-calculator

1) Відкрийте ваш улюблений термінал і запустіть звідти вашу прогу.

gnome-calculator

програма запуститься. Тепер натиснувши Ctrl-C або закривши термінал закриється і ваша програма (ну надіюсь це було ясно і без моїх підказок)

2) а тепер запустимо те саме але з символом '&' в кінці

gnome-calculator &

Калькулятор запустився але в консольці вивелось шось типу
[1] 8631
і термінал не "тримав" вашу програму... Але не спішіть радіти - при закритті терміналу все ж закриється і наш калькулятор.
Давайте подивимось все таки шо це за [1] 8631?

Але спочатку запустіть просто калькулятор без усяких амперсантів

gnome-calculator

тепер в консолі яка його тримає натиснемо Ctrl-Z. Ми призупинили нашу програму. Можете побачити що вона не реагує навіть на натискання миші. Але не треба закривати - вона не зависла)
доречі в терміналі знову бачимо ті ж [1] 8631. І так...

в квадратних дужках номер задачі ("job"). Тепер ми можемо нею управляти.
введемо

jobs

там буде шось типу

[1]+ Stopped gnome-calculator

для переведення програми в фоновий режим введемо

bg 1

(bg - background)
де 1 - номер задачі. Побачимо що прогрмам "відвисла" і відновила роботу.
Щоб перевести курування програмою (консольний ввід) переведемо задачу "на передній план"

fg 1

... і ми знову тримаємо програму нашою консолю

Примітка: команди fg, bg можна було юзати без аругументів - тоді вони виконують управляють задачею яка позначена плюсом (+) в джобсах

А тепер кульмінація

nohup gnome-calculator

тепер по Ctrl-Z , bg переведемо задачу в фоновий режим.
Ну і все. можете закрити консоль а ваш калькулятор залишиться на вашому екрані.
Щоб ще швидше використовуйте

nohup gnome-calculator &

тоді програма автоматом переведеться в фоновий режим і не тримається консолю
Можна сміливо закривати термінал

понеділок, 14 вересня 2009 р.

Планувальник Cron

Часто виникає необхідність автоматизувати виконання певних задач в заданий час, наприклад таких як оновлення системи чи запуск демонів та інше. Таким чином ми не повинні хвилюватися за їхнє вчасне виконання, за все подбає cron. Отже, переходимо до суті.
Головним конфігураційним файлом планувальника є /etc/crontab . Кожний рядок цього файлу повинен складатись з таких семи полів:

хвилина година число місяць день_тиждня користувач команда

Поля один від одного повинні відокремлюватись або пробілами, або символами табуляції. Наведу допустимі значення кожного з полів:

Поле................ Допустиме значення

хвилина ................* або 0-59
година ...................* або 0-23
число .....................* або 1-31
місяць ....................*, 1-12 або ім'я місяця
день_тиждня .......*, 0-7 або ж ім'я дня (неділя - це як 0 так і 7)
користувач ............користувач, від імені якого буде виконуватись команда
команда ..................власне команда, виконання якої ви бажаєте виконати в заданий час

Також дозволено вказувати декілька значень полів через кому і діапазонів через тире. Наприклад: "1,2,9" чи "0-4, 8-12". В випадку діапазону, вказані числа також входять в проміжок. Наприклад, значення поля "година" 9-12 призведе до виконання команди об 9, 10, 11 та 12 годинах.

При вказанні діапазону, можна пропускати деякі його значення, вказавши крок у формі /число . Наприклад: "0-59/5" для поля "хвилина" значить запуск команди через кожні п'ять хвилини на протязі всього діапазону хвилин. Крок також можна вказувати після зірочки : "кожні 5 хвилин" відповідає значенню "*/5"

Зірочка без вказання кроку відповідає всьому діапазону значень.

Для вказання полів "місяць" та "день_тиждня" дозволено використання імен місяця та дня тижня англійською мовою в якості трьох перших букв, регістр букв неважливий. В цьому випадку вказувати діапазони чи списки не можна.

Демон cron запускає вказані команди, коли значення полів "хвилина", "година", "місяць" і хоча б одне з полів "число" і "день_тиждня" співпадають з часом. Сron звіряє директиви з часом кожну хвилину.

Слід також зауважити, що день виконання команди може бути задане в двох полях - "число" та "день_тиждня". Якщо в кожному полі вказане значення (але не *), то команда буде запущена, коли одне з полів співпаде з часом. Продемонструємо це на прикладі:

30 4 1,15 * 5

запис призведе до виконання команди об 4:30 по півночі першого і п'ятнадцятого чисел, і до того ж всього, кожну п'ятницю.

Замість перших п'яти полів дозволено вказувати один із восьми спеціальних тригерів:

Рядок.................. Значення

@reboot ..............Виконати команду один раз, при запуску cron-а.
@yearly ..............Виконувати команду кожне 1 січня, "0 0 1 1".
@annually ...........---//---
@monthly ...........Виконувати команду кожен місяць, "0 0 1 * *".
@weekly .............Виконувати команду кожної неділі (день тиждня), "0 0 * * 0".
@daily .................Виконувати команду опівночі, "0 0 * * *".
@midnight ..........---//---
@hourly ..............Виконувати команду щогодини, "0 * * * *".

Для повного розуміння ситуації наведу приклад файлу /etc/crontab (демон працює в ОС Kubuntu 8.10):

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the 'crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

#запускати в п'ять хвилин після півночі, кожен день
5 0 * * * ipeacocks $HOME/ipeacocks/daily.job >> $HOME/zvit/blabla.txt

#запускати о 14:15 першого числа кожного місяця
15 14 1 * * ipeacocks $HOME/bin/monthly

#запускати о 22.00 кожний робочий день
0 22 * * 1-5 root poff kpitelecom >> /home/ipeacocks/blog.txt

5 4 * * sun echo "запуск в 4:05 кожну неділю"


Після зміни файлу /etc/crontab варто виконати команду:

crontab /etc/crontab

середа, 8 липня 2009 р.

Монтування файлової системи. Fstab

Файл /etc/fstab є в будь-якому дистрибутиві Linux: він пов'язаний з монтуванням файлових систем. Впринципі структура файлу неважка, але поява багатьох файлових систем значно його ускладнили. Добре перевірте файл fstab, адже коли його невірно відредагувати і зберегти система може не завантажитись взагалі. Отже, спробуймо в ньому розібратись.


(для перегляду таблички натисни на неї )


Кожний рядок файлу fstab розбивається на 6 полів (див. таблицю):

>>Поле 1. Пристрій, що має файлову систему, тобто розділ, що монтується. В останніх дистрибутивах в цьому полі записані мітки томів або UUID.

>>Поле 2. Точка монтування, каталог в який буде проходити монтування. Власне, перед монтуванням потрібно створити цей каталог, інакше система при завантаженні видасть помилку монтування.

>>Поле 3. Тип файлової системи розділу. Можна вказати параметр auto, що означає самостійно визначати тип файлової системи.

>>Поле 4. Тут задаються опції монтування. Дуже часто ці параметри залежать від того, який тип файлової системи, що буде монтуватись. Тобто, якщо розділ з файловою системою ext3 нормально монтувався з певними параметрами, то це не значить, що розділ ntfs також нормально примонтується з цими параметрами, і, зазвичай, він таки нормально не примонтується. Якщо параметри вказувати не треба, напишіть тут слово "defaults"(по замовчуванні default всатновлює такі опції: async, auto, dev, exec, nouser, rw, suid)

>>Поле 5. Зараз його майже не використовують. Воно використовується dump-ом (програмою створення інкрементних резервних копій) і визначає розділи, котрі потрібно архівувати.

>>Поле 6. Це поле визначає порядок, в якому файлові системи будуть перевірятись (програмою fsck) після збою системи і т.п. Воно приймає значення '1' для кореневого розділу (тобто перевірка в першу чергу) і '2' для всіх інших розділів. Для CD/DVD в цьому полі вповинен стояти '0', думаю, зрозуміло чому.

Ну і накінець розглянемо найбільшуживаніші опції монтування:

noauto - не монтувати розділ під час завантаження ОС, заборонене автоматичне монтування.

auto - автоматичне монтування сисемою розділа, при виявлені його або виконанні команди mount -a

user - дозволити звичайним користувачам (не root) монтувати пристрій. nouser відповідно навпаки, дозволяється лише root-у.

owner - власником змонтованого диску стане користувач, котрий його змонтував.

ro - монтувати в режимі тільки для читання. Такий параметр встановлюється на монтування розділу "/" задля підвищення безпеки.

rw - монтувати в режимі читання/запис.

noatime - не оновлювати час останнього доступу о файлу. Часом це підвищує продуктивність. В Ubuntu використовується аналогічна опція "relatime".

sync - синхронізує всі операції запису (дані одразу пишуться на диск). Про значення async писати не буду, думаю, зрозуміло.

nosuld - нівелює дії атрибутів "setuid" та "setgid". Ця опція часто призначається з'ємними носіями (наприклад, usb-драйви). Вона не дозволить взломщикам отримати доступ адміністратора, наприклад, за допомогою CD з оболочкою з установленим бітом setuid, власником якого є root.

exec - дозвіл на виконання скриптім та програм на диску. noexec відповідно протилежна опція.

gid=ID - призначення ID групи.

id=ID - призначення ID користувача.

Мало не забув навести типові приклади монтування розділів різних файлових систем.
Отже, для FAT32, 16 і т.д.:

/dev/логічний_розділ_диску /media/папка_монтування vfat umask=0, utf8 0 0

для NTFS:

/dev/логічний_розділ_диску /media/папка_монтування ntfs-3g defaults, utf8, umask=007,gid=46 0 0

для EXT4 (для EXT3, EXT2, EXT рядок аналогічний, окрім значення параметру "Тип файлової системи", треба змінити його на відповідний):

/dev/логічний_розділ_диску /media/папка_монтування ext4 defaults 0 0