Архив рубрики: Debian

Операционная система Debian и все, что с ней связано

Debian: Проблема с локалью

Проблема:

perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Решение «на лету» с консоли (временное до перезагрузки):

root@srv:~# export LANGUAGE=en_US.UTF-8
root@srv:~# export LC_ALL=en_US.UTF-8

Решение постоянное:

root@srv:~# nano /etc/default/locale

LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8

На случай, если dpkg-reconfigure localeslocale-gen не принесли ожидаемого результата.

Debian: Установка и настройка NET-SNMP

http://pro-voip.com.ua net-snmpЗдесь все манипуляции проводятся на Debian Wheezy.

Установка net-snmp

root@deb# apt-get install snmp snmpd

snmp — SNMP (Simple Network Management Protocol) applications
snmpd — SNMP (Simple Network Management Protocol) agents

snmpd.conf — конфигурационный файл для Net-SNMP SNMP агента.

Редактируем файл /etc/snmp/snmpd.conf:

root@deb# nano /etc/snmp/snmpd.conf

Рестартуем демон snmpd:

root@deb# service snmpd restart

Проверяем (например):

root@deb# snmpwalk -v2c -c public localhost

Контроль доступа к snmpd можно организовать двумя способами:

  • Traditional Access Control — традиционный контроль доступа
  • VACM Configuration — View-Based Access Control Model

 

SNMPv1 и SNMPv2c

 

Традиционный контроль доступа

Создание read-only и read-write community:

rocommunity COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]
rwcommunity COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]

Создать read-only комьюнити с именем public, дать доступ ко всему дереву OID’ов, не ограничивая доступ к snmpd:

rocommunity public

Создать read-only комьюнити с именем public, дать доступ ко всему дереву OID’ов, разрешив доступ к snmpd только localhost:

rocommunity public localhost

Создать read-only комьюнити public, разрешить доступ с localhost’а к ветке .1.3.6.1.2.1.1:

rocommunity public localhost .1.3.6.1.2.1.1

Если нам нужно объединить несколько разных веток дерева OID’ов для одного community, используем именованые «view»:

view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.2

rocommunity public localhost -V systemview

Если нужна более гибкое управление доступом к SNMP, следует использовать другую модель управления — VACM.

 

Контроль доступа VACM

Для того, чтобы настроить доступ к snmpd по модели VACM, необходимо определить 4 директивы:

  • com2sec
  • group
  • view
  • access

com2sec определяет некое имя (security name), к нему привязываются ip-адрес и комьюнити, с которыми можно получить доступ к snmpd:

com2sec  [-Cn CONTEXT] SECNAME SOURCE COMMUNITY

SECNAME — security name;
SOURCE — имя хоста, ip-адрес хоста, или подсеть в формате ip/mask, с которого разрешен доступ к snmpd;
COMMUNITY — строка community;
CONTEXT — используется в SNMPv3

group определяет группу, к которой привязываются ранее созданные secname:

group GROUP {v1|v2c|usm|tsm|ksm} SECNAME

view определяет ветки дерева MIB, к которым будем давать доступ:

view VNAME TYPE OID [MASK]

VNAME — произвольное имя вьюшки. Имена могут повторятся, таким образом создается вьюшка в набором «веток» дерева OID’ов;
TYPE — included или excluded — действие: включить или исключить ветку с view;
OID — определенный OID или ветка;

access даем ранее созданной группе права на доступ к просмотру/записи определенной вьюшки — связка group — view:

access GROUP CONTEXT {any|v1|v2c|usm|tsm|ksm} LEVEL PREFX READ WRITE NOTIFY

GROUP — имя группы, определенное в шаге 2;
CONTEXT — default context —  «»

Пример:

«Пользователь» local — это пользователь локалхоста с комьюнити secret33, который входит в группу rwgroup. Пользователи группы rwgroup имеют read-write права на view с названием all. Вьюшке all соответствует дерево .1.

«Пользователь» rouser1 может получить доступ с сети 10.10.10.0/24, а «пользователь» rouser2 — с ip-адреса 11.11.11.11/32. Комьюнити — public. «Пользователи» rouser1 и rouser2 входят в группу rogroup. Группа rogroup имеет read-only права на view с названием systemview, в которую входят такие ветки дерева — 1.3.6.1.2.1.1, 1.3.6.1.2.1.2, 1.3.6.1.2.1.25:

###############################################################################
# Access Control - VACM
###############################################################################

####
# First, map the "community name" into a "security name"
#          sec.name    source            community
com2sec    local       localhost         secret33
com2sec    rouser1     10.10.10.0/24     public
com2sec    rouser2     11.11.11.11/32    public

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

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

####
# 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      none
access    rogroup      ""         any          noauth       exact     systemview      none     none

# -----------------------------------------------------------------------------

 

SNMPv3

 

В SNMPv3 главным действующим «лицом» выступает не community, а user. Поэтому перед манипуляциями с контролем доступа, нужно сначала создать пользователя. При создании пользователя, мы также определяем уровень безопасности.

В SNMPv3 предусмотрено три уровня безопасности:

  • noAuthNoPriv — без аутентификации, без шифрования
  • authNoPriv — с аутентификацией (SHA|MD5), без шифрования
  • authPriv — с аутентификацией (SHA|MD5),с шифрованием (DES|AES)

Тип аутентификации — MD5 или SHA; Алгоритм шифрования — DES или AES;
SHA-аутентификация и DES/AES-шифрование используют OpenSSL — OpenSSL должен быть установлен, snmpd должен иметь поддержку OpenSSL.

Узнать, с какими опциями был собран net-snmp можно с помощью следующей команды:

root@deb# net-snmp-config --configure-options

Если —with-openssl в выводе есть, значит net-snmp собран с поддержкой openssl, если кто не догадался.

MD5 не использует OpenSSL.

 

Создание пользователя snmpv3

Для этого используется следующая команда:

net-snmp-config  —create-snmpv3-user [-ro] [-A authpass] [-X privpass] [-a MD5|SHA] [-x DES|AES] [username]

Минимальная длина authpass и privpass — 8 символов.

Сначала останавливаем демон snmpd:

root@deb# service snmpd stop

Затем создаем пользователя, например, rouserv3:

root@deb# net-snmp-config --create-snmpv3-user -ro -A testtest -X testtest -a MD5 -x DES rouserv3
adding the following line to /var/lib/snmp/snmpd.conf:
   createUser rouserv3 MD5 "testtest" DES testtest
adding the following line to /usr/share/snmp/snmpd.conf:
   rouser rouserv3

При этом создается 2 записи в двух дефолтных конфигурационных файлах, о чем и пишет net-snmp-config в своем выводе. Если вы, не запуская snmpd, посмотрите на файл /var/lib/snmp/snmpd.conf, то в конце файла вы действительно увидите там строку «createUser rouserv3 MD5 «testtest» DES testtest». При запуске демона snmpd эта строка удаляется, появляется вместо нее ключ.

Запись «rouser rouserv3» в файле /usr/share/snmp/snmpd.conf — это настройка контроля доступа. Мало ведь создать пользователя, нужно дать ему какие-то права. Запись «rouser rouserv3» можно перенести в /etc/snmp/snmpd.conf (что я и делаю), а дальше использовать либо традиционный контроль доступа (оставив эту строку «rouser rouserv3»), либо VACM (по аналогии, как это настраивалось выше с SNMPv2c, только там были rocommunity и rwcommunity, а здесь rouser и rwuser).

 

Традиционный контроль доступа

Создание read-only и read-write-пользователя:

rouser USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]
rwuser USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]

noauth, auth, priv — помним про три уровня безопасности? было описано выше. Как по мне, так тут не хватает опции SOURCE, как в варианте в SNMP v1 и v2c с комьюнити. Для ограничения доступа с определенных ip-адресов нужно будет использовать фаервол. Ну и дальше примеры.

Дать пользователю rouser1 read-only права на ветку .1.3.6.1.2.1.1, без аутентификации и без шифрования:

rouser    rouser1    noauth    .1.3.6.1.2.1.1

Проверка:

root@deb# snmpwalk -v3 -u rouser1 -l noAuthNoPriv localhost

Дать пользователю rouser1 read-only права на ветку .1.3.6.1.2.1.1, с аутентификацией, но без шифрования:

rouser    rouser1    auth    .1.3.6.1.2.1.1

Проверка:

root@deb# snmpwalk -v3 -u rouser1 -l authNoPriv -a MD5 -A testtest localhost

Дать пользователю rouser1 read-only права на ветку .1.3.6.1.2.1.1, с аутентификацией и с шифрованием:

rouser    rouser1    priv    .1.3.6.1.2.1.1

Проверка:

root@deb# snmpwalk -v3 -u rouser1 -l authPriv -a MD5 -A testtest -x DES -X testtest localhost

 

Контроль доступа VACM

В варианте с SNMP v1 и v2c для настройки VACM нужно было использовать 4 директивы: com2sec, group, view и access. В варианте с SNMP v3 — только три, com2sec использовать не нужно, у нас уже создан snmpv3-пользователь (он уже и есть «security name»), которого можно добавить в группу.

###############################################################################
# Access Control - VACM for SNMPv3
###############################################################################

####
# First, создаем snmpv3-пользователей, как было описано выше.

####
# Second, map the "security name" into a "group name":
#        groupName    securityModel    securityName
group    rwgroup      usm              rwuser1
group    rogroup      usm              rouser1

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

####
# 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      none
access    rogroup      ""         any          priv         exact     systemview      none     none

Отличие от настройки VACM в SNMP v1 и v2c — это указание securityModel — usm в директве group и указани sec.level в директиве access (sec.level может быть noauth, auth или priv)

snmpwalk

Опрос оборудования с помощью утилиты snmpwalk для SNMPv3:

# snmpwalk -v3 -l authPriv -u username-SNMPv3 -a SHA -A authpassword -x AES -X encryptionpassword 10.10.10.10

Debian: Как узнать температуру процессора?

http://pro-voip.com.ua debianlm-sensors — набор утилит для считывания значений датчиков температуры, вольтажа и оборотов куллеров. С помощью этих утилит можно ответить себе на вопрос «Какая сейчас температура у моего процессора?» Итак, что мы делаем…

1.Устанавливаем lm-sensors:

apt-get install lm-sensors

2. Определяем наличие датчиков в системе:

sensors-detect

3. Догружаем недостающие драйвера:

modprobe <недостающие модули>

4. И все, смотрим значения датчиков:

sensors

 

Установка lm-sensors на Debian Wheezy

root@deb# apt-cache search lm-sensors
...
lm-sensors - utilities to read temperature/voltage/fan sensors
...
root@deb# apt-get install lm-sensors

 

Определение датчиков в системе

Перед запуском команды sensors для считывания показаный с датчиков, нужно сначала определить, какие есть датчики в системе, и указать, показания каких из датчиков мы хотим увидеть в выводе команды sensors. С этим нам поможет утилита sensors-detect. Это интерактивная программа, запускаем ее на выполнение, читаем и отвечаем на вопросы. Рекомендуется оставить ответы по умолчанию (по умолчанию ответ Yes, просто нажимаем Enter)

root@deb# sensors-detect
# sensors-detect revision 6031 (2012-03-07 17:14:01 +0100)
# System: Supermicro X8SIL [0123456789]

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): yes
Module cpuid loaded successfully.
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
AMD Family 12h and 14h thermal sensors...                   No
AMD Family 15h thermal sensors...                           No
AMD Family 15h power sensors...                             No
Intel digital thermal sensor...                             Success!
(driver `coretemp')
Intel AMB FB-DIMM thermal sensor...                         No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No
...

Вывод дальнейший опущен, но, думаю, и так все понятно. Например, здесь был найден «Intel digital thermal sensor«, для которого необходимо будет догрузить драйвер coretemp.

...
To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
coretemp
jc42
w83627ehf
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Do you want to add these lines automatically to /etc/modules? (yes/NO)Y
Successful!

В конце своей работы sensors-detect укажет, какие драйвера необходимы и предложит их добавить в /etc/modules, чтобы они автоматически подгружались при загрузке/перезагрузке системы. Соглашаемся. Но нужно проверить, есть ли у вас эти модули вообще.

Подгружаем недостающие модули

root@deb# modprobe coretemp
root@deb# modprobe jc42
FATAL: Module jc42 not found.
root@deb# modprobe w83627ehf

jc42 — не найден, скорее всего, нужно обновить ядро… jc42 нужен для считывания данных темературного сенсора ST STTS2002 DIMM. Обновиться я сейчас не могу, а какая температура памяти как-то не особо важно, поэтому просто уберу его с /etc/modules

Просмотр значений

Вывод всех значений:

root@deb# sensors

Посмотреть значения датчиков в сыром неотформатированном виде:

root@deb# sensors -u

 

Viel Spaß!