Codeby web-security - новый курс от Codeby Security School

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...


Как установить и настроить кэш Varnish на Ubuntu Linux 16.04 LTSКак установить сервер кэша Varnish для повышения производительности моего существующего веб-сервера Apache, а особенно кэширования динамического содержимого на сервере Ubuntu Linux 16.04 LTS?

Varnish Cache является ускорителем веб приложений. Вы устанавливаете его перед любым веб-сервером, который использует HTTP, и настраиваете его для кэширования содержимого. Он действует как ускоритель веб-приложений, ориентированный на оптимизацию кэширования и сжатия. Он очень быстро и используется веб-сайтами с высоким трафиком. Давайте посмотрим, как настроить кэш Varnish версии 4.x на сервере Ubuntu Linux 16.04 LTS.

Наша установка

Как установить и настроить кэш Varnish на Ubuntu Linux 16.04 LTS

Рисунок 01: Настройка кеша Varnish с различными параметрами

Установка Varnish

Введите следующую команду apt-get command/apt command для того, чтобы установить программное обеспечение кэша Varnish:

$ sudo apt update
$ sudo apt upgrade
$ apt search Varnish
$ sudo apt install varnish

Примеры возможных выводов данных:

Reading state information... Done
The following additional packages will be installed:
  binutils cpp cpp-5 gcc gcc-5 libasan2 libatomic1 libcc1-0 libcilkrts5 libgcc-5-dev libgomp1 libisl15 libitm1 libjemalloc1 liblsan0 libmpc3 libmpx0 libquadmath0 libtsan0
  libubsan0 libvarnishapi1
Suggested packages:
  binutils-doc cpp-doc gcc-5-locales gcc-multilib make autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib gcc-5-doc libgcc1-dbg libgomp1-dbg libitm1-dbg
  libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg varnish-doc
The following NEW packages will be installed:
  binutils cpp cpp-5 gcc gcc-5 libasan2 libatomic1 libcc1-0 libcilkrts5 libgcc-5-dev libgomp1 libisl15 libitm1 libjemalloc1 liblsan0 libmpc3 libmpx0 libquadmath0 libtsan0
  libubsan0 libvarnishapi1 varnish
0 upgraded, 22 newly installed, 0 to remove and 0 not upgraded.
Need to get 23.1 MB of archives.
After this operation, 79.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://in.archive.ubuntu.com/ubuntu xenial/main amd64 libmpc3 amd64 1.0.3-1 [39.7 kB]
.....
...
..
Setting up libquadmath0:amd64 (5.4.0-6ubuntu1~16.04.4) ...
Setting up libgcc-5-dev:amd64 (5.4.0-6ubuntu1~16.04.4) ...
Setting up gcc-5 (5.4.0-6ubuntu1~16.04.4) ...
Setting up gcc (4:5.3.1-1ubuntu1) ...
Setting up libvarnishapi1 (4.1.1-1) ...
Setting up libjemalloc1 (3.6.0-9ubuntu1) ...
Setting up varnish (4.1.1-1) ...
Processing triggers for libc-bin (2.23-0ubuntu5) ...
Processing triggers for systemd (229-4ubuntu16) ...
Processing triggers for ureadahead (0.100.0-19) ...

Varnish установлен и он настроен для прослушивания порта 6081. Эта настройка выставлена по умолчанию.

Вы можете проверить это с помощью следующей простой команды netstat:

$ netstat -tulpn | grep varnishd

Примеры возможных выводов данных:

Установка Varnish

Рисунок 02: Varnish настроен на прослушивание порта TCP IPv4 / IPv6 порт # 6081

Конфигурация Varnish

Ubuntu Linux 16.04 LTS использует systemd на основе config файлов следующим образом:

  • /lib/systemd/system/varnish.service – файл config по умолчанию
  • TCP 6081 порт – порт кэша Varnish
  • TCP 6082 port – порт управления Varnish
  • /etc/varnish/  – файлы конфигурации Varnish, включая VCL

Давайте посмотрим, как правильно выполнить настройку в соответствии с установкой # 1 (see fig.01).

Шаг 1 – Выставить Varnish кэш на порт 80

Введите следующую команду для редактирования файла кеша Varnish и создания нового файла конфигурации /etc/systemd/system/varnish.service.d/ :

$ sudo systemctl edit varnish.service

Добавьте/присоедините следующую опцию config:

[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a 202.54.2.50:80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1024m

Сохраните изменения и закройте файл. Где,

  1. 202.54.2.50:80 – прослушать общедоступный IP-адрес на порту 80.
  2. 1024m – увеличьте объем использования ОЗУ для Varnish с 256 м по умолчанию до 1024 м

Введите следующую команду для перезагрузки изменений:

$ sudo systemctl daemon-reload

Шаг 2 – Настройте Varnish для использования нашего сервера Apache в качестве выходного буфера

Затем, вам нужно настроить Varnish для использования нашего сервера Apache в качестве выходного буфера, работающего по IP-адресу 192.168.1.6 , на порту 80 . Отредактируйте файл /etc/varnish/default.vcl, для этого введите:

$ sudo vi /etc/varnish/default.vcl

Выставьте следующее для указания на ваш сервер контента (Apache/Lighttpd/PHP/Python app server) работающего по адресу 192.168.1.6 и на порту 80.

backend default {
    .host = "192.168.1.6";
    .port = "80";
}

В принципе, вам нужно установить значения хоста и порта, соответствующие вашему LAMP –серверу, личному IP-адресу и порту прослушивания. Сохраните изменения и закройте файл.

Шаг 3 – Настройте Apache для использования на IP адресе 192.168.1.6 и порту 80

Введите следующую команду для того, чтобы отредактировать/etc/apache2/ports.conf :

$ sudo vi /etc/apache2/ports.conf

Отредактируйте/добавьте/присоедините инструкцию по прослушиванию:


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


Listen 192.168.1.6:80

Сохраните изменения и закройте файл. Отредактируйте /etc/apache2/sites-enabled/000-default.conf , для этого введите:

$ vi /etc/apache2/sites-enabled/000-default.conf

Виртуальный хост (Virtual Host) должен быть обновлен следующим образом:

<VirtualHost 192.168.1.6:80>

Сохраните изменения и закройте файл. И наконец, перезапустите Apache веб сервер, для этого запустите:

$ sudo systemctl restart apache2.service

На этом этапе вам также необходимо перезапустить кеш Varnish, для этого введите:

$ sudo systemctl restart varnish.service

Шаг 4 – Настрока ufw для того, чтобы открыть порт 80

Введите следующую команду для открытия порта 80 с помощью ufw:

$ sudo ufw allow 80

Примеры возможных выводов данных:

Rule added
Rule added (v6)

Шаг 5- Проверьте это

Запустите ваш веб браузеров и введите url или IP адрес:

http://your-ip-here/
http://202.54.2.50/
http://your-domain-name/

Примеры возможных выводов данных:

Настройте Apache для использования на IP адресе 192.168.1.6 и порту 80

Рисунок 03: Varnish, работающий над моей установкой

Другой вариант — использовать команду curl для просмотра http хедеров:

$ url -I http://202.54.2.50/

Примеры возможных выводов данных:

HTTP/1.1 200 OK
Date: Wed, 22 Feb 2017 11:59:38 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Wed, 22 Feb 2017 11:42:57 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Varnish: 32773 32771
Age: 4
Via: 1.1 varnish-v4
					
ETag: W/"2c39-5491cff7c5c13-gzip"
Accept-Ranges: bytes
Connection: keep-alive

Значение Age: указывает, что страницы были кэшированы сервером Varnish.

Как я могу просмотреть журнал Varnish и другую информацию?

Чтобы увидеть рейтинг входа в журнал Varnish, введите:

$ sudo varnishtop

Примеры возможных выводов данных:

Как я могу просмотреть журнал Varnish и другую информацию?

Рисунок 04: varnishtop в действии

Чтобы просмотреть файл журнала cd в /var/log/lnish :

$ cd /var/log/varnish
$ sudo tail -f varnish.log
$ sudo tail -f varnishncsa.log

Примеры возможных выводов данных (при условии, что вы настроили PHP/Python с Apache, вы должны увидеть что-то следующее):

151.1.xx.yy - - [22/Feb/2017:12:03:48 +0000] "GET http://www.cyberciti.biz/faq/ubuntu-linux-start-restart-stop-apache-web-server/ HTTP/1.0" 200 60944 "https://www.google.co.in/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
111.z.xx.yy  - - [22/Feb/2017:12:03:48 +0000] "GET http://www.cyberciti.biz/faq/linux-disk-format/ HTTP/1.0" 200 94830 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
xxx.ttt.zz.tt - - [22/Feb/2017:12:03:48 +0000] "GET http://www.cyberciti.biz/faq/wp-content/plugins/contextual-related-posts/default.png HTTP/1.0" 200 15454 "https://www.cyberciti.biz/faq/ubuntu-linux-start-restart-stop-apache-web-server/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
aa.bb.cc.dd  - - [22/Feb/2017:12:03:48 +0000] "GET http://www.cyberciti.biz/faq/find-linux-distribution-name-version-number/ HTTP/1.0" 200 92470 "https://www.google.co.in/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"

Просмотр статистики кэша Varnish сервера

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

$ sudo varnishstat
$ sudo varnishstat -1
$ sudo varnishstat -1 | grep -i cache

Примеры возможных выводов данных:

MAIN.cache_hit            334059         6.33 Cache hits
MAIN.cache_hitpass           239         0.00 Cache hits for pass
MAIN.cache_miss            94300         1.79 Cache misses

Как очистить содержимое из кэша Varnish?

Для начала вам нужно определить ACL. У меня есть следующий config в файле /etc/varnish/default.vcl :

# Who is allowed to purge?
acl purge {
        "localhost";
        "127.0.0.1";
        "72.14.190.12";
        "192.168.1.6";
}
sub vcl_recv {
        # allow PURGE from localhost,72.14.190.12 and 192.168.1.6
        if (req.method == "PURGE") {
                if (!client.ip ~ purge) {
                        return(synth(405,"Not allowed."));
                }
                return (purge);
        }
}

Я бы обратился к Varnish следующим образом:

$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == www.cyberciti.biz && req.url == /faq/bash-for-loop/"

Чтобы удалить/очистить все .html-страницы из кеша, введите:

$ varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret "ban req.http.host ~ www.cyberciti.biz && req.url ~ .html"

Если вы хотите очистить все, просто перезапустите кеш Varnish:

$ sudo systemctl restart varnish.service

Для получения большей информации ознакомьтесь с HTTP Purging. Оставайтесь с нами для получения большей информации о конфигурациях Nginx SSL и создания пользовательских VCL для кэширования страниц.

Перевод: Анна Давыдова
Источник: cyberciti.biz

Это интересно:


Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices