Повышаем безопасность стека web-приложений (виртуализация LAMP, шаг 5/6)

в 9:17, , рубрики: CentOS, lamp, nfs, nfsv4, Веб-разработка, Серверная оптимизация, Серверное администрирование

Настройка web-сервера Lighttpd  на работу со статическими файлами сетевой файловой системы (NFS)

Пятый урок цикла статей по настройке web-стека LAMP на виртуальных машинах будет посвящен обслуживанию статических файлов.

lighttpd web-сервер отвечает за предоставление доступа через HTTP или HTTPS протокол к статическому контенту. В этом примере я собираюсь установить и использовать Lighttpd web-сервер, привязав DocumentRoot к vm05:/exports/static mounted смонитрованной в /var/www/static. Все приведенные ниже команды вам необходимо вводить исключительно на vm01 с IP-адресом 192.168.1.10.

Настройка NFS-клиента

С помощью yum-менеджера установим пакеты NFS-клиента:

# yum groupinstall "Network file system client"

Или чуть проще:

# yum install nfs-utils nfs4-acl-tools

Включим службы NFSv4-клиента:

# chkconfig rpcbind on
# chkconfig rpcidmapd on
# chkconfig nfslock on

/etc/idmapd.conf настройки nfs-клиента

Отредактируем файл конфигурации nfs-клиента

# vi /etc/idmapd.conf

Убедитесь, что параметры выставлены ​​в соответствии с доменным именем NFS-сервера:

Domain = cyberciti.biz
 
[Mapping]
 
Nobody-User = nobody
Nobody-Group = nobody

Сохраните и закройте файл. Запустим все службы NFS-клиента:

# /sbin/service rpcbind start
# /sbin/service rpcidmapd start
# /sbin/service nfslock start

Создание учетной записи пользователя

Мы будем запускать web-сервера Lighttpd  только из под пользователя apache. Что бы добавить учетную запись пользователя в Linux, введем следующие команды:

# /usr/sbin/groupadd -g 48 apache
# /usr/sbin/useradd -s /sbin/nologin -g 48 -u 48 -M -d /var/www apache
# /usr/bin/passwd -l apache

Монтируем файловую систему

Введите следующую команду:

# showmout -e vm05

Пример вывода:

Export list for v.txvip1:
/exports/html     192.168.1.10,192.168.1.11
/exports/static   192.168.1.10,192.168.1.11

Смонтируем /exports/static папку файловой nfs-системы к /var/www/static

# mkdir /var/www/static
# /bin/mount -t nfs4 -orsize=32768,wsize=32768,intr,hard,proto=tcp,sync vm05:/exports/static /var/www/static/

Отредактируем файл /etc/fstab:

# vi /etc/fstab

Монтирование файловой системы через /etc/fstab

Отредактируем /etc/fstab:

# vi /etc/fstab

Добавим следующую строку:

vm05:/exports/static /var/www/static nfs4 orsize=32768,wsize=32768,intr,hard,proto=tcp,sync

Сохраним и закроем файл. Убедимся, что netfs-служба включена:

# chkconfig netfs on

И, наконец, убедимся в том, что пользователь apache видит наши файлы

# su - apache
$ ls /var/www/static/
$ exit
#

Обратите внимание, что root-пользователь или любой другой пользователь не видит /var/www/ static из-за установленной нами политики безопасности. Это единственный lighttpd-пользователь, имеющий права на доступ к DocumentRoot.

Установка Lighttpd web-сервера

Подключите EPEL-репозиторий и установите web-сервер Lighttpd

# yum install lighttpd

Пример вывода консоли:

Loaded plugins: rhnplugin
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package lighttpd.x86_64 0:1.4.28-3.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================
 Package          Arch           Version               Repository    Size
==========================================================================
Installing:
 lighttpd         x86_64         1.4.28-3.el6          epel         328 k
Transaction Summary
==========================================================================
Install       1 Package(s)
Total download size: 328 k
Installed size: 878 k
Is this ok [y/N]: y
Downloading Packages:
lighttpd-1.4.28-3.el6.x86_64.rpm                   | 328 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : lighttpd-1.4.28-3.el6.x86_64                           1/1
Installed:
  lighttpd.x86_64 0:1.4.28-3.el6
Complete!

Настройка web-сервера Lighttpd

Отредактируем /etc/lighttpd/lighttpd.conf введя следующие команды:

# mv /etc/lighttpd/lighttpd.{conf,default.bak}<br />
# vi /etc/lighttpd/lighttpd.conf

Впишем следующие настройки:

## Настройка статики для http://static.cyberciti.biz
 
server.modules              = (
                               "mod_expire",
                               "mod_access",
                               "mod_accesslog",
                               "mod_setenv",
                               "mod_extforward"
)
 
server.errorlog            = "/var/log/lighttpd/error.log"
accesslog.filename         = "/var/log/lighttpd/access.log"
index-file.names            = ( "index.html", "index.htm", "default.htm" )
 
server.tag                 = "lighttpd"
server.network-backend = "linux-sendfile"
 
## разрешать доступ только для lan-запросов ##
server.port = "80"
server.bind = "192.168.1.10"
 
server.document-root = "/var/www/static"
server.pid-file = "/var/run/lighttpd.pid"
 
server.username = "apache"
server.groupname = "apache"
 
## вся статика кешируется на 30 дней от первого доступа ##
$HTTP["url"] =~ "^/" {
   expire.url = ( "" => "access 30 days" )
}
 
### Логировать реальный ip-адрес пользователя ###
### 192.168.1.{1,2} == nginx resverse proxy server ##
extforward.headers = ("X-Forwarded-For")
extforward.forwarder = (
      "192.168.1.1" => "trust",
      "192.168.1.2" => "trust"
)
 
##
## mimetype mapping
##
include "conf.d/mime.conf"

Сохраним и закроем файл

Настройка iptables для доступа к web-серверу

Отредактируйте файл /etc/sysconfig/Iptables, добавив следующие параметры (убедитесь, что они прописаны до окончательных LOG и DROP настроек INPUT-цепочки):

## разрешить доступ только из локальной сети ##
-A INPUT -m state --state NEW -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPT

Сохраняем, закрываем. Перезапускаем iptables:

# /sbin/service iptables restart
# /sbin/iptables -L -v -n

Включаем Lighttpd

Запускам Lighttpd web-сервер следующей командой:

# chkconfig lighttpd on
# service lighttpd start

Врубаем браузер и ломимся на наш сервер:

http://192.168.1.10/

Автор: danielnewman

* - обязательные к заполнению поля