Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
7 Май 2019

vsFTPd ошибка — refusing to run with writable root inside chroot

Настраивал сегодня vsFTPd на виртуалке — вроде всё как обычно делал, но лезет ошибка «refusing to run with writable root inside chroot» и всё тут 🙁
Информации, на счастье, довольно много — тут наверное лучшее изложение.
Суть проблемы — запрет записи в домашней директории (что само по себе имхо полный бред).
Если кратко, то мне помогло добавление в конфиг опции
allow_writeable_chroot=YES

(помогло т.к. версия демона была > 3.0.0)

рубрики: NIX, Администрирование, Полезности | Комментарии (0)

5 Июль 2017

Коммандная строка — как узнать количество строк или символов в файле

Сразу к теме
wc -l файл (число строк)
wc -w файл (число слов)
wc -c файл (число символов)

Используя перенаправление вывода, можно посчитать суммарное количество строк или символов в файлах,
так команда
cat *php | wc -l
посчитает количество строк во всех *.php файлах в текущей директории

рубрики: NIX, Администрирование, Полезности | Комментарии (1)

6 Март 2017

Скрипт — MYSQL бэкап баз данных в разные файлы

Полезный скриптик MYSQL бэкап баз данных в разные файлы


#! /bin/sh
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/disk2/mysql/$TIMESTAMP"
MYSQL_USER="user"
MYSQL=/usr/local/bin/mysql
MYSQL_PASSWORD="pass"
MYSQLDUMP=/usr/local/bin/mysqldump
mkdir -pv "$BACKUP_DIR"
databases=$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"
for db in $databases; do
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
done

рубрики: NIX, Администрирование, Полезности, Программирование | Комментарии (0)

16 Февраль 2017

Проблемы с отправкой почты на gmail — настраиваем PTR, SPF, DKIM, DMARC на виртуальной машине Битрикс

Итак, вчера я обнаружил, что почта с сайтов на моём сервере (виртуальная машина Битрикс) не доходит на почтовые сервера Google Mail — …@gmail.com
Скрипт проверки почты функцией PHP mail() проблем не выявил — функция отрабатывает корректно, но почта не уходит — видимо проблема уже на другом уровне.
В почтовых логах обнаруживаем ругательную запись

…… SMTP error from remote mail server after pipelined end of data: 550-5.7.1 [91.227.68.223 12] Our system has detected that this message is\n550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail,\n550-5.7.1 this message has been blocked. Please visit\n550-5.7.1 https://support.google.com/mail/?p=UnsolicitedMessageError\n550 5.7.1 for more information. g191si2693352lfe.246 — gsmtp

Собственно, идём по рекомендованному адресу, где обнаруживаем рекомендации по настройке почты, а так же гугловский сервис postmaster для просмотра возможных почтовых проблем.
В постмастере я добавил домен от которого идёт отправка почты с моего сервера — пока идёт сбор данных, информации нет (как появится — добавлю информацию ниже).
А пока остановимся на рекомендациях по настройке почты: PTR, SPF, DKIM, DMARC
Что касается PTR и SPF — главные базовые настройки почты, о настройке которых я ранее уже писал — настройка почты
Если кратко PTR — DNS настройка соответствия IP адреса и домена — запрос по домену, должен возвращать IP и наоборот, запрос IP должен соответствовать домену.
SPF — DNS настройка правил откуда позволено отправлять почту.
Эти настройки я сделал ранее, но видимо этого недостаточно для гугловского почтовика, соответственно, для полноты картины настроим цифровую подпись DKIM и правил DMARC.
Для этого есть отличный мануал, которым я и воспользовался.
Если кратко: устанавливаем exim и переключаем MTA на него, генерируем ключи, прописываем публичный ключ в DNS, настраиваем exim на подпись писем приватным ключем.
Далее, смотрим оригинал письма (на Яндексе т.к. на гугл так и не принимает мои письма)
dkim
Всё хорошо — SPF и DKIM проверки пройдены!
Для включения политики DMARC добавляем TXT запись «v=DMARC1; p=none; rua=mailto:postmaster@gthack.ru» — говорящую о том, что никаких действий с подозрительными письмами не предпринимать, отчёт направлять на адрес домена postmaster@gthack.ru (предварительно обработку входящей почты с данного домена я делегировал почтовым серверам Яндекса, через привязку домена к Яндексу).

Итак, всё что можно было настроить я настроил, но почту Гугл всё равно не берёт! 🙁

Далее, решил я снова покопаться в логах и обнаружил, что почту не берёт не только Гугл, но и некоторые другие почтовые сервера, так же ссылаясь на странички для разъяснения ситуации.
Собственно, по характеру ссылок я понял, что айпишник «залетел» в публичные блэклисты по спаму.

Для поиска спамера, я воспользовался возможность логировать отправителя на уровне php — вредоносных скриптов не обнаружил, отправка шла штатным Джумловским скрпиптом phpmailer.php доменов которые я по дружбе захостил на своём сервере (наука на будущее — джумла — источник всех проблем) соответственно нужно запрещать рассылку в самой Джумле (об этом напишу позже).

Ну а для исключения из спам листов, следуем по ссылкам из логов и заполняем нужные формы:

http://postmaster.comcast.net/smtp-error-codes.php#BL000010
для исключения из листа заполняем форму
http://postmaster.comcast.net/block-removal-request.html

для исключения из блэклиста сервис Cloudmark Sender Intelligence (CSI)
заполняем форму
https://csi.cloudmark.com/en/reset/?ip=91.227.68.223

Уфф, ну вроде сделал всё что нужно, жду результат… (отпишу позже)

PS // добавлено спустя несколько дней
Так Гугла меня и не пускает 🙁
Только что обнаружил интересный сервис Наличие IP в СПАМ базах

спам базы

Будем отписываться, далее отпишу

PS // добавлено спустя несколько дней
Через несколько дней после отписки в спам сервисах, гугл соблаговолил принимать мою почту.
«Просмотр оригинала» в интерфейсе GMail наглядно демонстрирует работу всех подключенных выше технологий.
mail

рубрики: Bitrix, NIX, Администрирование | Комментарии (0)

2 Ноябрь 2016

Строковые команды NIX систем — сортировка, удаление дублей …

Для себя решил в одно место полезные nix команды собрать — пользуюсь не часто, забываю 🙁
Список будет постоянно пополняться

сортировка и удаление дублей
cat file.txt | sort | uniq > out.txt

для больших файлов так гораздо быстрее
awk ‘!x[$0]++’ file.txt > out.txt

пока хватит 🙂

Источники:
https://habrahabr.ru/post/105926/
http://complike.ru/ispolzuem-komandy-uniq-i-sort-v-linux/

рубрики: NIX, Администрирование, Полезности | Комментарии (0)

7 Сентябрь 2016

История добавления PHP расширения SOAP на FreeBSD 9.0

Всем привет!
Собственно, когда меня касаются задачи по администрированию фришки (да и линуха тоже — чего греха таить) на меня нападает печаль 🙂
Не являясь гуру в этих областях у меня ещё не разу не проходило всё гладко, с первой попытки. ВСЕГДА какие то проблемы вылезают…
А тут друг сидит на виртуалке с FreeBSD 9.0 на PHP 5.4 (повышать версию нельзя из за специфики проекта — пока не готов он к переезду) и нужно всего то навсего добавить soap модуль в PHP.
Вроде всё просто … но см.выше — просто у меня не бывает
Итак, иду в порты, думаю быстренько сконфигурирую пых (который уже в даунгрейде в портах лежал т.к. 5.4 уже в портах в наличии не было).
make config и первое западло — куча ошибок, предупреждений — элементарное базовое make не работает ни для одного из портов!
Читать полностью »

рубрики: NIX, Администрирование | Комментарии (0)

10 Февраль 2016

Защита от DDOS — анализ логов nginx и блокировка IP по blacklist фаерволом

В посте Защита от DDOS — первые шаги я закончил фразой «Теперь вот жду второго пришествия» — собственно, второе пришествие недавно заглянуло в виде очень дохленького DDOSa который все же забил канал так, что провайдерам пришлось отрубили порт.
Кэширование nging вообще тут не участвовало т.к. ддосили POST запросами.
Ограничение зоны на количество запросов с одного IP NGINX — защита от DDOS с одного IP. Параметры limit_zone и limit_req тоже не спасли!

Принял решение — полностью задействовать фаервол в связке с nginx, в моём случае фаервол ipfw т.к. операционная система FreeBSD, но это не суть, т.к. смысл остаётся тем же:
Анализируем логи, вычисляем злодеев, загоняем IP злодеев в blacklist который кушает фаервол.
Читать полностью »

рубрики: NIX, security, Администрирование | Комментарии (1)

9 Февраль 2016

Полезные мелочи nginx

# Закрываем доступ к файлам начинающимся с точки
location ~ /\.
{
deny all;
access_log off;
log_not_found off;
}
# Закрываем доступ к файлам заканчивающиеся old
location ~ \. old
{
deny all;
access_log off;
log_not_found off;
}

# Отключаем логи для favicon и robots.txt
location = /favicon.ico
{
log_not_found off;
access_log off;
}
location = /robots.txt
{
allow all;
log_not_found off;
access_log off;
}

рубрики: NIX, Администрирование | Комментарии (0)

14 Январь 2016

Быстрый файловый бэкап RSync с исключением по маске

Для локального бэкап копирования раньше использовал просто cp, сегодня переделал на rsync и понял как я был неправ ранее 🙂
Переделать пришлось из-за отсутствия возможности в копировании прикрутить скип-лист, куда запихать кэши, темпы и прочее «барахло»,
и помимо задуманного бонусом получил супер фишку!
rsync то, что не изменилось не копирует! соответственно процесс бэкапа ускорился в десятки раз и существенно снизилась нагрузка на дисковую подсистему, соответственно на хостинг в целом!

всё в одну строку 🙂
rsync --exclude-from rsync.exclude.cfg --log-file rsync.1.log -auptrgo --delete-before /source_dir /backup_dir

rsync.exclude.cfg — файлик со списком исключений
*/cache/*
*/temp/*
и т.д.

рубрики: NIX, Администрирование, Полезности | Комментарии (0)

30 Март 2015

Битрикс Превышен лимит активности — или как блокировать по User Agent

Уж не знаю чем полюбил один из моих проектов робот MegaIndex но сообщения о блокировке «На сайте …..ru посетитель превысил установленный лимит активности.» уже сильно притомили.
Если учесть, что Мегаиндек это даже не поисковик, и данные собираются роботом только для работы линк-биржи я решил полностью блокировать этого робота.
А представляется он следующим образом:
«UserAgent — Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +https://www.megaindex.ru/?tab=linkAnalyze)»
Соответственно, добавляем в nginx правило
if ($http_user_agent ~ "megaindex") {
return 503;
}

и вуаля, проверочный get запрос с UserAgent Мегаиндекса отдаёт 503ю
ч.т.д.

рубрики: Bitrix, NIX, Администрирование | Комментарии (0)