Ограничение доступа по IP
В версии 3.06.03 введен функционал генерации access list для nginx прямо из билинга.
Подготовка сервера
Применяем рекомендации по 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 в хост админки.