====== Ограничение доступа по IP ======
\\ В версии 3.06.03 введен функционал генерации access list для nginx прямо из билинга.
===== Подготовка сервера =====
\\ Применяем рекомендации по [[https://wiki.mikbill.pro/security|iptables и ssh]]
\\ Необходимо создать каталог /etc/nginx/access_list:
mkdir -p /etc/nginx/access_list
\\ Далее создать файлы access list:
touch /etc/nginx/access_list/admin.conf
touch /etc/nginx/access_list/payments.conf
\\ Назначить им права веб сервера (centos - apache, debian - www-data):
chown apache:apache -R /etc/nginx/access_list/
\\ Теперь можно подключить access list
\\ Web хост админки /etc/nginx/conf.d/admin_vhost.conf привести к виду:
server {
listen *:443 ssl;
server_name admin.ispnet.demo;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_certificate /etc/nginx/conf.d/ssl/ca.crt;
ssl_certificate_key /etc/nginx/conf.d/ssl/ca.key;
access_log /var/log/nginx/admin_access.log;
error_log /var/log/nginx/admin_error.log;
root /var/www/mikbill/admin;
include access_list/payments.conf;
charset utf-8;
index index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location @payment {
access_log /var/log/nginx/payment_access.log;
error_log /var/log/nginx/payment_error.log;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-worker-socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/mikbill/admin/index.php;
}
location = /index.php {
include access_list/admin.conf;
access_log /var/log/nginx/admin_access.log;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-worker-socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/mikbill/admin/$fastcgi_script_name;
}
location = /robots.txt {
add_header Content-Type text/plain;
return 200 "User-agent: *\nDisallow: /\n";
}
# flash config
location = /res/config.xml {
allow all;
}
# flash locale
location ~ ^/res/locales/.*\.xml {
allow all;
}
# deny other root request
location ~ ^/(.*)\.(php|php5)$ {
deny all;
}
# deny non root request
location ~* ^/(.*)/.*\.(xml|sh|php|php5|phtml|log|sql|txt)$ {
deny all;
}
}
==== sudoers ====
\\ Далее если хотите что бы биллинг сам перезапускал nginx после генерации файла, разрешите ему выполнять команду:
/sbin/service nginx reload
\\ добавив её в /etc/sudoers.d/mikbill
===== Управление access list админки =====
\\ Управление происходит путем добавления/удаления IP адреса/сети в справочник "IP Доступ".
\\ Зайти в него можно по пути: Настройки => Сотрудники => IP Доступ.
\\ Для генерации access list используется кнопка "Применить на сервере".
\\ Для ручного обновления можно использовать консольную команду: ip_access_admin
===== Управление access list платежных систем =====
\\ Управление происходит путем добавления/удаления IP адреса/сети в любой из текущих платежных систем.
\\ Для ручного обновления можно использовать консольную команду: ip_access_payment
===== Troubleshooting =====
\\ 1. Не генерируется файл - проверьте путь, название и права на файлы access list.
\\ 2. Автоматически не применяются новые правила - проверьте корректно ли добавлено разрешение на reload nginx в sudoers.
\\ 3. Не работают правила - проверьте корректно ли подключили access list в хост админки.