기술 가이드

AWStats를 SSL로 실행하기

4 min read 서버관리 업데이트됨 16 Sep 2025
AWStats SSL 설정 및 자동화 가이드
AWStats SSL 설정 및 자동화 가이드

개요

AWStats는 웹 로그 분석 도구입니다. HTTPS로 제공하면 전송 중 데이터를 보호하고 인증서 기반 신뢰를 제공합니다. 이 문서는 자체 서명(자체 발급) 인증서를 만들어 Apache에 연결하는 절차와 AWStats 업데이트 자동화, 성능 최적화 및 보안 권장사항을 설명합니다.

중요: 자체 서명 인증서는 브라우저에서 경고가 발생합니다. 운영 환경에서는 신뢰 가능한 CA에서 발급받은 인증서를 권장합니다.

인증서 생성

OpenSSL이 서버에 설치되어 있어야 합니다. CentOS 또는 RHEL5 등 RPM 계열 서버에서 예시 명령을 사용합니다. 먼저 cert 디렉터리로 이동합니다.

yum install mod_ssl

서버용 RSA 개인 키 생성:

# openssl genrsa -des3 -out server.key 1024

생성 출력 예:

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
Enter pass phrase for server.key:

서버의 RSA 개인 키로 Certificate Signing Request(CSR) 생성:

# openssl req -new -key server.key -out server.csr

프롬프트 예시(필드 일부는 비워도 됨):

You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank. For some fields, there will be a default value,
If you enter '.', the field will be left blank.
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]  
Please enter the following 'extra' attributes  
to be sent with your certificate request  
A challenge password []: If you hit enter here, it will be empty  
An optional company name []:

CSR에 서명하여 인증서 생성(자체 서명):

# 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
Enter pass phrase for server.key:

생성된 파일을 적절한 위치로 복사:

# 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

Apache 설정(httpd.conf, CentOS 예시)에 아래 라인 추가:

SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key

서버가 포트 443에서 수신(listen) 중인지 확인하여 HTTPS가 활성화되었는지 검증합니다. 웹 루트로 이동하십시오.

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

Apache에서 AWStats를 SSL로 구성

웹 페이지 접근 시 http:// 대신 https://를 사용합니다. 자체 서명 인증서의 경우 브라우저에 인증서 수락을 요청하는 창이 나타납니다. 수락 요청이 없으면 설정을 다시 확인하세요.

.htaccess에 AWStats로의 리디렉션을 추가(설치 경로에 맞게 수정):

# redirect awstats to https
RewriteCond %{REQUEST_URI} ^/awstats(.*)
RewriteRule ^/rawe/awstats(.*)$ https://example.com/awstats$1 [R,L]

awstats.site.conf에서 HTTPS 링크를 사용하도록 설정(awstats 버전 4.0+):

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인 경우) 또는 https 루트 경로를 설정하세요.

AWStats 업데이트 자동화(Cron)

수동 업데이트를 피하기 위해 크론 작업을 만듭니다. 트래픽이 많은 사이트는 서버 부하를 줄이기 위해 일간 실행을 권장합니다.

$ crontab -e

VIM이 열리면 insert 모드(i)로 진입하여 다음 라인을 추가합니다. (설치 경로는 환경에 맞게 조정하세요.)

45 9 * */usr/bin/awstats_updateall.pl now -confdir="/etc" -awstatsprog="/var/www/awstats/awstats.pl"

이 크론은 매일 오전 9시 45분에 AWStats를 업데이트합니다. -confdir=”/etc”는 AWStats 설정 파일 위치를 가리킵니다.

crontab 파일 마지막에 빈 줄이 있는지 확인하세요. 저장 후 VIM에서 [Escape]를 누르고 :x 또는 ZZ로 종료합니다.

로그 로테이트를 이용한 설정 예시(간편하고 효과적): /etc/logrotate.d 편집

/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

다수의 설정 파일을 위한 크론

설정 파일이 많은 경우 개별 크론을 여러 개 만드는 대신 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_updateall.pl은 지정된 디렉터리에서 모든 설정 파일을 찾아 awstats.pl을 호출하여 업데이트를 실행합니다. 이때 권한 확인이 필요합니다:

$ chmod 504 awstats/cgi-bin/awstats.pl

이 권한은 사용자와 크론이 awstats.pl을 실행할 수 있게 합니다.

AWStats용 애드온 구성: GeoIP

기본적으로 호스트명 조회는 DNS를 통해 수행되며 Apache가 dns.txt에 정보를 기록하고 AWStats가 이를 사용해 방문자 위치를 해석합니다. 트래픽이 많은 사이트에서는 DNS 조회로 인한 오버헤드가 성능 저하를 유발할 수 있습니다. 이 경우 GeoIP 모듈 같은 애드온을 사용하면 오버헤드를 줄이고 속도를 개선할 수 있습니다.

참고: GeoIP 구현 방법 및 파일 설치 등 자세한 내용은 GeoIP 관련 문서를 참고하세요.

보안 하드닝 권장사항

  • 운영 환경에서는 자체 서명 인증서 대신 공인 CA에서 발급한 인증서 사용을 권장합니다. Let’s Encrypt 같은 무료 CA도 고려하세요.
  • 개인 키 파일(server.key)은 엄격한 권한으로 보호하세요(chmod 600 또는 위 예시와 같은 go-rwx).
  • Apache의 SSL 프로토콜/암호 모음 설정을 검토하여 취약한 암호화 스위트를 비활성화하세요.
  • AWStats와 관련된 CGI/스크립트에 불필요한 쓰기 권한이 없도록 설정하세요.

중요: 크론이나 스크립트에 패스워드가 평문으로 들어가지 않도록 주의하세요.

프라이버시 및 규정 준수 노트

  • AWStats는 서버 로그를 처리합니다. 로그에는 IP, URL, 타임스탬프 등이 포함됩니다. 개인정보보호 규정(GDPR 등)을 따르려면 보관 정책, 익명화(예: IP 마스킹), 접근 통제 및 보존 기간을 문서화하세요.
  • 사용자 동의가 필요한 경우 프라이버시 고지를 업데이트하세요.

검증 체크리스트

  • Apache가 443 포트에서 LISTEN 상태인지 확인
  • [ ] 브라우저에서 https://yourdomain/awstats 로 접속하여 인증서 경고 또는 수락 프롬프트 확인
  • AWStats 리포트의 링크가 HTTPS로 생성되는지 확인(UseHTTPSLinkForUrl 설정)
  • 크론 로그나 /var/log/awstats 로그에서 업데이트 성공 여부 확인
  • 권한이 적절히 설정되어 있는지 확인(server.key, awstats.pl 등)

역할별 체크리스트

  • 운영팀: 인증서 갱신(자동화 포함), 포트/방화벽 설정 확인, 로그 보관 정책 운영
  • 보안팀: SSL 설정 검토(프로토콜/암호화), 키 관리, 취약점 스캔
  • 분석팀: AWStats 설정 검토, 필요한 ExtraSections 및 리포트 커스터마이즈

간단한 운영 절차(SOP)

  1. 인증서 갱신(공인 CA 사용 권장): 갱신 30일 전 알림 설정
  2. staging 환경에서 SSL·AWStats 구성 테스트
  3. 운영 환경에 적용 후 /var/log/httpd 및 AWStats 출력 확인
  4. 크론 성능 로그 모니터링(업데이트 시간·오류 확인)
  5. 문제 시 이전 로그 백업 후 설정 롤백

간단한 롤백 절차

  • 문제 발생 시 Apache 설정에서 추가한 SSLCertificateFile과 SSLCertificateKeyFile 라인을 주석 처리하고 서비스를 재시작하여 이전 상태로 복원합니다. 인증서 관련 파일을 삭제하지 말고 보관하세요.

1줄 용어집

  • SSL/TLS: 전송 계층 암호화 프로토콜
  • CSR: 인증서 서명 요청(Certificate Signing Request)
  • GeoIP: IP 기반 지리 위치 정보 데이터베이스

추가 팁 및 한계

  • 자체 서명 인증서는 내부 테스트용으로만 사용하세요. 외부 사용자 경험과 보안 요구사항을 충족시키지 못합니다.
  • 트래픽이 매우 많은 사이트는 AWStats 대신 빅데이터용 로그 분석(예: ELK 스택)을 고려할 수 있습니다. AWStats는 설치 및 유지가 간단한 반면 대규모 실시간 분석에는 한계가 있습니다.

마무리 요약

AWStats를 HTTPS로 제공하면 전송 보안과 신뢰성을 개선할 수 있습니다. 이 가이드는 자체 서명 인증서 생성, Apache 연동, AWStats 업데이트 자동화 및 GeoIP 도입을 통해 성능과 보안을 균형 있게 관리하는 방법을 제시합니다. 운영 환경에서는 공인 CA 사용, 권한 및 로그 보관 정책, 그리고 정기적인 검증을 권장합니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Apache Tomcat 성능 카운터 및 이벤트 규칙 가이드
모니터링

Apache Tomcat 성능 카운터 및 이벤트 규칙 가이드

클릭재킹 완전 가이드: 보호 방법과 체크리스트
보안

클릭재킹 완전 가이드: 보호 방법과 체크리스트

안드로이드 홈 화면별 배경화면 설정 가이드
Android 가이드

안드로이드 홈 화면별 배경화면 설정 가이드

데이터 브로커에서 내 정보 삭제하는 방법
프라이버시

데이터 브로커에서 내 정보 삭제하는 방법

안드로이드 홈 화면별 배경화면 설정 가이드
안드로이드 커스터마이징

안드로이드 홈 화면별 배경화면 설정 가이드

Apache Tomcat 모니터링 및 관리 가이드
인프라 모니터링

Apache Tomcat 모니터링 및 관리 가이드