вторник, 11 декабря 2018 г.

Установка SNMP агента на сервер Linux CentOS7

Установка SNMP агента на сервер Linux CentOS7

Необходимость установки SNMP агента на сервер Linux может быть вызвана необходимостью мониторить сервер путем SNMP опросов.

Установка необходимых пакетов:
# yum install net-snmp net-snmp-utils

Для надежности лучше забэкапировать конфигурационный файл по умолчанию snmpd:
# cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig

Редактируем текущий конфигурационный файл:
# nano /etc/snmp/snmpd.conf
Например:
syslocation NNovgorod,ul.Vitebskaya,100
syscontact Root <root@localhost>

# First, map the "community name" into a "security name"
#          sec.name    source            community
com2sec    local       localhost         public
com2sec    nolocal     10.10.15.0/24     public

# Second, map the "security name" into a "group name":
#        groupName    securityModel    securityName
group    rwgroup      v2c              local
group    rogroup      v2c              nolocal
group    rwgroup      v1               local
group    rogroup      v1               nolocal

# Third, create a view for us to let the group have rights to:
#       name          incl/excl   subtree             mask(optional)
view    all             included        .1              80

# Finally, grant the groups access to the view:
#      group   context sec.model  sec.level prefix  read write notif
access rwgroup   ""      any       noauth   exact   all  all   all
access rogroup   ""      any       noauth   exact   all  none  none

Здесь сначала устанавливается правило работы с community в различных сетях. Из сети 10.10.15.0/24 сервер можно будет опросить с помощью community «Public»
Затем описывается какая версия SNMP будет использоваться. В данном случае разрешена и 1ая и вторая версия SNMP
Следующим шагом описывается какое дерево OID можно просматривать. В данном случае – все дерево (.1)
На финальном шаге определяются группы доступа для просмотра

Добавляем сервис snmpd в автозагрузку:
# systemctl enable snmpd.service
Запускаем сервис snmpd
# systemctl start snmpd

Изменяем уровень журналирования демона snmpd:
# nano /etc/sysconfig/snmpd
Содержимое файла приводим к виду:
# snmpd command line options
# '-f' is implicitly added by snmpd systemd unit file
OPTIONS="-LS0-4d"

Перезапускаем сервис:
# systemctl restart snmpd.service

Все. Теперь сервер можно опрашивать.
Например опросить самого себя командой:
# snmpwalk -v2c -c public localhost system

понедельник, 10 декабря 2018 г.

Установка WebDAV в Apache на CentOS 7

Установка WebDAV в Apache на CentOS 7

WebDAV (Web-based Distributed Authoring and Versioning) - это расширение протокола HTTP, позволяющее пользователю управлять файлами на WEB-сервере.
В CentOS7 при установке Apache это расширение устанавливается по умолчанию.
Проверить это можно командой «httpd -M | grep fs» . Вывод должен быть таким:
# httpd -M | grep fs
dav_fs_module (shared)

Создадим директорию для файлов, которые будут доступны по протоколу WebDAV и дадим ей права:
# mkdir /var/www/webdav
# chown -R apache:apache /var/www/webdav
# chmod -R 755 /var/www/webdav

Создаем пользователя, который будет подключаться к ресурсу:
# htdigest -c "/etc/httpd/wduser.passwd" DAV-upload dev
Adding password for dev in realm DAV-upload.
New password: <вводим пароль, например 12345>
Re-type new password: <вводим пароль еще раз, например 12345>
Здесь DAV-upload это признак пользователя, который будет использоваться далее в настройках.
dev – имя пользователя
12345 – это пароль

Добавляем виртуальный хост к серверу Apache, который будет обслуживать созданную папку webdav. Для этого создаем файл конфигурации webdav.conf и наполняем его содержимым:
# nano /etc/httpd/conf.d/webdav.conf
Вставляем описание хоста:
Listen 0.0.0.0:8080
DavLockDB /var/www/DavLock
<VirtualHost *:8080>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/webdav/
    ErrorLog /var/log/httpd/error.log
    CustomLog /var/log/httpd/access.log combined
    Alias /webdav /var/www/webdav
    <Directory /var/www/webdav>
        DAV On
        AllowOverride All
        Order allow,deny
        allow from all
        AuthType Digest
        AuthName DAV-upload
        AuthUserFile "/etc/httpd/wduser.passwd"
        AuthDigestProvider file
        Require valid-user
        Options Indexes MultiViews
        IndexOptions Charset=UTF-8 FancyIndexing HTMLTable VersionSort NameWidth=350 FoldersFirst IgnoreCase SuppressDescription
        IndexOrderDefault Descending Name
        IndexIgnore *~ favicon.ico *.bat *.sh* ~$* Thumbs.db
        IndexStyleSheet "http://localhost/style.css"
    </Directory>
</VirtualHost> 
Для WebDAV важно, что бы вся папка /var/www/ принадлежала пользователю apache, поэтому выполняем:
# chown -R apache:apache /var/www/

Рестартуем сервер
# systemctl restart httpd

Не забываем открыть порт 8080 в файрволле:
Для iptables:
# nano /etc/sysconfig/iptables
Добавляем строку:
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
Рестартуем сервис:
# service iptables save
# service iptables restart

Для тестирования WEbDAV устанавливаем утилиту - клиента WebDav - cadaver
# yum --enablerepo=epel install cadaver
Проверяем работу WebDav с помощью cadaver
Подключение к ресурсу WebDev:
# cadaver http://10.10.49.162:8080/webdav/
Authentication required for webdav on server `10.10.49.162':
Username: dev
Password: <вводим пароль 12345>
dav:/webdav/>
Увидев это приглашение понимаем, что подключение прошло успешно.
Тестовая заливка файла:
> put /var/www/html/network2.html
Uploading /var/www/html/network2.html to `/webdav/network2.html':
Progress: [=============================>] 100,0% of 2364 bytes succeeded.
Просмотр содержимого каталога:
> ls
Listing collection `/webdav/': succeeded.
        network2.html                       2364  дек  1 19:45
        test.txt                              26  ноя 18 08:06
Скачивание файла:
> get test.txt
Downloading `/webdav/test.txt' to test.txt:
Progress: [=============================>] 100,0% of 26 bytes succeeded.
Удаление файла:
> delete test.txt
Deleting `test.txt': succeeded.
Выход из клиента:
> exit
Connection to `10.10.49.162' closed.


Ресурс WebDAV можно подключить в ОС Windows как сетевой диск.
Первый вариант (самый легкий):
"Мой компьютер" – кнопка "Подключить сетевой диск"
В поле "Папка" вводим наш URL http://10.10.49.162:8080/webdav/, отмечаем все галочки. Затем будет запрошен логин и пароль. После чего подключением можно пользоваться.
Второй вариант.
Подключаем сетевой диск в Windows из командной строки так:
C:\Users\rossyp>net use N: http://10.10.49.162:8080/webdav/
Введите имя пользователя для '10.10.49.162': dev
Введите пароль для 10.10.49.162:
Команда выполнена успешно.
Отключаем сетевой диск:
C:\Users\rossyp>net use N: /DELETE
N: успешно удален.
Третий вариант.
С помощью программы Cyberduck (https://cyberduck.io/ ) работать с ресурсом можно без проблем. В поле «Сервер» вводим URL, затем вводим логин и пароль и с ресурсом можно работать. Очередь загрузки / выгрузки показывается в удобном окне:

ПРИМЕЧАНИЯ:
1.
Для добавления хранилищу красивости просмотра через WEB-интерфейс можно в корне создать файл "HEADER.html", содержимое которого будет выводиться над листингом, и файл "README.html", содержимое которого будет выводиться под листингом.
Файл style.css применяется в конфигурации для подкачки стиля оформления страниц.
2.
Для решения проблемы работы с большими файлами через WebDAV в Windows необходимо исправить одну переменную в реестре:
Запускаем редактор реестра:
>regedit
Ищем ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
Исправляем параметр FileSizeLimitInBytes на ffffffff
По умолчанию здесь -  2faf080

воскресенье, 8 апреля 2018 г.

Установка и использование graphviz в CentOS7

Установка и  использование graphviz в CentOS7

1. Просмотр доступных пакетов graphviz
# yum list available 'graphviz*'

2. Установка всех пакетов graphviz
# yum install 'graphviz*'

3. Проверка работы системы graphviz
Создаем файл temp.dot 
# touch temp.dot
Помещаем в файл следующее:
digraph G{
  Один->Два->Три->Четыре->Пять->Шесть->Десять;
  Три->Десять;
  Четыре->Десять;
}
Конвертируем данные в граф с представлением в png
# dot -Tpng temp.dot -o temp.png
После ключа T указываем тип выходного файла
Получим файл png с изображением:

4. Установка связки php с GraphViz
# yum install php-pear-Image-GraphViz
# service httpd restart

5. Создадим файл  network.php с содержимым
<?php
require_once 'Image/GraphViz.php';

$gv = new Image_GraphViz();
$gv->addEdge(array('wake up'        => 'visit bathroom'));
$gv->addEdge(array('visit bathroom' => 'make coffee'));
$gv->image();
?>
При просмотре этого файла в браузере получим изображение



Основными объектами являются узлы («node») и ребра («edge»)
Пример описания узла и связей:
<?php

require_once 'Image/GraphViz.php';

$gv = new Image_GraphViz();

$gv->addNode(
    'Node1',
    array(
      'URL'   => 'http://yandex.su',
      'label' => 'Яндекс',
      'shape' => 'box3d',
      'color' => 'green',
      'style'=>'filled',
      'fillcolor'=>'lightgrey'
    )
  );

$gv->addEdge(array('Node1' => 'Node2'));
$gv->addEdge(array('Node2' => 'Node3'),  
array('color' => 'red',
'fontcolor'=>"blue",
'label'=>"ссылка на Google",
'URL'=>"http://www.google.com"

);
$gv->image();

?>

Результат:



Попытка вставить код php в имеющуюся отформатированную страницу приведет к ошибке
 
Это связано с тем, что код, который генерит GraphViz.php имеет первую строку 
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
При наличии xml-фрагмента браузер не допускает других символов перед <?xml.

Обойти это можно создав другую страницу, которая будет получать код основной с построенным графом.
Пример файла забирающего данные с другой страницы и выводящего дополнительные данные до и после графа:
<p>123</p>
<?php

date_default_timezone_set('Etc/GMT-3');

$url = "http://10.10.49.162/network.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$output = curl_exec($ch);

?>
<p>456</p>
Результат: