Установка, защита и автоматизация AWStats на CentOS/RHEL
Обзор и цели
AWStats анализирует файлы логов (Apache, Nginx, FTP и т.д.) и строит на их основе отчёты в виде графиков и таблиц. Цель этой инструкции — дать воспроизводимый рабочий процесс установки, защиты и автоматизации AWStats на серверах CentOS/RHEL с минимальными усилиями.
Кому полезно: системным администраторам, DevOps-инженерам, специалистам по безопасности. Требования: root/sudo, SELinux в permissive/disabled или корректная политика, iptables настроен под требования сервиса.
Требования и предварительная проверка
- Дистрибутив: CentOS/RHEL (5/6/7 аналогично для YUM-пакетов).
- Права root или sudo.
- Доступ к интернету для загрузки RPM-репозитория.
- SELinux либо permissive, либо подготовленная политика.
- При использовании firewall — разрешён вход на порт 80/443.
Важно: тестируйте изменения на стенде перед продом.
Установка
1) Добавление репозитория RPMForge (YUM)
Для x86 (32-bit) систем выполните:
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpmДля x64 (64-bit) систем выполните:
rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm(Репозитории предоставлены Dag Wieers.)
2) Установка и конфигурация зависимостей
Установите Apache:
yum install httpdВключите запуск Apache при старте системы:
/sbin/chkconfig --levels 345 httpd onЕсли вы используете iptables, добавьте правило для порта 80 и сохраните конфигурацию:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables restartПримечание по SELinux: если SELinux включён в enforcing, либо переключите в permissive, либо настройте контексты httpd для доступа к каталогам AWStats (restorecon/chcon и политика).
3) Установка AWStats через YUM
yum install awstats4) Конфигурация Apache для AWStats
Отредактируйте /etc/httpd/conf.d/awstats.conf. Пример конфигурации:
Alias /awstats/icon/ /var/www/awstats/icon/
ScriptAlias /awstats/ /var/www/awstats/
DirectoryIndex awstats.pl
Options ExecCGI
order deny,allow
allow from all
Alias /awstatsclasses "/var/www/awstats/lib/"
Alias /awstats-icon/ "/var/www/awstats/icon/"
Alias /awstatscss "/var/www/awstats/examples/css"Важно: модуль mod_cgi должен быть загружен в Apache, иначе CGI-скрипты не будут выполняться корректно.
5) Настройка конфигурационного файла AWStats
Отредактируйте строки в /etc/awstats/awstats.localhost.localdomain.conf:
SiteDomain="."
HostAliases="" Переименуйте файл конфигурации в соответствие с доменом сервера:
mv /etc/awstats/awstats.localhost.localdomain.conf /etc/awstats/awstats...conf 6) Обновление статистики вручную
По умолчанию AWStats обновляет данные каждую ночь/час (в зависимости от cron). Для немедленного обновления выполните:
/usr/bin/awstats_updateall.pl now -confdir="/etc" -awstatsprog="/var/www/awstats/awstats.pl"7) Запуск Apache
/etc/init.d/httpd startДля добавления Apache в автозагрузку:
chkconfig --add httpd8) Проверка установки
Откройте в браузере:
http://
Если видите страницу отчёта — установка успешна.
Защита AWStats
Ниже — практические шаги по ограничению доступа к чувствительным файлам и интерфейсу AWStats.
Настройка прав файловой системы
AWStats и веб-серверу требуется только чтение для вывода статических файлов и генерации отчётов через CGI. Ограничим права:
$ find ./awstats -type d -exec chmod 701 '{}' \;
$ find ./awstats -not -type d -exec chmod 404 '{}' \;Защитите конфигурации AWStats от чтения вебом:
chmod 400 /etc/awstats/*.confВажно: после такой настройки для внесения изменений потребуется запускать скрипты от пользователя с правами на запись.
Защита каталога AWStats с помощью .htaccess и паролей
- Установите владельца каталога AWStats так, чтобы только нужный пользователь имел доступ.
- Создайте файл с паролями в /etc/awstats:
htpasswd -c /etc/awstats/htpasswd.users user- Создайте .htaccess в /var/www/awstats/ с содержимым:
AuthName "STOP - Do not continue unless you are authorized to view this site! - Server Access"
AuthType Basic
AuthUserFile /etc/awstats/htpasswd.users
Require valid-user
htpasswd -c /etc/awstat/htpasswd.users awstats_online- Защитите файл .htaccess и сами пароли:
chmod 404 awstats/.htaccessПримечание: некоторые конфигурации Apache не разрешают использовать .htaccess. В таких случаях добавьте директивы авторизации прямо в конфигурацию виртуального хоста.
Автоматизация: cron для обновления статистики
Добавьте в cron periodic задачу для обновления всех конфигов AWStats. Пример для root Crontab (обновление каждый час):
0 * * * * /usr/bin/awstats_updateall.pl now -confdir="/etc" -awstatsprog="/var/www/awstats/awstats.pl" >/dev/null 2>&1Или используйте systemd-timer (на системах с systemd) для гибкого управления расписанием.
Практические рекомендации по безопасности
- Отключите отображение версий сервера в заголовках HTTP.
- Разграничьте права: конфигурации — root, каталоги отчётов — отдельный системный пользователь.
- Логи ротации: обеспечьте ротацию логов (logrotate) и обработки для новых файлов.
- SELinux: при включённом SELinux используйте правильные контексты для /var/www/awstats и /etc/awstats.
Отладка и частые проблемы
- Страница отображается как текст или предлагает скачать файл — mod_cgi не подключён.
- Ничего не обновляется по cron — проверьте PATH в crontab и права пользователя.
- Ошибки чтения конфига — убедитесь, что права на /etc/awstats/*.conf позволяют процессу (обычно root) читать файл.
- Проблемы с правами изображений/иконок — проверьте Alias и права в /var/www/awstats/icon/.
SOP: пошаговый план развёртывания (коротко)
- Подготовка: резервная копия текущих конфигураций и логов.
- Добавить rpmforge-репозиторий (команды выше).
- yum install httpd awstats.
- Настроить Apache (awstats.conf), включить mod_cgi.
- Отредактировать /etc/awstats/awstats.
.conf. - Переименовать конфиг и проверить запуск awstats_updateall.pl вручную.
- Добавить cron/systemd-timer.
- Настроить htpasswd и .htaccess или директивы в VirtualHost.
- Проверить доступность в браузере и провести нагрузочное тестирование при необходимости.
Ролевые контрольные списки
Администратор сервера:
- Проверить наличие root/sudo.
- Установить репозитории и пакеты.
- Настроить автозапуск httpd.
DevOps:
- Добавить задачу в CI/CD для обновления конфигов.
- Настроить мониторинг (возвращаемые коды, время обновления).
Инженер по безопасности:
- Проверить права на /etc/awstats и /var/www/awstats.
- Настроить аутентификацию и ограничение по IP/SSL.
Критерии приёмки
- AWStats открывается в браузере по адресу /awstats/awstats.pl?config=
. - Конфигурационный файл /etc/awstats/awstats.
.conf существует и читается. - Cron или systemd-timer обновляет статистику согласно расписанию.
- Доступ к интерфейсу защищён паролем или ограничен по IP/SSL.
Короткая сводка
AWStats легко установить через YUM при наличии дополнительного репозитория. Основные шаги: установка Apache и AWStats, настройка конфигураций, защита конфигов и каталогов, автоматизация обновлений через cron. Всегда проверяйте права и SELinux-контексты.
Глоссарий в одну строку
- AWStats — Perl-скрипт для аналитики логов и генерации графических отчётов.
- RPMForge — сторонний репозиторий RPM для CentOS/RHEL.
- mod_cgi — модуль Apache для выполнения CGI-скриптов.
Дополнительные заметки и совместимость
- Версии пакетов и репозиториев могут отличаться по дистрибутивам и релизам; проверяйте URL репозитория и подписи RPM.
- На RHEL/CentOS 7+ используйте systemd вместо init-скриптов и проверьте, поддерживает ли пакет awstats системные пути, отличающиеся от старых релизов.
Важно: не удаляйте исходные логи до того, как AWStats их проанализирует и вы не убедились в корректности отчётов.
Краткий список контрольных точек при вводе в эксплуатацию:
- Конфигурация сохранена в /etc/awstats
- CGI-скрипт awstats.pl доступен и исполняем
- Cron/Timer обновляет данные регулярно
- Интерфейс защищён паролем и/или SSL
Похожие материалы
Herodotus: механизм и защита Android‑трояна
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить