В тази статия ще покажа как да инсталирате LAMP (Linux, Apache, MariaDB, PHP, PHP-FPM) сървър на Debian 10 (Buster). Също така ще направя едни от най-важните и основни неща за да защитим нашия сървър. Идеята на статията е да бъде кратка и систематизирана. Предвидена е за средно напреднали и напреднали с Linux-а.
Обновяване на repository и софтуерните пакети:
apt update apt dist-upgrade
Инсталиране на помощни пакети, ако не са инсталирани преди това:
apt install sudo sudo apt install htop mc curl net-tools
Препоръчително е добавим админ user-a към Sudoers. Това става със следната команда:
usermod -aG sudo YOUR_USER
След като приключи инсталирането на помощните пакети вече може да започнем със инсталацията на Apache2.
Инсталиране на Apache2:
sudo apt install apache2 apache2-utils
Също така може да отворим следния адрес: http://IP-то-на-сървъра. Трябва да видим страницата по подразбиране на Apache.
Активираме най-използваните модули за Apache2:
sudo a2enmod rewrite ssl headers http2 vhost_alias
Препоръчително е да спрем 'directory listing' и да позволим 'AllowOverride'. Отваряме конфиг файла:
nano /etc/apache2/apache2.conf
Намираме <Directory /var/www/> и го променяме на:
<Directory /var/www/> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory>
С това приключи инсталирането на Apache2.
Инсталиране на MariaDB (MySQL server)
Изпълняваме следната команда:
sudo apt install mariadb-server mariadb-client
След като завърши инсталацията ще изпълним скрипта за secure installation:
sudo mysql_secure_installation
Следваме стъпките на скрипта:
- слагаме парола на root акаунта;
- премахваме анонимния акаунт;
- Забраняваме remote логина с root акаунта;
- премахваме test базата;
Сега ще създадем акаунт с пълни права за MySQL. Първо трябва да се свържем с MySQL:
mysql -u root -p
Въвеждаме root паролата.
След което изпълняваме следните заявки:
CREATE USER 'user'@'%' IDENTIFIED BY 'userpass'; GRANT ALL ON *.* TO 'user'@'%' WITH GRANT OPTION;
Инсталиране на PHP 8:
Добавяне на SURY repository:
apt-get -y install apt-transport-https lsb-release ca-certificates curl wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Обновяване на repository:
sudo apt update
Инсталиране на PHP 8:
sudo apt install php8.1
С това инсталацията на PHP 8 е готова. Обаче много от WEB приложенията се нуждаят от допълнителни разширения. С тази команда ще инсталираме едни от най-известните PHP extentions:
sudo apt install php8.1-{fpm,mysql,intl,apcu,zip,dev,curl,cli,imagick,mbstring,gd,bcmath,redis,memcached,xml}
Активиране на Apache Fast CGI и PHP-FPM:
a2enmod proxy_fcgi setenvif a2enconf php8.1-fpm
Рестартираме Apache2 и PHP-FPM:
sudo systemctl restart apache2 php8.1-fpm
Инсталиране на по-стари версии на PHP <= 7.x:
Инсталиране на PHP 7.4 с най-известните PHP extention:
sudo apt install php7.4 php7.4-{fpm,mysql,apcu,zip,dev,curl,cli,imagick,geoip,mbstring,gd,bcmath,json,redis,memcached,xml}
Инсталиране на PHP 7.3 с най-известните PHP extention:
sudo apt install php7.3 php7.3-{fpm,mysql,apcu,zip,dev,curl,cli,imagick,geoip,mbstring,gd,bcmath,json,redis,memcached,xml}
Настройки по сигурността:
Следа една кратка и важна стъпка - настройките по сигурността. Има доста неща които може да се правят свързани със сигурността. Тук ще посоча най-общите от тях.
Инсталиране на firewall (ufw), ако не е инсталиран:
sudo apt install ufw ufw allow ssh ufw allow http ufw allow https ufw allow mysql ufw enable
Инсталиране на fail2ban:
apt install fail2ban
Сега трябва да активираме някои Action Jails:
Отваряме jail.local файла:
nano /etc/fail2ban/jail.local
Поставяме следните редова:
[mysqld-auth] enabled = true
По този начин активираме автоматичното блокиране на поредни неуспешни опити за вход в MySQL сървъра от едно и също IP.
С това завършихме основните настройки на сървъра!