- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 1066

apt install ca-certificates apt-transport-https
wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
echo deb https://packages.sury.org/php/ stretch main | tee /etc/apt/sources.list.d/php.list
apt update
apt install php7.4-fpm php7.4-cli php7.4-common php7.4-curl php7.4-mbstring php7.4-mysql php7.4-xml php7.4-gd php7.4-zip php7.4-bcmath
service php7.4-fpm reload
apt install nginx
server {
charset utf-8;
client_max_body_size 0;
listen 80; ## listen for ipv4
server_name superskid.ru www.superskid.ru;
# include inc_letsencrypt;
# Редирект с http на https.
location / {
return 301 https://$host:443$request_uri$args;
}
root /var/www/superskid.ru/web;
index index.php index.html;
access_log /var/log/nginx/ngixn-cp.access.log;
error_log /var/log/nginx/ngixn-cp.error.log;
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
location ~ ^/assets/.*\.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
server {
client_max_body_size 0;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name superskid.ru www.superskid.ru;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;
# Подключаем все необходимое для ssl.
ssl on;
ssl_certificate /etc/letsencrypt/live/superskid.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/superskid.ru/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/superskid.ru/chain.pem;
resolver 8.8.8.8;
root /var/www/superskid.ru/web;
index index.php;
add_header X-Frame-Options "SAMEORIGIN";
add_header x-xss-protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
location ~ /.well-known/acme-challenge {
root /var/www/superskid.ru/;
allow all;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ ^/assets/.*\.php$ {
deny all;
}
location /phpmyadmin/ {
alias /usr/share/phpmyadmin/;
index index.html index.htm index.php;
}
location /nginx_status_page {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
# Compression.
gzip on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "msie6";
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
try_files $uri =404;
}
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
location ~ ^/assets/.*\.php$ {
deny all;
}
# location ~* /\. {
# deny all;
# }
access_log /var/log/nginx/frontend-cp.access.log;
error_log /var/log/nginx/frontend-cp.error.log;
}
ln -s /etc/nginx/sites-available/superskid.ru /etc/nginx/sites-enabled/superskid.ru
service nginx reload
nginx -t
apt install python-certbot-nginx
Пример теста получения сертификата:
certbot certonly --manual -d *.superskid.ru --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
Добавляем записи в DNS TXT
Кроме сертификата необходимо сгенерировать ключ:
openssl dhparam -out /etc/nginx/dhparam.pem 4096
apt install mysql-server php7.4-mysql phpmyadmin
При установки phpmyadmin ни каких модулей не выбираем, оставляем пустое окно и нажимаем далее
mysql_secure_installation
Remove anonymous users? : y
Disallow root login remotely? : y
Remove test database and access to it? : y
Reload privilege tables now? : y
Перевыпуск сертификатов
certbot renew
- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 7187
материалы в этом разделе
массовое изменение прав chmod chown
- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 1137
Проблемы с правами на файлы и папки возникают у всех новичков в деле веб-разработок, а иногда и не только у новичков. Сегодня я покажу как быстро поменять права на файлы и папки вашего сайта.
Итак, в первую очередь нужно запомнить, что все сайты/папки вашего сайта должны иметь владельца такого же, под которым работает веб-сервер. И группу тоже. В Ubuntu по умолчанию это www-data:www-data. Изначально владелец и группа дается сайту в момент создания, поэтому, если вы заливали ваш сайт под рутом, или другим пользователем, изначально владельцем станет этот пользователь!

Второе что необходимо запомнить: права на папки - 755, на файлы - 644. Это значит, что никто кроме apache не сможет как-то изменить/убить ваш сайт.
Массовое изменение владельца и группы:
chown -R www-data:www-data /var/www/site.ru
Массовое изменение прав на файлы и папки:
find /var/www/site.ru -type f -exec chmod 644 {}
find /var/www/site.ru -type d -exec chmod 755 {}
Все проверяем права
ls -l /var/www/site.ru
Радуемся
- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 1456
Строим оборону для Apache2, PHP, MySQL Скрываем информацию об операционной системе, версии apache, php на страницах 404, 500, 403 и т.д.
/etc/apache2/conf.d/security ServerSignature Off ServerTokens Off (Отвечает за отображение информации о сервере в http заголовках)
ServerTokens Prod Редактирем файл php.ini: expose_php = Off (Отвечает за показ версии интерпретатора php. Может принимать значения Off/On.
Его тоже убираем с глаз долой) Защита через ограничение ряда функций в PHP. В конфигурационном файле /etc/php5/apache2/php.ini, и редактируем следующие переменные:
safe_mode_exec_dir=/home/http
разрешаем запуск программ только из специального каталога.
disable_functions=system;— отключаем unix функции (killall, chown, rm и т.д.)
safe_mode on;— запретить выполнять команды на сервере с помощью php, но мы все равно сможем просматривать и редактировать шеллом файлы на которые у нас есть доступ. А доступ у нас есть на все файлы на которые есть доступ у Apache.
В Ubuntu и в Debian Apache работает от имени пользователя www-data и группы www-data.Так что мы имеем доступ на чтение на все файлы c правами 644, даже если они пренадлежат другим пользователям и полный доступ на файлы и директории, принадлежащие www-data.
Защита через ограничение ряда функций в Apache. Hахожу файл конфигурации виртуального хоста, и внутри директивы VirtualHost добавляю разрешение обработки скриптов PHP php_admin_flag engine on. Осталось задать значения переменных PHP-машины open_basedir, include_path, upload_tmp_dir, safe_mode_include_dir для ограничения области работы с файлами моим домашним каталогом.
php_admin_flag engine on php_admin_value open_basedir /srv/~php_admin_value include_path .:/srv/~ php_admin_value upload_tmp_dir /srv/~/www/tmp php_admin_value safe_mode_include_dir /srv/~/www/tmp
Запуск виртуальных хостов от разных учетных записей
Необходимо разграничить доступ на уровне apache. По сути, нужно, что бы Apache запускался для каждого пользователя под своим логином, для чего это нужно?
Ситуация: У нас есть сервер, где много разных хостов и нужно разграничить доступ. Установка apache2-mpm-itk может удалить apache2 и apache2-mpm-prefork Устанавливаем: $ sudo apt-get install apache2-mpm-itk Далее, прописываем к каждому виртуальному хосту следующее: <IfModule mpm_itk_module> AssignUserId USER GROUP /IfModule> Создаем новую группу: $sudo groupadd friend Создаем пользователя vasya в группе friend:
$sudo useradd -s /bin/false -d /home/vasya -m -g friend vasya Далее, необходимо установить права владения файлов у виртуальных хостов: $sudo chown MYUSER:MYGROUP /var/www/my-virtualhost/ -R Активировать этот модуль через a2enmod НЕ нужно. Перезапускаем Apache2:
$ sudo /etc/init.d/apache2 reload Вот и все! По крайней мере от дурака мы с вами защитились =)
- Информация о материале
- Автор: Павел
- Категория: Uncategorised
- Просмотров: 78442
Много воды утекло, с момента написания главной страницы своего сайта (записной книжки).
Хочу поделиться своим опытом по внедрению облачного хранилища для малого офиса, для офисов в 100 пользователей. С чем мне пришлось столкнуться, это решение клиента для меня закон. Предложения от меня поступали только тогда когда вытянуть со слабого оборудования не получается. Или как всегда не хватает финансирования. Все таки малый бизнес, надо экономить.
И так есть компания которая первая решилась перейти на облачное хранилище в дальнейшем и сейчас работают и каждый сотрудник благодарит меня. И так мне поступило предложение о создании своего web сервера и с доступом к нему из вне. Вопрос тривиальный, выделенный сервер белый IP, ну чутка прямые руки ))).
Дальнейшие шаги ставим nextcloud 25.0.4 релиз, дальше от руководителя офиса, встает вопрос, как это все работает, я объяснял на пальцах, т.к и руководителю надо в нем работать, в итоге. Он научился создавать папки, шарить их для пользователей, все пользователи учились, самое главное сами пользователи начали руководителя обучать в узких местах облачного хранилища, по установке пароля (особенно по срокам и так далее.)
Следующий вопрос (задание) от руководителя. Можно ли как то работать в браузере редактировать документы такие как word, excel, power point. Решил все изучить, есть два решения (я рассматривал только free версии), а их не так много.
- onlyoffice
- libreoffice
Изучив их вдоль и поперек, было принято решение поставить на такую вот тачку
| Процессор | Intel |
| Тип процессора | Core i3-7100 |
| Количество ядер | 2 |
| Частота процессора | 3.9 ГГц |
| Кэш-память | 3 МБ |
| Оперативная память(RAM) | 8 ГБ DDR4 |
| Макс. оперативная память | 32 ГБ |
| Макс. оперативная память | 32 |
| Жесткий диск | Жесткий диск (HDD) red 1000 ГБ 2 шт |
Решил все виртуализировать, и так получилась proxmox 6, первая виртуалка это для облачного хранилища, а вторая для onlyoffice. Счастья сотрудникам не было предела, так как не надо думать как, а самое главное откуда брать финансы на покупку дорогущего продукта от MS.
Приятной работы. Будет желание, помогу настроить, покажу как работает.
