4월, 2018의 게시물 표시

Oracle DB - Query 구문 (WHERE ~ JOIN)

▣ Where 절(구)에 사용되는 쿼리 구문 ◎ 관계 연산자 (NOT / AND / OR)   - NOT : 가독성이 더 좋은 부정 연산자 !=, <>, ^= 등을 이용하는 것이 좋다.   - AND : 주로 사용되는 조건절   - OR : 사용할 수는 있지만, 왠만하면 AND를 사용한다.   ※ AND와 OR의 혼용 시 괄호 ' ( ) ' 를 사용하여 구분해주어야 한다.    → 연산자 우선순위 때문 : AND > OR ◎ LIKE   - %, _, # 과 같은 와일드 카드 문자 / ESCAPE 문자를 함께 사용하여 원하는 문자열 검색 ◎ BETWEEN ... AND   - AND의 앞과 AND 뒤 값의 사잇 값을 출력해준다.   - 앞의 값은 뒤의 값보다 작아야한다. (유의)   - 날짜를 검색하는 경우 유의한다.    → 날짜 데이터는 시리얼 넘버로 저장되기 때문에 시, 분, 초 값도 역시 존재한다.    → 정확한 데이터를 출력시키려면 날짜 데이터의 포맷을 자유롭게 조절할 수 있어야 함.    → ALTER SESSION SET nls_date_format='YYYY/MM/DD:HH24:MI:SS' ◎ IN   - 지정된 값 중 일치하는 값이 하나라도 있으면 출력해주는 조건   - 가독성이 우수   - OR 이나 = 연산자를 대체한다. ▣ Join   - 복수의 테이블을 묶어서 연관된 칼럼 값을 참조하는 기법   - 테이블을 join하기 위해서는 join 조건이 필요하다   - join 조건은 묶는 테이블의 개수가 n개일때 최소 n-1개가 필요하다. ◎ 등가 join 과 비등가 join   ▷ 등가 join : 칼럼의 내용이 정확히 일치하는 레코드 만을 추려 join한다. ...

Oracle DB - Query 구문 (DISTINCT ~ WHERE)

▣ 쿼리 구문 ◎ DISTINCT - 중복 제거 : SELECT (DISTINCT/ALL(default)) 칼럼 FROM 테이블; ◎ ORDER BY - 정렬 : SELECT 칼럼 FROM 테이블 ORDER BY (정렬할 칼럼) (ASC(default)/DESC) 오름차순 / 내림차순  - 정렬할 칼럼의 순서대로 우선 적용  - Oracle DB는 RDB ◎ WHERE - 조건 검색 : SELECT 칼럼 FROM 테이블 WHERE 조건   - 조건의 좌변에 수식이 들어가는 것은 좋지 않음     → 좌변에 우변과 맞지 않는 데이터 형이 비교된다면 좌변의 내용은 모두 숫자로 바뀌어 비교된다 (full table scan)     → 데이터 자동 형 변환을 통해 모든 데이터를 오류없이 스캔해주지만, 그 속도에 있어서 매우 비효율적이 된다.     → 왠만하면 스캔을 적게해주는 방식으로     → 칼럼을 제외한 수식을 우변으로 옮기자   - 스캔의 종류는 두 가지     ① Full table scan - 모든 레코드를 다 읽어야하므로, 모든 테이블을 스캔하는 시간과 동일한 시간을 소비     ② index scan - 임의의 테이블을 생성해서 정렬이 안되어있는 기본 테이블을 복사하여, 정렬이 된 상태로 붙여넣는다        - binary search를 사용 : 절반의 위치를 질의 낮으면 아래로, 높으면 위로 재검색         → 그러나 RDB에서는 b* tree 방식을 이용하기에 binary search보다 훨씬 빠름        - 모든 레코드(row)에는 rowid가 존재        - rowid는 64^18가지로 이만...

Oracle DB - Query 문 종류와 SELECT문

▣ Oracle SQL ◎ 명령어 구조 -- 자주쓰는 명령어 (99.99퍼) -- SELECT : quary -- 나머지 0.01퍼 정도 -- INSERT : row 생성 UPDATE : row 변경 DELETE : row 삭제 -- 이하는 시스템 관리자(DBA)가 사용 -- CREATE : 테이블 생성 ALTER : 테이블 변경 DROP : 테이블 삭제 -- 이하는 부가권한이 있는 관리자가 사용 (권한 부여 및 삭제) -- GRANT : 권한 부여 REVOKE : 권한 삭제 ▣ 명령어 종류 ◎ select문 : SELECT [col, col, ...] FROM table; → 테이블에 속한 특정 칼럼을 선택해 출력해준다. : SELECT * FROM table; → 테이블에 속한 모든 칼럼을 출력해준다. ▷ FROM절은 생략할 수 없다. ▷ 정해진 포맷이 없기 때문에, 여러 줄에 걸쳐 사용가능 → 가독성 높일 수도 있겠다 ◈ 테이블 구조의 확인 - DESC : DESC (table) → 테이블의 구조를 확인할 수 있다. ex) SQL> DESC emp  이름                                                    널?    유형  ----------------------------------------------------- -------- ------------------------------------  ENO                          ...

전자서명 개념

이미지
▣ 전자서명 전자문서의 단점 - 위변조 용이 - 작성사실 입증의 어려움 전사서명의 요구조건 - 서명자 신원의 확인 - 위조 불가, 변경 불가 (데이터 무결성) - 부인 방지 - 재사용 불가 대칭키 알고리즘에 의한 방법 - 중재된 서명기법  : 서명과 검증을 제3자에 의해서 행할 수 밖에 없음 공개키 알고리즘에 의한 방법 - 메시지 복원형 전자서명 방식 - 문서 자체를 이용하는 서명 방식 - 메시지 부가형 전자서명 방식 - 문서에 서명메시지를 포함하는 방식 인증서는 인감 증명서에 해당 공개키의 소유자를 증명하는 용도 인증서의 정의 - 공개키의 소유자 증명 - 인증기관이 자신의 개인키로 전자서명 인증서 표준 : X.509 - 메시지 다이제스트 알고리즘만을 포함  → 무결성만을 중시 (=속도, =가용성) CA : 인증서 발행기관 RA : 인증서 유저 등록 기관 CRL : 인증서 폐지 목록 ▣ 전자서명 방식 ◎ 부가형 전자 서명 방식  ▷ 설명   메시지를 해시함수 처리 → 해시 코드 (message digest) → 해시코드를 송신자의 개인키로 서명  ● 원본 메시지와 서명을 붙여서 송신   원본 메시지에 해시함수 처리 → 해시 코드 1 획득   서명을 송신자의 공개키로 복호화 → 해시 코드 2 획득  ● 해시 코드 1과 해시 코드 2를 비교   → 동일하면 인증, 다르면 인증 실패  ▷ 제약   기밀성이 보장되지 않음 ◎ 전자 봉투 방식  ▷ 조건   상대방의 공개키가 맞는지 확인되어야함  ▷ 설명   ● 송신자     송신자는 난수를 발생시키고, 이것을 비밀키로 지정한다.     수신자의 공개키로 위 비밀키를 암호화...

해시함수 개념

이미지
해시함수 기밀성 x 무결성 o 무결성 - 메시지의 변조가 되지 않음을 증명 해시함수 : 일방향 함수 → 암호화는 가능하지만 복호화가 불가 SHA와 MD5가 대표적, 그중에서도 MD5를 주로 사용 → 유닉스의 암호 데이터는 MD5로 암호화 보안전문가에게 위협이란 구체적인 위협을 탐지하고 있을 경우만 위협 - 메시지 인증 코드에 대한 변형 - 메시지의 모든 비트들에 대한 함수 - 가변 메시지 M에 one-way Function H를 취해 정해진 크기의 Digest h를 만드는 과정 - 디지털서명, 인증 등의 서비스 제공 메시지 길이에 제약은 있겠지만 가히 무한하게 큰 수일 것. 하지만 해시함수를 적용하게 되면 고정길이로 줄어들기 때문에, 같은 digest를 갖는 메시지는 여러개 나올 수 밖에 없음. (해시함수) 해시함수의 요구조건 1. 어떤 크기의 메시지에도 적용 가능 2. H는 고정된 코드의 hash code (message digest) h를 생성 3. h는 어떤 M에 대해서도 계산하기 쉽다. 4. 주어진 h에 대해 H(M) = h인 M를 찾는 것이 계산적으로 불가능 (one way) 5. 어떤 주어진 블록 M에 대해, H(M') = H(M) 인 M과 M''이 서로 다른 것을 찾는 것이 계산적으로 불가능 6. H(M') = H(M) 인 서로 다른 M과 M'을 찾는 것이 계산적으로 불가능 (collision-free) - 기밀성과 무결성을 동시에 만족하는 형태

Linux Server 실습 - smb.conf (share)

이미지
◎ smb.conf - share 1. 공유 디렉토리 (Public)를 만들고 writable 권한을 갖고 놀아봅시다 - /etc/samba/smb.conf - 사진 첨부 - # A publicly accessible directory, but read only, except for people in # the "staff" group         [public]         comment = Public Stuff         path = /home/pub         public = yes          writable = no          write list = +web webmaster    → 이 부분이 관건 ▷ 주석은 삭제하였다. ▷  writable(쓰기 권한) 이  no 로 설정되어 있더라도,  write list 에  설정된 그룹/유저 는  쓰기가 가능 하다. ▷ 테스트 해보자   - 위 사진처럼 write list에는 web그룹의 webmaster 계정만을 허용한다.   - 경로 path에 속하는 디렉토리는 미리 생성한다.   - 사전에 공유폴더 public 폴더에 비어있는 .txt 파일을 만들어 놓는다.     1. write list에 없는 계정으로 접속 후 텍스트 파일 수정               → 네트워크 드라이브 연결                  → \\DJ\public 에 접속해보자! ...

이론 - samba : smb.conf

◎ smb.conf [Global] - workgroup   • NT 도메인 명 지정 - netbios name   • 네트워크 이름   • 기본값 : 호스트명 - hosts allow (wrapper)   • 허가 항목 지정(지정된 것만 접속 가능)    ex) host allow = 1.1.1. EXCEPT 1.1.1.11 1.1.1.12     = 1.1.1.0/255.255.255.0 - hosts deny (wrapper)   • 접속 거부 항목 지정 (형식은 hosts allow와 동일) - guest account   • 윈도우의 quest 사용자 매핑 계정 설정   • nobody 또는 유닉스 계정으로 매핑 가능   • 주석 처리하면 guest 접속 불가(권장) - security   • user, share, server(domain) 중 설정    security = user    passdb backend = tdbsam → 사용되지 않음   • 일부 예전 버전의 경우 user 설정 시 추가 설정 필요    encrypt passwords = yes → 구 버전 samba에서만 사용    smb passwd file = /etc/samba/smbpasswd Link 디렉토리 접근   보안 설정으로 인해 Symlink 디렉토리에 대한 기본 접근이 불허된다.   이를 허용하기 위해서는 아래와 같이 추가한다.     follow symlinks = yes     wide links = yes     unix extensions = no 언어셋 지정 (반드시 test 후 설정한다.)   unix charset = ...

실습 - samba : smb.conf (global)

이미지
◎ smb.conf - global 1. NetBIOS name 설정 후 이를 이용해 네트워크 드라이브 연결  - #vi /etc/samba/smb.conf   - netbios name = DJ 로 설정  - 네트워크 우클릭 - 네트워크 드라이브 연결 선택  - \\DJ\ 입력 후 찾아보기  - DJ 네트워크 선택 - 사용자 증명 (webmaster) 2. hosts allow / hosts deny 설정 - .175 (리눅스 서버 ip) 를 제외한 모든 ip 제한 - 접근 시도 - 접근 실패

암호 - 해시함수

이미지
해시함수 기밀성 x 무결성 o 무결성 - 메시지의 변조가 되지 않음을 증명 해시함수 : 일방향 함수 → 암호화는 가능하지만 복호화가 불가 SHA와 MD5가 대표적, 그중에서도 MD5를 주로 사용 → 유닉스의 암호 데이터는 MD5로 암호화 ◎ 특징 - 메시지 인증 코드에 대한 변형 - 메시지의 모든 비트들에 대한 함수 - 가변 메시지 M에 one-way Function H를 취해 정해진 크기의 Digest h를 만드는 과정 - 디지털서명, 인증 등의 서비스 제공 ◎ 제약 메시지 길이에 제약은 있겠지만 가히 무한하게 큰 수일 것. 하지만 해시함수를 적용하게 되면 고정길이로 줄어들기 때문에, 같은 digest를 갖는 메시지는 여러개 나올 수 밖에 없음. (해시함수) ◎ 해시함수의 요구조건 1. 어떤 크기의 메시지에도 적용 가능 2. H는 고정된 코드의 hash code (message digest) h를 생성 3. h는 어떤 M에 대해서도 계산하기 쉽다. 4. 주어진 h에 대해 H(M) = h인 M를 찾는 것이 계산적으로 불가능 (one way) 5. 어떤 주어진 블록 M에 대해, H(M') = H(M) 인 M과 M''이 서로 다른 것을 찾는 것이 계산적으로 불가능 6. H(M') = H(M) 인 서로 다른 M과 M'을 찾는 것이 계산적으로 불가능 (collision-free)                                       -    부가형 전자서명의 형태    - - 기밀성과 무결성을 동시에 만족하는 형태

Linux Server - samba 실습 : samba 사용자 등록 (smbpasswd -a)

이미지
● 서비스 시작  # service smb start ● 사용자 등록   ⊙ 명령어 : smbpasswd 유저명   ⊙ -a 옵션 : 기존 리눅스에 등록된 유저를 samba 유저로 등록    - 서비스를 시작한 후에 등록할 것. ● 실습   ⊙ 순서    1) webmaster 계정을 사용, samba 계정 등록 후 apache로 확인하기      - samba 서비스 시작        [root@175-localhost ~]# service smb start        SMB서비스를 시작 중:                                       [  OK  ]        NMB서비스를 시작 중:                                       [  OK  ]      - webmaster 계정을 samba에 등록        [root@175-localhost ~]# smbpasswd -a webmaster        New SMB password:        Retype new SMB password:     ...

4. 12 (목) - 암호 (비밀키 / 공개키 암호의 키분배센터 키 교환)

이미지
◎ 비밀키 분배의 어려움  ▷ 물리적인 방법으로의 키전달   - 링크 암호화의 방식    → 장비를 받아야 통신이 가능 (장비는 물리적으로 존재하기에)   - 단대단 암호화에서 적용 어려움  ▷ 이전의 키를 사용해 암호화된 새로운 키를 전송   - 링크 암호화 / 단대단 암호화 모두 적용 가능   - 공격자가 한 키를 알게 되면, 이후 모든 키가 노출  ▷ 신뢰할 수 있는 제 3자(키분배센터)를 통하여 키 분배   - 단대단 암호화에서 채택   - 사용자는 키분배센터와 유일한 키를 공유 ◎ KDC(키분배센터)를 이용한 비밀키 분배  ▷ Kerboros 방식 73-76p (1) - ID(A) : KDC에 등록된 A의 신원정보 (A가 보내는 요청) - 시스템마다 다른 설정  ex) MAC 주소, ID의 해쉬값 등등... - A, B : IP 주소 - SK : 세션 키 (2) -   : A의 마스터키 KA로 암호화 (세션키의 노출을 방지) - T : 타임스탬프 (현재성을 보장) (3) - B에게 A의 인증 (4) - A에게 B의 인증 : 이 시점에 A와 B는 상호인증 성공 → 이후 통신 종료시 세션키 폐기 → 5~10초간 A에서 통신이 없으면 B는 세션키를 폐기 → 그렇게 되면 KDC로부터 다시 세션키를 발급 ▷ 해석  KDC - 인증과 키 분배의 담당  - 1차 도메인 컨트롤러  응답자 B - 2차 도메인 컨트롤러, 실질적 서버  발신자 A - 클라이언트  KDC로 부터 키를 부여받기 위해서는 A, B가 KDC에 등록/가입 되어있어야 함   → A와 B는 사전에 KDC와 마스터키를 공유하고 있다. ◎ 공개키의 유효성  ▷ 공개키의 공개 발표   - 자신의 공개키를 다른 사용자에게 전송 ...

Linux Server - SSH 실습 : 사용자 제한, IP 제한(wrapper)

● 실습 1 - 사용자 제한 1) AllowUsers를 사용해 지정된 유저로 접속  → 지정된 유저는 접속 가능 2) AllowUsers를 사용해 지정되지 않은 그룹으로 접속  → 지정되지 않은 그룹은 접속 불가능 3) DenyUsers를 사용해 지정된 유저로 접속  → 지정된 유저는 접속 불가능 4) DenyUsers를 사용해 지정된 그룹으로 접속  → 지정되지 않은 그룹은 접속 가능 Server Host는 DNS-Server, Client Host는 Apache 이다. - /etc/ssh/sshd_config 파일에 허용 유저/그룹, 거부 유저/그룹 목록을 추가 [root@DNS-Server ~]# vi /etc/ssh/sshd_config ... (생략) AllowUsers client1 AllowGroups allowG DenyUsers client2 DenyGroups denyG → 입력 후 저장 - 실습에 필요한 유저와 그룹을 생성 [root@DNS-Server ~]# groupadd -g 501 allowG [root@DNS-Server ~]# groupadd -g 502 denyG [root@DNS-Server ~]# groupadd -g 503 anotherG [root@DNS-Server ~]# cat /etc/group ... (생략) allowG:x:501: denyG:x:502: anotherG:x:503: → 그룹을 생성 [root@DNS-Server ~]# useradd -g 501 -u 501 client1 [root@DNS-Server ~]# useradd -g 502 -u 502 client2 [root@DNS-Server ~]# useradd -g 503 -u 503 another [root@DNS-Server ~]# cat /etc/passwd ... (생략) client1:x:501:501::/home/clien...

대칭키 암호 / 공개키 암호 생각나는대로 정리

대칭키 - 통신 상호 간 하나의 동일한 키(대칭키)를 이용해 암호화 및 복호화 - Feistel 암호 알고리즘을 근간으로 다양한 알고리즘이 파생 장점 : 단순 환치/치환으로 알고리즘 수행이 빠름 다양한 알고리즘이 파생 단점 : 키의 분배와 관리가 어려움 키의 공유가 힘듦 / 사용자가 n일때 필요한 키의 개수 n(n-1)/2 개 책임 추적성(근원지 증명)이 없어 디지털서명이 불가능 공개키 - 각 사용자는 자신의 공개키와 개인키, 2개의 키를 생성 - 공개키는 네트워크에 공유하고, 개인키는 본인만이 보유 - 소인수분해 / 이산대수 문제를 사용 - 사용 : 암/복호화, 디지털 서명, 키 교환 - 장/단점 장점 : 근원지 증명이 가능 키의 관리와 분배가 용이 키의 관리 측면 → 사용자를 n이라 했을 때, 키의 개수가 불과 2n개만 생성 키의 분배 측면 → 키 교환의 기밀성 보장 - 키 공유가 필요 없음 단점 : 알고리즘 수행이 느림 - 암호화 : 공개키 사용 - 복호화 : 개인키 사용 - 서명 : 개인키를 사용해 암호화 - 인증 : 공개키를 사용해 복호화

Linux Server - FTP 실습 (2 / 2) : 사용자 제한 ( ftpuser / user_list )

● 실습 1 - 사용자 제한 설정 - ftpuser 파일과 user_list 파일을 이용하여 FTP 서버로 접속하는 사용자를 제한한다. - ftpuser 파일과 user_list 파일은 서로 동기화되지 않기 때문에, 각 파일의 설정을 조율하는 것이 중요하다. - ftpuser 파일은 목록에 있는 유저의 접근을 막는다. - user_list 역시 목록에 있는 유저의 접근을 막지만, 설정을 통해 목록에 있는 유저만을 접근 허용시킬 수 있다. (userlist_deny) - user_list 파일의 옵션   userlist_enable       userlist_deny                                            의미             yes                           yes                       user_list 파일에 등록된 사용자는 접속이 불허             yes                           no                      ...

Linux Server - DNS 실습 (1 / 6) : DNS 서버 구축

Linux Server - DNS Server 구축 "ast008.org" 2번째 아이피에 만들기 (192.168.10.237) ▶ 성공적으로 DNS Server가 구축되어 역할을 수행한다면, zone 파일에 생성한 도메인 명으로 ip 주소를 물었을때, 설정한 값의 ip 주소를 정상적으로 가져와야 한다. ◎ 진행 순서 1) DNS 서버를 설치한다. (yum install bind)   → bind-chroot 가 설치되었다면 삭제한다. 2) /etc/named.conf 파일을 생성한다. 3) zone 파일과 캐시 파일 확인 (없을 시 생성)   - named.ca : root 네임서버의 IP가 들어있는 파일 (없으면 다운로드)   - domain zone 파일 : 관리하는 도메인의 정보가 들어간 파일 (틀 있으면 좋음)   - localhost zone 파일 : 요즘은 잘 쓰이진 않는다. 스스로에게 질의하는..   - rev zone 파일 : 잘 쓰지 않는다. 4) /var/named에 저장된 파일의 소유자를 named.named로 변경, 권한을 775로 설정 (-R옵션)   →  이번 실습에서는 상관없겠지만, 나중에 slave 도메인서버를 사용중에 문제 발생할 가능성이 있음. 5) /etc/resolv.conf 수정   → DNS 주소를 변경하여야 함! 참고+)   /etc/resolv.conf   nameserver [Local DNS 서버 IP] - 질의할 local DNS 서버의 IP를 지정한다. - 최대한 가까운 DNS서버를 지정한다.   search [default 도메인] - 호스트명만을 입력하는 경우 자동으로 추가할 도메인(itclass.co.kr) 6) 실행   → /etc/rc.d/init.d/named start ● DNS Server 구축 1. 도메인네임이 존재하...

Linux Server - DNS 실습 (4 / 6) : Master/Slave Name Server 생성

이미지
● master - slave name server 생성  (allow-update/notify) ▶ master ns / slave ns 가 동기화 되어있다면 master의 zone파일 변경 내용이 slave에 자동으로 동기화 된다. ▶ allow-update로 묶여진 경우 - 초기 zone파일의 생성시 동기화 되거나, slave의 zone 파일이 삭제된 경우에만 동기화 된다. ▶ notify로 묶여진 경우 - Serial Number가 증감하면 그걸 탐지하여 자동으로 master의 정보를 동기화한다. ① slave zone파일의 동기화 확인 (allow-update) Master Server(적용 전) - named.conf - [root@dns-localhost ~]# cat /etc/named.conf options { directory "/var/named"; }; zone "." { type hint; file "named.ca"; }; zone "ast008.org" { type master; file "ast008.zone"; notify yes; allow-update{ 192.168.10.239; }; }; zone "ast008-2.org" { type master; file "ast008-2.zone"; }; - ast008.zone - [root@dns-localhost ~]# cat /var/named/ast008.zone $TTL    86400 @   IN   SOA  ns.ast008.org.   root.ns.ast008.org. (                                     1997022722...

Linux Server - Apache 실습 (2 / 4) : 도메인 명으로 Apache 서버 띄우기

이미지
◎ DNS 서버를 사용하여 도메인 명으로 Apache 서버 띄우기  구조 : Root DNS Server -TLD Server (ast08) - Apache Server □ 사전에 해야할 일     1) iptables 정지     # ntsysv             2) rc.local 시간 동기화   추가)    rdate -s time.bora.net    clock -w       3) apache 모듈 깔려있다면 확인      1) Root DNS Server 생성 (~.229)     - resolv.conf / named.conf / root.zone 파일 생 성     - root.zone             - #service named restart   2) TLD Server 생성 - ast08 ( ~.227      - resolv.conf / named.conf /...

Linux Server - FTP 실습 (1 / 2) : chroot 옵션 설정 / hosts.allow, hosts.deny 파일 설정

● Linux Server - FTP 실습 : chroot 옵션 ○ 조건 DNS Server (175) = FTP Server Apache (172) = Client ○ 순서    1. FTP 서버 구축    2. chroot 설정을 바꿔본다      2-1) chroot_local_user = YES / chroot_list_enable = YES      2-2) chroot_local_user = NO / chroot_list_enable = YES      2-3) chroot_local_user = YES / chroot_list_enable = NO      2-4) chroot_local_user = NO / chroot_list_enable = NO    3. 각 설정 별 클라이언트 접속을 통해 차이점을 알아보자 ○ 결과 예상    1) chroot_local_user = YES / chroot_list_enable = YES      → chroot list에 있는 계정은 chroot 적용하지 않음    2) chroot_local_user = NO / chroot_list_enable = YES      → chroot list에 있는 계정은 chroot 적용    3) chroot_local_user = YES / chroot_list_enable = NO      → 모든 사용자가 chroot 적용    4) chroot_local_user = NO / chroot_list_enable = NO      → 모두 상관없이 chroot 적용되지 않음 F...