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

ubuntu

Позднее 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

Модуль remoteip в ubuntu 14.04

Почему-то с модулем mod_rpaf для apache2 в ubuntu 14.04 у меня не срослось. Не хотел он нормально работать и все. Поэтому было решено использовать модуль remoteip, который, собственно, выполняет те же функции.
Подключаем модуль.

# a2enmod remoteip

Создаем конфигурационный файл

# nano /etc/apache2/conf-available/remoteip.conf
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1 ip_сервера

Применяем конфиг

# a2enconf remoteip

Перезапускаем apache2

# service apache2 restart
2015   apache2   mod_rpaf   remoteip   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

Включение server-status на apache2/httpd в ubuntu и centos

server-status это модуль веб-сервера, который может помочь установить какой из сайтов на сервере создает нагрузку или даже покажет на какой именно скрипт на сайте идет больше всего обращений. В общем это модуль который помогает в мониторинге состояния веб-сервера. Разберёмся как его установить.

В centos он обычно уже установлен. В ubuntu смотрим:

# ls /etc/apache2/mods-enabled



Если в выводе есть status.load и status.conf, то значит он тоже установлен. Если же нет, то выполняем:

# /usr/sbin/a2enmod status


Затем открываем конфигурационный файл веб-сервера, в centos — /etc/httpd/conf/httpd.conf, в ubuntu — /etc/apache2/apache2.conf. Добавляем туда:

ExtendedStatus On
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

Затем перезапускаем апач.

# service apache2 restart
  • в ubuntu
# service httpd restart
  • в centos

Устанавливаем:
В centos:

# yum install links elinks



В ubuntu:

# apt-get install links elinks


Теперь мы можем посмотреть server-status. Для этого выполняем:

# elinks http://localhost/server-status



Если апач у нас висит не на 80 порту, например когда фронтэндом установлен nginx, то в эту команду нужно добавить порт апача. Например так, для порта 81:

# elinks http://localhost:81/server-status
2014   apache2   centos   httpd   mod_status   server-status   ubuntu

Шифрование данных в облаке с помощью encfs + cryptkeeper

В предыдущей статье я расказывал как установить облако mail.ru в ubuntu. Теперь стоит рассказать о шифровании данных в облаках, т.к у многих пользователей есть такие данные которые нельзя выкладывать в общий доступ(файлы с паролями, личные записи, проекты и т. д.). Но для этих данных так же хотелось бы пользоваться преимуществами облака. Для этих целей я использую encfs и gui для неё cryptkeeper. Преимущество encfs для облаков в том что она не создает криптоконтейнер, а шифрует каждый файл по отдельности. Т.е при изменении одного файла не придётся перезаливать все зашифрованные данные. Ниже я кратко расскажу про установку.

$ sudo apt-get install encfs cryptkeeper

Затем создаем папку в облаке, которая будет зашифрована.

$ mkdir /home/user/cloud/encfs

И папку за пределами облака, в которую будет монтироваться наша зашифрованая папка.

$ mkdir /home/user/data

Затем создаем зашифрованную папку /home/user/cloud/encfs с точкой монтирования /home/user/data.

$ encfs /home/user/cloud/encfs /home/user/data

Пароль запомните, т.к в случае если вы забудете пароль данные будут утеряны.
Теперь отмонтируем зашифрованный каталог.
$ fusermount -u /home/user/data

Запускаем cryptkeeper, кликаем на значок в трее и выбираем «Импорт папки EncFS».

Выбираем нашу зашифрованную папку и папку в которую её смонтировать.

Теперь мы можем монтировать наш зашифрованный каталог через иконку cryptkeeper в трее.

После правильного ввода пароля, каталог будет смонтирован. Теперь cryptkeeper можно добавить в автозагрузку так же как приложение «Облако mail.ru» в предыдущей статье, чтобы при каждой загрузке не запускать его из меню dash. Если иконки в трее не появляются, там же есть комментарий как это починить.

2014   cloud   cryptkeeper   encfs   ubuntu   Облако

Облако mail.ru как альтернатива ubuntu one.

Теперь mail.ru предоставляет установочные пакеты под разные дистрибутивы. Правильный процесс установки описан здесь.

Как недавно стало известно canonical закрывает свой облачный сервис ubuntu one, поэтому мне пришлось искать альтернативу их облаку. Когда mail.ru раздавали терабайт в своем облаке, я его взял но не использовал. Но раз уж такое дело, то решил попробовать интегрировать его в ubuntu в качестве альтернативы ubuntu one. Как я это делал я расскажу ниже.

Для начала установим сам клиент. На странице https://cloud.mail.ru/home/ скачиваем клиент.
Кликаем «Скачай приложение для компьютера». И в открывшемся окне выбираем «Linux amd64» или «Linux i386» в зависимости от вашей архитектуры.

Чтобы после установки облака в системном трее появился значок для управления облаком в терминале выполним следующие команды:
$ sudo add-apt-repository ppa:timekiller/unity-systrayfix
$ sudo apt-get update
$ sudo apt-get upgrade
$ gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"

Если у вас ubuntu 14.04, то вместо предыдущих команд выполняем:

$ sudo apt-add-repository ppa:gurqn/systray-trusty
$ sudo apt-get update
$ sudo apt-get upgrade

Затем скопируем приложение в /usr/bin и сделаем его исполняемым

$ sudo cp ~/Загрузки/cloud /usr/bin/
$ sudo chmod +x /usr/bin/cloud

Затем нам нужно создать пункт в меню dash. Создаем файл

$ sudo nano /usr/share/applications/cloud.desktop

С текстом

[Desktop Entry]
Name=Cloud Mail
Comment=
Exec=cloud
Icon=/usr/share/icons/Humanity-Dark/status/48/weather-snow.svg
MimeType=
Terminal=false
Type=Application
StartupNotify=true
Categories=GNOME;GTK;
Теперь нам нужно добавить облако в автозагрузку, чтобы не тыкать каждый раз приложение в меню dash. Находим в dash пункт «Автоматически загружаемые приложения».

И добавляем туда облако примерно так

Если у вас не толстый канал интернета, то есть небольшая утилита trickle. Она позволяет ограничить канал интернета приложению облако, чтобы вы могли комфортно пользоваться интернетом, когда облако загружает данные. Установить её просто

$ sudo apt-get install trickle

Теперь в «Автоматически загружаемые приложения» пропишем команду вместо /usr/bin/cloud

$ /usr/bin/trickle -d 300 -u 150 /usr/bin/cloud

Где 300 и 150 скорость в килобайтах в секунду закачки и отдачи соответственно. Эту же команду пропишем в файле /usr/share/applications/cloud.desktop в строке Exec=, чтобы из меню dash облако так же запускалось с ограничением скорости. Теперь, когда мы всё настроили либо перезагружаемся либо перелогиниваемся, чтобы применились все изменения и добавился пункт в меню dash. Приложение должно запустится автоматически при загрузке.

Вводим свой логин и пароль к mail.ru. И система спросит какую папку синхронизировать.

После запуска, в трее в правом верхнем углу появится значок в котором можно посмотреть статус синхронизации, приостановить/запустить синхронизации и провести другие настройки.

Теперь можете закачивать файлы в каталог, который был выбран для синхронизации, файлы будут автоматически закачиваться в облако. В следующей статье я расскажу как шифровать данные в облаке.

P.S. Теперь mail.ru предоставляет установочные пакеты под разные дистрибутивы. Правильный процесс установки описан здесь.

2014   cloud.mail.ru   ubuntu   Облако

Установка DNSCrypt в Ubuntu 13.10

DNSCrypt-proxy - это приложение позволяющее шифровать ваши DNS-запросы от вашего провайдера. Рассмотрим как его установить в ubuntu.

Все действия будем производить под рутом. Переходим в root

$ sudo su

Для начала установим build-essential

# apt-get install build-essential

Скомпилируем актуальную версию libsodium. Скачаем актуальную версию этой библиотеки со страницы https://download.libsodium.org/libsodium/releases/

# wget https://download.libsodium.org/libsodium/releases/libsodium-0.4.5.tar.gz

# tar -xvzf libsodium-0.4.5.tar.gz

# cd libsodium-0.4.5

# ./configure

# make && make install

Скачаем актуальную версию dnscrypt-proxy со страницы http://download.dnscrypt.org/dnscrypt-proxy/

# wget http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.3.3.tar.gz

# tar -xvzf dnscrypt-proxy-1.3.3.tar.gz

# cd dnscrypt-proxy-1.3.3

# ./configure

# make

# make install

Скачиваем и распаковываем архив dnscrypt-0.2.tar.gz

# wget http://anikin.pw/pictures/uploads/dnscrypt-0.2.tar.gz

# tar -xvzf dnscrypt-0.2.tar.gz

Копируем скрипт

# cp dnscrypt.conf /etc/init/

# ln -s /lib/init/upstart-job /etc/init.d/dnscrypt

Запускаем

# service dnscrypt start

Если все запустилось, то пропишем DNS в network manager. Если возникли проблемы, то в конце статьи рассмотрены решения некоторых проблем.

Пропишем наши DNS в network manager.

1. Кликаем по иконке соединений в правом верхнем углу и в выпадающем меню выбираем "Изменить соединения".

2. В открывшемся окне выделяем наше соединение и кликаем "Изменить"

3. Во вкладке "Параметры ipv4" прописываем в Сервера DNS - 127.0.0.2 у меня получилось примерно так

Снимок экрана от 2014-01-25 19:23:20

Всё. Наши DNS запросы шифруются и провайдер их не видит.

P.S.(Важно)

1. При запуске dnscrypt-proxy получаем ошибку: loading shared libraries: libsodium.so.4: cannot open shared object file: No such file or directory

Решение:

Если libsodium был установлен без ошибок, но проблема возникает, то выполняем:

# ./configure --libdir=/usr/local/lib

Если проблема остается то выполняем:

# ln -s /usr/local/lib/libsodium.so.4 /usr/lib/libsodium.so.4

2. При выполнении service dnscrypt start получаем:

# service dnscrypt start

dnscrypt stop/waiting

У меня это было из за того что скрипт dnscrypt-proxy находится в /usr/local/sbin/dnscrypt-proxy, а скрипт его ищет в /usr/sbin/dnscrypt-proxy.

Решение:

# ln -s /usr/local/sbin/dnscrypt-proxy /usr/sbin/dnscrypt-proxy

3. Как проверить что скрипт действительно работает и dns-трафик шифруется от провайдера?

Решение:

Заходим на сайт http://www.opendns.com/welcome/ и проверяем.

2014   dnscrypt   dnscrypt-proxy   ubuntu
Ранее Ctrl + ↓