Связаться со мной:
19 заметок с тегом

debian

Позднее Ctrl + ↑

Ошибка при запуске apf-firewall

Если при запуске apf получаем ошибку:

apf(23061): {glob} activating firewall
libkmod: ERROR ../libkmod/libkmod-module.c:1567 kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory
Error: could not get list of modules: No such file or directory

или

kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory

то в файле /etc/apf-firewall/conf.apf надо изменить значение директивы с

SET_MONOKERN="0"

на

SET_MONOKERN="1"

После этого apf-firewall должен запустится без ошибок.

2015   Advanced Policy Firewall   APF   APF-Firewall   debian   ubuntu
2015   debian   grub   grub2   raid   raid1   ubuntu

Мониторинг нагрузки на сервер утилитой atop.

Самой удобной утилитой мониторинга нагрузки на сервере, на мой взгляд, является atop. Огромным плюсом данной утилиты является постоянное ведение логов нагрузки на сервер, это удобно т.к проблемы обычно происходят когда мы не следим за сервером прямо сейчас. А с atop можно отмотать «время назад» и посмотреть нагрузку на сервер в момент проблемы. Данная утилита есть во всех дистрибутивах линукс, также она присутствует во FreeBSD.
Рассмотрим установку утилиты для Ubuntu/Debian, Cenos и FreeBSD.

Ubuntu/Debian:

# apt-get install atop -y

Centos:

# yum install atop -y

FreeBSD:
Определяем местонахождение порта:

# whereis atop
atop: /usr/ports/sysutils/atop

Переходим в каталог

# cd  /usr/ports/sysutils/atop

И устанавливаем порт

# make install clean

После установки мы можем запустить утилиту:

# atop

После запуска мы увидим окно типа такого:

Дожидаемся когда посередине исчезнет надпись
*** system and process activity since boot ***

теперь мы можем видеть нагрузку на сервер в реальном времени. Сверху мы видим нагрузку в процентах на основные узлы сервера: процессор, ядра процессора, память, своп, дисковые устройства и сетевые интерфейсы. Если на какой-либо узел будет повышенная нагрузка, то он будет подсвечен красным цветом.

Снизу мы видим процессы с PID’ами, пользователями которым они принадлежат и данными нагрузки которые они создают. Если на какую-либо подсистему сервера идет повышенная нагрузка и нам нужно узнать какой процесс её создает, то мы можем сортировать эти процессы по нагрузке на определенный узел нажатием определенных клавиш.

m - сортировать по занимаемой памяти
d - сортировать по создаваемой нагрузке на диск
u - покажет таблицу нагрузки по пользователям
v - покажет подробную информацию по процессам
g - вернет вывод по умолчанию
n - сортировать процессы по нагрузке на сеть(доступно только с установленным патчем ядра)

Теперь разберёмся как смотреть логи atop. Тут все достаточно просто. Для просмотра лога за текущий день достаточно выполнить

# atop -r

Мы увидим обычное окно atop, как и при просмотре в реальном времени, только по состоянию на 00 часов 00 минут текущего дня. Время можно увидеть в верхней строке. Переместится вперед по времени можно с помощью клавиши t. Назад с помощью shift+t.
Сразу перейти на нужное время можно нажав -b, и в появившемся диалоге ввести нужное время.
Также хранятся логи нагрузки за предыдущие дни. В Ubuntu 14.04 они лежат в каталоге /var/log/atop/. Открыть можно примерно так.

# atop -r /var/log/atop/atop_20140915

Цифры в названии файла обозначают дату в формате ГГГГММДД.

2014   atop   centos   debian   Freebsd   Linux   ubuntu

Отправка почты с сайта через smtp.yandex.ru на своём домене.(Иcправление)

С 16 сентября 2014 года Яндекс.Почта полностью перешла на протокол SSL. При передаче данных по IMAP/POP3/SMTP сервис требует шифрование по SSL, соответственно статья Отправка почты с сайта через smtp.yandex.ru на своём домене. потеляла свою актуальность. Сервисы настроенные с конфигом как в статье по ссылке больше не работают. При попытке отправки почты выдается ошибка типа

# send-mail: Server didn't like our AUTH LOGIN (530 5.7.7 Email sending without SSL/TLS encryption is not allowed.
Please see: http://help.yandex.ru/mail/mail-clients/ssl.xml)

Чтобы исправить эту проблему нужно изменить конфиг /etc/ssmtp/ssmtp.conf
Правильный конфиг теперь выглядит так:

mailhub=smtp.yandex.ru:465  #адрес и порт smtp сервера яндекса
AuthUser=post@anikin.pw  #ящик с которого будем отправлять
AuthPass=pAssw0rd #пароль к ящику
rewriteDomain=anikin.pw #принудительное указание домена в поле From
hostname=anikin.pw #hostname тачки
UseTLS=YES #Использование шифрования SSL/TLS
FromLineOverride=NO #Запрещает скриптам «решать» с какого ящика отправлять письмо.
Root=admin@anikin.pw #ящик куда будет отправляться почта предназначенная root
2014   debian   mail()   smtp.yandex.ru   ssmtp   ubuntu   почта

Замена диска в програмном RAID1 в Linux

Оглавление:

    I. Удаление диска из массива
    II. Добавление диска в массив после замены
     1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск
     2. Добавление диска в массив
    III. Установка загрузчика

У нас есть сервер в котором 2 диска: /dev/sda и /dev/sdb. Эти диски собраны у нас в софтверный RAID1 с помощью mdadm. Один из дисков вышел из строя, в нашем случае это /dev/sdb.

I. Удаление диска из массива

Перед заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:

# cat /proc/mdstat 
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] 
md2 : active raid1 sda4[0] sdb4[1]
      1456504640 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sda3[0] sdb3[1]
      7996352 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sda2[0] sdb2[1]
      499392 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

В данном случае массив собран так. Что md0 состоит из sda2 и sdb2, md1 из sda3 и sdb3, md2 из sda4 и sdb4. На этом сервере md0 это /boot, md1 — своп, md2 — корень. Убираем sdb из всех устройств.

# mdadm /dev/md0 --remove /dev/sdb2
# mdadm /dev/md1 --remove /dev/sdb3
# mdadm /dev/md2 --remove /dev/sdb4

Если разделы из массива не удаляются, это как в нашем случае. Mdadm не считает диск неисправным и использует его, и при удалении мы увидим ошибку, что устройство используется. В этом случае перед удалением помечаем диск как сбойный.

# mdadm /dev/md0 -f /dev/sdb2
# mdadm /dev/md1 -f /dev/sdb3
# mdadm /dev/md2 -f /dev/sdb4

А затем снова выполним команды по удалению разделов из массива. Все, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска.

II. Добавление диска в массив после замены

  1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск

После замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk Установим gdisk:

# apt-get install gdisk -y

Выполняем:

# gdisk -l /dev/sda

Где /dev/sda — исправный диск находящийся в raid. В выводе будет примерно это для MBR:

Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present

И примерно это для GPT:

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Перед добавлением диска в массив нам нужно на нем создать разделы в точности такие же как и  на sda. В зависимости от разметки диска это делается по разному.

Копирование разметки для GPT:

# sgdisk -R /dev/sdb /dev/sda

Здесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена.
Даем диску новый случайный UIDD:

# sgdisk -G /dev/sdb

Копирование разметки для MBR:

# sfdisk -d /dev/sda | sfdisk /dev/sdb

Здесь наоборот первым пишется диск с которого переносим разметку, а вторым на который переносим. Если разделы не видны в системе, то можно перечитать таблицу разделов командой:

# sfdisk -R /dev/sdb

  2. Добавление диска в массив

Когда мы создали разделы на /dev/sdb, то можно добавлять диск в массив.

# mdadm /dev/md0 -a /dev/sdb2
# mdadm /dev/md1 -a /dev/sdb3
# mdadm /dev/md2 -a /dev/sdb4

III. Установка загрузчика

После добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:

# grub-install /dev/sdb

Если сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом.
Монтируем корневую файловую систему в  /mnt:

# mount /dev/md2 /mnt

Монтируем boot:

# mount /dev/md0 /mnt/boot

Монтируем /dev, /proc и /sys:

# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys

Затем делаем chroot в примонтированную систему:

# chroot /mnt

И устанавливаем grub на sdb:

# grub-install /dev/sdb

Теперь можно попробовать загрузится в нормальный режим.

P.S. Если при установке загрузчика возникнет ошибка Could not find device for /boot/boot: not found or not a block device то вам сюда.

2014   debian   gdisk   GPT   mbr   mdadm   raid   raid1   ubuntu

Как заставить работать apf-firewall на ядре версии 3.x

Установил apf-firewall на один из серверов, столкнулся с проблемой. При запуске фаервола получил ошибку:

Kernel version not equal to 2.4.x or 2.6.x, aborting.

Фаервол не запустился и правила в iptables не добавились. Путём долгого гуления выяснилось что в коде скрипта стоит проверка версии ядра и на ядрах отличных от 2.4.х и 2.6.х apf отказывается работать. Обойти данное досадное недоразумение, как оказалось, достаточно просто. В файле /etc/apf-firewall/internals/functions.apf находим строку 68 и приводим условие к такому виду:

elif [ "$KREL" == "3.2" ]; then

MEXT="ko"

Где 3.2 ваша версия ядра. Версию ядра можно узнать выполнив:

# uname -a

После этих изменений apf запустился без проблем и правила добавились в iptables. Нормальная работа apf проверена на версии ядра 3.2.х и по информации в интернете 3.0.х. Решение вроде простое, но найти эту информацию оказалось довольно трудно. Поэтому сделал эту запись, возможно кому-то поможет.

2013   Advanced Policy Firewall   APF   APF-Firewall   debian   iptables   Kernel   Linux   ubuntu

Смена пароля admin в vdsmanager.

Vds manager хранит пароли в виде хеша в файле /usr/local/ispmgr/etc/vdsmgr.conf

Для смены пароля на понадобится известный хеш. Возьмем например хеш root пароля из файла /etc/shadow

# cat /etc/shadow|grep root

Копируем строчку с хеш пароля и заменяем старый хеш в vdsmgr.conf. Затем перезапускаем панель

# killall -9 vdsmgr

Заходим в панель с логином admin и паролем root. И меняем пароль на новый.

2013   centos   debian   Freebsd   Linux   passwd   password   ubuntu   vds-manager   vdsmgr

Установка i2p на удалённый Linux-сервер на примере ubuntu.

Это устаревшая версия статьи, сейчас установка i2p делается проще. Более свежая информация в этой статье.

В связи с тем что наше правительство в последнее время принимает спорные законы и многие сайты постепенно перебираются в i2p, я расскажу как поднять и настроить i2p-роутер на удалённом сервере. Почему не на стационарном компьютере? Всё же по специфике работы i2p, лучше использовать машину, которая работает круглосуточно для достижения максимальной скорости работы внутри сети. Допустим у нас есть сервер под управлением ОС Ubuntu, работа осуществляется с ним только по удалёнке и физического доступа к машине нет. Задача: установить i2p-роутер и ходить через него в скрытосеть на стационарном компе.

Логинимся по ssh к серверу. Для работы i2p требуется java, установим её. Для ubuntu 10.04/10.10 это делается так:

# add-apt-repository ppa:sun-java-community-team/sun-java6

# apt-get update

# apt-get install sun-java6-jdk

Java установлена. Теперь создадим пользователя для i2p, т.к не рекомендуется чтобы роутер работал под рутом.

# adduser i2p

Отвечаем на вопросы, после этого пользователь будет создан. Затем создадим и зададим домашнюю директорию пользователя

# mkdir /home/i2p

# usermod -d /home/i2p i2p

# chown -R i2p:i2p /home/i2p

Логинимся под пользователем i2p на, сервер или же просто меняем текущего пользователя не завершая сеанса

# su i2p

И переходим в его папку, если не перешли до этого

$ cd /home/i2p

Теперь нам нужно скачать и установить i2p-роутер. Скачивать его нужно здесь http://www.i2p2.de/download . А именно скачиваем Linux / BSD / Solaris Graphical installer. Копируем от туда ссылку и качаем с помощью wget.

$ wget http://mirror.i2p2.de/i2pinstall_0.9.7.1.jar

Запускаем установку с атрибутом -console, это значит установка на машину без графики.

$ java -jar i2pinstall_0.9.7.1.jar -console

Отвечаем на вопросы, и роутер будет установлен. Затем переходим в каталог в который мы установили роутер и запускаем его командой:

$ ./i2prouter start

Всё. Роутер запущен и работает. Теперь нужно произвести его настройку, для настройки нужно через браузер подключится на localhost:7657, но как это сделать на удалённой машине на которой нет графики и браузера. Пробросим для этого порт 7657 удалённой машины на локальный порт 7657 нашего стационарника. Т.к у меня на стационарнике установлен линукс, то я покажу как это сделать в нём. Пробросить порт можно и в windows с помощью pytty, про то как это сделать можно прочесть здесь. В линуксе это делается гораздо проще. На стационарнике вводим команду:

$ ssh i2p@ip-сервера -L7657:127.0.0.1:7657

Где i2p — имя пользователя. Залогинились, теперь в браузере вводим localhost:7657 и попадаем в консоль маршрутизатора.

Снимок экрана от 2013-10-19 16:51:45

Затем производим настройку. Переходим в http://localhost:7657/dns и в подписки прописываем:

http://biw5iauxm7cjkakqygod3tq4w6ic4zzz5mtd4c7xdvvz54fyhnwa.b32.i2p/uncensored_hosts.txt
http://bl.i2p/hosts2.txt
http://cipherspace.i2p/addressbook.txt
http://dream.i2p/hosts.txt
http://hosts.i2p/
http://hosts.i2p/hosts.cgi?filter=all
http://i2host.i2p/cgi-bin/i2hostetag
http://inr.i2p/export/alive-hosts.txt
http://joajgazyztfssty4w2on5oaqksz6tqoxbduy553y34mf4byv6gpq.b32.i2p/export/alive-hosts.txt
http://stats.i2p/cgi-bin/newhosts.txt
http://tino.i2p/hosts.txt
http://trevorreznik.i2p/hosts.txt
http://www.i2p2.i2p/hosts.txt

Затем. Переходим в http://localhost:7657/config и изменяем настройки скорости в соответствии с нашими пожеланиями и возможностями канала нашего сервера.

Вот мы и произвели первоначальную настройку i2p-роутера. Теперь разберёмся как через него ходить в скрытосеть с нашего стационарника. В настройках тунелей по адресу http://localhost:7657/i2ptunnelmgr, по умолчанию в I2P HTTP Proxy проставлено слушать соединения только с 127.0.0.1. Можно конечно изменить эту настройку на внешний ip сервера. Но нужно учитывать что трафик в сети шифруется ровно до роутера, т.е от сервера до вас он пойдёт в незашифрованом виде. В этом случае нужно использовать другие методы шифрования например vpn от вас до вашего сервера. Я расскажу о самом простом способе подключится используя ssh-тунель. В этом случае наш трафик будет зашифрован средствами ssh.

Адрес I2P HTTP Proxy — localhost:4444. Пробросим порт 4444 удалённого сервера на локальную машину. В windows с помощью putty, как описано выше, в linux командой:

$ ssh i2p@ip-сервера -L4444:localhost:4444

Эту команду можно запускать в screen, тогда после подключения консоль можно будет закрыть. Затем в браузере пропишем настройки прокси. В качестве прокси используем localhost и порт 4444. Т.к теперь наш порт 4444 соответствует порту 4444 удалённого сервера.

Снимок экрана от 2013-10-19 16:55:04

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

Так же я бы советовал зайти на hiddenchan.i2p в раздел /i2p/ — i2p internals, и ознакомится с темами посвящёнными безопасности в сети и спецификой её работы.

Вот собственно и всё. Хочу предупредить, что первоначальный запуск роутера может быть достаточно длительным. Должно произойти заполнение адресной книги сайтами и соединение роутера с пирами. Изначально сайты могут не открываться. Достаточно подождать, когда роутер соединится с пирами и подгрузит адресную книгу и всё будет работать.

Это устаревшая версия статьи, сейчас установка i2p делается проще. Более свежая информация в этой статье.

2013   debian   i2p   i2p-router   ubuntu   VDS   VPS   настройка   прокси   сервер

Отправка почты с сайта через smtp.yandex.ru на своём домене.

Делать это будем через маленькую утилиту ssmtp. Допустим что у нас есть почта на собственном домене в яндексе.

Установим ssmtp, для дебианоподобных систем так:

# apt-get install ssmtp

Очищаем конфиг /etc/ssmtp/ssmtp.conf и пишем свой:

mailhub=smtp.yandex.ru #адрес smtp сервера яндекса
AuthUser=post@anikin.pw #ящик с которого будем отправлять
AuthPass=pAssw0rd #пароль к ящику
rewriteDomain=anikin.pw #принудительное указание домена в поле From
hostname=anikin.pw #hostname тачки
FromLineOverride=NO #Запрещает скриптам «решать» с какого ящика отправлять письмо.
Root=admin@anikin.pw #ящик куда будет отправлятся почта предназначеная root

Идем в файл /etc/ssmtp/revaliases и прописывам пользователей и значение, которое будет выставлятся в поле From для каждого из указаных пользователей:

www-data:post@anikin.pw

Пользователей не указаных в этом файле smtp-сервер отфутболит и почта не уйдёт.

Проверяем отправку почты с сайта. После этих настроек почта должна уходить. Данная утилита подойдёт для небольшого количества отправляемух писем, отправка не быстрая. Обычно несколько секунд. Подходит для небольшого проекта. Если у вас большой серьёзный проект, то лучше воспользоваться другими решениями.

P.S. С 16 сентября 2014 года Яндекс.Почта полностью перешла на протокол SSL. При передаче данных по IMAP/POP3/SMTP сервис требует шифрование по SSL, соответственно эта статья потеляла свою актуальность. Правильный конфиг для ssmtp есть в статье Отправка почты с сайта через smtp.yandex.ru на своём домене.(Иcправление)

2013   debian   mail()   smtp.yandex.ru   ssmtp   ubuntu   почта