Bad Request

Your browser sent a request that this server could not understand.

Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request.

 

증상

1.apache 2.2 / php 소스 / 가상호스트 설정되어 사용중에 위와같은 에러 발생
2.가상호스트에 설정된 ErrorLog나 CustomLog 에 찍히지 않고 기본 가상호스트(제일 최상단)에 설정된 customlog에 400 get 로그만 찍힘(에러로그에는 안찍힘)

확인해보니 도메인 네임에 "_" 언더바가 들어가면 에러가 나는것 같다. _ > - 로 바꿔서 해보니 잘 나온다.

 

https://ma.ttias.be/apache-httpd-2-2-15-60-underscores-hostnames-now-blocked/

 

Apache httpd 2.2.15-60: underscores in hostnames are now blocked

A minor update to the Apache httpd project on CentOS 6 had an unexpected consequence. The update from 2.

ma.ttias.be

 

내용 정리하자면 아파치 centos 6 버전에서 아파치 2.2.15 이상부터는 rfc1123 기반하여 도메인네임에 _ 언더바(외국어로는 언더스코어(underscore)로 표현하는듯)를 허용하지 않는다고 한다.
https://access.redhat.com/errata/RHSA-2017:1721

 

Red Hat Customer Portal

요약 Moderate: httpd security and bug fix update 유형/심각도 Security Advisory: Moderate 주제 An update for httpd is now available for Red Hat Enterprise Linux 6. Red Hat Product Security has rated this update as having a security impact of Moderate. A Common Vulne

access.redhat.com

처리방법으로는

아파치 2.2.14 버전쓰던가
도메인네임 바꿔야 할듯..

'job > apache' 카테고리의 다른 글

centos5 apache2 geoip 모듈 올리기  (0) 2019.05.22
아파치 특정 디렉토리 아이피 접근제어  (0) 2018.09.03
apache 오래된 버전 이전  (0) 2018.09.03
아파치 모듈 설명  (0) 2018.09.03
apache module forensic log 설정  (0) 2018.08.31

 maxminddb 라는걸로 올릴 수 있는데 그거 하려면 뭐 gcc 랑 c++ 버전 이런게 centos 5버전에는 안맞는 버전들이다.

어쨋든 centos5 버전은 아래와 같이 하면 된다.

 

 

https://dev.maxmind.com/geoip/legacy/mod_geoip2/ 참고

 

GeoIP Legacy Apache Module « MaxMind Developer Site

GeoIP Legacy Apache Module New Apache Module Available: This module is for the GeoIP Legacy format (dat). To read the MaxMind DB format (mmdb) used by GeoIP2, please see mod_maxminddb Description The mod_geoip2 module embeds GeoIP Legacy database lookups i

dev.maxmind.com

 

설치순서는 대략적으로

1.geoip를 서버에 설치하고

2.geoip의 데이터를 넣어주고

3.설치된 geoip를 가지고 아파치용 geoip 모듈을 설치한다.

 

 

1.geoip-api-c-master.zip 다운로드 & 설치 

https://github.com/maxmind/geoip-api-c

geoip-api-c-master.zip
0.18MB

1-1. 파일 다운로드

1-2. 압축풀고 들어가서 ./bootstrap

ㄴ여기서 

~/src/apache_sadong/geoip-api-c-master]# /usr/local/bin/autoreconf -fiv
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/local/bin/autoconf --force
configure.ac:14: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /usr/local/bin/autoconf failed with exit status: 1

위와같이 libtool 관련 에러 발생하면 libtool 이거 받아서 압축풀고 ./configure make make install 해서 설치

libtool-2.4.2.tar.gz
2.51MB

 

1-3./configure --prefix=/usr/local/geoip ;make ;make install

 

2.geoip 컨츄리 파일 받고 넣기
https://dev.maxmind.com/geoip/geoip2/geolite2/

ㄴ용량이 커서 업로드가 안됨, GeoLite2-City-CSV_날짜 파일 받으면됩니다.

2-1.일전에 geoip iptalbles 에 올리는걸로 컨버팅하는 스크립트 했었는데 이번 스크립트는 또 다른거다.

이번 버전은 파이썬 2.7버전에서 실행되는 스크립트다.(2.7 미만의 버전은 해당 스크립트 에러남)

# git clone https://github.com/sherpya/geolite2legacy

# cd geolite2legacy

# curl -O https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip

# ./geolite2legacy.py -i GeoLite2-Country-CSV.zip -f geoname2fips.csv -o GeoIP.dat

ㄴ이거 할 때 ipaddr 모듈 없다하면 pip install ipaddr 명령어로 설치해야한다.

깔끔하게 GEOIP.dat 파일이 생겼다.
geoip.dat 파일은 여기다가 한달에 한번정도 주기적으로 업로드를 해야겠다. 

 

GeoIP.dat
1.88MB

2-2.geoip.dat 파일을 /usr/local/GeoIP/share/GeoIP 여따가 넣어준다.

 

 

3.geoip-api-mod_geoip2-1.2.10.tar.gz 다운로드

geoip-api-mod_geoip2-1.2.10.tar.gz
0.01MB

3-1. 파일 다운로드 받고 압축풀고 해당 디렉토리로 들어가면 mod_geoip.c 가 있다. 해당 경로에서

[root@localhost ~/src/apache_sadong/geoip-api-mod_geoip2-1.2.10]# /home/apache/bin/apxs  -i -a -L /usr/local/GeoIP/lib -I /usr/local/GeoIP/include -l GeoIP -c ./mod_geoip.c 

이렇게 하면 아파치에 geoip 모듈 탑재 완료.

 

3-2. 이제 다 됐으면 특정 국가만 허용예시

GeoIPDBFile 이부분은 geoip db 파일을 뭘로 할꺼냐고 그 뒤에 flag 는 Standard  만 있는게 아니다.
MemoryCache / Standard / CheckCache / IndexCache 요렇게 4개가 있다.
메뉴얼에는 전부 MemoryCache 로 돼 있으니까 나도 MemoryCache  로 

각 플래그에 대한 설명은 https://dev.maxmind.com/geoip/legacy/mod_geoip2/ 참고

 

 

특정 국가에만 접근 허용

          <Directory /home>                  
                Options FollowSymLinks MultiViews
                AllowOverride FileInfo
                Order deny,allow  
                SetEnvIf GEOIP_COUNTRY_CODE KR AllowCountry
                Deny from all
                Allow from env=AllowCountry

</Directory>

 

 

ps.

아파치 어쎄스 로그에 국가코드 남기고 싶으면 로그 포멧을 아래로 하면됨
LogFormat “%V [%h] %u %t %D \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”   GeoIP_Address=\”%{GEOIP_ADDR}e\” Country_Code=\”%{GEOIP_COUNTRY_CODE}e\” Country_Name=\”{GEOIP_COUNTRY_NAME}e\”” vcommon

특정 디렉토리에 특정 아이피만 허용 


<Directory "/디렉토리/디렉토리/특정디렉토리">

    Order deny,allow           ### deny,allow 순서 중요함 여기서는 deny 정책 먼저하고 allow 정책을 나중에

    Deny from all               ###  all 을 deny 하고

    Allow from 1.1.1.1 2.2.2.2    ### 1.1.1.1 2.2.2.2 를 allow 해준다

</Directory>




반대로 특정 디렉토리에 특정 아이피만 제한할려면 


<Directory "/디렉토리/디렉토리/특정디렉토리">

    Order allow,deny           ### allow 정책을 먼저 써준다

    Deny from 1.1.1.1               ###  특정 1.1.1.1 deny 하고

    Allow from all    ### all을 allow 해준다.

</Directory>

cent os 4점대 apm 144 이전하는데


아파치 버전은 1.3


/usr/local/ 통째로 복사해서 이동하면 아파치 에러 남


에러 로그 내용은 Apache.pm failed to load!



펄 모듈 


/usr/lib/perl5/ 동기화하면 해결

 authn_file_module modules/mod_authn_file.so  문자파일을 이용한 사용자 인증

authn_dbm_module modules/mod_authn_dbm.so  DBM 파일을 사용한 사용자 인증 

authn_anon_module modules/mod_authn_anon.so  인증영역에 익명 사용자의 접근을 허용

authn_dbd_module modules/mod_authn_dbd.so  User authentication using an SQL database 

authn_default_module modules/mod_authn_default.so 최후 인증모듈  

authz_host_module modules/mod_authz_host.so  호스트를 사용한 그룹 권한부여  

authz_groupfile_module modules/mod_authz_groupfile.so 일반 문자파일을 이용한 그룹 권한부여  

authz_user_module modules/mod_authz_user.so  사용자 권한부여 

authz_dbm_module modules/mod_authz_dbm.so  DBM 파일을 사용한 그룹 인증  

authz_owner_module modules/mod_authz_owner.so  파일 소유자를 이용한 권한부여 

authz_default_module modules/mod_authz_default.so 최후 권한부여모듈 

auth_basic_module modules/mod_auth_basic.so  기본 인증 모듈 

auth_digest_module modules/mod_auth_digest.so  MD5 Digest Authentication 사용한 사용자인증 

dbd_module modules/mod_dbd.so    Manages SQL database connections  

dumpio_module modules/mod_dumpio.so   Dumps all I/O to error log as desired 

ext_filter_module modules/mod_ext_filter.so  응답 내용을 외부 프로그램으로 처리한 후 클라이언트로 보낸다  

include_module modules/mod_include.so   Server-parsed html documents (Server Side Includes)  

filter_module modules/mod_filter.so   Context-sensitive smart filter configuration module  

deflate_module modules/mod_deflate.so   내용을 클라이언트로 보내기 전에 압축한다  

log_config_module modules/mod_log_config.so  서버로의 요청을 로그에 기록한다  

log_forensic_module modules/mod_log_forensic.so  Forensic Logging of the requests made to the server  

logio_module modules/mod_logio.so   요청당 입출력 바이트수를 기록 

env_module modules/mod_env.so    CGI 스크립트나 SSI 페이지에 전달할 환경변수를 수정한다  

mime_magic_module modules/mod_mime_magic.so  매직 넘버를 이용한 문서 타입 지정 기능 cern_meta_module modules/mod_cern_meta.so   CERN 웹서버 메타파일 지원  

expires_module modules/mod_expires.so   지정한 기준에 따라 Expires와 Cache-Control HTTP 헤더를 생성  

headers_module modules/mod_headers.so   HTTP 요청 헤더와 응답 헤더 수정  

ident_module modules/mod_ident.so   RFC 1413 ident 검색  

usertrack_module modules/mod_usertrack.so  Clickstream logging of user activity on a site  

unique_id_module modules/mod_unique_id.so  각 요청마다 유일한 식별자를 가지는 환경변수를 제공한다  

setenvif_module modules/mod_setenvif.so   요청의 성격에 따라 환경변수 설정을 변경한다  

version_module modules/mod_version.so   버전별 설정  

ssl_module modules/mod_ssl.so    Strong cryptography using the Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols 

mime_module modules/mod_mime.so    Associates the requested filename's extensions with the file's behavior  (handlers and filters) and content (mime-type, language, character set and encoding)  

dav_module modules/mod_dav.so    Distributed Authoring and Versioning (WebDAV) 기능  

status_module modules/mod_status.so   서버 활동과 성능에 대한 정보를 제공한다  

autoindex_module modules/mod_autoindex.so  자동으로 유닉스의 ls 명령어나 Win32의 dir 쉘명령어와 유사한디렉토리 목록을 만든다 

asis_module modules/mod_asis.so    HTTP 헤더를 포함한 파일을 보낸다  

info_module modules/mod_info.so    서버 설정에 대한 종합적인 정보를 보여준다  

cgid_module modules/mod_cgid.so    외부 CGI 데몬을 사용하여 CGI 스크립트를 실행  

dav_fs_module modules/mod_dav_fs.so   mod_dav을 위한 파일시스템 제공자  

vhost_alias_module modules/mod_vhost_alias.so  Provides for dynamically configured mass virtual hosting negotiation_module modules/mod_negotiation.so  Provides for content negotiation  

dir_module modules/mod_dir.so    "마지막 슬래쉬" 리다이렉션을 제공하고 디렉토리 index 파일을 서비스한다  

imagemap_module modules/mod_imagemap.so   서버측 이미지맵(imagemap) 처리  

actions_module modules/mod_actions.so   이 모듈은 미디어종류나 요청메서드에 따라 CGI 스크립트를 실행한다 

speling_module modules/mod_speling.so   사용자가 대소문자를 잘못 사용하거나 맞춤법이 틀리는 것을 한번까지 허용하여 잘못된 URL을 고치려고 시도한다 

userdir_module modules/mod_userdir.so   사용자별 디렉토리  

alias_module modules/mod_alias.so   파일시스템의 다른 부분들을 문서 계층구조에 포함하고, URL 리다이렉션을 제공한다  

rewrite_module modules/mod_rewrite.so   Provides a rule-based rewriting engine to rewrite requested URLs on the fly


펌 : http://geenie.tistory.com/57



mod_access : 클라이언트 호스트명이나 IP주소로 접근을 제어합니다. 이걸 없애면 Order allow,deny 및 Allow from all 과 같은 옵션을 사용할 수 없으며, 따라서 mod_auth 모듈도 사용할 수 없습니다. mod_auth를 사용하지 않는다면 필요없겠죠.


mod_alias: URL을 매칭합니다. 


mod_autoindex: 디렉토리 목록을 출력합니다. (보안상 이유로) 없애고자 한다면, IndexOptions, HeaderName, ReadmeName, DefaultIcon, AddIcon, IndexIgnore 등의 옵션도 주석처리하십시오.


mod_auth: .htaccess 파일을 이용한 사용자 인증


mod_cgi: CGI 실행을 위해 필요합니다. PHP모듈만 사용하고 CGI를 사용하지 않는다면 물론 필요하지 않습니다.


mod_dir: 필수모듈. 기본적인 디렉토리 처리를 합니다. (Directory Inde옵션)


mod_log_config: 필수모듈. 로그파일을 기록합니다.


mod_mime: 필수모듈. 파일확장자에 따라 문서유형을 파악합니다. (AddType, AddHandler 옵션)


mod_vhost_alias: 가상호스트를 설정합니다. 개인PC에는 필요없겠죠.


----------------------------

2. 주로 사용하지 않는 모듈


mod_actions: Action, script 옵션을 사용해 스크립트를 실행합니다. AddHandler로 cgi를 실행하는 것과 관계없습니다.


mod_auth_anon,

mod_auth_dbm,

mod_auth_digest : 인증과 관련한 모듈입니다.


mod_asis: HTTP 헤더가 들어있는 asis 파일을 처리합니다.


mod_cern_meta: HTTP 헤더 메타파일을 처리합니다.


mod_env: CGI에 넘겨주는 환경변수를 변형합니다. (PassEnv, SetEnv 옵션)


mod_expires: Expires 헤더를 적용합니다. (ExpiresDefault, ExpiresByType 옵션)


mod_headers: HTTP 헤더를 사용자정의할 때 씁니다. PHP에서 header() 함수 쓰는 것과 상관없습니다.


mod_ext_filter: 외부 프로그램을 사용할 경우.


mod_imap: 서버 차원의 이미지맵 파일(imap-file) 처리. 


mod_include: SSI 문서(.shtml) 처리를 하려면 필요합니다 


mod_info: 서버 정보 (/server-info 사용할때)


mod_mime_magic: 확장자 대신 유닉스file 명령을 이용해 문서유형을 파악합니다.


mod_negotiation: 어떤 문서를 보여줄지 선택하죠. LanguagePriority, MultiView 등의 옵션과 관련되어있습니다.


mod_rewrite: 정규식을 이용한 URL 매핑. 이걸 필요로 하는 PHP 스크립트도 있습니다.


mod_setenvif: 클라이언트정보에 따라 REMOTE_HOST, USER_AGENT 등의 환경변수를 받아옵니다. 즉 로그를 기록할때나 BrowserMatch 옵션을 사용할 때는 필요합니다. 이게 없어도 php에서 REMOTE_ADDR 등을 사용하는데는 문제 없습니다.


mod_speling: URL의 철자법 오류 수정


mod_status: 서버 상태 표시 (/server-info 사용할때)


mod_userdir: 사용자 홈 디렉토리 설정. UserDir 옵션(/~ID)을 사용하려면 필요합니다.


mod_usertrack: 로그에 사용자 쿠키를 남길 때 사용합니다.


http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=19935

설치방법 : 컴파일 옵션에다가 --enable-log-forensic=shared 추가하면 된다.




httpd.conf 에는 








LoadModule log_forensic_module modules/mod_log_forensic.so 요거 추가해주고


ForensicLog logs/forensic_log 요거 추가해준다




로그포멧은


LogFormat "%{forensic-id}n %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined




뭐랄까 모르겠다 .아직가지 효용성은

'job > apache' 카테고리의 다른 글

apache 오래된 버전 이전  (0) 2018.09.03
아파치 모듈 설명  (0) 2018.09.03
모드 씨큐리티 로그 분석 / mod security mod_security log analysis  (0) 2018.08.31
mod_xsendfile 설치 하기  (0) 2018.08.31
아파치 로그에 PID 쌓기  (0) 2018.08.31

모드 씨큐리티 로그 분석 / mod security mod_security log analysis


색깔 칠한 부분만 보면된다.


###파란색 글씨###

딱 보면 알겠지만 로그가 쌓일때 로그 ID이다. 

a~f / 0~9  8자리 랜덤 조합 그 뒤에 A, B, F, Z 등은 시간,접근방법, 탐지된 정책등의 정보가 담겨있다. 

SecAuditLogParts "ABIFHZ"  모드시큐리티 설정에 있다.

추가로

SecAuditLogRelevantStatus "^(?:5|4\d[^4])"  설정을 통해 404 등의 쓸때없는 페이지는 로그를 안 쌓을 수 있다.


###빨간색 글씨###

중요한 부분이다. 어떤식으로 접근했을때 탐지되었는지 알 수 있다.


###초록색 글씨###

어떤 정책에서 걸렸는지 알 수 있다. 



자세한건 로그 보면서 적겠지만 요약하자면


1.운영중인 홈페이지인 경우 2~4주정도의 탐지기간을 거쳐 로그를 검토하여 차단모드로 변경
ㄴ이유는 정상적인 접근도 차단 될 수 있기 때문이다. 

ㄴ만약 개발중인 사이트라면 처음부터 차단모드로 해놓고 안되는것들은 소스를 수정 & 정책을 주석하면 된다.


2.로그 분석은

먼저 파랑색 부분에서 동일한 로그끼리 보고 
빨간색 부분 체크하여 정상/비정상 유무 판단, (본인이 못하면 관리자, 개발자, 홈페이지 운영자등이 확인 가능)

정상이라면 초록색 부분에서 정책적용되지 않도록 해당 라인을 주석 / 비정상이라면 걸려서 접근 안된거니까 냅두면되고..





--892b4e44-A--   접근 시간 / 아아피등의 정보

[11/Aug/2017:13:44:57 +0900] WY02SX8AAAEAAAucFrcAAAAa 0.0.0.0 49410 0.0.0.0 443

--892b4e44-B-- 접근 URL 

GET /test/test.html?jb_type=G&ipZe%3D6199%20AND%201%3D1%20UNION%20ALL%20SELECT%201%2C2%2C3%2Ctable_name%20FROM%20information_schema.tables%20WHERE%202%3E1--%20..%2F..%2F..%2Fetc%2Fpasswd HTTP/1.1




Host: rsync.net

Connection: keep-alive

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Accept-Encoding: gzip, deflate, br

Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4

Cookie: ACEUCI=1; PHPSESSID=a68fb899645d3c714231582cdd838ede; new_connect=0.0.0.0; ACEFCID=UID-598BEEBEC8E8787061A4F93F; ACEUCI=1; wcs_bt=s_23983

7b585db:1502424521

###Cookie 부분에서 php 세션 아이디 확인 가능### 만약 비정상적인 접근이라면 아이피확인하여 차단시켜도 좋다.


--892b4e44-F--

HTTP/1.1 200 OK    

###이부분 체크해야한다. 404 인지 400인지 혹은 200인지...  404나 403 처럼 파일이 없거나 퍼미션 denied 면 어차피 접근이 안된거라 상관없겠지만 200 이면 접근이 돼기는 했다는 거

X-Powered-By: PHP/5.2.17

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-cache, must-revalidate

Pragma: no-cache

P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: POST, GET, OPTIONS

Access-Control-Allow-Headers: X-Requested-With, X-Prototype-Version

Keep-Alive: timeout=30, max=1000

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/html; charset=utf-8


--892b4e44-H--

Message: Warning. Pattern match "/etc/passwd" at REQUEST_URI. [file "/usr/local/apache/conf/mod_security.conf"] [line "300"]

##어느 정책에 걸렸는지 확인 가능하다. 위 내용은 /etc/passwd 라는 패턴이 URL에 들어가서 mod_security.conf 파일의 300째 라인의 정책에 탐지됐다는 내용

Message: Warning. Pattern match "\.\./" at REQUEST_URI. [file "/usr/local/apache/conf/mod_security.conf"] [line "306"]

##마찬가지로 URL에 ../ 라는 특문이 포함돼있어 306 라인의 정책에 탐지됐다.


Stopwatch: 1502426697568606 27545 (118 559 -)

Producer: ModSecurity for Apache/2.5.12 (http://www.modsecurity.org/).

Server: Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1e-fips DAV/2 PHP/5.2.17


--892b4e44-Z--


위 로그를 정리하자면


http://naver.com/../../../etc/passwd 로 접속했기 때문에 ../ 와 /etc/passwd 두가지 정책에 걸려서 로그가 쌓인거다. 
보통 도메인 홈디렉토리는 /home/계스트명/www 처럼 어느정도 유추가 되기 때문에(실제 절대 경로도 확인 할 수 있음) 위와같이 http://naver.com/../../../etc/passwd 도메인을 접속하게 되면 서버에서는

/home/계스트명/www/../../../etc/passwd 파일을 확인 할 수 있다.





######################

#!/bin/sh


err_num1=`grep "HTTP/1.1 404 Not Found" 2017.log_line | awk '{print $1}'`



for i in $err_num1;

do


err_num=`expr $i - 1`


sed -n  $err_num'p' 2017.log >> err_name1.txt

done


ERR=`cat err_name.txt`


for i in $ERR; do


echo $i


ERR_Z=`echo -ne "--"$i"-Z--"`

ERR_A=`echo -ne "--"$i"-A--"`



echo $ERR_Z 

echo $ERR_A



sed -i "/$ERR_A/,/$ERR_Z/d" 2017.log



done

#########


위 스크립트는 불피요한 로그들 삭제하는거 

404 나 낫 파운드는 어차피 파일이 없는거기 때문에 정상적인 접근일 수 가 없다.




사실 모드시큐리티 로그는 비정상적인 접근을 확인하고 해당 아이피를 차단하는것도 있겠지만

그것보다는 정상적인 접근을 확인해서 서비스중인 홈페이지에 장애가 되지 않도록 설정하는데 더 의미가 있다고 봄

'job > apache' 카테고리의 다른 글

apache 오래된 버전 이전  (0) 2018.09.03
아파치 모듈 설명  (0) 2018.09.03
apache module forensic log 설정  (0) 2018.08.31
mod_xsendfile 설치 하기  (0) 2018.08.31
아파치 로그에 PID 쌓기  (0) 2018.08.31

mod_xsendfile 설치하기


wget https://tn123.org/mod_xsendfile/mod_xsendfile-0.12.tar.gz


다운받고


압축풀고


들어가서 apxs -cia xsendfile파일이름 하면 알아서 다 됨


그리고 아파치 재시작하고 


apachectl -M 해서 잘 올라왔나 확인

LogFormat "%h %l %u %T %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %P" combined


+ Recent posts