МЕСТО ПОД РЕКЛАМУ
5 Июль 2017

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

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

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

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

19 Май 2017

Opcache — ускоряем сайт за 2 минуты

Замер производительности в админке Битрикса
Производительность: 8.191
далее на сервере
yum install php-pecl-zendopcache
httpd restart
Повтор замера производительности
Производительность: 38.54
вот такой коротки пост 🙂

PS
Вообще, конечно уже пора на 7ю виртуалку Битрикса переходить, там PHP7 с включенным Opcache по умолчанию…

PSS
Ещё 5 новых фарма-ломов нашел
http://gefestholding.ru/?see=sialis_dejstvuyushhee_veshhestvo.php
http://hl-labsural.ru/?see=analogi_viagry_kupit.php
http://inblu.ru/?see=analog_na_levitra.php
http://litsa-kulturi.ru/?see=55_levitra.php
http://krasula-promo.ru/?see=alkogol_i_levitra.php
Вывод — доры на пирогах ещё живы!

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

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)

21 Декабрь 2016

Скрипт проверки изменений файлов на сервере

Говорят «лучшее — враг хорошего», и в этом есть смысл.

Под впечатлениями от скрипта в предыдущей статье, решил поставить «следилку» на сайты нескольким своим клиентам, и чуток разочаровался — скрипт у одного не запустился т.к. версия PHP была мягко говоря устаревшей, на мои призывы обновиться сказал «работает — не трогай» (и в этом тоже есть своя правда), у другого довольно сильно подвесил систему т.к. файловая структура составляла сотни! тысяч файлов, а режима «быстрой» проверки (только по атрибутам файла — размер, даты, режим доступа, владельцы) отсутствовал.

Собственно, пришлось сделать простенький скриптик, практически моментально сравнивающий изменения из файлов, содержащих информацию о файловой структуре сайта.
Снимать дампы можно консольно (мне так удобнее), желающие могут дописать скрипт.
Скрипт «голый» — без интерфейса, отправки на мыло изменений и других наворотов — как есть.
Пользоваться так:
ls -alR > file1.txt
ls -alR > file2.txt
fdiff.php file1.txt file2.txt > diff.txt
скрипт кидает результат в поток, в моём случае перенаправленный в diff.txt

Кого заинтересовало — качаем.

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

10 Ноябрь 2016

Лечение зараженных сайтов. Аудит безопасности.


Лечение зараженных сайтов. Аудит безопасности.

Время от времени, а точнее когда в очередной раз натыкаюсь на ломаные сайты, публикую подобные посты а ля «вылечу Ваш сайт», проведу аудит безопасности и самое главное — установлю систему контроля на взлом Вашего сайта!
Вот и сейчас пример поломанных 4х сайтов с файловыми и php иньекциями, тематика фармацевтика — т.к. её часто смотрю:
Сайт www.mgrad-putilkovo.ru — инъекция Где можно купить дженерик сиалис
Сайт www.catalog-max.ru — инъекция Где можно купить таблетки виагра
Сайт pearl-zelenograd.ru — инъекция Не дорого преобрести левитра — взломщик видимо не особо грамотный попался 🙂
Сайт za-vidnoe.ru — инъекция Женская виагра купить в аптеке Москва

Как видно хакеры уже ломают с умом и с конкретной целью — монетизировать взломанный ресурс, путём продажи через партнерку фарма препаратов (если конечно дорвей долго проживёт и поймает поисковый трафик — проиндексируется и «повисит» в выдаче Яндекса некоторое время на хороших позициях).
Так же видим, что по сути прямого вреда сайту данная иньекция не наносит — информация на сайте остаётся нетронутой, но всё же я думаю вред всё таки есть — страницы генерируются доргеном, текст на таких страничках создаётся роботизированный — не имеющий смысла, подобные страницы как правило не нравятся поисковикам — и на сайт накладываются штрафные санкции понижающие его в поисковой выдаче — что может быть хуже ? (конечно кроме порчи информации)
Так что, если Ваш сайт резко начал снижаться в позициях в ТОПах — проверьте его на зараженность, если сами не умеете — обратитесь к профессионалам или например я мог бы глянуть (гораздо дешевле чем у профи).

P.S.
К сожалению на мои посты и письма никто внимание не обращает — видимо люди заводят сайты просто так, и им плевать что с ними дальше будет.

рубрики: security, Администрирование, взлом и безопасность | Комментарии (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)

18 Октябрь 2016

Сайт тормозит! Как провести технический аудит сайта и сервера?

Всем привет!
Итак, сегодня коснулся очень интересной задачи — полный технический аудит сайта и сервера в целом!
Собственно, задача звучит просто — сайт сильно тормозит! вплоть до полного ступора — что делать? как выявить причину падения?
Это я и называю полным техническим аудитом сайта и сервера.
1. Протестировать всё что можно протестировать и выявить все проблемы
2. Дать рекомендации по их устранению.
3*. Устранить проблемы

Если есть желающие глянуть и порекомендовать что нибудь полезное — могу сайт показать, пишите.

Все пункты довольно не просты — причина проблем может скрываться хоть где — начиная от аппаратной части, заканчивая отсутствием индекса по полю в таблице БД.
Последний пункт под большой звёздочкой т.к. проекты бывают разные … 🙂 например, в данный момент изучаю сапомисный проект на yii фреймворке (что печально — без придерживания логики фреймворка)

Опубликую полностью свой первый отчёт, сделанный вообще без какого либо доступа к сайту/серверу — очень рассчитываю на Ваши дополнения, комментарии.
Особенно интересуют способы и инструменты для поиска проблем.

Читать полностью »

рубрики: Администрирование, Оптимизация | Комментарии (0)

7 Сентябрь 2016

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

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

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

16 Август 2016

Битрик VM — установка PHP 7.0.9 вместе с PHP 5.6.24

В продолжении предыдущего поста о всяческих обновлениях …
Итак, довольно прилично подзаебавшись с обновой на PHP 5.6 я решил не махать так шашкой — а реализовать задуманное более степенно.
То есть установить PHP 7.0.9 на дублирующий сокет и потихоньку тестировать и настраивать (как выяснилось позже это была очень правильная мысль).
За основу была взята статья но не всё пошло так гладко — пришлось допиливать.

PHP 5.6 у меня уже был установлен и в режиме php-fpm так же использовался.
Сам phpbrew я установил, так же под новым юзером, и чтобы не путаться все пути оставил такие же как в статье.
Скрипт запуска у меня никак не вставал, поэтому я переделал из запуска существующего php-fpm изменив настройки на конфиги, пид и лок файлы
В www.conf я поменял и файл сокет (было listen=/tmp/php-fpm.sock стало listen=/tmp/php7-fpm.sock)

В итоге с параметрами как в статье php у меня скомпилировался и даже запустился, но как выяснилось некоторых модулей не хватило.

По идее модули ставятся без проблем командой phpbrew ext install [module name]

НО тут нужно чётко понимать, что phpbrew использует при компиляции исходники — как оказалось у меня для необходимых модулей их небыло

Модуль для MYSQL ставим как в статье!

phpbrew ext install https://github.com/php/pecl-database-mysql.git

Подробности — как обычно ищем в логах установки (где логи пишется в процессе установки), например для курла у меня логи был тут
/opt/phpbrew/.phpbrew/build/php-7.0.9/ext/curl/build.log

вот список того, что мне пришлось доустановить для компиляции phpbrew некоторых модулей
yum install libxml2
yum install libxml2-devel
yum install libxslt-devel
yum install libmcrypt-devel

а вот с установкой curl пришлось поискать подходящий репозиторий, вот инструкция
1) create a new file /etc/yum.repos.d/city-fan.repo
2) Paste the following contents:
[CityFan]
name=City Fan Repo
baseurl=http://www.city-fan.org/ftp/contrib/yum-repo/rhel$releasever/$basearch/
enabled=1
gpgcheck=0
3) type:
yum clean all
yum install curl
4) And it’s done.
yum install curl-devel

phpbrew ext install curl

после всех инсталяций не забываем дёргать сервис
service php7-fpm restart (название — это имя вашего переделанного файла запуска в init.d)
так же для того чтобы сервис стартовал сам- нужно сделать симлинки в rc3.d

Ещё в www.conf для php-fpm необходимо прописать имя юзера и группы под кем запускается php7-fpm (без этого у меня не работало).
listen.owner=bitrix
listen.group=bitrix
listen.mode=666

Об одном баге (а точнее особенности) — напишу отдельно, т.к. меня она повергла в небольшой шок 🙂
После включения Zend Opcode Cache (у меня это был последний этап) — решил я затестировать работу на простых скриптах.
echo time(); — вывело время
echo «abc «.time(); — снова вывело время (причём в реалтайме), но без строки abc !!!
То есть динамический вывод работал, а то что поменялось практически в статике — нет (хотя этот тоже динамика, но без функций).
В общем немного потупив, дошло, что трабла в оптимизаторе, а точнее в настройке параметра opcache.revalidate_freq=60
Т.е. после изменения файла должно пройти 60 секунд, прежде чем интерпретатор его обновит в кэше (если конечно он был кэширован ранее).
На нужный домен (где идёт разработка) можно в php.ini секцией задать свои значения

[HOST=dev.site.com]
opcache.revalidate_freq = 0

Так же смотрим на удалённые функции из интерпретатора https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7 заменяем их правильными аналогами

Вроде на этом вроде всё!

P.S.
Чуток я разочаровался по приросту быстродействию и потреблению ресурсов, но оно для моего проекта объяснимо — слишком он простой 🙂

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

Яндекс.Метрика