Hello and welcome to #root.bg!
Here you can find tutorials about linux, networks and their firewall, games and fun, as well as hobbies – rollers, drones and many more.
Here you can find tutorials about linux, networks and their firewall, games and fun, as well as hobbies – rollers, drones and many more.
Николай Николов Howto firewall, http2, naxsi, nginx 1
Привет,
В продължение на публикацията ми от 08.12.2016г. искам да споля, че вече е възможна работата на naxsi в комбинация с проткола http2 и nginx.
За целта е нужно да клонираме последната версия на naxsi от github и да добавил следните параметри след това:
cd /usr/src/ git clone https://github.com/nbs-system/naxsi.git cd naxsi git checkout http2 git fetch origin pull/309/head:http2-309 git checkout http2-309
Следва прекомпилиране на nginx :
./configure --add-module=../naxsi/naxsi_src --add-module=../ngx_cache_purge/ --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=www-data --group=www-data --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --with-http_stub_status_module --with-http_realip_module --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-openssl=../openssl-1.0.2k/ --with-http_mp4_module --with-poll_module --add-module=../nginx-rtmp-module --add-module=../headers-more-nginx-module-0.25/ --with-ipv6 --add-module=../nginx-module-vts --with-http_v2_module --add-module=../ngx_devel_kit --add-module=../set-misc-nginx-module-0.30 --add-module=/usr/src/ngx_brotli/ngx_brotli_module-master/
и активиране на naxsi модулите както следва :
в /etc/nginx/nginx.conf :
include /etc/nginx/naxsi_core.rules;
а във виртуалният ни хост :
location / { try_files $uri $uri/ /index.php?$args; include /etc/nginx/naxsi.rules;
Тук за шарения добавих и :
error_page 418 /418.html; location /RequestDenied { return 418; }
така всяка “зла” заявка ще бъде препратена със статус 418 към 418.html което в моя случай е един “среден пръст” 😀
След рестартиране на nginx може да тестваме дали работи нашият NAXSI Firewall например ето така :
root@server:~# wget --server-response --spider https://root.bg/%3C?php%20echo%20%22hello%22;%20?%3E Spider mode enabled. Check if remote file exists. --2017-06-07 08:43:13-- https://root.bg/%3C?php%20echo%20%22hello%22 Resolving root.bg (root.bg)... 87.97.157.122 Connecting to root.bg (root.bg)|87.97.157.122|:443... connected. HTTP request sent, awaiting response... HTTP/1.1 418 Date: Wed, 07 Jun 2017 08:42:45 GMT Content-Type: text/html; charset=utf-8 Content-Length: 192 Connection: keep-alive ETag: "5937b9e3-c0" Server: rws
Ами… това е!
Огромни благодарности за пичовете стоящи зад този страхотен продукт наречен NAXSI!
Николай Николов Howto php-fpm, strace 0
Hi,
Today I will share how fast and easy we can track what happens behind a php-fpm process thanks to strace!
We add the following function to our user’s .bashrc file (recommended to be directly on root) or will need to be executed with sudo:
function straceall { strace -t -f -o strace.txt $(pidof "${1}" | sed 's/\([0-9]*\)/-p \1/g') }
We load it in new by source .bashrc
or go out and log on to our server and start tracking the process:
straceall php-fpm7.0
If we want to follow the php7.1-fpm process we write:
straceall php-fpm7.1
for php5-fpm :
straceall php5-fpm
This is a stracy process that writes in a strace.txt file in real time.
Thats it!
Николай Николов Работа cachet, crontab, github, laravel, python, status, uptime 0
Привет,
В продължение на предишната ми публикация за Cachet , днес ще споделя как успешно подкарах метриката на Cachet, благодарение на uptimerobot.com и python скрипта cachet-uptime-robot.
За целта е нужно да имаме акаунт в uptimerobot.com (безплатно е) и да си създадем API key от My settings -> Main API Key.
Разбира се, трябва да добавим и монитор за следене : Add New Monitor -> Monitor type (http) – в моят случай https://root.bg/.
Стъпките са следните :
mkdir /Scripts/ cd /Scripts/ git clone https://github.com/Axiacore/cachet-uptime-robot.git cd cachet-uptime-robot/ python3 /Scripts/cachet-uptime-robot/update_status.py /Scripts/cachet-uptime-robot/config.ini
Преди да стартираме скрипта обаче, е нужно да въведем нашите данни в config.ini.
За целта е нужно да си генерираме API Key от нашата cachet система. Лесно е : Team -> Нашият потребител -> API Token -> Generate API Key.
След като имаме всично необходимо можем да пристъпим и към конфигурацията на cachet-uptime-robot.
[uptimeRobot] UptimeRobotMainApiKey = u410652-***** [https://root.bg] CachetApiKey = DyhkqY****** CachetUrl = https://status.root.bg MetricId = 3 ComponentId = 3
Тук е важно да се сложат точните ID-та – в моят случай, MetricId е 3 (трябва да си създадем Metric от dashboard-a на cachet), а ComponentId също е 3 (създаваме компонент от : Components -> Add a component пак от dashboard-a).
Ако всичко е настроено както трябва, след като пуснем ръчно скрипта чрез:
python3 /Scripts/cachet-uptime-robot/update_status.py /Scripts/cachet-uptime-robot/config.ini
трябва да видим следните резултати :
Updating monitor root.bg. URL: https://root.bg. ID: 778615857 Metric created: {'data': {'value': 99.945, 'counter': 2, 'calculated_value': 199.89, 'id': 1508, 'updated_at': '2017-05-12 09:08:04', 'metric_id': 3, 'created_at': '2017-05-12 09:08:04'}}
И да получим визуализация в нашата cachet система:
Накрая добавяме един crontab през 5 минути да стартира този скрипт, за да може автоматично да се обновява нашия cachet metric.
Това е!
Николай Николов Howto activesync, exchange, nginx, z-push 0
Привет,
В тази публикация ще споделя как бързо и лесно можем да си направим ActiveSync синхронизация с Nginx и Z-push.
За целта първо трябва да изтеглим последната версия на z-push от z-push.org и да копираме съдъражнието й в папка /usr/share/z-push/ :
mkdir -p /usr/share/z-push mkdir -p /var/log/z-push/ cd /tmp/ wget http://download.z-push.org/final/2.3/z-push-2.3.4.tar.gz tar zxvf z-push-2.3.4.tar.gz cp -R z-push-2.3.4/* /usr/share/z-push/
1. В config.php променяме следните редове :
define('TIMEZONE', 'Europe/Sofia'); define('BACKEND_PROVIDER', 'BackendIMAP');
2. В /usr/share/z-push/backend/imap/config.php променяме следните редове :
define('IMAP_FOLDER_CONFIGURED', true); define('IMAP_SERVER', 'localhost');
За да може ActiveSync-a да сработи, е нужно да направим виртуален хост в nginx-a ни. Ето го и него :
server { listen 443; server_name z.root.bg; ssl on; ssl_certificate /etc/letsencrypt/live/z.root.bg/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/z.root.bg/privkey.pem; root /usr/share/z-push; index index.php; location / { try_files $uri $uri/ index.php; } location /Microsoft-Server-ActiveSync { rewrite ^(.*)$ /index.php last; } location ~ .php$ { include fastcgi_params; fastcgi_index index.php; fastcgi_param HTTPS on; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php5-fpm.sock; } }
Следва рестарт на nginx сървъра и тестване на виртуалния хост.
Ако всичко е ок, трябва да излезе диалогов прозорец с потребителско име ( мейл адрес ) и парола. Въвеждаме нашите и трябва да ни излезе следното съобщение :
Z-Push - Open Source ActiveSync Version 2.3.4 GET not supported This is the Z-Push location and can only be accessed by Microsoft ActiveSync-capable devices
Това означава, че всичко е ок и можем да си настройм пощата през мобилното ни устройство, като за тип account избираме Exchange и въвеждаме данните ни. За сървър въвеждаме нашия Z-push сървър ; z.root.bg.
Общо взето това е.