В тази статия ще покажа как да инсталирате LAMP (Linux, Apache, MariaDB, PHP) сървър на Debian 10 (Buster). Също така ще направя едни от най-важните и основни неща за да защитим нашия сървър. Идеята на статията е да бъде кратка и систематизирана. Предвидена е за средно напреднали и напреднали с Linux-а.
Обновяване на repository и софтуерните пакети:
apt update apt dist-upgrade
Инсталиране на помощни пакети, ако не са инсталирани преди това:
apt install sudo sudo apt install htop mc curl net-tools
Влизаме като root:
su -
Препоръчително е добавим админ user-a към Sudoers. Това става със следната команда:
usermod -aG sudo YOUR_USER
След като приключи инсталирането на помощните пакети вече може да започнем със инсталацията на Apache2.
Инсталиране на Apache2:
sudo apt install apache2 apache2-utils
Сега трябва да имаме работещ Apache сървър. Може да проверим статуса му като изпълним следната команда:
systemctl status apache2
Също така може да отворим следния адрес: 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:
Изпълняваме следната команда:
sudo apt install php libapache2-mod-php php-mysql
С това инсталацията на PHP е готова. Обаче много от WEB приложенията се нуждаят от допълнителни разширения. С тази команда ще инсталираме едни от най-известните PHP extentions:
apt-get install php-apcu php-zip php-dev php-curl php-cli php-imagick php-geoip php-mbstring php-gd php-bcmath php-memcached memcached
Рестартираме Apache2:
sudo systemctl restart apache2
Настройки по сигурността:
Следа една кратка и важна стъпка - настройките по сигурността. Има доста неща които може да се правят свързани със сигурността. Тук ще посоча най-общите от тях.
Инсталиране на firewall (ufw), ако не е инсталиран:
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.