프로그래머의 삶 Programmer's Life/개념과 상식의 이야기? Concept Vs Common sense?

정보보안기사 서술형 정리

Oliver's World 2014. 7. 3. 17:01
728x90

 

* 암호 공격방식에는 크게 수동적 공격과 능동적 공격이 있다. 
 => 수동적 공격 방식 
  1) 도청 - 전송되는 메시지를 도중에 가로채어 외부로 노출시키는 공격
  2) 트래픽 분석 - 송신자와 수신자의 신원파악을 한다든지 메시지의 특성을 파악하는 공격
 
  => 능동적 공격 방식
  1) 변조 - 메시지들의 순서를 바꾸거나 대체
  2) 삽입 - 불법적인 공격자가 정당한 송신자로 가장하여 수신자에게 메시지를 전송
  3) 삭제 - 특정 수신자에게 전송되는 메시지의 전부 또는 일부를 삭제
  4) 재생 - 이전에 송, 수신자간의 메시지를 도청하여 보관하고 있다가 다시 재생

* 암호 메시지의 대표적인 공격 유형 
 1) 암호문 단독 공격 - 암호문으로부터 평문이나 암호 키를 찾아내는 방법을 말한다. 암호문만 가지고 있을 때 일반적인 암호 공격 통계적 성질과 문장의 특성을 추정하여 해독하며 암호해독자에게는 가장 불리한 공격
 2) 알려진 평문 공격 - 암호문에 대응하는 일부 평문이 가용한 상황에서의 공격을 말한다. 이미 입수한 평문과 암호문 관계를 이용하여 새로운 암호문을 해독하는 방법
 3) 선택 평문 공격 -  평문을 선택하면 대응되는 암호문을 얻을 수 있는 상황에서 공격하는 것을 말한다. 
 4) 선택 암호문 공격 - 암호문을 선택하면 대응되는 평문을 얻을 수 있는 상황에서 공격하는 것을 말한다. 

* 암호화에 사용되는 키와 복호화에 사용되는 키에 따라 암호화키와 복호화키가 동일하면 대칭키 암호시스템이고, 암호화키와 복호화키가 상이하면 공개키(비대칭키) 암호시스템 이다. 

* 대칭키 암호시스템에서 암호화에 적용되는 평문의 길이에 따라서 난수열을 생성하여 입력, 평문 비트열을 한 비트 또는 한 문자 단위로 XOR하여 암호화하면 스트림 암호시스템이고, 평문입력 비트열을 일정한 크기의 블록으로 나누어 암호화하면 블록암호시스템이다.

* 블록암호시스템의 가장 대표적인 2가지 성질
 1) 혼돈(Confusion) - 평문의 작은 변화가 암호문에 어떤 변화를 일으킬 것인지 예측할 수 없는 성질을 말한다. 암호문과 키 사이의 관계를 숨긴다. 비선형 함수
 2) 확산(Diffusion) - 평문을 구성하는 각각의 비트들의 정보가 여러 개의 암호문 비트들에 분산되는 성질을 말한다. 전치와 치환을 통해 암호문과 평문의 관계를 숨긴다. 선형함수

* Feistel 구조 - 블록암호이며 평문 두 개를 블록으로 나누어 배타적 논리합과 스왑을 이용한 라운드를 가진다. 혼돈과 확산 이론을 가지며, 라운드 수는 단일 과정으로는 보안성이 부족하지만 라운드 수를 증가시키면서, 여러 번 수행하면 보안을 강화할 수 있는 것이 핵심이다. 전형적인 라운드 수는 16라운드를 거친다. 

* SPN구조 - 입력을 여러개의 소블록으로 나누어 소블록을 S-box로 입력하여 대치시키고, S-box의 출력을 P-box로 전치하는 과정을 반복하는 블록 암호시스템 구조

* ECB모드(Electric Code Book mode) - 가장 기밀성이 낮은 모드
                                                      - 평문 블록과 암호블록이 일대일의 관계를 유지하게 됨
                                                      - 암호문을 살펴보는 것만으로도 평문 속에 패턴이 반복되어 있다는 사실을 알게됨

* CBC모드(Cipher Block Chaining mode) - 암호문 블록을 체인처럼 연결시키기 때문에 붙여진 이름 
                                                           - 1개의 앞의 암호문 블록과 평문 블록의 내용을 뒤 섞은 다음 암호화 진행
                                                           - 1단계 앞에 수행된 결과로 출력된 암호문에 평문 블록을 XOR하여 암호화 진행
                                                           - 생성된 각각의 암호블록은 현재의 평문 블록뿐만 아니라 그 이전의 평문 블록들의 영향도 받게됨

* 블록암호 운영모드에서 최초의 평문 블록을 암호화할 때 '1단계 앞의 암호문 블록'이 존재하지 않으므로 '1단계 앞의 암호문 블록'을 대신할 비트열 블록을 준비하는 것 - 초기화 벡터 (IV : Initialization Vector )

* 실제 CBC모드를 적용할 경우에 암호화될 평문의 길이는 가변적이기 때문에 마지막 블록이 블록의 길이와 항상 딱 맞아 떨어지지 않게 된다. 부족한 길이만큼을 '0'으로 채우거나 임의의 비트들로 채워넣는것을 '패딩'이라고 한다.

* CFB모드(Cipher-FeedBack mode) - 블록암호 운영모드에서 평문 블록과 암호 알고리즘의 출력을 XOR해서 암호문 블록을 만드는 운영모드

* OFB(Output-FddeBack mode) - 블록암호 운영모드에서 암호 알고리즘의 출력을 암호 알고리즘의 입력으로 피드백하고, 평문 블록은 암호 알고리즘에 의해 직접 암호화되는 것이 아니라 평문 블록과 암호 알고리즘의 출력을 XOR해서 암호문 블록을 만드는 운영모드

* DES(Data Encryption Standard) - 64비트 블록 암호
                                                 - 키의 길이가 56비트이고 8비트가 패리티 체크 비트
                                                 - 16라운드를 반복
                                                 - 복호화는 암호화 과정과 같고, 키의 적용만 거꾸로 한다.

* SEED - 전체적인 구조는 Festel 구조
            - 블록길이만 다를 뿐 DES구조와 동일
            - 1998년 KISA가 초안을 개발하여 1999년 2월에 국내 블록암호 표준안을 제안

* AES(Advanced Encryption Standard) - 2001년 미국 표준 기술 연구소(NIST)에 의해 제정된 암호화 방식이다. 두명의 벨기에 암호학자인 존 대먼과 빈센트 라이먼에 의해 개발된 Rijndeal(레인달) 암호에 기반하여 공모전에서 선정되었다. AES는 미국 정부가 채택한 이후 전세계적으로 널리 사용되고 있으며 1977년 공표된 DES를 대체한 AES는 암호화 복호화 과정에서 동일한 키를 사용하는 대칭키 알고리즘이다.

* 블록 암호 공격의 종류
 1) 차분공격(Differential Cryptanalysis) - 1990년 Biham과 Shamir에 의해 개발된 선택평문공격 기법으로 두개의 평문블록들의 비트의 차이에 대하여 대응되는 암호문 블록들의 비트 차이를 이용하여 사용된 암호키를 찾아내는 방식
 2) 선형공격(LinearCryptanalysis) - 1993년 Matsui에 의해 개발되어 알려진 평문공격으로 알고리즘 내부의 비선형 구조를 적당히 선형화시켜 키를 찾아내는 방법

* RSA 암호시스템은 소인수분해의 어려움에 기반한 공개키 암호를 실현하였다. 여기서 소인수분해란 하나의 정수를 소인수로 분해하는 것을 말하며, 충분히 큰 두개의 소수를 곱하는 것은 쉽지만 이들 결과를 소인수분해 한다는 것은 계산적으로 매우 어렵다는데에서 공개키 암호 알고리즘에 기반을 두고 있다. RSA암호 알고리즘을 개발한 사람은 ? Rivest, Shamir, Adleman

* 타원곡선암호(Elliptic Curve Cryptanalysis) - 타원곡선상의 이산대수 문제를 제안한 암호시스템으로 RSA알고리즘보다 작은 비트수를 가지고 동일한 암호 강도를 지닐수 있다. 스마트 카드나 휴대폰 기기 등 키 길이가 제한적인 무선 환경이나 작은 메모리를 가지고 있는 시스템에 적합하다

* SHA(Secure Hash Algorithm) - 1993년 미국 NIST에서 개발하여 미국표준FIPS PUB 180으로 공포되었고, 160 비트의 해쉬코드를 출력하여, MD4알고리즘에 기반을 둔 해쉬함수

* 키의 사전 공유 - 키 배송문제를 해결하기 위한 가장 간단한 방법은 '안전한 방법으로 키를 사전에 건네주는 것'

* 메시지인증코드(MAC) - 메시지에 붙여지는 작은 데이터 블록을 생성하기 위해 비밀키를 이용하는 방법
                                    - 이 기술을 이용하면 전송되는 메시지의 무결성을 확인하여, 메시지에 대한 인증을 할 수 있음

* 인증기관 - 디지털 인증서를 발급할 수 있는 권한을 가지고 사용자의 요청에 따라 인증서를 발급하는 기관

* X.509 - 가장 널리 사용되고 있는 인증서의 표준 규격 ITU( Intervational Telecommunication Union) 나 ISO(International Organization for Standardization)에서 정하고 있는 인증서 규격
 ==> X.509는 인증서의 작성/교환을 수행할 때의 표준 규격으로서 많은 어플리케이션에서 지원되고 있다. 

* 인증서 폐지 목록(CRL:Certificate Revocation List) - 인증기관이 폐지한 인증서 목록

* 스테가노그래피 - 전달하려는 기밀 정보를 파일에 암호화해 숨기는 심층암호기술. 예를들어 특정 이미지 파일이나 MP3파일에 중요한 정보를 암호화해 전달한다.

* 해시 함수의 조건
 1) 압축(Compression) - 가변의 길이 입력값으로부터 고정의 길이 출력값을 생성
 2) 일방향성(One-Wayness) - 특정 값에서 구한 압축된 출력값이 주어졌을때, 해당 출력값으로부터 입력값을 역계산하는 것은 계산상 불가능해야한다.
 3) 충돌회피(Collision-Free) - h(M1)=h(M2) 인 서로 다른 M1과 M2를 구하기는 계산상 불가능해야 한다.
 4) 효율성(Effcience) - M으로부터 h(M)을 구하는데 많은 자원과 노력이 소요되지 않아야한다.

* 생일역설(Birthday Paradox) - 특정 장소에 23명 이상 모이면 그 장소에 생일이 동일한 사람들이 한쌍이 존재할 확률은 1/2 이상이다. 

* SSL(Secure Socket Layer) - 네스케이프사에서 제안한 인터넷 보안 프로토콜, 초기 전자상거래 보안을 위하여 개발이 되었다. 하지만 웹 뿐만 아니라 응용프로그램에서도 사용이 된다. 이러한 SSL 통신에서 제공하는 기능은 기밀성, 무결성, 인증, 부인방지 이다.

* SSL Strip - SSL 통신을 하고 있는 네트워크상에서 SSL암호화 프로토콜을 사용하지 못하게 평문으로 전송되는 HTTP 프로토콜로 바꾸어 전송하는 공격기법

* 서브넷팅을 하는 장점 - 네트워크 트래픽 감소, 네트워크 성능 최적화, 관리의 간편성, 먼거리까지의 확장 용이성

* IPSec 프로토콜은 3계층 프로토콜이다

* IPSec은 보안서비스를 제공하기 위하여 AH(Authentication Header) 와 ESP(Encapsulation Security Payload) 두가지 프로토콜을 사용한다

* PPTP(Point-to-Point Tunneling Protocol) - MS사가 개발한 방법으로 IP, IPX 똔느 NetBEUL 트래픽을 제안한 레이어2 터널링 프로토콜

* L2TP(Layer 2Tunneling Protocol) - PPTP + L2F의 장점을 수용하여 결합한 프로토콜로 2계층 프로토콜이며 L2 레이어 업계 표준이다.

* 터널모드(Tunnel Mode) - IPSec 프로토콜에서 IP 패킷 전체를 캡슐화하여 보호하는 모드

* 전송모드(Transport Mode) - IPSec 프로토콜에서 IP헤더는 보호하지 않고, 전송계층으로부터 오는 정보만 보호한다. 주로 end-to-end의 보호가 필요할때 사용하는 모드

* enable - 시스코 라우터 로그인시에 user Mode 에서 Privileged mode 로 들어가는 명령어
  disable - Privileged mode 에서 User mode 로 나오는 명령어

* 스타(Star) 토폴로지 - 중앙장치에 너무 의존을 많이 하고, 문제가 생기면 전체 네트워크에 영향을 받으며, 토폴로지를 추가할 수 있지만 성능은 중앙장치에 의존한다.

* no trunk-vlan - 시스코 1900 스위치에서 트렁크 포트로부터 VLAN을 제거하는 명령어

* 분산서비스거부공격(DDOS) - 여러대의 좀비 PC를 이용하여 일제히 동작하게 하여 특정 사이트를 공격하는 방법 중의 하나로 많은 분량의 패킷을 동시에 범람시켜 네트워크 성능저하나 시스템 마비를 가져오는 공격

* Teardrop 공격 - 헤더가 조작된 일련의 IP패킷 조각들을 전송함으로써 공격이 이루어지는 것
- 클라이언트가 패킷을 세그먼테이션시 offset을 어긋나도록 수정하여 대상서버가 받은 세그먼테이션 된 패킷을 재조합하지 못하도록 장애를 발생시키는 공격기법

* Ping of Death - ICMP 패킷을 정상적인 크기보다 크게 만들어 공격하는 방법으로 희생자 PC를 공격하는 기법
=> 이러한 Ping은 MTU에 의해 나누어져 보내지는데 희생자 PC가 그 Ping을 다시 조합할 때 너무 많이 받게 되면 과부하가 걸리게 된다.

* Syn Flood 공격 - TCP 3way handshake 기반을 둔 공격으로 netstat -an 명령으로 보면 'SYN_RCVD' 상태값의 카운트 수가 상당히 많은것을 볼 수 있는 공격

* 스머프(Smurf) 공격 - Ping을 이용한 공격으로 icmp_echo_reply 를 이용한 공격이며, echo_request를 해당 네트워크의 브로드캐스팅 주소로 보내는 경우 네트워크상의 모든 호스트는 그 응답으로 echo_reply를 공격하고자 하는 대상 서버로 보내게 된다. 다수의 echo_reply를 받은 대상 서버는 다운이 된다.

* 무선랜의 유형 - WPAN(Wireless Personal Area Network)무선 개인 근거리 통신망 - 별도의 무선장치가 없는 소규모 네트워크 형태로 개인 사용자간 단거리 네트워크 구성에 많이 이용
- WLAN(wireless local area network) 무선근거리 통신망 - 전파를 이용하여 근거리 통신을 하며, 가까운 거리에 있는 각종 정보처리기기들 간에 정보를 교환하는 방식
- WMAN(Wireless Metropolitan Area Networks) - 도시 규모의 무선광대역 접속 기능을 통하여 사용자 연결 기능을 제공하는 것

* 무선접속방식은 인프라스트럭쳐모드와 애드훅모드로 나누어진다.

* tcpdump - 네트워크 모니터링 및 패킷을 분석한느 유닉스용으로 가장 많이 사용하고 있는 도구 중에 하나
- 패킷을 수집하기 위하여 libpcap 라이브러리를 사용하고 있어야 실행이 가능한 텍스트 기반 패킷 분석기이다.

* 특정 이더넷 eth0인터페이스로 송수신되는 패킷 헤더 덤프를 확인하는 명령어 - # tcpdump -i eht0 -w tcpdump.txt

* 특정 이더넷 eth0에 대하여 5개의 패킷 헤드 개수를 지정하고 캡처하는 명령어 - # tcpdump -i eth0 -c 5
- tcpdump에 대한 다양한 옵션 및 활용에 대해서는 반드시 숙지해 두길 바란다. 유닉스계열에서 자주 사용하는 텍스트 기반 패킷분석기인만큼 과거 SIS시험에서도 자주 출제

* 침해사고 - 해킹, 바이러스, 논리폭탄, 메일폭탄, 서비스 거부 또는 고출력 전자기파 등에 의하여 정보통신망 또는 이와 관련된 정보시스템을 공격하는 행위로 인하여 발생한 사태

* Land Attack - 출발지와 목적지의 IP주소를 동일하게 하여 연결 요청 패킷을 대량 송신하여 수신네트워크의 자원을 고갈시키는 서비스 거부 공격 방법

* Ingress 필터링 - 출발지 IP 주소가 해당 네트워크에서 보낼 수 없는 IP대역인 패킷을 필터링 하는 기법을 말한다. 라우터에서 수행하는 기술이고, 유입되는 패킷이 스푸핑(Spoofing)되었는지를 검사하고 이 패킷을 외부로 전달하지 않고 필터링하는 기술이다.
 
 

* egress 필터링 - 라우터에서 외부로 나가는 패킷의 소스 IP등을 체크해 필터링하는 방법으로 내부에서 소스 IP를 위조해 다른 네트워크를 공격하는 것을 차단하는 방법
-> Survey of Network-Based Defense Mechanisms Countering the Dos and DDoS Problem 논문에서는 요즘 DDoS공격은 위장된 소스 주소를 사용하지 않는다고 한다. 즉, 정상IP주소를 가지는 봇(Bot)을 이용한다는 것. 감염된 많은 호스트를 이용함으로써 침입자는 프로토콜의 취약성을 이용하거나 그들의 위치를 숨기기 위해 스푸핑을 사용할 필요가 없다. 이런 이류로 Ingress와 Egress필터링은 DDoS공격을 멈추는데 효과적이지 않다.

* 스푸핑(Spoofing) - 1995년 케빈 미트닉이라는 해커가 최초로 시도한 해킹 방법으로 프록시 서버를 이용하여 자신의 IP를 가짜 IP로 속여 해킹을 시도한 것

* CIDR(Classless Inter-network Doamin Routing) - 서브넷마스크의 비트정보를 십진수가 아닌 비트의 개수를 적어서 표기하는 방법

* VLSM(Variable Length Subnet Mask) - 어떤 네트워크에서 다양한 길이의 서브넷마스크를 사용하고 라우팅 테이블의 크기가 줄어들고 IP를 효율적으로 사용하는 기법

* 윈도우즈 서비스에서 불필요한 서비스는 GUI환경에서 '사용안함'으로 설정하면 된다. 다른방법으로는 도스창에서 명령어를 이용하여 불필요한 서비스가 제거 가능하다. 명령어는 ? - sc delete [서비스명]

* vsftp 에서 사용자의 상위 폴더 접근을 할 수 없도록 하기 위한 설명
- # vi /etc/vsftpd.config 에서 chroot_local_user=YES 부분을 찾아 주석을 제거. => 사용자는 자기 폴더의 상위 폴더에 접근 불가.
  # usermod -d /home/사용자 => 해당사용자는 /home/폴더 아래에 있는 모든 폴더들을 볼 수 있다. 하지만 /home 상위의 폴더는 접근 불가

* 스팸방지를 위해 /etc/mail/access 의 파일로 reply 허용할 ip 와 도메인 설정을 해야한다.
-> Sendmail 에서 릴레이 허용과 거절을 설정한 후에는 반드시 다음과 같은 명령어로 DB파일을 만들어준다.(access.db) : #makemap hash /etc/mail/access < /etc/mail/access

* access control option
1) OK - 지정된 호스트나 사용자가 보낸 메일은 다른 설정 rule이 거부하는 경우에도 받아들인다.
2) RELAY - 지정된 호스트에 대해 SMTP메일 중계 역활을 한다. 즉, 지정된 도메인에 있는 사용자에게 오는 메일을 받고, 그 도메인에 있는 사용자가 서버를 통해 메일을 보낼 수 있도록 한다. 지정된 도메인에서 오는 메일은 다른 룰이 거부하는 경우에도 받아들인다.
3) REJECT - 지정된 도메인과 관련된 모든 메일(수/발신)을 거부한다.
4) DISCARD - $#discard mailer 를 사용해 메시지를 완전히 폐기한다. 메시지를 받기는 하지만 배달은 하지않고, 발신자에게 폐기사실을 알리지 않기 떄문에, 발신자는 배달되었다고 생각하게 된다.
5) 501 <message> - 지정된 user@host와 발신자의 주소가 전체 혹은 부분적으로 일치할 경우 이메일을 받지 않는다. 뒤의 <message>에는 return mail에 포함될 에러 메시지 구문을 지정할 수 있따.
6) 553 <message> - 발신자의 주소에 호스트명이 없을 경우 메일을 받지 않는다.
7) 550 <message> - 지정된 도메인과 관련된 메일을 받지 않는다.

* XSS취약점이 있는지를 점검하기 위한 방법
1) 웹사이트의 여러 게시판에 일반 사용자들이 글을 게시할 수 있는 기능이 있는지 점검
2) 글쓰기 기능이 전혀 없으면 XSS취약점은 존재하지 않는다.
3) 스크립트 구문 <script> alert ('XSS취약점존재');</script> 을 입력하여 경고창 유무와 구문의 실제 동작으로 취약점 확인 가능

* SQL Injection 공격이 가능한지 점검하기 위한 - Id값에 or 1=1 --- ( 사용자 데이터 입력시 싱글퀀터 입력하여 점검 )

* DNSSEC(DNS Security Extensions) - 국제인터넷표준화기구인 IETF에서 "데이터 위-변조 침해공격"에 취약한 DNS의 문제점을 근본적으로 보완 개선하기위해 1990년대 후반부터 논의를 시작하여 2005년경 완성된 국제표준기술로, 다양한 실험을 거쳐 2010년에는 최상위 DNS인 루트DNS에도 적용되어 전세계적으로 확대되고 있다.

* DNS질의 타입
1) ANY - 도메인에 등록된 모든 현황
2) SOA(Start of Authority) - Resource Record 의 type
3) A(Address) - 인터넷 호스트 주소
4) NS(Name Server) - IP Address에 대한 호스트명
5) PTR(Domain name pointer) - IP Address에 대한 호스트명
6) MX(Mail exchanger) - 메일을 최종적으로 수신할 컴퓨터 호스트 이름

* 대칭키 암호알고리즘 - SEED, ARIA-128/198/256, AES-128/198/256, Blowfish, Camelia-128/198/256, MISTY1, KASUMI 등

* 공개키 암호알고리즘 - RSA, KCDSA(전자서명용), RSAES-OAEP, RSAES-PKCS1 등

* 일방향 암호 알고리즘 - SHA-224/256/384/512, Whirlpool 등

* SEED - 순수 국내기술로 개발한 대칭키 암호 알고리즘으로 128/256 비트키를 지원하며, 128 비트 지원의 경우 1999년 정보통신단체표준(TTA)로 제정되었으며, 2005년에는 국제 표준화 기구인 ISO/IEC와 IETF의 블록암호 알고리즘 표준으로 제정되었다.

* ARIA-128/198/256 => 대칭키 방식의 국가 암호화 알고리즘으로 128 비트 블록 단위로 데이터의 암호화/복호화를 수행하는 블록 암호 알고리즘. 128/198/256 비트 키를 지원하며, 2004년ㅇ에 한국산업규격 KS 표준으로 제정

* SHA-224/256/384/512 => 해쉬함수로서 1993년 미국 표준기술연구소(NIST)에서 해쉬함수의 표준으로 개발한 SHA-1에 보안 취약점의 존재 가능성이 제기됨에 따라 SHA-2라는 명칭으로 해쉬값의 크기가 224/256/384/256비트를 가지는 해쉬함수가 표준화되었다.

* AES-128/192/256 => 미국 표준기술연구소(NIST)에서 연방 정보처리 표준으로 발표한 대칭키 암호 알고리즘으로 128비트의 블록크기를 가지며 키 길이는 128/192/256 비트를 가진다. 키 길이가 가변적으고 라운드 수도 블록크기에 따라 가변적인 알고리즘으로 안전성과 성능의 요구에 따라 유연하게 사용이 가능

* Blowfish => 1993년 개발한 대칭키 암호 알고리즘으로 가변적인 키 길이(32~448비트)를 가지며, 구현이 간단하고 알고리즘의 안전성을 분석하기 쉬우며, 키의 크기가 가변적이므로 안전성과 성능의 요구에 따라 유연하게 사용이 가능하다

* RSA => 1983년 미국 매사추세츠 공과대학교(MIT)에서 개발한 공개 키 암호 알고리즘의 하나로 소인수분해의 어려움을 안전성의 기반으로 두고 있으며, 대칭키 암호 알고리즘과 달리 메시지 암호화 등에 사용 할 수 있도록 상대방에게 공개하는 공개키와 공개키로 암호화된 메시지를 복호화하는데 사용되는 비밀키를 사용한다. 대칭키의 안전한 분배 및 관리문제를 해결하기 위해 널리 이용되며, 메시지 암/복호화, 전자서명 등에 사용된다.

* Hash_DRGB => 해쉬함수를 이용하여 의사난수를 생성하는 난수발생기이다. 난수는 암호학적으로 대칭키 암호 알고리즘의 비밀키, 스트림암호 알고리즘의 초기화벡터, 공개키 암호 알고리즘 RSA의 큰 소수 등을 생성할 때 사용되는 것으로, 난수를 생성하는 과정에 안전성의 결합이 있다면 이는 암호 알고리즘 자체의 안전성에 영향을 미치게 된다. Hash_DRBG는 이러한 난수를 해쉬함수를 이용해 안전하게 생성하는 난수발생기이며, HAS_160, SHA-2 등의 해쉬함수를 사용할 수 있다.

* DB암호화 방식
1) 플러그-인 방식(운영형태 : DB서버) - 구축시 일부 어플리케이션 수정이 필요하며 DB서버 성능에 대한 검토 필요
2) API 방식(운영형태 : DB서버&어플리케이션서버) - 플러그인방식에 비해 DB서버에 영향을 주지 않으나 구축시 어플리케이션의 수정필요
3) Hybrid(운영형태 : DB서버&어플리케이션서버) - 플러그인방식과 API방식이 조합된 방식
4) TDE방식(운영형태 : DB서버) - 일반적으로 어플리케이션 수정이 필요없음. DB등 지원가능 여부에 대한 고려 필요
5) 파일암호화방식(운영형태 : DB서버&어플리케이션서버) - 일반적으로 어플리케이션 수정이 필요 없음. OS, 스토리지등 지원가능 여부 확인 필요

* DB 암/복호화를 위해 사용하는 암호화 키 종류 - 암/복호화 키, 마스터 키
1) 암/복호화 키 - DB내 데이터 암호화 적용과 암호화된 데이터 이용을 위한 복호화를 위해 사용됨
2) 마스터 키 - 암/복호화 키를 암호화하기 위해 사용

* DB 암호화 키 관리
1) 키 생성 - 안전한 키 생성
2) 키 분배 - 키 분배 안전성 확보
3) 키 저장 - 암호화 키 암호화 저장
4) 키 사용 - 키 관리, 권한분리
5) 키 백업,복구 - 키 백업, 복구 정책
6) 키 교체 - 키 교체 정책 수립
7) 키 폐기 - 키 폐기 정책 수립

* mysql AES 암호화 방식 - HEX_AES_ENCRYPT('문자열','암호화 키')
복호화 방식 - AES_DESCRYPT(UNHEX(필드명),'암호화 키')

* 일반사용자에게 Process 권한을 부여하게되면 해당 사용자가 show processlist 실행을 통하여 실행중인 쿼리를 모니터링 할 수 있게 되어 비밀번호 등이 노출 될 수 있다.

* sysadmin(system administrators) 역할 - SQL서버와 설치된 DB에 대해서 완전한 관리 권한을 필요로 하는 사용자를 위해 만들어진 것으로서 이것의 구성원은 SQL서버에서 모든 작업을 수행할 수 있어 이 권한에 인증되지 않은 사용자가 있어서는 안된다.

* 리눅스 시스템에서 /dev 디렉토리 밑에 일반 파일이 있는지를 점검하는 명령어 - # find /dev -type f -exec ls -l {}\;
-> /dev 디렉토리는 주로 디바이스 장치들에 대한 정보가 모여있는곳으로, 외부 침입등으로 몰래 파일을 숨겨놓는 경우가 다소 있으며, 대부분 루트킷 등으로 일괄 설치되는 경우가 많다. 수시로 점검해 보아야 한다.

* 각 계정별로 사용한 명령어 체크 명령어 - # find / -name .bash_history -exec ls -al{}\;
                                        - # find / -name .bash_hisotry -exec cat{}\;
 


* 공유폴더 해제방법
1) Regedit 실행
2) HKEY_LOCAL_MACHINE\SYSTEM\CUrrentControlSet\Service\LanmanServer\Parameters 이동
3) AutoShareServer 를 입력후 데이터값을 0 으로 설정

* 외부에서 내 컴퓨터의 공유폴더 접근을 차단하는 방법
1) regedit
2) HKEY_LOCAL_MACHINE\SYSTEMCurrentControlSet\Control\Lsa 의 restrict anonymous 값을 1로 변경

* 미사용 계정이나 그룹을 제거할때 확인해야 할 파일 - /etc/passwd , /etc/shadow
=> Adm, news, gopher, sync, shutdown, halt, operator, games, ftp, rpc, rpcuser, nfsnobody,  nscd 등이 대표적으로 사용하지 않는 계정들이다. Lp계정은 printer를 사용하지 않는 경우 제거

* 크론(cron)에 등록하여 하루 또는 일주일에 한번씩 시간 동기화 할 수 있는 명령어 - # rdate -s time.bora.net && clock -r && clock -w(외부 타임서버를 기준으로 자동업데이트 할 수 있도록 설정)

* /root/install.log - 시스템에 설치되어 있는 패키지 리스트가 기록되어 있다. 
=> yum 을 이용한 package update 시에도 그 기록이 install.log 에 남는다.

* 소유자와 그룹이 없는 파일을 찾기 위한 명령어
1) # find / -user -o -nogroup
2) # find \( -nouser -o -nogroup \)\ -exec chown root.root {}\;

* 유닉스 시스템에서 원격 접속 허용 파일 생성여부 확인 명령어 - # find / -name .rhosts -exec cat {}\; -print

* 숨김파일이나 비정상 파일 존재 여부를 점검하는 명령어
1) # find / -name ".." -print -xdev
2) # find / -name ".*" -print -xdev | cat -v
3) # find / -name ".*" \-exec ls -alF {}\;

* icmp redirects 를 허용하지 않는 sysctl.conf 파일 수정 방법
- net.ipv4.conf.eth0.accept_redirects=0
   net.ipv4.conf.lo.accept_redirects=0
   net.ipv4.conf.default.accept_redirects=0
   net.ipv4.conf.all.accept_redirects=0

* icmp redirects 를 보내지 않는 sysctl.conf 파일 수정 방법
- net.ipv4.conf.eth0.send_redirects=0
   net.ipv4.conf.lo.send_redirects=0
   net.ipv4.conf.default.send_redirects=0
   net.ipv4.conf.all.send_redirects=0

* 게이트웨이로부터의 redirect를 허용하지 않음으로써 스푸핑을 막기 위한 설정
- net.ipv4.cont.eth0.secure_redirects=0
   net.ipv4.conf.lo.secure_redirects=0
   net.ipv4.conf.default.secure_redirects=0
   net.ipv4.conf.all.secure_redirects=0

* 스푸핑을 막기위해 source route 패킷을 허용하지 않기 위한 설정
- net.ipv4.cont.eth0.accept_source_route=0
   net.ipv4.conf.lo.accept_source_route=0
   net.ipv4.conf.default.accept_source_route=0
   net.ipv4.conf.all.accept_source_route=0

* 자신의 네트워크가 스푸핑 공격지의 소스로 쓰이는것을 차단하기 위한 설정
- net.ipv4.cont.eth0.rp_filter=2
   net.ipv4.conf.lo.rp_filter=2
   net.ipv4.conf.default.rp_filter=2
   net.ipv4.conf.all.rp_filter=2
 
* 스푸핑된 패킷이나 소스라우팅, Redirect 패킷에 대해 로그파일에 정보를 남긴다
- net.ipv4.cont.eth0.log_martians=1
   net.ipv4.conf.lo.log_martians=1
   net.ipv4.conf.default.log_martians=1
   net.ipv4.conf.all.log_martians=1

* net.ipv4.tcp_syncookies=1 의미 - syncookies가 작동할 떄 SYN Flooding 공격이 있으면 message 파일에 공격당하는 내용이 출력된다.

* sysctl.conf 파일을 수정, 변경한 후에 설정 변경한 값을 적용시키는 방법 - # sysctl -p /etc/sysctl.conf

* ipconfig - 시스템에 구성된 전체 IP주소, 서브넷마스크, 기본 게이트웨이를 확인하고 추가적으로 IP라우팅 옵션이 enable 되어 있는지, 새로운 IP주소가 추가되어 있는지, 초기 설정에 변경사항이 있는지를 점검하는 윈도우즈 내부 명령어이다. /all 옵션은 시스템에 설치된 모든 네트워크 인터페이스 정보를 출력한다.

* TCP/IP 의 NetBIOS 이름 테이블 정보를 수집할 수 있는 윈도우즈 내부 명령어 - nbstat -c

* 의심되는 특정 프로세스에 의해 오픈된 파일을 확인할 수 있는 명령어 - lsof

* 서버에서 임시로 syn flooding 방어방법 중 syn cookie
1) syn 패킷이 들어올 경우 응답으로 syn/ack 패킷의 시퀀스번호 필드에 cookie 값을 넣어 클라이언트에 전송한다
2) 클라이언트는 syn/ack의 응답으로 ack 번호필드에 cookie + 1 값을 서버로 송신한다
3) 서버는 수신한 ack패킷의 ack-1 값이 cookie 값과 일치하면 TCP세션을 맺는다.

* 서버에서 임시로 syn flooding 방어방법 중 backlog 큐의 크기를 확장하는 방법이 있다. 평상시의 크기보다 더 크게 확장하여 공격이 들어와도 충분히 감당할 수 있도록 넉넉히 크기를 늘려줄 수 있다. backlog 큐가 가득차는 경우에 서버는 더이상 서비스를 못하게 된다.

* 백도어 - 크래커가 시스템에 침입한 후 자신이 원할 때 침입한 시스템을 재침입하거나 권한을 쉽게 획득하기 위하여 만들어 놓은 일종의 비밀 통로를 말한다. 초기에는 주로 시스템에 문제가 생겼을 경우 쉽게 시스템에 접속하기 위하여 시스템 관리자나 프로그래머등의 관리자가 의도적으로 만들어 놓은 비밀통로였는데, 이후 크래커들에 의해 악의적인 목적으로 사용되고 있다.

* Trojan Horse - 호감이 가는 유용한 프로그램으로 가장하고, 실제적으로는 악의적인 프로그램이나 코드를 포함하고 있는 프로그램을 말한다. 이는 정상적인 동작을 하는 것으로 보이거나 사용자가 쓰는 프로그램 등으로 사용자를 현혹시킴으로써 특권을 획득한다.

* IPC$ - 윈도우즈에서는 관리목적으로 폴더를 공유한다. 원격 컴퓨터에 유저명과 패스워드를 널(Null)로 하여 접속하게 할 수 있도록 해서 취약점을 노출시키는 기본공유폴더 형태

* FTP 서비스는 클라이언트에서 서버로의 명령과 서버 응답을 위한 연결을 제어연결의 21번 포트를 사용, 파일이 전송될 때 데이터 연결을 위해 20번 포트를 사용

* FTP 명령어 - MDTM = 파일 수정시간 보기
                    - STOR = 원격지에 파일 전송
                    - RETR = 원격지 파일 가져오기
                    - QUIT = 연결종료
           
* Bounce 공격 - FTP프로토콜 구조의 허점을 이용한 공격방법, TCP Port에 연결을 시도하기 위해 원격 FTP서버를 활용하여 어떤 TCP포트가 원격지 호스트에 활성화 상태인지 판단한다.
              - FTP서버는 클라이언트가 지시한 곳으로 자료를 전송할 때 그 목적지가  '어떤 곳'인지는 검사하지 않는다. 그래서 FTP 클라이언트가 실행되는 호스트가 아닌 다른 호스트를 지정하더라도 서버는 충실하게 지정된 곳으로 정보를 보내게 된다.  이문제는 FTP서버의 버그가 아니라 원래 FTP 프로토콜의 설계 상에서 발생한 문제이다. 처음부터 고의로 자료를 요청하는 곳과 자료를 받는 곳이 다른곳 일수 있도록 FTP를 설계한 것이다. 결과적으로 클라이언트는 FTP서버를 거쳐 간접적으로 임의의 IP에  있는 임의의 포트에 접근할 수 있으며 또한 임의의 메시지를 보낼 수도 있게 되는 것이다. 

* FTP 액티브모드 - 두번째 포트 알려줌 -> 수신확인 -> 두번째 포트를연다 -> 수신확인
  FTP 패시브모드 - 두번째 포트 질의 -> 두번째 포트 알려줌 -> 명령채널 -> 수신확인

* etc/ftpusers - FTP 파일에 적용된 사용자에게 FTP접근을 제한하는 파일

* SMTP(Simple Mail Transfer Protocol) - 전자우편을 보내고 받는데 기본적으로 사용되는 TCP/IP 프로토콜

* MTA(Mail Transfer Agent) - 인터넷상의 하나의 메일 전송 에이전트로 컴퓨터에서 다른 컴퓨터로 전자메일을 전송하는 서버용 프로그램

* MUA(Mail User Agent) - 사용자가 전자우편을 송수신할 때 사용하는 클라이언트 프로그램

* MDA(Mail Delivery Agent) - 도착한 메일을 사용자에게 보내기 위한 프로토콜

* sendmail.cf에서 SMTP 데몬 옵션을 모두 허용해 줄 수 있다. 이는 sendmail.cf의 256라인에 있는 Addr=127.0.0.1을 0.0.0.0 형태로 수정해주면 모두 허용한다는 의미

* 액티브 콘텐츠 공격 - 메일열람시 HTML기능이 있는 E-mail 클라이언트나 웹 브라우저를 사용하는 이용자를 대상으로 하는 공격기법. 주로 자바스크립트나 비주얼베이직스크립트 등과 같은 HTML또는 E-mail클라이언트 스크립팅 기능을 이용하여 피해자의 컴퓨터에서 정보를 유출하거나 악성 프로그램을 실행시킨다.

* 스팸어세신(Spam Assassin) - 펄(Perl)로 개발이 되었으나 룰(Rule) 기반으로 메일의 헤더와 내용분석을 실시간으로 차단리스트(RBL)를 참고하여 각각의 룰에 매칭이 될 경우 총점수가 기준 점수를 초과하는지 여부를 통해 스팸메일 여부를 결정한다.

* PEM(Privacy Enhanced Mail) - IETF에 의해 만들어진 인터넷 표준안이며, 전송하기 전 자동으로 암호화되기 떄문에 전송 도중 유출이 되더라도 내용 확인이 불가능하다. PGP에 비해 보안은 뛰어나지만 중앙집중식 키 인증방식으로 널리 사용되기에는 단점이 있다.

* 아파치 에러 로그 Emerg -> Alert -> Crit -> Error -> Warn -> Notice -> Info -> Debug
  - 에러로그는 아파치 웹 설정에서 가능하다. 기본값은 Warn이다. Warn으로 지정되면 그 이상 에러는 전부 로그 파일에 기록이 됨

* 운영체제 명령실행 - 적절한 검증 절차를 거치지 않은 사용자 입력값이 운영체제 명령어 일부 또는 전부로 구성되어 실행되는 경우 의도하지 않은 시스템 명령어가 실행되는 취약점

  보안대책 1) 웹 인터페이스를 통해 서버 내부로 시스템 명령어를 전달시키지 않도록 웹 어플리케이션 구성
           2) 외부 입력에 따라 명령어를 생성하거나 선택이 필요한 경우, 명령어 생성에 필요한 값들을 미리 지정해 놓고 외부 입력에 따라 선택하여 이용

* 크로스 사이트 스크립트(XSS) - 외부 입력이 동적 웹페이지 생성에 사용될 경우, 전송된 동적 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되는 취약점

  보안대책 1) 사용자가 입력한 문자열에서 <, >, &, "," 등을 replace 등의 문자 변환함수(혹은 메소드)를 사용하여 &lt, &gt, &amp, &quot로 치환
           2) 게시판 등에서 HTML 태그 허용시 HTML 태그의 리스트(White List) 를 선정한 후 해당 태그만 허용하는 방식 적용

* OWASP 2013 TOP 10 - A1 인젝션
                    - A2 인증 및 세션관리 취약점
                    - A3 크로스사이트 스크립팅
                    - A4 취약한 직접객체 참조
                    - A5 보안설정 오류
                    - A6 민감데이터 노출
                    - A7 기능 수준의 접근 통제누락
                    - A8 크로스 사이트 요청변조(CSRF)
                    - A9 알려진 취약점이 있는 콤퍼넌트 사용
                    - A10 검증되지 않은 리다이렉트 및 포워드
                  
* WebKnight - AQTRONIX사에서 개발한 IIS 웹서버용 공개 웹방화벽으로 SQL Injection 공격 등 IIS 웹 서버의 주요 공격을 차단할 수 있는 웹 방화벽
            - IIS 웹 서버의 ISAPI(Internet Server Application Programming Interface) 형태로 설치
            - 룰 기반으로 다양한 웹 공격을 막을 수 있고, Log Only 및 차단모드 선택이 가능
            - White List 필터링 방식 지원으로 허용할 URL/폴더에 대해 키워드 등록할 수 있어 간단한 포지티브 정책 세울수 있다.
          
* ISAPI 필터 - IIS(웹서버)에 등록되어 있다가 특정 이벤트 발생시 호출. 즉 Client의 요청이 왔을때 이벤트 발생시키도록 하면, Client의 요청을 가공(커스터마이징)할수 있게된다. Client와 IIS사이에서 Request를 가로챈다고 생각하면된다. ISAPI 필터는 항상 서버프로세스에서 실행된다.

* Mod_Security - Ivan Ristic이 개발한 Apache 웹서버용 공개웹 방화벽으로 PHP Injection 공격 등 Apache 웹서버의 주요 공격의 차단이 가능한 웹 방화벽

* ESMTP(Extended SMTP) - 차세대 SMTP로서 '배달확인기능','메시지 크기 제한기능','전송중 끊어진 편지에 대한 재 전송기능'등이 추가된 메일 프로토콜

* MIME(Multipurpose Internet Mail Exchange) - 영어 외 문자나 멀티미디어 데이터들을 전자우편으로 보내기 위한 기술

* 메일 인코딩(Mail Encoding) - 메일에서 8비트를 7비트 영문 ASCII코드로 표현하는 방법
  메일 디코딩(Mail Decoding) - 7비트 영문 ASCII코드를 8비트로 바꾸는 방법

* 이메일 프로토콜에는 Format 프로토콜과 Transport 프로토콜이 있다.
- Format 프로토콜 - RFC822, MIME, PGP, PEM
- Transport 프로토콜 - SMTP, ESMTP, POP3, IMAP

* 풋프린팅(Footprinting) - 공격자가 중요한 네트워크 리소스의 DNS 도메인이름, 컴퓨터 이름, IP주소를 알아내기 위해 DNS 영역데이터를 가져오는 프로세스. 일반적으로 공격자는 DNS 데이터를 사용하여 네트워크를 다이어그램으로 나타내는 공격

* DNS Cache poisoning - 취약한 DNS서버에 조작된 쿼리를 전송하여 DNS서버가 저장하고 있는 주소 Cache 정보를 임의로 변조하는 공격

* DNS Cache - DNS서버에 대한 반복적인 DNS쿼리를 수행하지 않도록 쿼리에 대한 응답을 저장하여 네트워크 트래픽과  DNS운영에 대한 성능을 향상시키기 위해 제공되는 서비스

* 추론 - 기밀이 아닌 데이터로부터 기밀 정보를 얻어내는 가능성

* 데이터베이스 보안통제 - 흐름통제, 추론동제, 접근통제 의 대표적인 보안통제 가 있다.

* 전자상거래의 구성요소 4가지 - 고객, 상점, 은행, 인증기관

* SET(Secure Electronic Transaction) - VISA와 MASTER카드사에 의해 개발된 신용카드 기반의 전자지불프로토콜

* SET프로토콜에서 판매자가 요청한 고객의 지불정보(카드번호)로 금융기관에 승인 및 결재를 요청하는것 - 지불중계기관(Payment Gateway)

* SET 프로토콜 제공하는 보안기능 - 부인방지, 인증, 무결성, 기밀성

* 이중서명 - SET에서는 고객의 결제정보가 판매자를 통하여 해당 지급정보중계기관으로 전송됨에 따라 고객의 결제정보가 노출될 우려감이 있고, 판매자에 의해 위/변조 가능성이 있다. 따라서 판매자에게 고객의 결제정보를 노출시키지 않으며, 판매자가 해당 고객과 구매내용의 정당성을 확인할 수 있도록 하는 한편, 지급정보중계기관은 판매자가 전송한 결제 요청이 실제 고객이 의뢰한 것인지 확인할 수 있도록 하는 기술

* 전자화폐 분류 중에서 대표적인 IC카드형 전자화폐 - 몬덱스(Mondex, 영국의 몬덱스 회사에서 실용화된 전자화폐 서비스를 최초로 실시하여 생긴카드. 이 카드에는 IC칩이 내장되어 있어서 카드 소유자의 예금에 대한 정보가 들어있다. 카드 사용자들이 물건을 구입한 후에 몬덱스 카드를 상점에 제시하면 온라인기계에 넣고 대금결제를 하고 자동으로 금액이 계좌에서 빠져나가게된다. 이러한 몬덱스 지갑이라고 불리는 전자지갑에 두 사람의 카드를 넣고 조작하면 하나의 카드에서 다른 카드로 금액이 이동된다. 이 모든것은 전화선을 이용해서 몬덱스 본사에 있는 컴퓨터와 접속되어 이루어진다. 몬덱스 카드를 스면 가맹점을 이용할 경우 현금이 전혀 필요없고 또 자신의 거래내역을 컴퓨터가 정리해 주기 떄문에 지출상황점검이 편리하다. 반면에 카드를 분실하게 되면, 현금과 동일한 것이므로 많은 손실을 입을 수 있다.)

* LKR 방식 - 전자입찰 방식 중에서 S/MIME 와 같이 안전한 전송로를 구축함으로써 제3자의 도청 및 변조를 방지하고 입찰 내용에 해쉬를 취하여 입찰자의 서명을 붙임으로써 무결성 및 부인방지를 가능하게 하는 방식

* PSEV(Poll Site E-Voting) - 전자투표방식중에 지정된 투표소에서 전자투표를 하는 방식으로 유권자가 투표소 화면 인터페이스를 이용하여 수행하고, 전자투표 기기를 선거인단이 관리하므로 대부분의 안전성이 높고 국민투표에 활용 가능성이 높은 방식

* 키오스크(Kiosk) 방식 - 전자투표방식 중에서 군중이 밀집한 지역에 키오스크 투표기기가 설치되어 유권자가 이를 이용하여 투표할 수 있는 무인시스템

* ID Federation 인증방식 - SSO인증방식 가운데 서비스 제공자별로 인증정보 관리 서버가 존재하며 기존 사용중인 사용자 정보를 그대로 이용하기 위해 사용한다. 따라서 통합인증정보관리서버에는 통합인증정보는 존재하지 않는다. 다만 로그인 여부를 중앙관리 하기 위해 로그인 여부를 알 수 있는 인증 정보 맵을 가지고 있는 방식이다.

* Assertion 방식 - SSO인증방식 가운데 기존 서비스 제공자에 사용중인 인증정보와 통합인증정보를 같이 사용할 경우에 적합한 방식. 로그인 페이지가 서비스 제공자에 있어 서비스 제공자에서 로그인 처리 후 중앙인증서버로 강제 로그인 처리를 한다. 인증정보가 공존하므로 인증정보 동기화 작업도 필요

* DRM구성요소 - 콘텐츠(Contents), 사용자(User), 권한(Permission)

* 책임추적성 - 멀티태스킹이 지원되는 네트워크환경에서 누가, 언제, 어떤행동을 하였는지 기록하여 필요시 그 행위자를 추적 가능하게 하여 책임소재를 명확하게 할 수 있는 보안요구사항

* 메시지인증코드(MAC:Message Authentication Code) - 메시지와 비밀키를 입력하여 인증값으로 사용될 고정된 길이의 값


* 전자서명의 특징
  1) 위조불가 - 서명자 이외의 타인이 서명을 위조하기 어려워야 한다.
  2) 서명자인증 - 누구의 서명인지를 확인할 수 있어야한다.
  3) 부인불가 - 서명자는 서명 사실을 부인할 수 없어야한다.
  4) 변경불가 - 한번 서명한 문서는 내용을 변조할 수 없어야한다.
  5) 재사용불가 - 다른 문서의 서명을 위조하거나 기존의 서명을 재이용할수 없어야한다.

* 공개키 기반구조의 구성요소
  1) 공개키 인증서(Public Key Certificate)
  2) 인증기관(Certificate Authority)
  3) 저장소, 디렉토리(Repository)
  4) 사용자(User)
  5) 등록기관(Registration Authority)

* 인증기관(Certificate Authority) - 인증서발급
                                  - 인증서 상태관리, 인증서 문제시 해당 인증서 철회를 위한 CRL발급
                                  - 유효한 인증서와 CRL의 리스트 발행
                                  - 발행한 인증서와 CRL의 모든 리스트 저장

* 인증서 폐지 여부를 확인할 수 있는 목록 - CRL(Certification Revocation List)

* 인증서 폐지 여부를 온라인으로 실시간 확인할 수 있는 서비스 - OCSP(Online Certificate State Protocol)

* 국내 인증 CA기관 - 금융결제원, 한국전자인증, 코스콤, 한국정보인증, 무역정보통신

* PKI(Public Key Infrastructure) - 공개키를 이용하여 송수신 데이터를 암호화하고, 인터넷 사용자가 보유한 암호를 이용하여 거래자 신원을 확인하는 방식의 사용자 인증 시스템

* vsftpd.conf파일에서 최소한 설정되어야하는 옵션
  => Anonymous_enable = NO # Anonymous 접근 거부
     chroot_local_user = YES # 로그인 후 자신의 계정의 파일만 열람가능

* 디렉토리 리스팅 취약점에 대한 조취방법
  => <Directory "/usr/local/www">
     Options Indexes <<< 제거
     </Directory>
  => 웹 서버에는 현재 브라우징하는 디렉토리의 모든 파일을 사용자에게 보여줄수 있는 디렉토리 인덱스 기능이 존재하는데 이런 설정이 활성화되어 있는 경우 공격자가 웹어플리케이션의 구조를 파악할 수 있는 기회를 제공하게되는 취약점이 있다.

* CSRF(스크립트 요청 참조) 취약점 - 공격자가 사용자의 쿠키값이나 세션정보를 의도한 사이트로 보내거나 특정한 동작을 유발하는 스크립트를 글에 삽입하여 사용자가 게시물등을 클릭할 경우 공격자가 원하는 동작이 실행되게 하는 취약점

* 파일업로드 취약점에 대한 조치
  => <Directory "/usr/local/apache">
       AllowOverride FileInfo( 또는 All)
       </Directory>

* 웹 어플리케이션에서 상대경로를 사용할 수 있도록 설정되어 있는경우, 상대경로 표시 문자열인 "../" 를 통해 허가되지 않은 상위경로로 이동하여 시스템 주요 파일/소스코드등 중요자료의 열람이 가능한 취약점
  => 조치방안 : PHP를 사용하는경우 php.ini에서 magic_quotes_gpc를 on 으로 설정하여 ".\./"와 같은 역 슬래시 문자에 대응할 수 있도록 설정

* 메일서버등록제(SPF:Sender Policy Framework) - 대다수의 스팸 발송자는 본인의 신원을 감추기 위하여 송신자 주소 정보 등을 허위로 만들어서 발송하게 된다. 이것에 착안하여 메일서버 정보를 사전에 DNS에 공개 등록함으로써 수신자로 하여금 이메일에 표시된 발송자 정보가 실제 메일서버의 정보와 일치하는지를확인할 수 있도록 하는 인증기술

* ftp모드는 크게 액티브와 패시브모드가 있다. 패시브모드에서 사용하고자 포트번호를 서버에서 클라이언트쪽으로 서버IP정보와 포트번호를 1.1.1.1, 4, 131로 보냈다. 포트번호는? 4 x 256 + 131 = 1024 + 131 = 1155
  => 포트번호 - 1155

* 현재 접속하고 있는 사용자에 대한 정보를 모두 체크하기 위한 로그 파일명 - /var/run/utmp ( 확인방법 : strings utmp | more )

* 접속했던 사용자에 대한 정보를 모두 체크하는 로그 파일명 - /var/log/wtmp

* 가장 최근에 로그인한 사용자에 대한 정보를 체크하기 위한 로그 파일명 - /var/log/lastlog ( 파일보는 명령어 : last ) (*로그파일명과 파일보는 명령어와 차이가 없음)

* su명령어를 사용하여 모든 사용자를 체크하는 명령어 - # cat /var/log/messages | grep root

* 보안 사용자 인증에 대한 로그 파일 - # cat /var/log/secure
  -> 보통 로그파일을 살펴보면 secure.log, secure1.log, secure2.log, secure3.log 라는 파일이 있다고 가정할때 숫자가 낮을수록 가장 최근의 로그파일을 나타낸다. 따라서 'secure.log'파일에는 가장 근래에 일어난 이벤트에 대한 기록이 남아있다.

* 파일을 열거나 접근한 시간 : Access time - atime ( 파일을 오픈하면 atime이 갱신된다. grep, sort, cat 등등 명령을 주거나 open()함수로 열었을때 갱신 )
  파일정보가 변경된 시간(속성이나 퍼미션이 변경) : Change time - ctime ( 파일이나 inode값이 바뀐시점이다. 다시말해 속성값이 바뀐시점이다. 퍼미션이나 소유주, 파일크기 등 파일속성값이 변경되었을 때 ctime은 갱신된다.
  파일의 내용이 변경된 시간 : Modify time - mtime ( 파일의 수정시간이다. 이는 속성이 아닌 파일의 내용이 바뀌었을때 이 값이 바뀐다. 주의할 것은 파일 내용이 바뀌면 파일의 크기가 달라진다. 이때 파일의 크기가 속성이므로 ctime도 갱신된다. 만약 파일 내용을 수정했는데 파일 크기가 바뀌지 않았을 수 있다. 이때는 ctime이 바뀌지 않았을까? 파일이 수정되면 mtime이 바뀐다. mtime은 파일의 속성이다. 때문에 ctime이 바뀐다.

* 소유자가 없는 파일과 디렉토리를 체크하는 명령어 - # find / -nouser -o -nogroup -print

* 리눅스 시스템에서 ping을 이용한 DoS 공격을 방어하기 위한 옵션과 파일은 ?
  차단하기 - echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
  해제하기 - cho 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

* 시스템 전체에서 한달 또는 그 이상의 기간 동안 한번도 액세스 하지 않은 디렉토리 찾기 - # find / atime +30 -type d
  => -atime +n/-n/n : 최근 n일 이전에 액세스된 파일을 찾아줌(accessed time)
                      +n은 n일 또는 그보다 더 오래전의 파일
                      -n은 오늘부터 n일 전까지의 파일
                      n은 정확히 n일 전에 액세스되었음을 의미

* 현재 디렉토리 아래에서 최근 일주일 동안 수정된 파일 찾기 - # find . -ctime -7
  => -ctime +n/-n/n : ctime은 파일의 퍼미션을 마지막으로 변경시킨 날짜를 의미(changed time)
                      +n은 n일 또는 그보다 더 오래전의 파일
                      -n은 오늘부터 n일 전까지의 파일
                      n은 정확히 n일 전에 액세스되었음을 의미                

* 수정한지 15일 이상이 된 파일 찾기 - # find . -mtime +15 -type f -ls
  => -mtime +n/-n/n : mtime은 파일 내의 data를 마지막으로 수정한 날짜를 의미(modified time)
                      +n은 n일 또는 그보다 더 오래전의 파일
                      -n은 오늘부터 n일 전까지의 파일
                      n은 정확히 n일 전에 액세스되었음을 의미                
                     
* 리눅스 시스템에서 vsftp 사용할 경우 기본적인 로그파일 위치 - /var/log/vsftpd.log

* xferlog를 남기기 위한 vsftpd.conf 파일설정
session_support=YES // wtmp에 로그 남기기, 이 설정을 하여야만 last 명령어로 접속 여부 확인 가능

* sendmail 로그 파일 위치 - /var/log/maillog ( etc/syslog.conf 에서 위치 변경 가능하다  )

* 받은 메일과 보내는 메일을 일시적으로 queue 디렉토리에 보관하였다가 다른 메일 서버나 계정으로 메일을 보내는 역할을 한다.그 위치와 설정은 QueueDirectory=/var/spool/mqueue 이다.

* IIS 6.0 웹 로그 파일
Ex) 192.168.114.201, -, 03/20/01, 7:55:20, W3SVC2, SERVER, 172.21.13.45, 4502, 3223, 200, 0, GET, /DeptLogo.gif, -,
1) 192.168.114.201 => 클라이언트IP
2) - => 유져명( - 는 익명사용자 )
3) 03/20/01 => 로그파일 생성된 날자
4) 7:55:20 => 로그파일 시록된 시간
5) W3SVC2 => 서비스, 인스턴스(로그파일 기록폴더)
6) SERVER => 서버 이름
7) 172.21.13.45 => 서버 IP
8) 4502 => 밀리세컨드 단위 시간 소요
9) 3223 => 서버 전송량 ( 서버 -> 클라이언트 )
10) 200 => 서비스 상태값 코드 ( http 프로토콜 성공시 상태값 )
11) 0 => 윈도우 상태값 코드 ( 윈도우 성공시 상태값 )
12) GET => 요청타입 ( http 프로토콜 타입 )
13) /DeptLogo.gif => DeptLogo.gif 파일 다운로드
14) - => 파라미터 ( - 는 파라미터 없음 )

* mysql 로그파일 관리
1) 에러관리 - 서버 실행시 에러를 기록하는 로그파일
2) 일반적 로그 관리 - mysql에 접근하는 사용자와 그에 관련된 파일에 대한 관리
  => /usr/local/mysql/bin/safe_mysqld --log &
3) 업데이트 로그관리 - 디비 테이블이 변경될 때마다 기록이 된다.
  => /usr/local/mysql/bin/safe_mysqld --log-update &

* 윈도우 시스템은 각 서비스나 기능에 따라 각종 로그파일을 생성한다. 이러한 로그파일은 유닉스 시스템의 syslog나 messages파일에 해당한다. 이벤트뷰어콘솔로 볼수 있는 로그 파일 위치는 %SystemRoot%\System32\config\*.evt 에 있다.

* 윈도우즈 이벤트 로그
1) 응용 프로그램 로그 - 프로그램이 기록한 이벤트, 응용프로그램로그에 기록되는 이벤트는 소프트웨어 프로그램 개발자가 결정한다
2) 보안로그 - 유효하거나 유효하지 않은 로그온 시도와 같은 보안관련 이벤트, 또한 리소스 사용과 관련된 이벤트(파일 열거나 삭제 경우)도 포함, 보안로그 설정, 사용 및 보안로그에 기록할 이벤트를 지정하려면 관리자 또는 Administrator그룹의 구성원으로 로그온 해야 한다.
3) 디렉토리 서비스 로그 - 액티브 디렉토리 관련 이벤트다. 이 로그는 도메인 컨트롤러에서만 사용가능. 즉 AD가 구성되어 있을 경우에만 기록된다.
4) DNS서버 로그 - 인터넷 프로토콜(IP) 주소에 대한 DNS이름 확인과 관련된 이벤트다. 이 로그는 DNS서버가 구성된 경우에만 사용할 수 있다.
5) 파일복제서비스 로그 - 도메인 컨트롤러 간의 복제 프로세스 동안 기록된 이벤트. 이 로그는 디렉토리 서비스 로그와 마찬가지로 도메인 컨트롤로에서만 사용가능

* IAS(Internet Authentification Service)는 원격인증 전화접속 사용자 서비스(RADIUS) 프로토콜을 사용하여 원격 Access인증을 위한 집중식 관리인증 및 계정을 제공하는 서비스이다. 이 로그에는 기본적으로 계정요청, 인증요청 및 주기적인 상태요청에 대한 내용이 기록된다. 이 로그 파일은 IAS형식이 아닌 DB호환파일 형식으로 저장할 수 있는데, 이때에는 IN으로 시작하는 로그 파일이 생성된다. IAS로그파일의 위치는 또한 IAS서비스의 구성에서 변경이 가능하다.
  위의 IAS로그파일의 저장위치는? %SystemRoot%\System32\LogFiles\iaslog.log 또는 IN년월일.log 또는 IN년월주.log

* 콘솔의 로깅 레벨을 변경하기 위해 사용하는 명령어 - logging console [레벨번호]
  => router# conf t
     router(config)# logging console 7
  라우터의 모든 로그 메시지를 보기 원한다면 레벨 7(Debugging) 으로 설정한다.

* 라우터 로깅 severity 레벨
- 0 ( Emergencies ) - System is unusable
   1 ( Alerts ) - Immediate action is needed
   2 ( Critical ) - A critical condition has occured
   3 ( Errors ) - An error condition has occured
   4 ( Warning ) - A warning message
   5 ( Notifications ) - Normal bug significant events
   6 ( Informational ) - Information message
   7 ( Debugging ) - Debugging message

* (주니퍼 네트웤스)JUNOS 버젼 확인 명령어 - show system software

* 주니퍼 라우터의 기본적인 설적이 완료된 후 set insecure 명령어를 사용하여 "rrot" ID를 사용한 콘솔 포트로의 접속을 제한하는 것이 권장된다.

* 주니퍼 라우터의 기본적인 Firewall Filter의 action
1) accept - 패킷을 받아들여 전송
2) discard - 패킷을 전송하지 않고 버린다.
3) log - 패킷 정보를 포컬 하드디스크 로그파일에 기록한다.
4) syslog - 패킷정보를 syslog서버에 전송

* 주니퍼 라우터 인터페이스에 필터링 적용 방법
=> 루프백 인터페이스에 UN-SAFE라는 이름의 Firewall Filter 를 인터페이스의 입력 방향으로 적용하는 명령어 - boanin# set 0 family inet filter input UN-SAFE


* 방화벽 분석 도구
1) Firelogd - 리눅스 방화벽 로그를 모니터링 하는 데몬
2) Fwanalog - 유닉스와 리눅스에서 방화벽 로그를 파싱하고 요약하는 쉘 스크립트
3) XP Firewall Reporter - 윈도우즈 xp에 내장된 개인용 방화벽에서 생성된 파일을 분석하는 상업용 소프트웨어
4) ZoneLog Analyzer - 존알람 방화벽 로그를 데이터 베이스 형태로 변환
5) Web Trends - 체크포인트, 시스코, MS ISA Server


* 침입탐지시스템(IDS)의 탐지 데이터 중심 분석으로 네트워크 트래픽, 패킷, 페이로드를 포함하고 있다. 상대적으로 로그연관분석보다 하위 수준의 분석을 경보연관분석 이라 한다.


* 아카이브 비트(Archive bit)- 파일이 마지막 저장 이후에 변경되었는지 여부를 백업프로그램을 통해 알려주는 컴퓨터 파일에 연결된 정보의 작은 조각이다. 즉, 백업여부를 판별하기 위한 일종의 표시이다.

* 일반(Normal) 백업 - 선택한 파일과 폴더를 모두 백업한다. 백업이 완료된 후 Archive bit를 해제한다. 선택한 파일을 백업한 후 백업이 완료된 모든 파일의 Archive bit 를 해제하게 된다.

* 증분(incremental)백업 - 선택한 파일과 폴더 중 Archive bit가 있는 파일과 폴더만 백업한다. 백업 후 완료 된 파일과 폴더의 Archive bit를 해제한다. 이전에 했던 백업에서 변경된 파일만을 백업할 때 이용된다. 즉, 일반백업을 통하여 한번 백업 작업을 했다면 이미 백업을 한 파일들은 Archive bit가 해제되고 일반 백업 이후로 새로 생성되거나 변경된 파일들은 Archive bit가 존재하게된다. 이렇게 하여 Archive bit가 존재하는 파일만 백업을 하게 되면 일반 백업 이후로 새롭게 생성되거나 변경된 파일들만 백업이 이루어지게 되는것이다.

* 복사본(copy) 백업 - 선택한 파일 모두 백업한다. 백업이 완료된 후 Archive bit를 해제 하지 않는다. 일반 백업과 다른 점은 파일을 백업하지만 백업이 완료된 후에도 Archive bit를 해제하지 않는다는 것이다. 이것은 스케줄링된 백업 일정에 영향을 미치지 않고 특정 파일을 백업하는데 유용하다.

* 차등(Differential) 백업 - 선택한 파일 중 Archive bit가 있는 파일만 백업한다. 백업 후 백업이 완료된 파일의 Archive bit를 해제하지 않는다. 증분백업과 비슷하지만 다른점이라면 새로 생성되거나 변경된 파일들의 Archive bit를 해제하지 않는다는 점이다.


* 침해사고 대응 7단계
1) 사전준비 - 사고가 발생하기 전 침해사고 대응팀과 조직적인 대응준비
2) 사고탐지 - 정보보호 및 네트워크에 의한 장비 이상 징후 탐지, 관리자에 의한 침해 사고식별
3) 초기대응 - 초기 조사수행, 사고 정황에 대한 기본적인 기록, 사고대응팀 신고 및 소집, 침해사고 관련 부서에 통지
4) 대응전략 체계화 - 최적의 전략을 결정하고 관리자 승인을 획득, 초기 조사 결과를 참고하여 소송이 필요한 것인지 결정하여 사고조사 과정에 수사기관 공조 여부 판단
5) 사고조사 - 데이터 수집 및 분석을 통하여 수행, 언제 누가, 어떻게 사고가 났는지 분석, 사고 재발 방지를 위하여 어떻게 할 것인지를 결정
6) 보고서 작성 - 의사 결정자가 쉽게 이해할 수 있도록 사고에 대한 정확한 보고서 작성
7) 해결 - 차기 유사한 공격을 식별 방어하기 위하여 보안정책 수립 및 절차변경, 사건의 기록, 기술 수정 계획수립 등을 결정

* 로그관리 단계
1) 로그수집 - 로그수집 대상장비에서 발생되는 로그가 콜렉터에 정상적으로 수집되어 보관되는 과정
2) 로그검색 - 저장된 로그를 검색하는 과정으로 실시간 검색과 조건 검색으로 나뉜다.
3) 로그분석 - 수집된 로그를 수치나 그래프로 통계를 내어 인가된 사용자가 이해하기 쉽게 제공하여 분석된 로그를 xml, html,excel, 워드 파일형태의 보고서 생성이 가능
4) 로그이벤트 - 로그수집 대상 장비에서 나오는 로그를 수집/가공처리하여 수치나 그래프를 이용해 상황판으로 제공하는 대쉬보드와 특정 검색패턴을 이용한 이벤트 대쉬보드 상황판을 제공한다.

* 라우터의 기본적인 콘솔 패스워드 설정방법
- router# conf t
   router(config)# line console 0 // 콘솔접근
   router(config)# login
   router(config)# password boanin  // 패스워드 boanin
 
* 라우터의 기본적인 aux, vty 포트 패스워드 설정방법
- router# conf t
   router(config)# line aux 0 // AUX 접근
   router(config)# login
   router(config)# password boanin  // 패스워드 boanin
 
* 시스코 라우터의 경우 레벨1에서 15까지 권한 레벨을 제공한다. 레벨1은 읽기 권한만 제공하는 Exec 모드이고, 레벨 15는 읽기/쓰기 권한을 모두 제공하는 프리빌리지 모드이다.
  enable 패스워드 설정 방법 - Enable password [패스워드] 명령어는 기본적으로 패스워드를 암호화하지 않는다. Enable password [패스워드] 명령을 실행 한 뒤 service password-encryption 명령을 실행하면 패스워드를 암호화하지만 이 방법은 암호화 방법이 비교적 취약하여 보안 유지에 어려움이 있다.

* Enable secret [패스워드] - MD5알고리즘을 이용하여 암호화된 패스워드를 설정하기 때문에 보다 안전한 라우터 관리가 가능하다. Enable password 명령어를 사용하여 패스워드를 설정하더라도 Enable secret [패스워드]  명령어를 사용하여 다시 패스워드를 설정하면 enable password 명령어를 통하여 설정된 패스워드는 자동으로 그 효력이 없어짐을 주의해야함.

* 시스코 라우터에서 악의적인 공격자들은 ICMP Redirect를 전송하여 네트워크를 지나는 패킷의 방향을 바꿀 수 있다. 따라서 이 서비스는 차단하는것이 권장.
  라우터의 인터페이스로 들어오는 ICMP Redirects 패킷을 막기위한 명령어 - no ip redirects ( 각 인터페이스별로 적용해야함 )

* 시스코 라우터에서 또 다른 ICMP 위협요소는 directed broadcasrt 이다. ICMP echo reply는 특정 호스트에게만 reply를 보내는 것이 아니라 해당 네트워크 전체에 echo reply 를 전송한다.
  directed broadcast 를 막기 위한 명령어 - no ip directed-broadcast ( 라우터의 인터페이스에 적용 해야함 )

* 시스코 라우터에서 소스(Source) 라우팅은 패킷이 네트워크의 어떤 경로를 거쳐서 전달되는가를 보여준다. 따라서 소스 라우팅을 사용할 특별한 이유가 없다면 이 서비스는 차단할 것을 권장한다.
  차단 명령어 - no ip source-route

* 시스코 라우터는 http프로토콜을 사용하여 원격에서 여러가지 기능 설정이 가능하다. 원래 HTTP서버는 텔넷을 사용하여 라우터를 제어할 때의 보안 취약점에 대비하여 만들어졌지만, http와 텔넷 모두 연결 과정에서 비밀번호를 노출 할 수 있는 가능성이 있기에 http서버의 사용은 권장되지 않고 있다.
  http서버 사용 차단 명령어 - no ip http server

* 시스코 라우터에서 CDP는 LAN구간에서 직접 연결된 시스코 장비들 사이에서 서로의 정보를 얻기 위해 사용 되는 프로토콜이다. CDP는 라우터에 연결되어 있는 장비들의 종류와 설정을 보여주기에 전체 네트워크 구성을 파악할 때 많이 사용한다. 그러나 이는 공격자에게도 유용한 정보를 제공하기에 사용에 쥬의하여야 한다.
  1) CDP를 라우터 전체에서 사용하지 못하도록 하기 위한 명령어 - no cdp  run
  2) 특정 인터페이스에서 사용하지 못하도록 하는 명령어 - no cdp enable


* 무선랜 주요 표준
-----------------------------------------------------------------
무선랜 표준 | 표준제정시기 | 주파수대역 | 최대속도 | 서비스범위 |
-----------------------------------------------------------------
   802.11    |  1997년          | 2.4GHz        | 2Mbps     |  20~100M
-----------------------------------------------------------------
   802.11a   |  1999년          | 5GHz          | 54Mbps   |  35~120M
-----------------------------------------------------------------
   802.11b   |  1999년          | 2.4GHz       | 11Mbps   |  38~140M
-----------------------------------------------------------------
   802.11g   |  2003년          | 2.4GHz       | 54Mbps   |  38~140M
-----------------------------------------------------------------

* WEP(Wired Equivalent privacy) - 1997년 IEEE에서 정의한 보안 표준으로 인증과 암호화를 포함한 보안 프로토콜
                                - 64비트의 키 길이를 가지는 고정키 방식의 인증 및 암호화

* WEP 을 이용한 인증은 단방향 인증이고 고정된 공유키값을 사용하기 때문에 인증시 여러가지 문제점이 있었다. 이러한 WEP 인증의 문제점을 보완하고자 802.1x표준안에서는 동적WEP을 제공하였다. 하지만 공격자가 사용자의 패킷을 수집하여 WEP키를 크랙하는 공격자체를 막지는 못하고 있다.
  위의 인증상의 문제점을 해결하고자 802.1x표준에서 제공하는것 - EAP인증기능

* 802.11h - 가장 최신 규격으로 2.4Ghz와 5GHz 주파수 대역을 모두 지원하며 최대 600Mbps의 전송속도를 지원하며 70~250m의 접속반경을 제공한다.

* 시스코 라우터에서 포트 보안 설정을 확인하는 명령어 - Switch# show portsecurity address

* WPA-PSK 인증 및 암호화 - 128비트 암호화방식을 취한 WPA 방식은 보다 확장된 데이터 암호화(TKIP - Temporal Key Integrity Protocol)를 사용자 인증 기능을 통해 제공하고 있다. 대칭벡터라 불리는 WEP헤더의 취약점(고정 암호키 방식)을 해결하기 위한 대응책으로 개발되었다. 데이터 암호화를 강화하기 위해 순서 규칙이 있는 48비트 초기화 벡터(WEP에서는 24비트 초기화 벡터)를 이용하는지 TKIP와 AES(Advanced Encryption Standard) IEEE 802.11i 보안 표준을 사용한다. 즉, 무선 통신상의 전송내용을 암호화하는 암호키가 기존 WEP에서는 고정되어 있던 것과는 달리, WPA는 암호키를 특정 시간이나 일정 크기의 패킷 전송 후에 자동으로 변경시키기 위해 개발된 것이다.

* SNMP 프로토콜의 구성요소
1) 관리시스템(Manager) - 네트워크 관리자에게 전 네트워크 상황을 볼 수 있는 인터페이스를 제공
2) 관리대상(Agent) - 피 관리 대상 장비인 호스트, 라우터, 브릿지와 같은 장비에 설치
3) MIB(Management Information Base) - 피 관리 대상 장비의 관리될 요소들에 대한 정보를 저장한 데이터베이스
4) Network 관리 프로토콜 - TCP/IP 프로토콜 스택 중 UDP 상에서 동작하는 비동기식 요청/응답 메시지 네트워크 관리 프로토콜

* SNMP 프로토콜 MIB의 5가지 기능
1) 구성관리 - 네트워크 장비와 전반적인 물리적인 구조를 매핑하는 기능
2) 성능관리 - 가용성, 응답시간, 에러량, 처리속도 등 성능분석에 필요한 통계 데이터를 제공하는 기능
3) 고장관리 - 문제검색, 축출 및 해결을 제공하는 기능
4) 보안관리 - 정보제어 및 보호기능
5) 계정관리 - 각 노드별 사용현황을 측정하는 기능

* SNMP 프로토콜은 비동기식 프로토콜인 UDP상에서 동작하므로 TCP처럼 연결을 맺는 과정 자체가 없고, 메시지 대부분이 단순한 요청과 응답에 의해 처리되기 떄문에 4가지 연산만 수행한다
1) GET - 장비의 상태 및 가동시간 등의 정보를 읽어 들인다. 특정 장비의 정보를 읽으려면 메시지 송신자로서 관리자는 그 장비를 표시하는 작은 프로그램인 에이전트에 조회를 한다
2) GET Next - 정보가 계층적 구조를 가지므로 관리자가 장비에 조회를 해서 해당 트리보다 하위 정보를 얻도록 한다. 해당 하위 객체들까지 모두 요청할 때 사용된다.
3) Set - 장비의 MIB값을 조작하여 장비를 제어한다. 관리자를 요청을 보내 다시 초기화시키거나 프로그램에 따라 다시 재구성한다. 즉, 관리자(Manager)에서 에이전트(Agent)로 특정 값을 설정할 때 사용한다.
4) Trap - 에이전트에서 통보해야 할 어떤 정보가 발생하였을 때 관리자에게 해당 상황을 알리기 위해 사용한다. 다른 요청들이 동기적 요청이라면 이것은 비동기적 사건을 알리기 위하여 사용이 된다.

* SAINT, sscan2K, Vetescan, mscan 등의 포트 스캐닝 도구는 다중 취약점 스캔도구 이다.

* cgiscan, winscan, rpcscan 등의 포트 스캐닝 도구는 특정 취약점 스캔도구 이다.

* namp, stealthscan 등의 포트 스캐닝 도구는 은닉 스캔도구 이다.

* Stealth Scanning 스캐닝 기법 - FIN scanning, X-MAS scanning, NULL scanning

* 익명 ftp서버를 이용해 그 ftp서버를 경유해서 호스트를 스캔 - nmap -b

* 키로거 프로그램의 종류 - Keycopy, keylogwin, keylog25, Winhawk
=> 키로거 : 컴퓨터 사용자의 키보드 움직임을 탐지해 아이디나 패스워드, 인터넷뱅킹 계좌번호, 카드번호 등 개인의 중요한 정보를 사용자 몰래 빼가는 것

* UDP 포트 스캐닝은 시스템에 원하는 목적지 포트로 설정하고 UDP패킷을 보내어 포트가 열려있으면 아무런 응답이 없고, 열려있지 않으면 목적지에 도달하지 못하였다는 메시지가 리턴되어 온다.

* 클라우드 서비스 모델에 따른 자원 제공 범위에 따라 서비스 제공자의 보안관리 책임이 다르게 요구되므로 논리적 자산을 세부적으로 분류해야한다.
1) IaaS(Infrastructure as a Service) - 물리적공간 및 설비, 네트워크 인프라 및 보안장치, 서버 시스템
   - 인프라(서버, 스토리지, 네트워크 등)를 서비스로 제공, 인프라 구축 및 확장에 신경 안쓰도록 해준다.
   Ex) EC2, S3등
   대상 - 네트워크 아키텍쳐
2) Paas(Platform as a Service) - 게스트 운영체제, 소프트웨어 개발 플랫폼, API, DB, 물리적 공간 및 설비, 네트워크 인프라 및 보안장치, 서버 시스템
   - 온갖 미들웨어(플랫폼)를 서비스로 제공(API등)
   Ex) 앱스 엔진, 마이크로소프트  Azure Platform과 세일즈포스닷컴이 제공하는 Force.com
   대상 - 애플리케이션 개발자
3) SaaS(Software as a Service) - 응용 SW, 게스트 운영체제, SW 개발 플랫폼, API, DB, 물리적 공간 및 설비, 네트워크 인프라 및 보안장치, 서버시스템
   - 애플리케이션을 서비스로 제공
   Ex) 세일즈포스닷컴의 CRM(기업소비관점), 웹메일(개인소비관점)
   대상 - 일반사용자

*  빅데이터(Big Data) - 데이터의 양, 생성주기, 형식 등에서 과거 데이터에 비해 규모가 크고 형태가 다양하여 기존방법으로 수집, 저장, 검색, 분석이 어려운 방대한 크기의 데이터

* 보안 빅데이터(Security Big Data) - 분석 대상 로그가 보안로그에서 애플리케이션 로그로 규모가 커지고 형태도 다양해지면서 기존 방법으로는 수집, 저장, 검색, 분석이 어려운 보안로그 데이터

* 빅데이터의 성격
1) 데이터의 다양성(Variety) - 보안 시스템 로그에서 정형/빚어형 애플리케이션 로그, 패킷 및 트래픽 바이너리 형식의 데이터
2) 규모( Volume) - 테라(Tera) 바이트에서 페타(Peta) 바이트로 방대해짐
3) 빠른속도 (Velocity) - 수집 -> 처리 -> 분석의 싱시간 연관분석 및 순차적인 연관분석


* APT(Advanced Persistent Threat) - 특정 조직 및 기관 등을 공격하기 위해 만들어진 악성코드 형태로 장기간에 걸쳐 지속적인 공격이 이뤄지는 것이 특징이다. 공격 감지율이 매우 낮고 피해 규모가 큰 것이 특징이다. 봇넷이나 맬웨어등이 타깃이 명확하지 않다면 이 공격은 타깃이 명확하다

* 피싱(Phishing) 은 불특정 다수를 대상으로 가짜 인터넷 사이트를 통해 공격을 하는것에 반해 스피어피싱(Spear Phising)은 특정인을 대상으로 공격한다. 신뢰할 수 있는 기관이나, 기업, 사람, 직원 또는 부서를 사칭한 메일 발송이 대표적인 방법이다.

* 스마트넷 전쟁(Smart Net War) - 스마트폰, 태블릿PC, 인터넷전화, 클라우드 서버 등 유무선 인터넷망과 연결된 각종 스마트 기기 및 설비가 개인, 기업, 국가를 대상으로 하는 공격에 활용되는 진화된 사이버 공격을 말하는 것

* 워터링 홀 공격(Watering hole attack) - 제로데이 취약점을 이용하여 사용자를 노리는 공격으로, 사자가 먹이를 습격하기 위하여 물웅덩이(Watering hole)근처에 매복하고 있다가 먹이가 물 웅덩이에 빠지면 공격하는것을 빗댄 말로 사용자가 덫에 걸리기를 기다리고 있는 공격자 모습을 의미하는 것

* BYOD(Bring Your Own Device) - 기업의 업무 처리에 개인이 소유한 기기를 활용하도록 허락하거나 개인기기를 기업 IT 지원 정책에 포함하는 것

* 메모리 해킹 - 사용자 PC를 악성코드로 감염시켜, 메모리에 임시 저장된 금융 정보를 탈취해 돈을 가로채는 수법
==> 사용자가 금융거래를 위해 은행 등 금융사이트를 방문하면 보안을 위해 자동으로 키보드 보안 솔루션, 공인인증서 등 보안모듈이 구동된다. 이때 정상작동 과정에서 해커가 미리 PC에 심어놓은 악성코드로 보안 모듈을 무력화 한 후, 공인인증서 비밀번호, 보안카드번호 등 금전이체에 필요한 정보를 탈취한다. 이어서 거래가 정상적으로 이뤄지지 않도록 강제로 인터넷뱅킹을 종료한 후, 탈취한 금융정보와 보안카드를 이용해 금전을 탈취하는 방식이다. 여기서 핵심은 거래가 성사되지 않은 인터넷 뱅킹 건은 은행에서 동일한 보안카드번호를 요청하는 점을 악용한 것이다. 따라서 인터넷뱅킹을 자주 이용하는 사용자는 피해 예방을 위해 최신PC백신으로 유지하고 실시간 감시를 동작시켜야 한다. 특히 인터넷 뱅킹시에는 최신 백신으로 검색을 해 보는 것이 좋다.

* 랜섬웨어(Ransomware) - PC의 OS나 특정 파일을 암호화하여 사용자가 정상적으로 사용하지 못하게 만든 후 이를 담보로 주로 현금을 요구하는 악성파일을 의미. 즉, 불법으로 설치된 랜섬웨어로 해당 컴퓨터를 원격으로 잠글 수도 있다. 그러면 팝업 창이 뜨면서 컴퓨터가 잠겼으니 금액을 지불하지 않으면 컴퓨터에 접속할 수 없다는 경고가 나타나기도 한다.
  ==> 영단어 Ransom(납치, 유괴된 사람에 대한 ) 몸값 등에 대한 용어와 소프트웨어를 합성한 용어

* 피싱(Phishing) - 금융기관 등의 웹사이트나 거기서 보내온 메일로 위장하여 개인의 인증번호나 신용카드번호, 계좌정보 등을 빼내 이를 불법적으로 이용하는 사기수법이다. 대표적인 수법으로 이메일의 발신자 이름을 금융기관의 창구주소로 한 메일을 무차별적으로 보내는 것이 있다. 메일 본문에는 개인정보를 입력하도록 촉구하는 안내문과 웹사이트로의 링크가 기재되어 있는데, 링크를 클릭하면 그 금융기관의 정규 웹사이트와 개인정보입력용 팝업 페이지가 표시된다. 여기서 팝업페이지는 가짜이다. 진짜 이미지를 보고 안심한 사용자가 팝업에 표시된 입력란에 인증번호나 비밀번호, 신용카드번호 등의 비밀을 입력/송신하면 피싱을 하려는 자에게 정보가 송신된다.

* 파밍(pharming) - 합법적으로 소유하고 있던 사용자의 도메인을 탈취하거나 도메인 네임 시스템(DNS)이름을 속여 사용자들이 진짜 사이트로 오인하도록 유도, 개인정보를 훔치는 새로운 수법. 인터넷 사기방식인 피싱의 변형이다. 기존 피싱 공격이 금융기관 등의 웹사이트에서 보낸 e메일로 위장, 링크를 유도해 개인의 인증번호나 신용카드번호, 계좌정보 등을 빼내는 반면, 파밍은 아예 해당 사이트가 공식적으로 운영하고 있던 도메인 자체를 중간에서 탈취한다. 사용자들이 늘 이용하는 사이트로 알고 의심하지 않고 개인ID, password, 계좌정보 등을 노출하는 것이 특징이다.

* 제로데이 공격 - 보안 취약점이 발견된 후 곧바로 이를 악용하는 악성코드가 나타나는 현상. 결국 미처 대처할 시간적 여유가 없는 상태에서 악성코드나 해킹의 공격에 무방비로 당하게 된다. 즉, 해킹에 악용될 수 있는 시스템 취약점에 대한 보안패치가 발표되기 전에 이 취약점을 악용해 악성코드를 유포하거나 해킹을 시도하는 행위


* 스턱스넷(Stuxnet) - 특정 국가의 원자력발전소 제어시스템을 노린 악성코드, 시스템 마비와 같은 오작동을 일으킨다.

* 제우스(ZeuS) - 가장 대표적인 인터넷뱅킹 악성코드 및 봇넷(BotNet) 생성 킷(kit)으로 금융거래 증명서를 훔치거나 자동결제시스템, 급여시스템의 비인증 온라인 거래를 하는 등의 범죄의 주범으로 지목되고 있다. 최근 금융권에서 문제가 되었던 툴킷

* 좀비 PC(Zombie PC) - 악성코드에 감염된 PC로, 봇넷을 구성하여 C&C서버를 통해 공격자의 명령을 받아 DDoS 공격을 하는 등의 악의적인 행위를 수행하는 PC

* MDM(Mobile Device Management) - 모바일 단말기를 원격으로 제어하고 관리할 수 있는 솔루션

* MAM(Mobile Application Management) - 회사의 업무용 애플리케이션을 배포하고 관리하는 스마트워크용 솔루션. 일반적으로 모바일 단말기 내의 애플리케이션, 메일, 사진 등의 다양한 콘텐츠를 관리하는 솔루션 또는 응용기술을 말하는 모바일 콘텐츠관리(MCM)와 비슷한 콘셉트라 할 수 있다.

* MAS(Mobile Application Security) - 스마트워크용 애플리케이션을 사용하는데 필요한 보안 기술이나 해당 정책을 관리하는 기능 영역으로 별도의 단독 솔루션 사례는 아직 없다. 그렇지만 최근들어 금융권이나 대기업에서 스마트워크가 활성화되면서 애플리케이션을 통한 기업 정보유출 방지를 위해 MDM 기능중에서도 MAS를 적용하는 것이 일반화되는 추세이다.

* BYOD(Bring Your Own Device) - 기업의 업무 처리에 개인이 소유한 기기를 활용하도록 허락하거나 개인기기를 기업 IT 지원정책에 포함하는 것을 뜻하는 의미

* 액티브 피싱 공격(Active Phishing Attack) - MITM(Man In The Middle) 공격을 피싱 공격에 응용한 것으로 MITM피싱 또는 실시간 피싱으로도 불린다. 액티브 피싱 공격은 사용자가 입력한 정보를 중간에서 가로채서 사용자에게는 공격자가 실제 웹 사이트인 것처럼 속이고, 웹 사이트에게는 공격자가 정상 사용자인것처럼 속인다.
  ==> 웹 사이트에 적용된 키로깅(Key-logging), 안티바이러스, 피싱 차단 솔루션 등과 같은 기존의 피싱 공격 대응방안들은 액티브 피싱 공격을 수행하는 공격자의 PC에 설치되나, 공격자는 정상 사용자처럼 동작하기 때문에 이들 방안은 무용지물이 된다. 정상사용자의 경우, 일단 액티브 피싱 사이트에 접속하면 공격자가 조작한 웹 사이트 콘텐츠와 보안 솔루션이 적용된다. 따라서 정상 사용자는 공격자에게 모든 개인정보/인증정보를 평문으로 제공하게 되고, 2채널/투팩터(two-factor)인증 또한 공격자를 대행하여 수행하는 셈이므로 액티브 피싱에는 효과가 없다.

* 샌드박싱(Sandboxing) - 공격자가 한 소프트웨어에서 보안 취약점을 발견하더라도 앱과 다른 소프트웨어 프로세스를 고립시킴으로써 공격자가 사용자의 컴퓨터에 악성 소프트웨어를 설치하기 위해서 이것을 사용하지 못하도록 하는 것이다. 원격 코드 실행으로부터 보호하는 방법 중 하나로 샌드박싱이라는 것을 채택하는 방법이 있다.

* 드로퍼(Dropper) - 파일 자체 내에는 바이러스 코드가 없으나 실행 시 바이러스를 불러오는 실행파일. 드로퍼는 실행될 때 바이러스를 생성하고 사용자의 시스템을 감염시킨다.

* 웹 쉘(Web Shell) - 공격자가 원격에서 웹으로 웹서버를 조종할 수 있도록 제작한 웹서버용 악성코드이며, 웹서버가 가지고 있는 취약점을 이용해 웹쉘을 업로드 시켜 웹서버를 해킹하는데 이용하거나, 해킹한 웹서버를 관리하기 위한 목적으로 설치하기도 함

* 명령제어서버(C&C : Command and Control) - 공격자가 각 봇(좀비PC)을 관리하고 명령을 내리기 위해 구축하는 서버로, 사용자PC 등이 봇에 감염되면 해당 명령제어서버로 자동 접속됨. 그곳에 접속하면 봇넷의 일원이 되고 공격자가 그곳에 내리는 명령을 받아 다양한 공격을 수행하게 됨

* 잊혀질 권리 - 잊혀질 권리에 대한 논의를 본격적으로 촉발시킨 사람은 오스트리아 출신의 빅토르 마이어 쇤베르거다. 그는 2009년 자신의 저서에서 망각을 잊어버린 디지털 시대를 비판하면서, 디지털 정보의 소멸 필요성을 주장하였다. 각국 정부도 잊혀지지 않는 ㅣ지털 정보의 문제점을 인식하면서 잊혀질 권리의 법제화를 추진하고 있다. 전통적으로 프라이버시를 강하게 보호하는 EU는 2012년 1월 '잊혀질 권리'를 명문화하는 내용을 골자로 하는 정보보호규칙을 제안하여, 2014년까지 제정하는 것을 목표로 하고 있다.

* 정보보호 관리 등급 제도의 유효기간은 1년이고, 관리등급은 최우수, 우수 로 나누어진다.
- 유호기간 : 1년(정보통신망법 시행령 제55조의5)
- 정보통신망법 제47조 제4항 : 관리등급(우수 or 최우수) 을 받은 경우 그 유효기간 동안 ISMS 인증을 받은 것으로 봄

* 스마트워크 - 정보통신망이용촉진 및 정보보호 등에 관한 법률 제2조 제1항 제1호에 따른 정보통신망을 활용하여 언제, 어디서나 편리하게 효율적으로 업무에 종사할 수 있도록 하는 업무형태

* 모바일 오피스 - 스마트폰, 스마트패드, 노트북 등의 모바일 단말기를 이용하여 시간적, 공간적 제약 없이 업무를 수행하는 근무환경

* 스미싱 - 문자메시지를 이용한 새로운 휴대폰 공격 기법이며, 웹사이트 링크가 퐇마된 문자메시지를 보낸 휴대폰 사용자가 링크를 클릭하면 트로이목마를 주입해 범죄자가 휴대폰을 통제할 수 있게하는 공격

* Drive-by-Download - 임의의 사용자가 악의적인 웹사이트에 접속하는 순간 악성코드에 감염되거나 악의적인 스크립트가 실행되는 ㅏㅂㅇ식으로 사용자를 공격한다. 즉, 사용자가 모르는 사이에 악성코드 및 악성 스크립트를 실행하는 공격

* 원격 코드 실행 (Remote code execution) - 사이버 범죄자가 취약성을 이용해 원격 지역에서 사용자의 컴퓨터에 접속하고 악성 소프트웨어를 실행하는 것을 지칭하는 용어

* CPS공격 - 3way 핸드쉐이크로 세션을 열고 get을 1개 요청하고 4way로 요청을 닫는 1개의 세션의 생성과 종료를 계속적으로 발생시킨다. 이러한 공격은 세션을 열고 닫는 과정에서 네트워크 장비에 많은 부하를 준다. 일반적으로 100만 세션이면 서버에 부하를 주게된다. 이 공격을 CPS공격이라고 한다.

* Get Flooding Attack - 서버에 정상적인 TCP Connection을 형상한 후 HTTP Header 정보를 변조없이 하나의 Get Request를 전송한 후 FIN Packet을 전송하는 공격방법을 수행
                                - 좀비 시스템의 경우 SYN-Cookie에는 정상응답, Reset에는 응답하지 않는 특성을 보인다.
                                - 타겟 시스템은 DPI 차단 방식을 우회된 상태로 대량의 get을 수신하게 되어 시스템 부하가 발생한다.

* 개인정보 보호수준(PPL) - 개인정보보보호법 제13조 제3호에 따른 개인정보보호 관리체계의 수립, 개인정보 처리 단계별 기준/절차의 준수 및 안전한 관리, 정보주체의 권리보장 등 개인정보의 ㅂ호를 위하여 지속적으로 수행하는 일련의 조치와 활동의 수준

* 아파치 설정 파일(httpd.conf)에 아래와 같이 DirectoryIndex 가 설정되어 있다. 
 
   <ifModule dir_module>
    DirectoryIndex index.html index.htm, index.php
   </ifModulke>
 
   기본적인 파일 확장자를 인식하여 웹에 나타나게 된다. 어떠한 경우에 디렉토리 리스팅 취약점이 나타나는지 원인과 대응 방안은? 
  
   ==> 웹브라우저에서 디렉토리 리스트가 보여주게 되는 경우는 아래오ㅏ 같이 가상 호스트 디렉토리의 Options 부분에 Indexes 설정이 되어 있는 경우로서 홈 디렉토리의 리스트가 출력되는 취약점이 있다. 
 
   <Directory "/home/*/public_html"> 
  ~
          Options Indexes FollowSymLinks
  ~ 
  </Directory>
 
  ijndex 파일이 없을 때 디렉토리 리스트가 뜨지 않고 에러페이지를 출력하게 하려면, 아래와 같이 Options부분에 Indexes를 삭제하고 아파치 데몬을 재시작해 주면 된다. 이럴 때에도 웹 서버 버전이나 기타 사항 에러 사항 출력이 나오지 않도록 하는 것이 바람직하다
 
 <Directory "/home/*/public_html">
 ~
         Options FollowSymLinks
 ~ 
 </Directory> 
 

* 리눅스 시스템에서 가상 호스트란 하나의 IP를 가진 서버에서 여러 개의 멀티 도메인을 운영하는 방법을 말한다. 다음에 주어진 예제를 보고 가상 호스트 설정 작업을 작성하시오
  Ex ) - IP : 192.168.100.10
        - 도메인 : www.boanin.com
        - 관리자 메일 주소 : master@boanin@com
        - 홈 디렉토리명 : boanin
 
  - httpd.conf 파일에서 가상 호스트 영역을 다음과 같이 편집한다 
  
 <VirtualHost 192.168.100.10>
               ServerAdmin master@boanin.com
               DocumentRoot /home/boanin/public_html
               ServerName boanin.com
               ServerAlias www.boanin.com
               ErrorLog logs/boanin.com-error_log
               CustomLog logs/boanin.com-access_log common
 </VirtualHost>
 
  ==> 한 개의 IP에서 여러 개의 도메인을 운영하는 방법으로 위와 같이 홈 디렉토리를 지정해 주고 도메인을 연결해 주면 한 개 이상의 도메인을 운영할 수 있다. 대부분 웹 호스팅 업체가 이런 식으로 가상호스트를 구현하여 많이 사용하고 있다. 한 가지 주의할 점은 서버의 하드웨어 성능을 고려하지 않고 무작위 여러 개의 도메인을 설정할 경우 서비스 지연이나 서버 성능저하의 요인이 된다. 
 
  환경설정 파일을 내용 변경이나 수정 후에는 반드시 데몬을 재시작해 주어야만 새로 설정한 내용이 적용이 된다는 사실을 기억하자 
  
* 아파치 웹서버에서 특정 폴더에 암호를 설정하여 사용하는 방법
 1) httpd.conf 파일 수정
  먼저 /usr/local/apache/conf/httpd.conf 에서 AllowOverride None 으로 되어 있으면 AllowOverride All 로 변경
  그리고 # AccessFileName .htaccess줄이 주석을 풀어준다.
 2) .htaccess 파일을 만든다
  인증을 받고 싶은 디렉토리로 가서 vi로 아래와 같은 파일 생성
  AuthType Basic
  AuthName qpiss
  AuthUserFile /home/boan/public_html/boanin/.htpasswd require valid-user 
  위의 내용을 .htaccess 로 저장하고 퍼미션을 777 로 준다. 
 3) .htpasswd 파일을 만든다
  암호파일(.htpasswd)은 암호화되어서 저장이 되므로 그냥 텍스트로 입력해서는 저장이 안된다. 그래서 /usr/local/apache/bin 에 있는 htpasswd라는 프로그램을 이용하여야 한다. 아래와 같이 만든다
  # /usr/local/apache/bin/htpasswd -c /home/boan/public_html/boanin/.htpasswd boanpassword
  이때 -c옵션은 처음에만 넣으면 되며 그 다음부터 추가할 때는 필요가 없다. 그 다음에도 -c 옵션을 추가하면 이전 것 (.htpasswd)은 지워버리고 새로 생성되어진다. )
  그러면 .htpasswd의 파일이 아래와 같이 생성되어 진다 .
 boanin:NoWPewwtesgrTR
 4) 아파치 재기동
  # killall httpd
  # /usr/local/apache/bin/apachectl start (소스로 컴파일링 하였을때 절대 경로) 
 
 
* 라우터의 config 내용의 일부이다. 
 
 - 라우터 텔넷 접속 후 입력이 없을 경우 5분후에 자동 로그아웃된다.
 - 라우터에 텔넷 접속은 ACL 10 에 있는 IP만 허용한다.
 - snmp 정보 요구를 위한 community은 boanin123이며 read only 정책이고 ACL.20에 있는 IP만 허용한다
 
 line vty 0 4
 exec-timeout 5 0
 access-class 10 in
 
 access-list 10 permit 1.1.1.1
 access-list 20 permit 2.2.2.2
 
 snmp-server community boanin123 RO 20


* iptables을 이용하여 각각 보기의 프로토콜 허용, 나머지 차단. 단, 차단을 할 경우 상대방에게 차단된 사실을 알려주지 않는다
 허용 포트 : ssh, telnet, http
 
 ==> iptables -A INPUT -p tcp --dport 22 -j ACCEPT
         iptables -A INPUT -p tcp --dport 23 -j ACCEPT
         iptables -A INPUT -p tcp --dport 80 -j ACCEPT
         iptables -P INPUT DROP

* tcpwrapper 을 이용하여 보기와 같이 구성하고자 할때 작업을 완성하기 위한 방법은 ? 
 보기 - client-1.example.com 에서는 서버에 ssh로 접속을 허용하고자 하고, clien-2.example.com 에서는 서버에 sshf로 접속을 거절하고자 한다
 
  => host.aloow 와 host.deny 파일에 각각 아래와 같이 설정하여 접근제어를 컨트롤할 수 있다. 
  sshd : client-1.example.com : allow
  sshd : client-2.example.com : deny

* 라우터 보안 관련 설정 작업 완성하기 
 
 보기 - console 포트에 대한 접근제어 설정에 'login' 및 'password' 'admin123' 을 설정한다
 
  Router# conf t
  Router(config)# line console 0
  Router(config-line)# login
  Router(config-line)# password admin123
  Router(config-line)# ^Z
 

* 라우터 보안 관련 설정 작업 완성하기 
 
 보기 - vty 포트에 대한 접근제어 설정에 'login' 및 password 설정한다
 
  Router# conf t
  Router(config)# line vty 0 4
  Router(config-line)# password <유추불가 패스워드>
  Router(config-line)# login
  Router(config-line)# ^Z  

* 라우터 보안 관련 설정 작업 완성하기 
 
 보기 - 인터페이스에서 나가는 ICMP Redirects 패킷을 막기위해 no ip redirects 설정
        - 들어오는 ICMP Redirects 패킷을 막기 위하여 access-list 를 통해서 접근 제어
 
 1) 나가는 패킷에 대한 설정
   Router(config)# interface FastEthernet 0/0
   Router(config-if)# no ip redirects
   Router(config-if)#  ^Z
 
 2) 받는 패킷에 대한 설정
   Router(config)# access-list 101 deny icmp any any redirect
   Router(config)# access-list 101 permit ip any any
   Router(config)# interface FastEthernet 0/0
   Router(config-if)# ip access-group 101 in 
   Router(config)# ^Z
 
  ==> 라우터에서 특정목적지로 최적화되지 않은 라우팅을 한다고 할 때 ICMP redirect 패킷은 라우터에게 정확한 라우팅 경로를 알려주는 역할을 한다. 만약 임의의 비인가자가 ICMP redirect 패킷을 위조할 수 있게 된다면, 라우팅 테이블을 변경할 수 있게 되고 원하지 않는 경로로 트래픽을 보낼 수 있느 ㄴ위협이 존재하게 된다. 
 
 
* /etc/xinetd.conf 파일이다. 이는 xinetd 데몬을 사용하는 환경설정을 위한 파일이기도 하다
 보기 - 
 
 default
 {
     instances          = 60 // xinetd 최대 요청 개수는 60개 이다
     log_type           = SYSLOG authpriv // /var/log/secure 파일에 authpriv 로그 기준을 사용하여 기록하라
     log_on_success = HOST PID // xinetd 에 접속을 성공하였다면 원격 호스트 IP주소와 프로세스 ID를 기록하도록 요청한다
     log_on_failure   = HOST
     cps                   = 25 30 // 어떤 서비스도 1초당 25개 커넥션이 이루어지면 안되고, 서비스 도달하면 30초 이내에 커넥션이 종료된다.
 }

* /etc/xinetd.d/telnet 파일내용
  
 보기 -
 
 May 15 17:38:49 boo xinetd[16252]: START: telnet pid=16256 from=10.0.1.2
 May 15 17:38:49 boo xinetd[16256]: FAIL: telnet address from=10.0.1.2
 May 15 17:38:49 boo xinetd[16252]: EXIT: telnet status=0 pid=16256
 
 service telnet
 {
          disable            = no
          flags               = REUSE
          socket_type     = stream
          wait                = no
          user                = root
          server             = /usr/sbin/in.telnetd   // A
          log_on_failure  = USERID
          no_access        = 10.0.1.0/24             // B
          log_on_success = PID HOST EXIT
 }
 
  ==> 우선 xinetd.d 디렉토리에 있는 대부분의 파일은 위와 같은 형식을 따른다. 보안적인 측면에서 눈여겨보고 익혀 두는 것이 좋다. A는 해당 telnetd 데몬의 위치를 지정해 주고 있으며, B는 만약 접근하였을 때 로그에 대한 정보를 어떻게 남길 것인가에 대한 옵션이다. <보기>에 주어진 로그 파일을 보면 각각 PID, HOST, EXIT 형태로 로그가 생성된 것을 알 수 있다. 
 
 다른 방법으로는 hosts.deny 에 다음과 같이 설정하여도 같은 기능을 얻을 수 있다. 
 
# vi hosts.deny
in.telnetd:10.0.1.2


* IIS서버 운영하고 있는 A 사에서 관리자가 아침에 출근하여 이메일을 받아보니 해킹을 했다는 메일이 와 시스템 로그의 검토를 들어가던 중 아래와 같은 내용을 파악하게 되었다. 어떠한 공격방법을 이용하였으며 어떻게 공격했는지 과정 서술
 
 보기 - 05:06:11 211.44.xx.xx GET /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+"c:\"
           05:11:12 211.44.xx.xx GET /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+del+"c: winnt *L.zip"
 
 ==> Unicode attack을 이용한 방법으로, 공격을 시도한 진원자는 211.44.xx.xx이고 5시 6분 11초에 C drive 를 dir 이라는 명령어를 이용하여 내용을 파악하였으며 5시 11분 12초에 C drive 의 /winnt 디렉토리에 있는 L.zip 이라는 파일을 지웠다. 
 
 
 
 

 
728x90