AWStats по HTTPS: SSL, cron и оптимизация
К чему это приведёт
Этот материал пошагово объясняет, как создать самоподписанный SSL‑сертификат на сервере с Apache, подключить AWStats для работы по HTTPS, автоматизировать обновления отчётов через cron и снизить накладные расходы на преобразование IP→имён/страны (GeoIP). Подходит для системных администраторов и инженеров DevOps.
1. Подготовка: требования и краткая методология
- Требуется установленный Apache и OpenSSL на сервере. На CentOS/RHEL пакет называется mod_ssl.
- Краткая методология:
- Сгенерировать приватный ключ и CSR (запрос на подпись сертификата).
- Подписать сертификат (самоподписанный или CA/Let’s Encrypt).
- Скопировать сертификат и ключ в стандартные каталоги и выставить права.
- Настроить Apache для использования SSL (порт 443).
- Перенаправить доступ к AWStats на HTTPS и настроить cron для обновлений.
Важно: если сервер открыт в интернет, рассмотрите выпуск сертификата через доверенный CA (например, Let’s Encrypt) вместо самоподписанного.
2. Создание SSL‑сертификата
OpenSSL должен быть установлен — на CentOS/RHEL это делается так:
yum install mod_ssl
Создание RSA-приватного ключа (пример из исходника использует 1024 бит—рекомендуется 2048 или выше):
# openssl genrsa -des3 -out server.key 1024
Вводится pass phrase для защиты приватного ключа:
Generating RSA private key, 1024 bit long modulus
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
Просмотр информации о ключе:
# openssl rsa -noout -text -in server.key
Создание запроса на подпись (CSR) с использованием приватного ключа:
# openssl req -new -key server.key -out server.csr
Во время создания CSR вам будут заданы поля DN (Distinguished Name). Можно оставлять поля пустыми, установив ‘.’
Пример ввода полей:
Country Name (2 letter code) [GB]:JO
State or Province Name (full name) [Berkshire]:State
Locality Name (eg, city) [Newbury]: Your Location
Organization Name (eg, company) [My Company Ltd]:My Company
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ns.somewhere.com
Email Address []: [email protected]
Подписание CSR и создание самоподписанного сертификата на 365 дней:
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Пример подтверждения:
Signature ok
subject=/C=JO/ST=State/L=Your Location/O=My Company/CN=ns.somewhere.com/emailAddress=[email protected] Getting Private key
Копирование файлов в стандартные каталоги Apache и установка прав:
# cp server.crt /etc/pki/tls/certs/
# cp server.key /etc/pki/tls/private/
# cp server.csr /etc/pki/tls/private
# chmod go-rwx /etc/pki/tls/certs/server.crt
# chmod go-rwx /etc/pki/tls/private/server.key
# chmod go-rwx /etc/pki/tls/private/server.csr
Примечание по безопасности: используйте ключи минимум 2048 бит (openssl genrsa -out server.key 2048) и храните приватный ключ в защищённом каталоге; регулярная ротация сертификатов уменьшает риск компрометации.
3. Настройка Apache для SSL
Добавьте в конфигурацию Apache (например, httpd.conf на CentOS) строки, указывающие на сертификат и ключ:
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
Перезапустите или перезагрузите Apache, затем убедитесь, что сервер слушает порт 443:
netstat -aunt
Ожидаемый вывод (фрагмент):
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
После этого откройте сайт через https://ваш-домен/ и примите самоподписанный сертификат в браузере (или установите доверенный сертификат от CA, чтобы избежать предупреждений).
4. Перенаправление AWStats на HTTPS
В .htaccess можно добавить правило редиректа (отредактируйте URL под вашу инсталляцию):
# redirect awstats to https
RewriteCond %{REQUEST_URI} ^/awstats(.*)
RewriteRule ^/rawe/awstats(.*)$ https://example.com/awstats$1 [R,L]
В конфигурационном файле awstats.site.conf есть параметр UseHTTPSLinkForUrl — укажите там корень HTTPS‑ссылок, если необходимо:
UseHTTPSLinkForUrl
Version : 4.0+
# When AWStats build HTML links in its report pages, it starts thoose link
# with "http://". However some links might be HTTPS links, so you can enter
# here the root of all your HTTPS links. If all your site is a SSL web site,
# just enter "/".
# This parameter is not used if ShowLinksOnUrl is 0.
# Example: "/shopping"
# Example: "/"
# Default: ""
#
UseHTTPSLinkForUrl=""
Установите UseHTTPSLinkForUrl=”/“ если весь сайт доступен только по HTTPS.
5. Автоматическое обновление AWStats с помощью cron
Чтобы не обновлять отчёты вручную, создайте cron‑задачу. Рекомендуемый график — ежедневно в время, когда нагрузка минимальна.
Откройте crontab:
$ crontab -e
Добавьте задачу, обновляющую AWStats ежедневно в 09:45 (локальное время сервера):
45 9 * * * /usr/bin/awstats_updateall.pl now -confdir="/etc" -awstatsprog="/var/www/awstats/awstats.pl"
Объяснение: этот cron вызовет скрипт обновления для всех конфигов в указанной директории. Убедитесь, что путь к awstats_updateall.pl и awstats.pl соответствует вашей установке.
Не забудьте оставить пустую строку в конце crontab перед сохранением.
Вместо множества задач можно использовать один вызов awstats_updateall.pl (пример из исходника):
15 4 * * * perl $HOME/awstats/tools/awstats_updateall.pl now -awstatsprog=$HOME/awstats/cgi-bin/awstats.pl -configdir=$HOME/awstats/cgi-bin/
Если awstats.pl вызывается из cron, выставьте корректные права на исполняемый файл:
$ chmod 504 awstats/cgi-bin/awstats.pl
Это позволит cron и владельцу выполнять скрипт.
Пример через logrotate
Можно использовать logrotate, чтобы обновлять AWStats при ротации логов Apache. Пример файла в /etc/logrotate.d/awstats:
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
prerotate
/var/www/awstats/awstats.pl-update -config=somesite.net
postrotate
/etc/init.d/httpd reload > /dev/null 2>&1 || true
endscript
}
6. Cron для множества конфигураций
Если у вас много конфигов AWStats, не добавляйте под каждый отдельную cron‑задачу. Используйте awstats_updateall.pl, который последовательно обновит все найденные конфиги в указанной папке.
Проверьте, что:
- awstats_updateall.pl доступен и имеет корректный shebang (perl).
- У пользователя, от имени которого работает cron, есть права читать конфиг‑файлы и запускать awstats.pl.
7. Настройка дополнений: GeoIP и производительность
По умолчанию разрешение имён и геолокация делаются через DNS и запись dns.txt, что при высоком трафике даёт overhead. Альтернатива — использование GeoIP (MaxMind GeoIP/GeoLite) для маппинга IP→страна/город локально.
Рекомендации:
- Используйте GeoIP модуль и локальные базы для быстрого сопоставления; обновляйте базы регулярно.
- Отключите обратные DNS‑поиски внутри AWStats, если вам не нужны имена хостов — это снизит нагрузку.
- Включайте только те ExtraSections и плагины, которые действительно нужны.
Ссылку на качественную статью о GeoIP для AWStats можно найти в документации AWStats и на сайте разработчика GeoIP/MaxMind.
8. Альтернативные подходы и когда они применимы
- Let’s Encrypt: если ваш сервер публичен и вы хотите убрать предупреждения браузера — используйте certbot для автоматического получения и продления бесплатного CA‑сертификата.
- Reverse proxy (nginx/Cloudflare): терминальный SSL можно вынести на прокси, при этом внутреннее соединение может оставаться HTTP (но если важна защита внутри сети — используйте HTTPS на backend тоже).
- В средах с высокой безопасностью храните приватный ключ на аппаратном модуле (HSM) или используйте PKI решения.
9. Контроль качества и критерии приёмки
Критерии приёмки установки:
- Сертификат корректно загружен, Apache перезапускается без ошибок.
- Сайт и AWStats доступны по https://ваш-домен/awstats без ошибок сервера.
- Cron‑задачи выполняются и обновляют отчёты (проверить timestamps в /var/www/awstats/ или логах).
- Права на приватный ключ ограничены (только root/администратор).
- При использовании GeoIP сопоставления корректно отображаются страны/регионы.
10. Роль‑ориентованные чек‑листы
Для системного администратора:
- Установлен mod_ssl и OpenSSL.
- Созданы и защищены server.key, server.crt.
- Конфигурация Apache обновлена и перезапущена.
- Проверен netstat на порт 443.
- Настроен cron и проверено его выполнение.
Для DevOps/инженера безопасности:
- Рассмотрен выпуск через Let’s Encrypt или корпоративный CA.
- Оценены шифры и протоколы TLS (отключены устаревшие SSLv3/TLS1.0).
- Проведён аудит прав на файлы и ротация ключей.
Для вебмастера/аналитика:
- Убедился, что AWStats генерирует ссылку на HTTPS (UseHTTPSLinkForUrl).
- Проверил корректность отчётов после перехода на HTTPS.
11. Безопасность и приватность
- Защитите приватный ключ паролем и правами доступа.
- Отключите слабые шифры и старые версии TLS в конфигурации Apache.
- Если логирование включает персональные данные, проверьте требования локального законодательства по хранению таких данных (GDPR/локальные законы).
12. Краткий глоссарий
- SSL/TLS — протоколы для шифрования трафика между клиентом и сервером.
- CSR — Certificate Signing Request, запрос на подпись сертификата.
- AWStats — инструмент веб‑аналитики на основе логов сервера.
- GeoIP — локальные базы для сопоставления IP с географией.
Итог и рекомендации
- Для публичных сайтов используйте Let’s Encrypt вместо самоподписанных сертификатов, чтобы убрать предупреждения в браузерах.
- Автоматизируйте обновления AWStats через awstats_updateall.pl и/или logrotate, чтобы поддерживать отчёты актуальными и снижать ручной труд.
- Оцените необходимость обратных DNS‑запросов и GeoIP: локальные базы обычно быстрее и снижают нагрузку.
Вопросы по конкретной конфигурации (версии ОС, пути установки AWStats, требования безопасности) ускорят помощь — приложите выводы команд apachectl -M, netstat и содержимое /etc/httpd/conf.d/ssl.conf при обращении за поддержкой.
Краткая сводка:
- Создайте SSL и привяжите его к Apache.
- Перенаправьте AWStats на HTTPS и настройте UseHTTPSLinkForUrl.
- Автоматизируйте обновления через cron или logrotate.
- Используйте GeoIP и отключайте лишние поиски для повышения производительности.
Похожие материалы

Мониторинг Apache Tomcat: счётчики и правила

Защита от clickjacking: руководство

Разные обои для каждого экрана Android

Удаление данных с сайтов брокеров

Разные обои для каждой домашней страницы Android
