Настройка LAMP сервера на Debian.

В этой статье я расскажу как установить и настроить LAMP server (Linux Apache MySql PHP)с виртуальными хостами, настроить iptables и fail2ban, установить и обезопасить wordpress, а так же прикрутить к серверу DokuWiki.
И так, мы купили виртуальный сервер и поставили на него Debian 7.8 Теперь нужно привести систему в актуальный и БЕЗОПАСНЫЙ вид.

Установим обновления

apt-get update && apt-get upgrade

Создадим пользователя

useradd –d /home/reeves –s /bin/bash –g wheel reeves

Ставим необходимые программы

apt-get install mc screen htop unzip

Теперь настроим демона удаленного доступа OpenSSH и сразу включим доступ к серверу по sftp.
Откроем конфигурационный файл демона

nano /etc/ssh/sshd_config

Изменим некоторые директивы:
Port 2233 изменим порт на не стандартный
PermitRootLogin no запретим подключаться от супер пользователя
PermitEmptyPasswords no запретим подключаться с пустыми паролями
В конец файла добавим строки для подключения по sftp. (ВНИМАНИЕ! пользователь reeves не будет ограничен своей домашней папкой)
Subsystem sftp internal-sftp
Match User reeves
# X11Forwarding yes
# AllowTcpForwarding yes
# AllowAgentForwarding yes
# PermitTunnel yes
# ForceCommand internal-sftp
# ChrootDirectory /home

Перезапустим демона

service ssh restart

Теперь нужно настроить firewall, установим нестандартный скрипт для iptables

apt-get install iptables-persistent

Напишем правила для iptables, открываем конфиг

nano /etc/iptables/rules.v4

Откроем некоторые виды ICMP, откроем 80 порт для web сервера Apache и откроем порт для удаленного доступа по ssh, защитимся от некоторых видов флуда, все остальное iptables будет дропать.

Перезапустим iptables

/etc/init.d/iptables-persistent reload

Посмотреть действующие правила можно командой

iptables-save

Теперь нам нужно обезопасить себя от атаки типа bruteforce, это очень важно, так как и хакерские боты и ваш враг который может знать\угадать ваш логин обязательно задастся целью зарядить в программу типа hydra или medusa словарь с паролями и сбрутить доступ к вашему серверу.
Установим fail2ban

apt-get install fail2ban

Зайдем в директорию fail2ban и сделаем копию дефолтного конфига, который в последствии будем править

cd /etc/fail2ban
reeves@debian:$ cp jail.conf jail.local
reeves@debian:$ nano jail.local

ignoreip здесь можно задать свой ip-адрес или доверенные, эти ip не будут забанены
bantime время в секундах на которое ip-адрес будет забанен
maxretry максимальное кол-во неудачных попыток
находим секцию [ssh] и меняем значения на такие
enabled = true
port = 2233
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

разбанить ip
iptables -L fail2ban-ssh выведет список банов
потом нужный удалить (вместо № — число из предыдущего списка)
iptables -D fail2ban-ssh №

Мы поставили и настроили тот необходимый минимум который должен быть на любом сервере который имет выход в интернет.

————————-Установим и настроим web сервер Apache————————-
Установим апач и создадим директории для wordpress и dokuwiki

apt-get install apache2
reeves@debian:$ mkdir -p /var/www/reeves.su/public_html
reeves@debian:$ mkdir -p /var/www/wiki.reeves.su/public_html

Создадим и отредактируем файлы index.html

nano /var/www/reeves.su/public_html/index.html

nano /var/www/wiki.reeves.su/public_html/index.html


Немного отредактируем права доступа, чтобы убедиться, что все работает корректно.

chmod -R 755 /var/www

Скопируем дефолтный конфиг и поправим его. (первый конфиг для wordpress)

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/reeves.su.conf
nano /etc/apache2/sites-available/reeves.su.conf


ServerAdmin reeves@reeves.su
ServerName reeves.su
ServerAlias www.reeves.su
DocumentRoot /var/www/reeves.su/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Второй конфиг для dokuwiki

cp /etc/apache2/sites-available/reeves.su.conf /etc/apache2/sites-available/wiki.reeves.su.conf
reeves@debian:$nano /etc/apache2/sites-available/wiki.reeves.su.conf


ServerAdmin reeves@reeves.su
ServerName wiki.reeves.su
ServerAlias www.wiki.reeves.su
DocumentRoot /var/www/wiki.reeves.su/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

включаем сервера и перезагружаем апач

a2ensite reeves.su.conf
reeves@debian:$a2ensite wiki.reeves.su.conf
reeves@debian:$service apache2 restart

Теперь если зайти по адресу reeves.su мы должны увидеть надпись:
Welcome to reeves.su!
Success! The reeves.su virtual host is working!

а по адресу wiki.reeves.su надпись
Welcome to reeves.su!
Success! The wiki.reeves.su virtual host is working!

—————————————Установка PHP и плагинов————————————
Особо нам ничего настраивать не нужно,так что просто установим необходимое

apt-get install php5 libapache2-mod-php5 php5-mysql php5-gd php5-curl

—————————————Установка и настройка MySQL———————————

Установим и запустим мастер настройки

apt-get install mysql-server-5.5
reeves@debian:$ service mysql_secure_installation

Вопросы на которые стоит ответь утвердительно
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Сэкономим немного памяти

/etc/mysql/my.cnf

в секцию [mysqld] добавим
performance_schema = off
Сделаем автоматический вход в мускуль: создадим конфиг файл и впишем в него наши данные

touch /root/.my.cnf
reeves@debian:$ nano /root/.my.cnf

[mysql]
password = your_mysql_root_pass

[mysqldump]
password = your_mysql_root_pass

Теперь сделаем этот файл доступным только руту

chown root:root /root/.my.cnf
reeves@debian:$ chmod 600 /root/.my.cnf

Теперь создадим пользователей MySQL, создадим бызы, и дадим на них на них привилегии.
заходим в мускуль. Сделаем для wordpress.

mysql
CREATE DATABASE wordpress;
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON new_user.* TO 'wordpress'@'localhost' IDENTIFIED BY 'password';

И делаем тоже самое для dokuwiki, только создадим нового пользователя с новым паролем, создадим отдельную базу и дадим привилегии.

———————————Ставим и настраиваем wordpress——————————
Заходим в директорию которую мы создали для wordpress, выкачиваем последний релиз с офф. сайта, и разархивируем архив.

cd /var/www/reeves.su/
reeves@debian:$ wget https://ru.wordpress.org/wordpress-4.2.1-ru_RU.zip
reeves@debian:$ unzip wordpress-4.2.1-ru_RU.zip

Создадим папку uploads для загрузки медиа файлов и дадим на нее права.

mkdir /var/www/reeves.su/wp-content/uploads
reeves@debian:$ chmod 777 /var/www/reeves.su/wp-content/uploads

Скопипастим дефолтный конфиг wp-config-sample.php и переименуем его.

cp /var/www/reeves.su/wp-config-sample.php /var/www/reeves.su/wp-config.php

Отредактируем конфиг wordpress. В полях DB_NAME DB_USER DB_PASSWORD прописываем то что мы насоздавали в mysql для wordpress, а уникальные фразы забираем отсюда https://api.wordpress.org/secret-key/1.1/salt/

nano /var/www/reeves.su/wp-config.php


Удаляем конфиг для примера

rm /var/www/reeves.su/wp-config-sample.php

Подредактируем конфиг apache

nano /etc/apache2/sites-available/reeves.su.conf

меняем DocumentRoot /var/www/reeves.su/public_html на DocumentRoot /var/www/reeves.su/

service apache2 restart

Для безопасного обновления\доступа к wordpress поставим плагин для sftp, активировать его можно будет в панели управления wordpress в разделе ПЛАГИНЫ.

cd /var/www/reeves.su/wp-content/plugins
reeves@debian:$ wget https://downloads.wordpress.org/plugin/ssh-sftp-updater-support.0.7.1.zip
reeves@debian:$ unzip ssh-sftp-updater-support.0.7.1.zip

Не забываем за рекурсивные права папок chmod -R 777 /var/ваша_папка/папка/
Вот и все с wordpress, в моем варианте он доступен по адресу reeves.su

——————————Ставим и настраиваем DOKUWIKI——————————-
качаем последний релиз себе на компьютер http://download.dokuwiki.org/
Заливаем архив себе на сервер по sftp в папку /var/www/wiki.reeves.su/ (например через filezilla клиент)
Заходим в этот каталог и разархивируем dokuwiki

cd /var/www/wiki.reeves.su/
reeves@debian:$ tar -xzvf dokuwiki-302cf.tgz

Задаем права на папки

chmod -R 775 /var/www/wiki.reeves.su/data/
reeves@debian:$ chmod -R 775 /var/www/wiki.reeves.su/conf/

В конфиге виртуал хоста апача меняем рут документ

nano /etc/apache2/sites-available/wiki.reeves.su.conf

меняем DocumentRoot /var/www/wiki.reeves.su/public_html на DocumentRoot /var/www/wiki.reeves.su/
Перезагрузим апач

service apache2 restart

В итоге dokuwiki доступна по адресу http://wiki.reeves.su/install.php?l=ru
После первичной настройки dokuwiki обязательно удалите файл install.php

2 thoughts on “Настройка LAMP сервера на Debian.

  1. С учетом вышесказанного оптимальным выбором нам представляется использование в качестве платформы веб-сервера Debian 7, как наиболее совместимую с существующими веб-приложениями и не имеющую серьезных проблем.

Добавить комментарий