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

Операционные системы Linux

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

Проблема:

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

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

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

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

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

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

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

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

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

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

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

Контроль доступа к 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:

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

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

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

Если нужна более гибкое управление доступом к 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:

 

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 можно с помощью следующей команды:

Если —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:

Затем создаем пользователя, например, 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, без аутентификации и без шифрования:

Проверка:

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

Проверка:

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

Проверка:

 

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

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

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

 

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

 

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

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

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

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

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

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

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

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

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

 

Viel Spaß!

CentOS: Полезные заметки

http://pro-voip.com.ua centos

Man

# yum install man.i686 man-pages.noarch
man.i686: A set of documentation tools: man, apropos and whatis
man-pages.noarch: Man (manual) pages from the Linux Documentation Project

Пользователи

Добавление пользователя:
# useradd <login name>
Пользователь создается с параметрами, описанными в /etc/default/useradd. Для изменения дефолтных параметров можно использовать опции команды useradd. Есть еще команда adduser, но это всего-навсего символическая ссылка на useradd.

Установка пароля новосозданного пользователя:
# passwd <login name>

По умолчанию пользователь не может выполнять команды с правами root’a, используя команду sudo -s:

Править /etc/sudoers:
# visudo

В файле /etc/sudoers видим, что пользователи, которые входят в группу wheel, могут выполнять все команды:

Как вариант, можно добавить пользователя в группу wheel.

Добавить пользователя в дополнительную группу:
# usermod -a -G <group name> <login name>

-a — добавить пользователя в дополнительную группу (не меняя initial-группы пользователя), используется только совместно с опцией -G
-G — указывает, в какую именно группу (или группы) добавить пользователя. Группа должна быть создана ранее.

Добавить пользователя в группу wheel:
# usermod -a -G wheel user1

Проверка:

Добавить пользователя еще в несколько групп:
# usermod -a -G support,sales,management user1

 

Система

Посмотреть версию установленной OS Centos:

# cat /etc/centos-release
CentOS release 6.7 (Final)

lrwxrwxrwx. 1 root root 14 Nov 17 12:52 /etc/redhat-release -> centos-release
lrwxrwxrwx. 1 root root 14 Nov 17 12:52 /etc/system-release -> centos-release

/etc/redhat-release и /etc/system-release — это ссылки на centos-release

Посмотреть список возможных обновлений:
# yum list updates

Upgrage системы (например, с 6.0 до 6.7)
# yum update

 

Ядро и модули

Какие модули загружены:
# lsmod

Информация о модуле
# modinfo <module name>

Загрузить модуль на лету:
# modprobe <module name>

Выгрузить модуль на лету:
# modprobe -r <module name>

 

Автозагрузка модуля при старте системы

Для этого создаем скрипт и размещаем его в /etc/sysconfig/modules
Обязательные условия:
— имя скрипта должно иметь вид <some_words>.modules, например 8021q.modules
— скрипт, само собой, делаем исполняемым — chmod +x 8021q.modules
— сам скрипт запускает все тот же modprobe <имя модуля>

не забываем про первую строку #!/bin/sh и путь к modprobe лучше указать полностью

 

Добавление своего скрипта в автозагрузку

Скрипт должен быть исполняемым

# ls -al /etc/iptables/iptables-start.sh
-rwxr—r—. 1 root wheel 83 Nov 28  2013 /etc/iptables/iptables-start.sh

Добавляем его в /etc/rc.local

Скрипт выполняется после загрузки системы.

 

Сеть

DNS Настройка резолвера:

/etc/resolv.conf

seacrh provoip.in.ua
nameserver 8.8.8.8
nameserver 8.8.4.4

Настройка сетевых параметров:

/etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=srv.provoip.in.ua
GATEWAY=192.168.100.1

NETWORKING=yes (yes — сеть будет настраиваться автоматически из скриптов /etc/sysconfig/network-scripts, no — вручную)

 

Настройка сетевых интерфейсов:

/etc/sysconfig/network-scripts/ifcfg-*

В /etc/sysconfig/network-scripts есть файлы вида ifcfg-*, например ifcfg-eth0, ifcfg-eth1, ifcfg-lo — в них описываем необходимые настройки сетевых карт. Эти файлы передаются в качетсве аргумента в скрипты ifup, ifdown и т.п. Каждая сетевая карта имеет свой файл ifcfg-. Например, есть в системе сетевая карта, которая определяется как eth0. Для ее автонастройки после перезагрузки системы необходим соответствующий файл ifcfg-eth0.

 

Конфигурация сетевой карты (фиксированный ip-адрес):

DEVICE=eth0
BOOTPROTO=none
IPADDR=192.168.100.2
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255
ONBOOT=yes — включать интерфейс при загрузке или нет
NAME=eth0

Конфигурация сетевой карты (получение ip-адреса по dhcp):

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

BOOTPROTO=<protocol>, значения — none, dhcp, bootp — какой протокол использовать для получения настроек
BROADCAST=<address> — необязательно указывать, высчитывается автоматически
NETWORK=<address> — необязательно указывать, высчитывается автоматически
DEVICE=<name> — имя физического устройства

HWADDR=<MAC-address> — используется в серверах с несколькими сетевыми картами для того, чтобы убедиться интерфейсы получат свои правильные device-name. Т.е., например, настройки, прописанные для девайса eth0 всегда будут применяться к карте с вот таким вот HWADDR (Другими словами, сетевая карта с этим вот HWADDR всегда будет иметь имя eth0 и на при каких обстоятельствах не поменяет его на eth1). Директива не используется совместно с MACADDR.
MACADDR=<MAC-address> — можно перезаписать MAC-адрес физической сетевой карты (в форме AA:BB:CC:DD:EE:FF). Директива не используется совместно с HWADDR.

ETHTOOL_OPTS=<options> — указать опции утилиты ethtool, например, прибить жестко скорость и т.д
ETHTOOL_OPTS=»autoneg off speed 100 duplex full»

DNS1=<address>
DNS2=<address>
PEER_DNS=yes — изменять /etc/resolv.conf. При ONBOOT=dhcp PEER_DNS=yes — это дефолтное значение

SRCADDR=<address> — ip-адрес, котрый навешивается на исходящие пакеты (полезно если на интерфейсе прибито alias’ом несколько адресов)
USERCTL=<yes,no> — Не-root пользователи могут (или нет) управлять сетевой картой

 

Алиас на интерфейс:

Алиас — несколько ip-адресов на одном физическом интерфейсе

Файл для алиаса — ifcfg-<if-name>:<alias-value>

DEVICE=<ifname>:<alias-value>

!Алиас-интерфейсы не поддерживают DHCP

Пример

Физический интерфейс — файл ifcfg-eth0 (DEVICE=eth0)
Алиас на физический интерфейс — файл ifcfg-eth0:0 (DEVICE=eth0:0)
Еще один алиас на физический интерфейс — файл ifcfg-eth0:1 (DEVICE=eth0:2)
и т.д.

 

Файл-клон интерфейса:

Файл-клон используется для добавления каких-либо опций для одного и того же физического интерфейса.
Файл ifcfg-<if-name>-<clone-name>

Пример

Физический интерфейс — файл ifcfg-eth0 (DEVICE=eth0)
Клон физического интерфейса — файл ifcfg-eth0-custom (DEVICE=eth0)
Параметры, указанные в ifcfg-eth0 и ifcfg-eth0-custom комбинируются

 

802.1q в Centos

Должен быть загружен модуль 8021q
Проверяем:
# lsmod | grep 8021q

Если не загружен, загружаем:
# modprobe 8021q

Добавим автозагрузку модуля при старте системы (как это делается, смотрим выше)

! Для каждого влана создаем свой файл ifcfg-ethX.<vlan number> в /etc/sysconfig/network-scripts/. 

VLAN=yes
DEVICE=ethX.<vlan number>
IPADDR=192.168.100.2
NETMASK=255.255.255.0
ONBOOT=yes

Не лишним будет создать ifcfg- файл физического устройства перед этим.

Пример

Нужно создать vlan 222 на интерфейсе eth0. Создаем 2 файлав /etc/sysconfig/network-scripts/:

ifcfg-eth0

DEVICE=eth0
ONBOOT=yes

ifcfg-eth0.222

VLAN=yes
DEVICE=eth0.222
IPADDR=192.168.100.2
NETMASK=255.255.255.0
ONBOOT=yes