레이블이 Network인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Network인 게시물을 표시합니다. 모든 게시물 표시

2017년 1월 20일 금요일

[Network] X-Forwarded-For


< XFF 사용하는 이유 >


XFF 는 HTTP Header 중 하나로 HTTP Server 에 요청한 clinet 의 IP 를 식별하기 위한 사실상의 표준이다.

웹 서버나 WAS 앞에 L4 같은 Load balancers 나 Proxy server, caching server, HTTP 서버용 WAS Connector(웹로직 커넥터 - mod_wl, 톰캣 커넥터 - mod_jk 등) 등이 있을 경우 이런 제품들은 웹서버/WAS 에 HTTP 나 전용 프로토콜(AJP)로 요청을 보낸후에 받은 결과를 가공하여 클라이언트에 재전송하게 된다.

이로 인해 처리한 웹 서버나 WAS에서 request.getRemoteAddr(); 등으로 클라이언트 IP를 얻을 경우 L4 나 Proxy 의 IP 를 얻게 되는데 이는 원하는 결과가 아니다.
X-Forwarded-For는 이 문제를 해결하기 위해 사용하는 http header 로 squid caching server 에서 처음 사용되었다.

다음과 같이 콤마를 구분자로 client 와 proxy IP 가 들어가게 되므로 첫번째 IP 를 가져오면 클라이언트를 식별할 수 있다.

X forwarded for 는 클라이언트에서 들어오는 IP를 로그에 남기도록 설정하시기 위한 작업으로, WebServer에 로그포맷을 적용하려면 L4에서 X forwarded for 헤더정보로 Client IP를 실어서 보낼 수 있도록 설정을 미리 해두어야 한다.

1. X-Forwared-For


X-Forwarded-For 요청 헤더는 HTTP 또는 HTTPS 로드 밸런서를 사용할 때 클라이언트의 IP 주소를 식별하는데 도움이 된다.

로드 밸런서는 클라이언트와 서버 간의 트래픽을 가로 채기 때문에 서버 액세스 로그에는 로드 균형 조정기의 IP 주소만 포함된다.
클라이언트의 IP 주소를 보려면 X-Forwarded-For 요청 헤더를 사용하면된다.

Elastic Load Balancing은 클라이언트의 IP 주소를 X-Forwarded-For 요청 헤더에 저장하고 서버에 헤더를 전달한다.

X-Forwarded-For 요청 헤더는 다음 형식을 취한다.

X-Forwarded-For : clientIPAddress

다음은 IP 주소가 203.0.113.7인 클라이언트에 대한 X-Forwarded-For 요청 헤더의 예이다.

X-Forwarded-For : 203.0.113.7

다음은 IPv6 주소가 2001:DB8: :21f:5bff:febf:ce22:8a2e 인 클라이언트에 대한 X-Forwarded-For 요청 헤더의 예이다.

X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e

요청이 여러 프록시를 거치는 경우 X-Forwarded-For 요청 헤더의 clientIPAddress 다음에는 로르 밸런서에 도달하기 전에 요청이 통과하는 각 연속 프록시의 IP주소가 온다.

따라서, 가장 오른쪽의 IP 주소는 가장 최근의 프록시의 IP주소이고 가장 왼쪽의 IP 주소는 원래 클라이언트의 IP 주소이다. 이 경우 X-Forwarded-For 요청 헤더는 다음 형식을 취한다.

X-Forwarded-For : OriginatingClientIPAddress, proxy1-IPAddress, proxy2-IPAddress

2. X-Forwarded-Proto


X-Forwarded-Proto 요청 헤더는 클라이언트가 로드 밸런서에 연결하는데 사용한 프로토콜(HTTP 또는 HTTPS)을 식별하는데 도움을 준다.

서버 액세스 로그에는 서버와 로드 밸런서 간에 사용되는 프로토콜만 포함된다. 
클라이언트와 로드 밸랜서 간에 사용되는 프로토콜에 대한 정보는없다.
클라이언트와 로드밸런서 간에 사용되는 프로토콜을 결정하려면 X-Forwarded-Proto 요청 헤더를 사용해야한다. 
Elastic Load Balancing은 클라이언트와 로드 밸런서 간에 사용되는 프로토콜을 
X-Forwarded-Proto 요청 헤더에 저장하고 헤더를 서번에 전달한다.

응용 프로그램 또는 웹 사이트는 X-Forwarded-Proto 요청 헤더에 저장된 프로토콜을 사용하여 해당 URL로 리다이렉션되는 응답을 렌더링 할 수 있다.

X-Forwarded-Proto 요청 헤더는 다음 형식을 취한다.

X-Forwarded-Proto : originatingProtool

다음 예는 클라이언트에서 HTTPS 요청으로 시작된 요청에 대한 X-Forwarded-Proto 요청 헤더를 포함한다.

X-Forwarded-Proto : https

3. X-Forwarded-Port


X-Forwarded-Port 요청 헤더는 클라이언트가 로드 밸런서에 연결하는데 사용한 포트를 식별하는데 도움이 된다.

[출처]

http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html
http://blog.naver.com/murmurmm/220290265177

2017년 1월 11일 수요일

[Network] SSL / TLS 차이


TLS(Transport Layer Security)


- 인터넷에서의 정보를 암호화해서 송수신하는 프로토콜
- 넷스케이프에서 개발한 SSL(Secure Sockets Layer) 기반 기술
- 국제 인터넷 표준화 기구에서 인증받은 프로토콜
- 표준에 명시된 명칭은 TLS
- 최신 버전인 TLS 1.0은 SSL 버전 3.0으로부터 발전한 업그레이드를 제공
- IETF에서 SSLv3를 기반으로 표준화
- 아래의 프로토콜 및 암호 요구사항이 변경: 필수
- Diffie-Hellman key agreement
- Digital Signature Standard
- 3DES encryption
- HMAC 사용

SSLv3

1. 넷스케이프에서 개발, 표준 아님
2. 아래의 프로토콜 및 암호 요구사항: 옵션
- Diffie-Hellman key agreement
- Digital Signature Standard
- 3DES encryption

암호화 프로토콜은 보안 연결을 제공하여 두 당사자가 사생활 보호와 데이터 무결성을 가지고 서로 통신할 수 있게 해준다.

TLS 프로토콜은 SSL 프로토콜에서 발전한 것이다.

두 프로토콜의 주요 목표는 기밀성, 데이터무결성, 사용자 인증을 제공하는 것이다.

두 프로토콜이 유사하긴 하지만 SSL 3.0과 TLS의 다양한 버전이 상호 운용되지 않는다는 점은 상당한 차이점이다.

TLS 작동 방법


1. 정의

- 인터넷을 사용한 통신에서 보안까지 다루게 되다보면, 서버와 클라이언트 서로가 신뢰할 수 있는 자임을 확인할 수 있어야 한다.
- 서로간의 통신 내용이 제 3자에 의해 도청되는 것을 방지해야 한다.
- 서로 자신을 신뢰할 수 있음을 알리기 위해 전자서명이 포함된 인증서를 사용한다.

2. 통신과정

- 사용할 프로토콜의 버전에 동의
- 암호화 알고리즘 선택
- 디지털 인증서 교환 및 유효성 검증에 의한 상호 인증
- 공유 비밀 키 생성을 위한 키 분배 문제점을 막아주는 비대칭 암호화 기술 사용
- 그런 다음 SSL 또는 TLS는 메시지의 대칭 암호화에 공유 키를 사용하며, 이는 비대칭 암호화 보다 더 빠름

통신과정

[출처]

http://soul0.tistory.com/214

2017년 1월 9일 월요일

[Network] VPN(Virtual Private Network)

VPN 이란?


가상 사설망(Virtual private network, VPN)은 공중 네트워크를 통해 한 회사나 몇몇 단체가 내용을 바깥 사람에게 드러내지 않고 통신할 목적으로 쓰이는 사설 통신망이다.

내가 다니는 회사에 중요한 서버들이 있다고 하자.
이 서버를 회사내에서는 접속이 가능하고 비교적 보안도 유지시킬 수 있지만 우리가 출장을 가거나 해서 호텔등에서 우리 회사의 서버로 접속하는 경우가 있을 수 있다.
우선 이를 위해서는 회사 서버가 외부에서 연결되도록 열여 주어야 하는 문제가 생긴다(해커들의 공격 대상이 될수 있다).
더욱이 호텔에서 회사 서버로 연결할 경우 호텔의 망관리자나 다른 호텔 넷트웍 사용자가 마음만 먹으면 내가 접속하는 서버와 내가 읽고 보내는 정보를 엿볼 수 있게 된다.
이것을 막기 위해 우리는 ssh같은 방식으로 Shell을 접근하거나 SSL로 웹서버를 접속한다.
그러나 우리가 사용하고자 하는 서비스가 Samba나 회사의 DBMS등이면 단순이 하나의 프로토클을 암호화 하는 것으로 문제는 쉽게 해결되지 않는다. 그리고 설정또한 상당히 복잡해 진다.
우리는 Point-to-Point 암호화, 즉 내 컴퓨터에서 회사 서버로 주고 받는 모든 패킷의 암호화가 필요한 것이고 이를 위해서는 VPN이 필요한 것이다.
다시 강조하자면 VPN은 SSH 터널이나 SSL 터널같이 하나의 포트를 암호화 한다음 포워딩하는 것이 아닌 전체 패킷을 암호화 한다음 서버와 통신하는 것이다.

 [출처]

https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81_%EC%82%AC%EC%84%A4%EB%A7%9D
https://wiki.kldp.org/wiki.php/OpenVPN





2016년 10월 6일 목요일

[Network] CDN (Contents Delivery Network)


CDN (Contents Delivery Network)


게임 클라이언트나 콘텐츠를 효율적으로 전달하기 위해 분산된 서버에 데이터를 저장해 사용자에게 전달하는 시스템이다.

CDN은 보통 인터넷 서비스 제공자(ISP, Internet Service Provider)에 직접 연결해 데이터를 전송하는데, 이렇게되면 한꺼번에 많은 사용자가 몰렸을 때 데이터 전송 속도가 느려지는 등의 콘텐츠 병목 현상을 피할 수 있다는 장점이 있다.

Amazon CloudFront - 콘텐츠 전송 네트워크(CDN)


Amazon CloudFront는 웹 사이트, API, 동영상 콘텐츠 또는 기타 웹 자산의 전송을 가속화하는 글로벌 콘텐츠 전송 네트워크(CDN) 서비스이다. 다른 Amazon Web Services 제품과 통합하여 사용하면 개발자와 기업이 최소 사용 약정 없이도 콘텐츠를 최종 사용자에게 전송하는 속도를 손쉽게 가속화할 수 있다.

[출처]

http://terms.naver.com/entry.nhn?docId=2028674&cid=42914&categoryId=42915
https://aws.amazon.com/ko/cloudfront/

[Network] GSLB (Global server Load Balancig)


GSLB(Global server Load Balancig)


서버의 상태에 상관없이 등록된 IP를 배포하던 전통적인 DNS 서비스를 발전시킨 형태이다. GSLB는 서버의 상태정보를 확인 후 IP 정보를 배포함으로써, 최적의 서버로 연결시키는 기능을 제공한다.  

하나의 도메인 주소에 대해서 여러 개의 IP주소를 넘겨줄 수 있는데, 이 기능을 이용해서 가용성 구성과 로드 밸런싱 기능을 수행할 수 있다. 하지만 가용성과 로드 밸런싱이 본 기능이 아니라서, 이런 목적으로 사용하기에는 한계가 있다.

예를들어 클라이언트가 표준 DNS에 질의를 할 경우, DNS 서버는 로컬 데이터베이스의 IP 목록을 확인해서 그 중 하나를 반환 할 뿐, 네트워크 지연, 성능, 트래픽 유입, 서비스 실패 등은 전혀 고려하지 않는다.

이런 한계에도 불구하고 인터넷 영역에서 로드 밸런싱을 할 수 있다는 장점이 있다. 지역을 뛰어넘는 넓은 영역에서의 로드밸런싱 및 가용성 구성을 위한 좋은 솔류션이되겠다. 물론 이를 위해서는 몇 가지 문제들을 해결해야 하고, 이 문제를 해결한게 GSLB다.

GSLB와 DNS 작동 방식 비교


재해복구
  • DNS는 서버의 상태를 알 수 없다. 따라서, 서비스를 실패하는 유저가 생길 수 있다.
  • GSLB는 서버의 상태를 모니터링 한다. 실패한 서버의 IP는 응답에서 제외 하므로, 유저는 서비스를 계속 이용할 수 있다.
로드밸런싱
  • DNS는 Round Robin 방식을 사용한다. 정교한 로드 밸런싱이 힘들다.
  • GSLB는 서버의 로드를 모니터링 한다. 로드가 적은 서버의 IP를 반환하는 식으로 정교한 로드밸런싱을 할 수 있다.
레이턴시 기반 서비스
  • DNS는 Round Robin 방식을 사용한다. 유저는 네트워크상에서 멀리 떨어진 위치의 서버로 연결할 수도 있다.
  • GSLB는 각 지역별로 서버에 대한 레이턴시(latency) 정보를 가지고 있다. 유저가 접근을 하면, 유저의 지역으로 부터 가까운 서버로 연결을 한다.
위치기반 서비스
  • DNS에서 유저는 Round Robin하게 서버로 연결된다.
  • GSLB는 유저의 지역정보를 기반으로, 해당 지역을 서비스하는 서버로 연결 할 수 있다.

[출처]

http://www.joinc.co.kr/w/man/12/GSLB

2016년 10월 5일 수요일

[Network] DNS(Domain Name System)


DNS 란?


네트워크 상에서 컴퓨터들은 IP주소를 이용하여 서로를 구별하고 통신한다. 사람들이 네트워크를 통해 원격의 컴퓨터에 접속하기 위해서는 IP주소를 이용하여야 하지만, 숫자의 연속인 IP주소를 일일이 외울 수 없기 때문에 쉽게 기억할 수 있는 도메인 주소 체계가 만들어졌다.


도메인 체계


도메인 체계
출처: http://www.krnic.or.kr/jsp/resources/dns/dnsInfo.jsp

도메인의 관리자는 여러 개의 호스트를 생성하는 등 kisa.or.kr 도메인을 관리할 수 있다.

DNS(Domain Name Server)는 할당된 도메인 영역에 대한 정보를 가지고 있는 서버로, 주로 도메인을 IP주소로 변환하는 역할을 한다.

DNS 동작 과정


DNS 동작과정
출처: http://www.netmanias.com/ko/?m=view&id=blog&no=5353

2016년 9월 18일 일요일

[Security Solutions] Deep Security Install


Deep Security


Deep Security는 클라우드 및 데이터센터 환경을 위한 강력한 통합 보안 기능을 제공한다. 보안 패치가 적용되지 않아 취약점이 노출되어도 가상 패치 기능을 통해 패치 작업 및 업무 중단 없이 쉽고 빠르게 기업의 애플리케이션과 데이터를 보호한다. 

  • 가상화 보안
  • 가상 데스크톱 보안
  • 가상 패치
  • 클라우드 보안
  • 컴플라이언스 지원

Deep Security Install

Deep Security는 Linux AMI 64bit 서버에 설치할 것이다.

1. swap 생성

설치하기전 메모리의 2배 만큼 swap을 생성한다.


2. HOSTNAME 변경 및 추가

vi /etc/sysconfig/network
HOSTNAME=TMDS 변경



vi /etc/hosts
127.0.0.1 TMDS 추가


3. Oracle XE 설치

http://www.oracle.com/technetwork/database/express-edition/downloads/index.html

위 페이지에서 Oracle XE를 다운받는다.

# rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
# /etc/init.d/oracle-xe configure


설치 중 위와 같은 에러가 나타날수도 있다. hostname이 적용될 수 있도록 재부팅 후 다시 진행한다.

# /etc/init.d/oracle-xe start
# /etc/init.d/oracle-xe stop

명령을 통해 설치가 잘 되었는지 확인한다.

4. 환경변수 설정

.bash_profile에 /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh 파일을 추가하여 환경변수가 설정될 수 있도록 한다.


5. Tablespace 및 Deep Security 계정 생성


# create user dsmadmin identified by [Password] default tablespace users temporary tablespace temp;
# grant CONNECT, RESOURCE, DBA to dsmadmin;
# alter database datafile '/u01/app/oracle/oradata/XE/users.dbf' autoextend on next 10M maxsize 10G;

6. Deep Security Manager 설치

http://downloadcenter.trendmicro.com/index.php?regs=KOR&clk=latest&clkval=4855&lang_loc=1

위 페이지에서 Deep security Manager를 다운받는다.

# chmod 755 Manager-Linux-9.6.3177.x64.sh 
권한을 부여한다.

권한을 부여한 후 Manager-Linux-9.6.3177.x64.sh을 실행하게 되면 아래와 같이 설치할 수 없다는 문구가 나타난다.


설정 파일을 생성해주어야한다. 

int_dsm.sh 파일로 생성할 것이다.

AddressAndPortsScreen.ManagerAddress= Manager IP주소
LicenseScreen.License.-1=
UpgradeVerificationScreen.Overwrite=True
CredentialsScreen.Administrator.Username=admin
CredentialsScreen.Administrator.Password= 웹 콘솔 패스워드
Dinstall4j.language=en
DatabaseScreen.DatabaseType=Oracle
DatabaseScreen.Hostname=DB IP 주소
DatabaseScreen.DatabaseName=XE
DatabaseScreen.Username=
DatabaseScreen.Password=DB 패스워드

int_dsm.sh도 755 권한으로 설정한다. 

아래와 같은 명령으로 설치를 다시 진행한다.

./Manager-Linux-9.6.3177.x64.sh -q -console -varfile int_dsm.sh


[ERROR] Unable to connect to the database. An unexpected error has occurred. Please try again later. 
If the issue persists, contact your support provider.
IO Error: The Network Adapter could not establish the connection
[ERROR] Database Screen settings rejected...

위 에러를 해결 하기 위해

#cd /u01/app/oracle/product/11.2.0/xe/network/admin

디렉토리 안에 listener.ora와 tnsnames.ora를 수정하였다. 
hostname을 맞춰주었다.

listener.ora 

tnsnames.ora

Deep Security를 설치하고 운영하기 위해서는 사전에 Port를 추가해줘야한다.

4119
4120
636
53
389
443
3268


설치가 완료 된 모습이다.

7. DSRA(릴레이 에이전트 설치)

Agent-amzn1-9.6.2-5027.x86_64.zip 압축을 해제한 후

rpm -ivh Agent-Core-amzn1-9.6.2-5027.x86_64.rpm 설치를 한다.



https://IP 주소:4119 로 접속하면 Deep Security를 이용할 수 있다.



DSM 서버 리부팅 하는 방법

# service dsm_s status
# service dsm_s start
# service dsm_s restart
# service dsm_s stop



8. Deep Security Agent 설치

DSA의 경우 아래 Port를 열어두어야한다.

4122
4118
4123
80
443
514




Agent-Initiated Activation 에서 Allow Agent-Initiated Activation 을 꼭 체크한다.


Deployment Scripts에 들어간다.


Import More Software를 클릭한다.


Agent-amzn1-9.6.2-5027.x86_64 파일을 선택한 후 Next를 누른다.


Platform을 선택한 후, 해당되는 Security, Computer Group, Relay Group을 선택한다.

위의 박스 안의 bash 스크립트를 복사한다.


vi 편집기를 이용하여 install_dsa.sh로 저장한다.


스크립트에 실행 권한을 부여한 후 스크립트를 실행한다.


DSM web console에 접속하여, "Computers" 탭 클릭 후, 등록된 Agent를 확인할 수 있다.

※ 윈도우

윈도우의 경우 Activate the Agent Automatically 선택 후 박스 안의 powershell 코드를 복사하여, 작업자 PC의 임의의 공간에 "install_dsa.ps1" 이름으로 저장한다.

DSA를 설치하고자 하는 Windows 시스템에 위의 스크립트를 복사 후 실행한다.


PowerSehll 창에서 아래 명령어를 실행한다.
 -> powershell.exe -noprofile -executionpolicy bypass C:\install_dsa.ps1


[출처]

http://www.trendmicro.co.kr/kr/enterprise/cloud-solutions/deep-security/index.html#why-you-need-it

2016년 9월 5일 월요일

[Network Management System] The Dude install

NMS(Network Management System)는 네트워크를 관리하기 위한 도구로, 보안관제에서 많이 사용되고 있다. 간단하게 설명하면 NMS는 등록된 모든 시스템에 대해 주기적으로 Ping 이나 SNMP를 체크 하여 상태를 모니터링한다.

The Dude는 무료로 쉽게 설치하고 테스트 할 수 있는 프로그램이다.

The Dude install


아래 링크에 접속한다.

the-dude.en.lo4d.com


다운로드를 클릭한다.


File Mirror #1을 클릭한여 설치파일을 다운 받는다.


I Agree 클릭


Next 클릭


Install 클릭


Close 클릭

설치가 완료되면 언어를 선택하는 화면이 나오며, 아래와 설치된 화면을 확인할 수 있다.



2016년 8월 29일 월요일

[Snorby] Installing Snorby for Snort

Snorby


Snorby는 루비 스크립트로 작성된 웹 응용 프로그램이다. 바이너리 출력 형식으로 이벤트를 기록한다. Snorby는 침입탐지 시스템인 Snort, Suricata, Sagan을 통합한 프로그램이다. 개인 및 기업 모두 사용을 위한 무료, 오픈 소스를 제공하여 네트워크 모니터링 이용에 높은 경쟁력을 만들 수 있다.

Snorby 설치


테스트 환경
CentOS 6.5

Snorby를 설치 하기 전에 Ruby, Rails, ImageMagick, Wkhtmltopdf가 필요하다.
  • Ruby: 동적 객체 지향 스크립트 프로그래밍 언어
  • Rails: 웹 애플리케이션 개발을 위한 프레임워크
  • ImageMagick: 이미지를 새로 만들거나 수정하는데 사용되는 커맨드라인 기반의 오픈소스 소프트웨어
  • Wkhtmltopdf: HTML 문서를 PDF로 변환해주는 프로그램
# yum -y groupinstall "Development Tools"

# yum -y install  openssl-devel readline-devel libxml2-devel libxslt-devel mysql mysql-devel mysql-libs mysql-server urw-fonts libX11-devel libXext-devel qconf fontconfig-devel libXrender-devel unzip

ImageMagick

# cd /tmp
# wget wget ftp://ftp.fifi.org/pub/ImageMagick/ImageMagick-6.9.5-8.tar.gz
# tar -xvf ImageMagick-6.9.5-8.tar.gz
# cd ImageMagick-6.9.5-8
# ./configure
# make
# make install
# ldconfig /usr/local/lib

Wkhtmltopdf

# yum -y install xz urw-fonts libXext openssl-devel libXrender
# wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
# rpm -Uvh wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm


rpm 설치 도중 에러가 발생할 수 있다.

xorg-x11-fonts-Type1, xorg-x11-fonts-75dpi 패키지가 없어서 나타나는 문제이다. 
yum을 이용해서 설치를 하면 해결된다.

# yum -y install xorg-x11-fonts-Type1
# yum -y install xorg-x11-fonts-75dpi 

다시 설치를 한후 테스트를 진행한다.


위와 같은 결과가 나타나면 설치가 성공적으로 이루어진것이다.

Ruby

# yum -y install libxslt-devel libxml2-devel gdbm-devel libffi-devel zlib-devel openssl-devel libyaml-devel readline-devel curl-devel openssl-devel pcre-devel git memcached-devel valgrind-devel mysql-devel ImageMagick-devel


패키지 설치 도중 문제가 발생하였다. yum-plugin-fastestmirror가 필요해서 발생한 문제이다. 

# yum -y install yum-install-fastestmirror 

yum-install-fastestmirror 설치 후 다시 패키지를 설치한다.


# yum downgrade libyaml-0.1.3-4.el6_6

버전을 낮쳐주고, 다시 패키지 설치를 진행한다.

루비 설치를 쉽게 할 수 있도록 도와주는 서비스로 RVM(Ruby Version Manager)이라는 것이 있다. 이 RVM은 루비의 설치 과정을 간소화시켜주는 동시에, 루비의 여러 버전을 동시에 관리하는 것이 가능하도록 도와주는 프로그램이다. 

다음 링크에 접속한다.

https://rvm.io



위 그림과 같이, ‘Install RVM:’ 하단에 있는 명령어를 ‘$’ 다음 부분부터 맨 끝까지 드래그하여 블록 지정 후 복사한 후 터미널에 입력한다.

# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
# \curl -sSL https://get.rvm.io | bash -s stable 


RVM 설치가 완료되었다.

# source /etc/profile.d/rvm.sh

RVM 환경을 적용한다.

# rvm install 2.2.2
# rvm use 2.2.2

버전이 낮으면 설치가 안될수도 있기에 Ruby 2.2.2 버전을 설치하였다.


위와 같이 나오면 제대로 설치된 것이다.

# rvm rubygems current

# gem install rails


위와 같이 나오면 제대로 설치된 것이다.

Snorby

# yum -y install httpd
# service httpd start
# chkconfig --add httpd
# chkconfig httpd on

# gem install bundler

# cd /var/www/html
# mkdir snorby
# cd snorby
# wget -O snorby.zip --no-check-certificate https://github.com/Snorby/snorby/archive/master.zip
# unzip snorby.zip
# mv snorby-master/* /var/www/html/snorby

Create a database for Snorby

# mysql -u root -p
Enter password:
mysql > create database snorby;
mysql > grant all privileges on snorby.* to snorby@localhost identified by 'snorby';
mysql > flush privileges;
mysql > exit

# cp config/database.yml.example config/database.yml
# vi config/database.yml



Gemfile

# vi Gemfile

gem 'rake', '0.9.2' 를 gem 'rake', '> 0.9.2' 으로 변경한다.

gem 'thin'을 추가한다.

gem 'thin'을 주석 처리 한다.

Gemfile.lock

rake (0.9.2)를 rake (0.9.2.2)로 변경한다.

Install Snorby

# cp config/snorby_config.yml.example config/snorby_config.yml

# yum -y install java-1.6.0-openjdk-devel java-1.6.0-openjdk
# yum -y install httpd-devel apr-devel apr-util-devel
# bundle install
# gem update --system
# RAILS_ENV=production bundle exec rake snorby:setup

Test the installation:

# rails server thin -e production

실행 후 브라우저에서 http:// 해당 IP :3000 에 접속하면 아래와 같은 화면이 나타난다.


Change the ownership

# chown -R apache:apache /var/www/html/snorby

Modify the barnyard2.conf

# vi /etc/snort/barnyard2.conf


Modify iptables

# iptables -I INPUT -p tcp --dport 80 -m state --state=NEW,ESTABLISHED,RELATED -j ACCEPT
# /sbin/service iptables save

Snorby Testing

# rails server thin -e production 실행 시





No time_zone specified in snorby_config.yml; detected time_zone: UTC가 나타났다.

# vi /var/www/html/snorby/config/snorby_config.yml 



time_zone: 'Asia/Seoul' 을 추가해준다.


No time_zone specified in snorby_config.yml; detected time_zone: UTC 가 나타나지 않는다.

# rails server thin -e production

# snort -c /etc/snort/snort.conf

# barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort/ -f snort.u2

snorby, snort, barnyard2 를 모두 실행시킨다.


http://해당 IP:3000 으로 들어가면 snorby 접속 화면이 나온다. 아래의 계정 정보를 이용하여 로그인을 한다.

Email: snorby@example.com
Password: snorby 


다른 호스트에서 ping을 보내게 되면 위와 같은 화면을 확인할 수 있다.

Snoby에서 패킷 정보를 수집하는 도중 다른 Snorby 페이지 view로 이동시 아래와 같은 에러를 확인할 수 있다. 


# vi /var/www/html/snorby/log/production.log


로그를 확인해보면 Cannot allocate memory를 할 수 없다는 구문을 확인할 수 있다.

Swap 메모리를 할당하지 않을 경우 위와 같은 에러가 발생할 수 있다.
Swap 할당을 하고 다시 Snorby를 실행하면, 패킷 수집 중에도 다른 페이지로 이동할 수 있다.

[ 출처 ]

https://www.packet6.com/installing-snorby-for-snort/