хуйу нас не матерятся
На этом этапе нам нужно установить стандартный набор приложений: php, mysql, nginx. Но при этом нужно заблокировать для всех коннект к серверу по http/https портам, а разрешить его только с нашего шлюза.
apt install mariadb-server
И сразу создаём пользователя- администратора:
mysql -u root -h localhost
USE mysql;
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT
apt install php7.0 php7.0-fpm php7.0-cli php7.0-curl php7.0-gd php7.0-mysql php7.0-gd php7.0-mcrypt php7.0-mbstring php7.0-curl php7.0-zip
apt install nginx
Проверяем работает ли веб-сервер, открываем в браузере: http://IP_сервера/ . По этому адресу должна открыться страница приветствия nginx.
Правим: /etc/nginx/sites-available/default
server {
server_name default;
root /var/www/default;
index index.html index.htm index.php;
proxy_read_timeout 20;
proxy_send_timeout 20;
location ~ /. {
deny all;
}
location ~* /(?:uploads|files)/.*.php$ {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
В папке /var/www/default создаем index.php со следующим содержанием:
<?php
echo phpinfo();
?>
Обновляем страницу, и видим информацию о сервере:
Многие на этом моменте сразу полезут ставить phpmyadmin в эту же папку. Но так делать нельзя. Специально для phpmyadmin создаём новый конфиг: /etc/nginx/sites-available/phpmyadmin.conf
server {
listen 127.0.0.1:8888;
root /var/www/phpmyadmin;
index index.html index.htm index.php;
proxy_read_timeout 20;
proxy_send_timeout 20;
location ~ /. {
deny all;
}
location ~* /(?:uploads|files)/.*.php$ {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
И делаем на него симлинк:
cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/phpmyadmin.conf
Тестируем nginx:
nginx -t
И если всё ок, перезапускаем nginx:
service nginx restart
И открываем порт в фаерволе:
ufw allow from 127.0.0.1 to 127.0.0.1 port 8888 proto tcp
Но вы не сможете законнектиться на сервер на порт 8888, потому, что nginx обрабатывает только локальные подключения к нему. Чтобы подключиться к phpmyadmin серверу нужно проложить туннель:
ssh -L 8888:localhost:8888 ip_сервера -l root
И уже затем коннектимся к пхп админ по адресу: localhost:8888
Следующим шагом, нужно изменить правила в фаерволе для портов 80 и 443, чтобы соединения принимались только с нашего шлюза. Для этого нам нужно узнать Ip локальных интерфейсов на шлюзе и веб-сервере:
ifconfig -a
Затем смотрим что у нас в правилах:
ufw status numbered
Удаляем все правила для 80 и 443 порта
ufw delete номер_правила
После каждого делета, ещё раз вызывайте "ufw status numbered", номера сдвигаются после каждого удаления. И в завершении добавляем правила:
ufw allow from локальный_ip_шлюза to локальный_ip_веб-сервера port 80 proto tcp
ufw allow from локальный_ip_шлюза to локальный_ip_веб-сервера port 443 proto tcp
Всё, теперь к нашему веб-серверу просто так не подключишься. Приступаем к настройке шлюза.