Archive

Archive for February, 2009

Включение/отключение SELinux

February 27th, 2009

Посмотреть статус selinux:

/usr/sbin/sestatus -v

Для отключения надо прописать строчку:

SELINUX=disabled

в /etc/selinux/config и перезагрузить систему

linux ,

Уведомление о состоянии RAID в linux (mdadm) и FreeBSD (gmirror)

February 24th, 2009

Для получения на почту уведомлений о изменении состояния программного рэйда построенного на базе mdadm надо добавить в /etc/mdadm.conf:

MAILADDR admin@domain.com

и сделать:

/etc/init.d/mdadm restart

Посмотреть состояние RAID вручную:

cat /proc/mdstat

Для включения уведомлений о состоянии рэйда в ежедневные отчеты во FreeBSD надо добавить в /etc/periodic.conf:

daily_status_gmirror_enable="YES"

Посмотреть состояние RAID вручную:

gmirror status

Uncategorized

Памятка по работе с портами FreeBSD

February 16th, 2009
portsnap fetch  #получить свежую базу портов
portsnap extract  #распаковать базу
portsnap update  #обновить локальную базу после получения и распаковки
make extract # извлечь исходники для сборки
make config  #указать праметры для сборки, они запомнятся для обновления порта
make showconfig #показать варианты конфигурирования
make rmconfig #удалить пользовательские настройки для сборки
make fetch-list #показать какие файлы будут загружены
make fetch-recursive-list #показать какие файлы будут загружены включая все зависимые
make  #собрать приложение
make install  #собрать и установить приложение
make deinstall  #удалить приложение
make reinstall  #переустановить приложение
make clean  #удалить рабочие файлы
pkg_delete mc  #удалить приложение
pkg_info  #Список установленных приложений
pkg_version -v  #Проверка на необходимость обновления
portupgrade mc  #Обновления какого-либо порта (требуется установка)
portaudit -Fda  #Проверка приложений на уязвимости (требуется установка)
portupgrade "php5-*" #Обновить все PHP5 пакеты
portmaster /usr/ports/misc/mc - установить mc с помощью Portmaster (тоже есть в портах)
portmaster expat-1.95.8 - обновляем expat
portmaster --clean-distfiles-all - удалить все старые скаченные дистрибутивы пакетов из distfiles

Дополнения и комментарии приветствуются!

FreeBSD , ,

Включение и переинициализация квот (linux)

February 11th, 2009
yum install -y quota
/sbin/quotaoff -a
/sbin/quotacheck -avugm
/sbin/quotaon -a

ЗЫ. Это помогает если в DirectAdmin не создаются пользователи с руганью: “Error with system Quotas sh: /usr/sbin/setquota: No such file or directory”

linux , ,

Многопоточная консольная качалка

February 11th, 2009

Иногда появляется необходимость перелить с одного сервака на другой какой-нибудь большой архив в пару десятков гигабайт. Обычным wget-ом или fetch-ем это будет медленно, потому как в один поток. Тогда на помощь приходит ProZilla. Сия тулза есть во фревых портах, а вот репозиторий для yum-а мне найти не удалось. Прийдется ставить из rpm-ки с офсайта или здесь

Uncategorized

ssmtp, простой и маленький мылер

February 5th, 2009

Если надо просто отправлять с сервака мыльные отчеты раз в день, то ставить sendmail, exim или postfix для столько скромных целей явно излишне. Поэтому правильно будет воспользоваться ssmtp.
Ставим его:

yum -y install ssmtp

В /etc/ssmtp/ssmtp.conf правим строки:

mailhub=my.mail.domain.com
Hostname=this-server.domain.com

И пользуемся:

cat /etc/ssmtp/ssmtp.conf | sendmail my-mail@domain.com

почта ,

Собрать программу со статически слинкованными библиотеками (FreeBSD)

February 5th, 2009

Данная манипуляция может понадобиться, например, если необходимо переносить и запускать программу на различных серверах, возможно не имеющих необходимых библиотек. Сделаем это на примере порта ncftp3:

cd /usr/ports/ftp/ncftp3
make configure
cd ./work/ncftp-3.2.2
./configure

Правим Makefile, дописываем в строчку CFLAGS= параметр “-static”.

cd ../..
make

Все. Из папки /usr/ports/ftp/ncftp3/work/ncftp-3.2.2/bin можно забирать готовые бинарники.

FreeBSD ,

Быстрая установка awstats для анализа логов nginx

February 3rd, 2009

Ставим awstats из портов или из Yum-а.
Теперь надо определиться с логами nginx-а. Тут два варианта: либо логи для всех виртуалхостов пишутся в один файл, либо для каждого хоста в свой. В nginx 0.7 есть функционал позволяющий в директиве access_log использовать переменные. Т.е. например можно сделать так:

access_log /var/log/$host-nginx/nginx-access.log

В 0.6 так нельзя. Поэтому я буду рассматривать вариант, когда лог-файл один и общий.
Формат логов сделаем такой:

log_format  main  '$host $remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/nginx-access.log main;

Теперь создаем конфиг awstats-а для каждого виртуалхоста на базе дефолтового образца.
Правим в нем строки:

LogFile="/var/log/nginx/nginx-access.log"
LogType=W
LogFormat = "%virtualname %host %time1 %methodurl %code %bytesd %refererquot %uaquot"
LogSeparator=" "

и параметры SiteDomain, HostAliases.
Так же если надо считать статистику по странам в конфиг надо добавить строчку:

LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"

И поставить порты: GeoIP-1.4.4_1, p5-Geo-IP-1.36 (Linux: geoip.x86_64, perl-Geo-IP.x86_64)

Теперь создаем и добавляем в кронтаб файлик awstats_run.sh с такими строками:

#!/bin/sh
/usr/share/awstats/tools/awstats_buildstaticpages.pl -config=domain -dir=/home/awstats/domain.com -static -update

Не забыть включить ротацию логов Nginx. Пример для newsyslog.conf

/var/log/nginx/nginx-access.log               640  7     *    @T00  Z        /var/run/nginx.pid  30

Если дело происходит на Linux и надо настроить logrotate, то можно сделать ротацию и обсчет логов по другому:
Правим Logrotate-конфиг Nginx:

/var/log/nginx/*log {
    rotate 10
    size=100M
    missingok
    notifempty
    compress
    sharedscripts
    prerotate
    /etc/awstats/awstats_run.sh
    endscript
    postrotate
        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

Небольшой минус – ротация будет не точно посуточная.

Если надо подключить к awstats много доменов, то можно воспользоваться этим скриптом, предварительно создав конфиг-образец awstats.domain.com.conf:

#!/usr/local/bin/bash
CONFIG="/usr/local/etc/awstats"
OUTPUT="/home/domains/sampledomain.com/awstats"

if [ "x$1" = "x" ]; then
    echo "Usage: $0 domain.com"
    exit
fi

sed -e "s/domain.com/$1/g" "$CONFIG/awstats.domain.com.conf" > "$CONFIG/awstats.$1.conf"
echo "/usr/local/www/awstats/tools/awstats_buildstaticpages.pl -config=$1 -dir=$OUTPUT -static -update" >> $CONFIG/awstats_run.sh

Если мы будем генерировать статистику для всех сайтов и выкладывать ее на какой то один общий домен, то не забыть отключить дефолтный конфиг для awstats для апача.
Для создания общей страницы статистики для всех сайтов можно использовать эту тулзу
В различных ОС и дистрибутивах Linux скрипты awstats устанавливаются в разные места. Это надо проверить вручную запустив пересчет статистики и убедившись в отсутствии ошибок.

nginx ,

Ограничение методов TRACK, TRACE в apache

February 2nd, 2009

С помощью использования методов TRACK и TRACE в протоколе HTTP возможно выполнение атаки межсайтовый скриптинг. Для отключения метода TRACE в конфиге апача надо указать (начиная с версии 2.0.55):

TraceEnable off

Директивой Limit этот метод ограничить нельзя!

Для отключения TRACK надо поместить в .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]

Apache, безопасность ,

Краткая шпаргалка по использованию screen

February 2nd, 2009

screen – запускаем сессию скрина
exit – завершение сессии
Ctrl+A ? – справка
Ctrl+a c для открытия нового окна
Ctrl+a n для переключения на следующеее окно
Ctrl+a p для переключения на предыдущее окно
Ctrl+a d для отсоединения от сессии
screen -ls для просмотра активных сессий
screen -r <идентификатор сессии> для подключения к определенной сессии
screen -RD name
в данном случае, если сессии нет – она создастся. Если сессия есть, и она находится в фоне – то к ней будет произведено подключение. И даже если сессия сейчас активна, произойдёт её отключение от предыдущего терминала, и подключение к нынешнему.

Отличная подробная статья на тему использования screen

Uncategorized