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
'정보보안기사관련' 카테고리의 다른 글
정보보안기사 10회 필기,실기 합격률 (0) | 2018.01.02 |
---|---|
10회 정보보안기사 실기 시험 합격 후기 ( 휴학생 / 동회차 합격 ) (4) | 2017.12.08 |
10회 정보보안기사 필기 시험 합격 후기 ( 휴학생 ) (2) | 2017.12.08 |
정보보안기사 실기 참고 내용 정리 3 (0) | 2017.10.23 |
정보보안기사 실기 참고 내용 정리 1 (0) | 2017.10.16 |