정보보안기사 실기 참고 내용 정리 2

2017. 10. 18. 18:44정보보안기사관련

 

 


 

[ DHCP ( Dynamic Host Configuration Protocol ) ]  67/UDP 포트 사용


DHCP 설정파일 ( /etc/dhcpd.conf ) 작성 방식


 

 subnet [ IP주소 ] netmask [ mask ] {

    

    option routes [ gateway address ] ;

    option subnet-mask [ Netmask ] ;

    option domain-name [ DomainName ] ;

    option domain-name-server [DomainNameServerAddress ] ;

    range dynamic-bootp [ 시작 IP ] [ 끝 IP ] ;

    default-lease-time [ 초 ] ;

    max-lease-time [ 초 ] ;


 }


할당 ( Lease ) 데이터 베이스 ( /var/lib/dhcp/dhchpd.leases )

- 최근 할당된 개별 IP주소에 대한 DHCP 할당정보를 자동으로 저장한다

- 할당기간, IP주소가 부여된 클라이언트, 할당이 시작되고 끝나는 날짜, 할당에 사용된 NIC의 MAC주소가 저장된다


DHCP Relay Agent

- 클라이언트가 정보를 요청하는 경우, DHCP Relay Agent는 그 요청을 DHCP서버 목록으로 전송한다

- DHCP서버가 응답을 보내오면, 원래 요청을 보낸 네트워크 상에서 그 응답을 브로드캐스트 or 유니캐스트 한다


DHCP 관련 명령어

# /sbin/service/dhcpd start | stop





[ DNS ( Domain Name System ) ]



DNS서버 설정 파일 ( named데몬 설정파일 ) /etc/named.conf

/etc/named.conf 작성 방식

 

options {

    directory "/var/named" ;

    allow-query { any ; }

    recursion no ;

 };


 zone "." {

    type hint ;

    file "named.ca" ;  

 };


 zone "0.0.127.in-addr.arpa" {

    type master ;

    file "named.local" ;


 };

 zone "abcd.com" IN {

    type master ;

    file "abcd.zone" ;

    allow-update { none ; };

 };


 zone "6.168.192.in-addr.arpa" IN {

    type master ;

    file "abcd.rev";

    allow-update { none ; };

 };



# directory " 디렉터리명 "                     : zone파일들을 저장할 위치를 지정한다

# allow-query { any | localhost | host }    : DNS질의를 허용할 대상을 지정한다

# recursion yes | no                            : 재귀적 질의를 허용할지 말지 결정한다

# zone "."                                         : root 도메인에 대한 설정

# type hint | master | slave                   : hint ( 루트 도메인 ) , master ( 1차 네임 서버 ) , slave ( 2차 네임 서버 )

# file " 파일명 "                                  : 해당 존에 대한 설정이 저장될 파일명


=> /var/named/ 디렉토리에 존 파일들이 위치하게된다

=> 각각의 파일명은 file 옵션으로 지정해준 이름으로 저장된다 ( named.ca , named.local , abcd.zone , abcd.rev )



named.conf 파일 검사 명령어

# named-checkconf /etc/named.conf    : named.conf 설정파일에 오류 검사기능

# named-checkconf abcd.com(zone명) /var/named/abcd.zone(zone파일경로)    : 존의 존파일에 오류가 있는지 검사한다


named 데몬 실행 명령어

#service named start | stop | restart


/etc/named.rfc1912.zones 파일

- 로컬 도메인이나, 로컬 호스트 등 도메인 네임 서버에 질의 하지 않아도 호스트 자체에서 처리할 수 있어 요청 할 필요가 없는 존영역들을 설정해놓은 파일이다


DHCP 동작 방식

Discover( 브로드캐스트로 서버들에게 보냄 )

Offer( 서버에서 응답이옴 )

Request(내가 응답받은 ip 쓰겠다고 방송하는것 )

ACK( 응답해준 서버에서 OK응답 )




[ mysqld 설정 ] MY-SQL 환경설정 ( /chroot/mysql/etc/my.cnf )

##--------------------------------------------------------------------

# mysqld 의 기본 설정들.

##--------------------------------------------------------------------

# id 는 1 에서 2^32 -1 개 사이에 유일한 값이여 한다.

# server-id 는 복제 그룹을 구성할 경우에 중복된 값이여서는 않된다.

# 단일 시스템일 경우 기본값 1 이면 충분하다.

server-id = 1


# 서버를 구동할 시스템 사용자 지정.

user = mysql


basedir = /usr/local/mariadb5.5

# 이 디렉토리의 소유권과 그룹은 user 에서 지정한 사용자와 그룹이어야 한다.

datadir = /usr/local/mariadb5.5/data

# 이 디렉토리는 Mysql 서버가 내부적 작업을 할때 임시로 사용하게 된다.

# 예를들어 대량의 select 처리를 위해서 임시 테이블을 만들거나 할 경우에 여기에 임시로 파일이 생성될 수 있다.

tmpdir = /usr/local/mariadb5.5/tmp

socket = /usr/local/mariadb5.5/tmp/mysql.sock

pid-file = /usr/local/mariadb5.5/data/mysqld.pid


##--------------------------------------------------------------------

# Network 설정.

##--------------------------------------------------------------------

# 서버 포트 지정.

port = 3306


# 서버에 접속한 클라이언트 확인을 위해서 IP를 가지고 클라이언트의 도메인을 찾는 것을 방지한다.

# 이것을 사용하면 서버에 접속가능한 클라이언트를 정의할때에 Host 필드에 도메인을 사용하면 않되며

# IP만 사용해야 한다. 대신 클라이언트의 도메인을 찾는 작업이 없기 때문에 성능상에 이점이 있다.

skip-name-resolve


# 최대 동시 접속 연결을 지정. 무턱대고 크게 잡을게 아니라 적절하게 잡아야 한다.

# 이 값을 초과하면 "Too many connections error" 메시지를 보여준다.

# Dynamic 설정을 할수 있다. SET GLOBAL max_connections = 300

max_connections = 300


# MySQL 서버에 접속하는 사용자 계정별 최대 동시접속 수. 기본값은 0(Unlimited) 이다.

# Dynamic 설정을 할수 있다. SET GLOBAL max_user_connections = 1024

max_user_connections = 0


# MySQL 서버에 접속한 클라이언트들은 다양한 에러를 발생시킨다. 서버는 이러한 클라이언트별 오류 갯수를 카운팅해 놓는데,

# 만일 클라이언트가 일정한 카운팅을 넘어서면 서버는 클라이언트의 접속을 차단한다.

# 클라이언트가 발생시킬 수 있는 에러의 한계치를 조정하기 위한 설정이다. 기본 값은 10 이다.

# 이 카운터에 도달하면 "Host [client] is blocked because of many connection errors" 에러를 발생시킨다.

# Dynamic 설정을 할수 있다. SET GLOBAL max_connect_errors = 1000000

# 이 카운터의 초기화는 FLUSH HOSTS 해주면 된다.

max_connect_errors = 1000000


# 접속한 클라이언트가 아무런 일을 하지 않을 경우에 차단할 시간. 단위는 초이며 기본값은 28800초(8시간)이다.

# 웹에 붙여서 사용할 경우에 대부분의 30초 내외로 웹서버의 커넥션 타임이 정해져 있기 때문에 기본값은 매우 큰 값이라고 할 수 있다.

# Dynamic 설정을 할수 있다. SET GLOBAL wait_timeout = 600

wait_timeout = 600


# 비활성 상태에서 활성상태가 될때까지 대기시간.(seconds to waits for activity on interactive connection)

# 이것은 오직 MySQL API 중에 mysql_real_connect() 함수를 사용하는 애플리케이션에만 적용된다. 단위는 초이며 기본값은 600 이다.

# Dynamic 설정을 할수 있다. SET GLOBAL interactive_timeout = 600

interactive_timeout = 600


# 'Bad handshake'로 응답하기전 패킷접속을 기달리는 시간.

# "Lost connection to MySQL server at 'XXX', system error: errno" 메시지가 자주 보인다면 이 값을 증가시켜줄 필요가 있다.

# 단위는 초, 기본값은 10 이다.

# Dynamic 설정을 할수 있다. SET GLOBAL connect_timeout = 10

# mysqld와 client가 연결을 맺기 위해 mysqld가 연결패킷을 기다리는 최대 시간

connect_timeout = 10



##--------------------------------------------------------------------

# Logging

##--------------------------------------------------------------------


# 제너럴 쿼리 로그(general query log)와 슬로우 쿼리 로그(slow query log)의 출력 목적지를 결정한다.

# 이 옵션은 다른 어떤 옵션들을 덮습니다. 이 값이 NONE 이라면 다른 옵션에서 로그기록을 설정했어도 로그는 기록되지 않습니다.

# Dynamic 설정을 할수 있다. SET GLOBAL log_output = FILE

log_output = FILE


# 에러나 시작 메시지 로그 파일을 지정. 파일명을 지정하지 않을 경우 host_name.err 를 사용하며 확장자를 지정하지 않으면 .err 를 붙인다.

# 기본값은 없으며 Dynamic 설정을 할 수 없다.

log_error = /usr/local/mariadb5.5/logs/mysqld_error.log

 

* mysql의 기본포트번호는 3306/tcp 이다

* 보안을 위해서 해당 포트를 사용하지 않으려면 설정파일의 [mysqld] 부분에 " skip-networking " 을 추가한다



SET ( Secure Electronic Transaction )

 

1. 고객은 은행 계좌를 개설하고 디지털 인증서를 받는다 ( 이 디지털 인증서는 신용카드의 역할을 한다 )

2. 상인 역시 은행으로부터 디지털 인증서를 받는다

3. 고객은 상인에게 주물을 한다 ( 고객은 상인의 인증서를 확인할 수 있다 )

4. 고객은 상인의 공개키로 암호화하여 주문 정보를 보내고, 지불정보는 은행의 공개키로 암호화한다

5. 상인은 고객의 인증서의 전자서명을 통해서 고객을 검증( 은행이나 검증기관을 통해서 ) 하고 주문정보를 상인의 개인키로 복호화하여 확인한다

6. 받은 메시지를 은행에 보낸다 ( 메시지에는 고객의 지불정보, 상인의 인증서가 포함된다 )

7. 은행은 상인의 인증서를 검증하고 지불정보를 은행의 개인키로 복호화하여 확인한다

8. 은행은 전자적으로 서명하여 상인에게 허가정보를 보냄


* SET에서 제공하는 보안서비스

- 기밀성 : 대칭키,공개키 알고리즘

- 무결성 : 전자서명

- 인증 : 전자서명

- 부인방지 : 전자서명

 

* 구성

- Cardholder : 소비자

- Issuer : 소비자에게 카드를 위한 계좌를 개설해주는 은행

- Merchant : 상인

- Acquier : 상인과 계약을 맺고 지불카드 승인

- CA ( Certificate Authority ) : SET참여자들의 신원을 확인하고 인증서를 발급한다

- PG ( Payment Gateway ) : 상인과 카드사 사이를 이어주는 전자결제 대행서비스


* SET의 이중서명 프로토콜

① 고객의 이중서명 생성  

  - 구매정보 OI에 대해 Hash함수를 적용하여 160 비트의 메시지 다이제스트 M1을 생성
  - 결제정보 PI에 대해 Hash함수를 적용하여 160 비트의 메시지 다이제스트 M2를 생성
  - 생성된 두개의 메시지다이제스트 M1,M2를 연접(Concatenation)한 후 연접된 결과에 Hash함수를 적용하여 메시지 다이제스트 M을 생성 
  - M에 고객의 개인키로 전자서명 한다

② 전자봉투 생성 및 판매자에게 전송 ( 전자봉투 : 전자서명을 비밀키로 암호화해서 전송한다 )

③ 판매자는 고객의 공개키로 전자봉투를 복호화하고 구매정보(판매자의 개인키로 복호화)와 이중서명 확인 후 암호화된 결제정보를 PG에게 전송

④ PG의 고객의 공개키로 전자봉투를 복호화하고 결제정보를 PG의 개인키로 복호화한다

# PG의 고객 이중서명 확인 및 결제정보 확인절차

  - PG는 자신의 개인키를 사용하여 전자봉투를 복호화한다
  - 전자봉투에서 획득한 비밀키를 이용하여 결제정보, M1M2값, 고객의 서명값을 추출 
  - PG는 복호화된 결제정보에 고객과 동일한 Hash함수를 적용하여 메시지다이제스트 M2'를 생성
  - PG는 수신된 M1M2 중 M2를 새로 생성한 M2'으로 대체시킨후, 대체된 M1M2'에 동일한 Hash함수를 적용하여 새로운 메시지다이제스트 M'을 구함
  - PG는 수신된 고객의 이중서명을 고객의 공개키로 복호화하여 메시지다이제스트 M을 추출
  - PG는 메시지다이제스트 M과 M'를 비교하여 동일한 경우 정당한 결제요청으로 간주하여 처리
 


출처: http://hacktivist.tistory.com/12