Linux 설치 동영상
Linux - nginx 설치는 아래 영상을 참고하시기 바랍니다.
Linux 설치 디렉토리 구조
/usr/local/deepfinder
├── bin // 실행 프로그램 경로
│ ├── agent
│ ├── scanfile
│ ├── starter
│ ├── uninstall.sh
│ └── updater
├── certs // ssl 통신시 사용할 pem key 경로
│ └── deepfinder.pem
├── conf // 설정파일 경로
│ ├── config.xml
│ ├── file_md5.xml
│ └── web.xml // WAS전용 스크립트로 설치한 경우 생성
├── lib // 라이브러리 경로
│ ├── libfilter.so
│ ├── mod_deepfinder20.so
│ ├── mod_deepfinder22.so
│ ├── mod_deepfinder24.so
│ └── DfFilter.jar // WAS전용 스크립트로 설치한 경우 생성
├── log // agent, filter log 경로
│ └── … .log
├── nginx // nginx proxy 경로 nginx전용 스크립트로 설치한 경우 생성
│ ├── …
│ └── …
├── policy // 정책파일 경로
│ ├── policy.db
│ └── PREIP
│ ├── 100.xml
│ └── … .xml
└── tmp // 디버그 파일 생성 경로
└── …
DeepFinder Agent 설치 시에는 반드시 웹 서버, WAS가 동작중이어야 정상적으로 설치됩니다.
Apache Agent 설치
1) 설치 파일 다운로드
Repository에서 DeepFinder Agent 설치파일을 다운로드 합니다.
[root@localhost ~]# wget download.deepfinder.co.kr/DeepFinder/1.0/DeepFinder.tar.gz
2) 압축 해제
다운로드 된 설치파일의 압축을 해제합니다.
[root@localhost ~]# tar xvfz DeepFinder.tar.gz
3) 설치 스크립트 확인
압축이 해제된 디렉토리에 진입하여 설치 스크립트를 실행합니다.
[root@localhost ~]# cd DeepFinder
// Apache Install -> setup.sh
[root@localhost DeepFinder]# ./setup.sh
USAGE1 : ./setup.sh SERVER_IP AGENT_ID [ssl] [install_path]
USAGE2 : ./setup.sh SERVER_IP AUTH_KEY [ssl] [install_path]
// Default protocol tcp
// Default Path /usr/local/deepfinder
4) 스크립트 실행
설치에 필요한 정보(Manager Server IP, 회사/도메인그룹 인증정보)를 확인한 뒤 설치를 진행합니다.
[root@localhost DeepFinder]# ./setup.sh 1.1.1.1 611dd4300b91412e89xxxxxxxxxxx
************************************
SERVER IP : 1.1.1.1
AGENT ID : 611dd4300b91412e89xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SYSTEM KERNEL : 4.4
CHECK OS : Linux
CHECK LINUX : Amazon Linux
CHECK SELinux : Disabled
CHECK OS BIT : x86_64 (64 bit)
DeepFinder install path : /usr/local/deepfinder
Starting DeepFinder Agent [ OK ]
- Finished DeepFinder WAF Install
************************************
설치가 정상적으로 완료되면 완료 문구가 출력되며 웹 서비스가 무단절 자동 갱신 됩니다.
5) Filter 설정
설치가 완료된 후 httpd.conf 내 맨 아래 라인에 다음과 같은 필터구문이 삽입되었는지 확인합니다.
만약 삽입되지 않았을 경우 apache 버전에 맞는 모듈정보를 삽입한 후 apache graceful을 진행하여 웹 서버 필터적용을 완료합니다.
#Apache 2.0 LoadModule deepfinder_module /usr/local/deepfinder/lib/mod_deepfinder20.so
#Apache 2.2 LoadModule deepfinder_module /usr/local/deepfinder/lib/mod_deepfinder22.so
#Apache 2.4 LoadModule deepfinder_module /usr/local/deepfinder/lib/mod_deepfinder24.so
ex) DeepFinder 필터구문이 삽입된 httpd.conf파일 예시
[root@ip-172-26-3-39 ~]# tail /etc/httpd/conf/httpd.conf
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
LoadModule deepfinder_module /usr/local/deepfinder/lib/mod_deepfinder24.so
Nginx Agent 설치
1) 설치 파일 다운로드
Repository에서 DeepFinder Agent 설치파일을 다운로드 합니다.
[root@localhost ~]# wget download.deepfinder.co.kr/DeepFinder/1.0/DeepFinder.tar.gz
2) 압축 해제
다운로드 된 설치파일의 압축을 해제합니다.
[root@localhost ~]# tar xvfz DeepFinder.tar.gz
3) 설치 스크립트 확인
압축이 해제된 디렉토리에 진입하여 설치 스크립트를 실행합니다.
[root@localhost ~]# cd DeepFinder
// Nginx Install -> nginx.sh
[root@localhost DeepFinder]# ./nginx.sh
USAGE1 : ./nginx.sh SERVER_IP AGENT_ID [ssl] [install_path]
USAGE2 : ./nginx.sh SERVER_IP AUTH_KEY [ssl] [install_path]
// Default protocol tcp
// Default Path /usr/local/deepfinder
4) 스크립트 실행
의존성 프로그램을 설치한 뒤 Manager 정보(Manager Server IP, 회사/도메인그룹 인증정보)를 입력하여 Agent 설치를 진행합니다.
- Redhat 계열 설치 시
[root@localhost ~]# yum install –y gcc make pcre-devel openssl-devel zlib-devel
- Debian 계열 설치 시(Docker에 적용 시)
[root@localhost ~]# apt-get install gcc make libpcre3-dev libssl-dev zlib1g-dev libmagic1
- AWS Linux 계열 설치 시
[root@localhost ~]# yum install redhat-rpm-config [root@localhost ~]# $DeepFinder/linux_x64/nginx/make_module
- Nginx 설치
[root@localhost DeepFinder]# ./nginx.sh 1.1.1.1 c8b34ff005611dd4300b9141xxxxx ************************************ SERVER IP : 1.1.1.1 AUTH KEY : c8b34ff005611dd4300b91412e89xxxxxxxxxxxxxxxxxxxxxxxxxxxx SYSTEM KERNEL : 2.6 CHECK OS : Linux CHECK LINUX : CentOS Linux CHECK SELinux : Disabled CHECK OS BIT : x86_64 (64 bit) NGINX File Path : /usr/sbin/nginx NGINX Version : 1.13.4 DeepFinder install path : /usr/local/deepfinder Starting DeepFinder Agent [ OK ] Install NGINX Module : Please wait a moment.. Add to nginx.conf & configtest : ok NEXT STEP : Reload nginx /usr/sbin/nginx -s reload - Finished DeepFinder WAF Install ************************************
5) Nginx 모듈 삽입
Nginx의 설정 파일이 리눅스에 등록이 안된 경우 아래와 같은 메시지가 나타나게 됩니다.
이러한 경우 아래의 STEP을 참고하여 nginx.conf 파일에 DeepFinder 필터를 넣어주신 뒤 Reload 하시면 됩니다.
STEP 1: Add to nginx.conf
load_module /usr/local/deepfinder/lib/ngx_http_deepfinder_module.so;
STEP 2: Check nginx configtest
/usr/local/nginx/sbin/nginx -t
STEP 3: Reload nginx
/usr/local/nginx/sbin/nginx -s reload
************************************
[root@localhost DeepFinder]# cd [Nginx DIR]/conf
[root@localhost conf]# vi nginx.conf
1 #user nobody;
2 worker_processes 1;
3
4 #error_log logs/error.log;
5 #error_log logs/error.log notice;
6 #error_log logs/error.log info;
7
8 #pid logs/nginx.pid;
9
10 load_module /usr/local/deepfinder/lib/ngx_http_deepfinder_module.so;
11
12 events {
13 worker_connections 1024;
14 }
15
[root@localhost conf]# /usr/sbin/nginx -s reload
6) Nginx 서비스 갱신
Nginx 서비스를 reload 옵션을 이용하여 갱신합니다.
WAS Agent 설치
1) 설치 파일 다운로드
Repository에서 DeepFinder Agent 설치파일을 다운로드 합니다.
[root@localhost ~]# wget download.deepfinder.co.kr/DeepFinder/1.0/DeepFinder.tar.gz
2) 압축 해제
다운로드 된 설치파일의 압축을 해제합니다.
[root@localhost ~]# tar xvfz DeepFinder.tar.gz
3) 설치 스크립트 확인
압축이 해제된 디렉토리에 진입하여 WAS 타입에 맞는 설치 스크립트를 실행합니다.
WAS 종류 | Tomcat | Jeus | Resin | 기타(Weblogic, JBoss, Websphere 등) |
---|---|---|---|---|
설치 스크립트 | Tomcat.sh | Jeus.sh | Resin.sh | Agent.sh |
[root@localhost ~]# cd DeepFinder
// Tomcat Install -> tomcat.sh
[root@localhost DeepFinder]# ./tomcat.sh
USAGE : ./tomcat.sh SERVER_IP AUTH_KEY [ssl] [install_path]
// Default protocol tcp
// Default Path /usr/local/deepfinder
4) 스크립트 실행
설치에 필요한 정보(Manager Server IP, 회사/도메인그룹 인증정보)를 확인한 뒤 설치를 진행합니다.
[root@localhost DeepFinder]# ./tomcat.sh 1.1.1.1 ecd69098a3a6f2077cf5ffe6cxxxx
************************************
SERVER IP : 1.1.1.1
AUTH KEY : ecd69098a3a6f2077cf5ffe6ceb3f298dd59a4bab6d243f774afe538c518
SYSTEM KERNEL : 2.6
CHECK OS : Linux
CHECK LINUX : CentOS Linux
CHECK SELinux : Disabled
CHECK OS BIT : x86_64 (64 bit)
DeepFinder install path : /usr/local/deepfinder
Starting DeepFinder Agent [ OK ]
## Copy DfFilter.jar & Add WAS Conf file
cp /usr/local/deepfinder/lib/DfFilter.jar [Tomcat_DIR]/lib
vi [Tomcat_DIR]/conf/web.xml
<filter>
<filter-name>DfFilter</filter-name>
<filter-class>com.df.filter.DfFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>DfFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<servlet>
<description></description>
<display-name>DfError</display-name>
<servlet-name>DfError</servlet-name>
<servlet-class>com.df.servlet.DfError</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DfError</servlet-name>
<url-pattern>/DfError</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>DfDeny</display-name>
<servlet-name>DfDeny</servlet-name>
<servlet-class>com.df.servlet.DfDeny</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DfDeny</servlet-name>
<url-pattern>/DfDeny</url-pattern>
</servlet-mapping>
- Finished DeepFinder WAF Install
************************************
5) DfFilter 라이브러리 복사 (Tomcat 버전이 7.0.29 이하일 경우만)
DeepFinder가 설치된 경로의 lib디렉토리(/usr/local/deepfinder/lib)에서 DfFilter.jar를 WAS의 lib경로로 복사합니다.
- Tomcat 7.0.29 이상 버전 - DfFilter.jar 적용 시
Tomcat 7.0.29 이상의 버전은 아래의 5-1 필터 삽입 과정이 없어도 적용 가능합니다.[root@df /]# cp /usr/local/Deepfinder/lib/DfFilter.jar [Tomcat_DIR]/lib
- Jeus 7 이상 버전 - DfFilter.jar 적용 시
Jeus 7 이상의 버전은 아래 5-1 필터 삽입 과정이 없어도 적용 가능합니다.
적용 후 화면이 제대로 출력되지 않는다면 res_type을 조정하시기 바랍니다.[root@df /]# cp /usr/local/Deepfinder/lib/DfFilter.jar [JEUS_DIR]/lib/system
- Resin 4.0.17 이상 버전 - DfFilter.jar 적용 시
Resin 4.0.17 이상의 버전은 아래의 5-1 필터 삽입 과정이 없어도 적용 가능합니다.[root@df /]# [root@df /]# cp /usr/local/Deepfinder/lib/DfFilter.jar [Resin_DIR]/webapp-jars
- WebLogic 12.1.3 이상 버전 - DfFilter.jar 적용 시
WebLogic 12.1.3 이상 버전은 아래의 5-1 필터 삽입 과정이 없어도 적용 가능합니다.[root@df /]# cp /usr/local/Deepfinder/lib/DfFilter.jar Oracle_Home\user_projects \domain\wlserver\lib
- GlassFish 3.1 이상 버전 - DfFilter.jar 적용 시
GlassFish 3.1 이상의 버전은 아래의 5-1 필터 삽입 과정이 없어도 적용 가능합니다.[root@df /]# cp /usr/local/Deepfinder/lib/DfFilter.jar [GlassFish_DIR]/lib
5-1) 필터 삽입
WAS 내 conf 디렉토리에서 아래와 같이 web.xml에 해당하는 파일을 수정합니다.
/usr/local/deepfinder/conf/web.xml 내용을 web.xml 내용 중
web.xml 스크립트는 WAS Filter Script 를 참고하시기 바랍니다.
Tomcat – web.xml 필터 삽입
[root@localhost ~]# cd [Tomcat_DIR]/conf [root@localhost conf]# cp web.xml web.xml.bak [root@localhost conf]# vi web.xml
Jeus – webcommon.xml 필터 삽입
Jeus - WAS 설치 시 여러 개의 Servlet을 사용하는 경우 각각의 servlet 내 webcommon.xml 파일마다 DeepFinder 필터를 삽입해야 합니다. 필터를 삽입한 후에는 Servlet마다 정상적으로 웹 방화벽이 작동하는지 확인해주시기 바랍니다. 적용 후 화면이 제대로 출력되지 않는다면 res_type을 조정하시기 바랍니다.
[root@df ~]# cd [Jeus_DIR]/config/servlet/webcommon.xml [root@df conf]# cp webcommon.xml webcommon.xml.bak [root@df conf]# vi webcommon.xml
Resin – app-default.xml 내 삽입 후 DfFliter.jar 라이브러리 복사
Weblogic, JBoss, WebSphere, GlassFish WAS는 각 프로젝트(war파일)별로 DfFilter.jar를 추가하여야 합니다.
[root@localhost ~]# cd [Tomcat_DIR]/conf [root@localhost conf]# cp web.xml web.xml.bak [root@localhost conf]# vi web.xml
WebSphere 적용 시 Agent의 config.xml에서 wastype="WEBSPHERE"으로 수정하시기 바랍니다.
7) Tomcat 갱신
Tomcat을 재기동합니다.
[root@localhost ~]# %Tomcat PATH%/bin/shutdown.sh
[root@localhost ~]# %Tomcat PATH%/bin/startup.sh
Jeus Agent 설치
1) 설치 파일 다운로드
Repository에서 DeepFinder Agent 설치파일을 다운로드 합니다.
[root@localhost ~]# wget download.deepfinder.co.kr/DeepFinder/1.0/DeepFinder.tar.gz
2) 압축 해제
다운로드 된 설치파일의 압축을 해제합니다.
[root@localhost ~]# tar xvfz DeepFinder.tar.gz
3) 설치 스크립트 확인
압축이 해제된 디렉토리에 진입하여 설치 스크립트를 실행합니다.
[root@localhost ~]# cd DeepFinder
// Jeus Install -> jeus.sh
[root@localhost DeepFinder]# ./jeus.sh
USAGE : ./jeus.sh SERVER_IP AUTH_KEY [ssl] [install_path]
// Default protocol tcp
// Default Path /usr/local/deepfinder
4) 스크립트 실행
설치에 필요한 정보(Manager Server IP, 회사/도메인그룹 인증정보)를 확인한 뒤 설치를 진행합니다.
[root@localhost DeepFinder]# ./jeus.sh 1.1.1.1 ecd69098a3a6f2077cf5ffe6xxxx
************************************
SERVER IP : 1.1.1.1
AUTH KEY : ecd69098a3a6f2077cf5ffe6ceb3f298dd59a4bab6d243f774afe538c518
SYSTEM KERNEL : 2.6
CHECK OS : Linux
CHECK LINUX : CentOS Linux
CHECK SELinux : Disabled
CHECK OS BIT : x86_64 (64 bit)
DeepFinder install path : /usr/local/deepfinder
Starting DeepFinder Agent [ OK ]
## Modify JEUS Conf file
vi $jeus7/webcommon.xml
<filter>
<filter-name>DfFilter</filter-name>
<filter-class>com.df.filter.DfFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DfFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<servlet>
<description></description>
<display-name>DfError</display-name>
<servlet-name>DfError</servlet-name>
<servlet-class>com.df.servlet.DfError</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DfError</servlet-name>
<url-pattern>/DfError</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>DfDeny</display-name>
<servlet-name>DfDeny</servlet-name>
<servlet-class>com.df.servlet.DfDeny</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DfDeny</servlet-name>
<url-pattern>/DfDeny</url-pattern>
</servlet-mapping>
- Finished DeepFinder WAF Install
************************************
5) DfFilter 라이브러리 복사
DeepFinder가 설치된 경로의 lib디렉토리(/usr/local/deepfinder/lib)에서 DfFilter.jar를 Jeus의 lib/system 경로로 복사합니다.
[root@localhost ~]# cd /usr/local/Deepfinder/lib
[root@localhost lib]# cp DfFilter.jar [JEUS_DIR]/lib/system
6) 필터 삽입
Jeus가 설치된 경로의 conf 디렉토리([Jeus_DIR]/config/servlet/webcommon.xml)에서 아래와 같이 webcommon.xml 수정합니다.
※ Jeus WAS의 경우 여러 개의 Servlet을 사용할 수 있기 때문에 각각의 servlet의 webcommon.xml 파일마다 필터를 삽입해야 합니다. 필터를 삽입한 후에는 Servlet마다 정상적으로 웹 방화벽이 작동하는지 확인해주시기 바랍니다.
[root@localhost ~]# cd [Jeus_DIR]/config/servlet/webcommon.xml
[root@localhost conf]# cp webcommon.xml webcommon.xml.bak
[root@localhost conf]# vi webcommon.xml
[Jeus_DIR]/config/servlet/webcommon.xml 의 <web-app> 구문 사이에 Filter 설정 구문을 입력합니다.
web.xml 스크립트는 WAS Filter Script를 참고하시기 바랍니다.
7) Jeus 갱신
Jeus를 재기동합니다.
[root@localhost ~]# %Jeus PATH%/bin/jboot
[root@localhost ~]# %Jeus PATH%/bin/jdown
Linux Agent 확인
Agent 연동 확인
Agent 프로세스 확인
Agent 프로세스가 정상적으로 구동 중인지 PS 명령어를 통해 확인합니다.[root@localhost ~]# ps -ef | grep deepfinder root 14632 1 0 Jun21 ? 00:00:01 /usr/local/deepfinder/bin/starter root 14906 14632 0 Jun27 ? 00:11:15 /usr/local/deepfinder/bin/agent root 17272 23916 0 01:08 pts/3 00:00:00 grep --color=auto deepfinder
Agent Log 확인
Agent Log를 확인하여 오류가 없는지 검토합니다.[root@localhost ~]# cd /usr/local/deepfinder/log [root@localhost log]# cat agent.log 2020-03-27 5:02:29 [AGENT] Init --------------------------- 2020-03-27 5:02:29 Connect Server [15.164.139.121:10012] 2020-03-27 5:02:29 Server Connected OK 2020-03-27 5:02:29 Agent Start 2020-03-27 5:02:29 [AGENT] Unique ID : 0A0177316C60 2020-03-27 5:02:29 Connect Server [15.164.139.121:10013] 2020-03-27 5:02:29 Server Connected OK 2020-03-27 5:02:29 [AGENT] Unique ID : 0A0177316C60 2020-03-27 5:02:29 ===== POLICY INSERT START ===== 2020-03-27 5:02:29 AgentProperty [20] [OK] 2020-03-27 5:02:29 LogTypeSeq [54] [OK] 2020-03-27 5:02:29 PatternGroupSeq [51] [OK] 2020-03-27 5:02:29 PatternSeq [266] [OK] 2020-03-27 5:02:29 CountryInfoSeq [252] [OK] 2020-03-27 5:02:29 DomainPolicySeq [1] [OK] 2020-03-27 5:02:29 DomainPolicy [27] 2020-03-27 5:02:29 > DomainPolicy [27] : DomainSeq [0] 2020-03-27 5:02:29 > DomainPolicy [27] : BasePolicy 2020-03-27 5:02:29 > DomainPolicy [27] : LimitPolicy 2020-03-27 5:02:29 > DomainPolicy [27] : MethodPolicySeq [4] 2020-03-27 5:02:29 > DomainPolicy [27] : RequestUriPolicySeq [7] 2020-03-27 5:02:29 > DomainPolicy [27] : CookiePolicySeq [10] 2020-03-27 5:02:29 > DomainPolicy [27] : HeadNamePolicySeq [4] 2020-03-27 5:02:29 > DomainPolicy [27] : HeadValuePolicySeq [5] 2020-03-27 5:02:29 > DomainPolicy [27] : URLPolicySeq [1] 2020-03-27 5:02:29 > URLPolicy [27:1] 2020-03-27 5:02:29 >> URLPolicy [27:1] : URLBasePolicy 2020-03-27 5:02:29 >> URLPolicy [27:1] : ParamPatternPolicySeq [27] 2020-03-27 5:02:29 >> URLPolicy [27:1] : UploadPolicySeq [13] 2020-03-27 5:02:29 ===== POLICY INSERT END ===== 2020-03-27 5:02:39 Filter Policy Update Status : OK
통신 연결 상태 확인
Manager-Agent간의 통신이 연결되어 있는지 NETSTAT 명령어를 통해 확인합니다.[root@localhost log]# netstat -atunp | grep 100 tcp 0 0 10.0.1.20:34203 52.79.17.21:10014 ESTABLISHED 14906/agent
매니저 연결 확인
매니저 서버에 등록된 에이전트가 정상연결(초록불) 중인지 확인합니다.
모듈 설정 확인
Filter Log 확인
Filter Log를 확인하여 웹서버가 모듈을 정상적으로 로드했는지 확인합니다. 이 때 모듈은 웹서버 기동 시 로드됩니다.[root@localhost ~]# tail -f /usr/local/deepfinder/log/filter.log 2020-04-01 00:02:16 : [4052] Filter Init OK 2020-04-01 06:12:02 : [4988] Filter Init OK 2020-04-02 00:01:56 : [3296] Filter Init OK
Module Setting 확인
웹 서버에 모듈이 설정되어 있는지 확인합니다.[root@localhost ~]# ps -ef | grep httpd apache 29515 31785 0 09:23 ? 00:00:00 /usr/sbin/httpd apache 29516 31785 0 09:23 ? 00:00:00 /usr/sbin/httpd apache 29522 31785 0 09:23 ? 00:00:00 /usr/sbin/httpd [root@localhost ~]# tail -n1 /etc/httpd/conf/httpd.conf LoadModule deepfinder_module /usr/local/deepfinder/lib/mod_deepfinder22.so
Module Load 확인
웹서버 프로세스에 모듈이 로드되어 있는지 LSOF 명령어를 통해 확인합니다.[root@localhost ~]# ps -ef | grep httpd apache 29515 31785 0 09:23 ? 00:00:00 /usr/sbin/httpd apache 29516 31785 0 09:23 ? 00:00:00 /usr/sbin/httpd apache 29522 31785 0 09:23 ? 00:00:00 /usr/sbin/httpd [root@localhost log]# lsof -p 31785 | grep deepfinder httpd 31785 root mem REG 202,1 9429 4056 /deepfinder/lib/mod_deepfinder22.so
매니저 로그 확인
탐지로그를 생성하여 매니저 서버에서 확인합니다.