728x90

[1,2교시 - 데이터베이스 보안]

/ 데이터 무결성 제약조건의 종류

1. 개체 무결성(Entity integrity)
- 하나의 테이블에 중복된 행이 존재하지 않도록 규정
- 기본키 제약이라고도 한다.
- Primary Key(PK) : 열에 유일한 값만 입력이 되어야 하고, NULL값을 허용하지 않는 것
- UNIQUE : 값의 중복을 허용하지 않는 제약, NULL도 중복되면 안된다.

2. 참조 무결성(Referential integrity)
- 행을 입력, 수정, 삭제할 때 연관되는 다른 테이블과의 데이터가 정확하게 유지되도록 규정
- FOREIGN KEY(외래키) : 다른 테이블의 데이터를 참조할 때 없는 값을 참조할 수 없도록 제약

3. 도메인 무결성(Domain integrity)
- 속성이 정의되어 있는 영역을 벗어나지 않도록 규정
- NOT NULL : 데이터를 입력받을때 NULL을 허용하지 않는것
- DEFAULT : 입력 값을 지정하지 않았을때 기본값으로 입력되도록 하는 것
- CHECK : 값의 범위를 정해 놓는 제약

4. Null 무결성(Null integrity)
- NOT NULL : 데이터를 입력받을때 NULL을 허용하지 않는것

5. 고유 무결성(Unique integrity)
- UNIQUE : 값의 중복을 허용하지 않는 제약

6. 키 무결성(Key integrity)

7. 관계 무결성(Relationship integrity)

 

/ 무결성 제약조건 실습

- pk, check 실습

create table lan (
    ano int primary key,
    addr varchar(20) check(addr in('Seoul', 'Jeju','Busan','Suwon'))
);

insert into lan(ano, addr) VALUES (1, 'Seoul'); -- 삽입됨
insert into lan(ano, addr) VALUES (2, 'bla bla'); --삽입안됨
insert into lan(ano, addr) VALUES (1, 'Busan'); --삽입안됨

 

- 외래키(Foreign key)

CREATE TABLE par(
    id number not null PRIMARY key,
    par_name varchar(20)
);

CREATE TABLE child(
    id number not null PRIMARY key,
    par_id number,
    child_name varchar(20),
    CONSTRAINT fk_pid foreign key(par_id) REFERENCES par(id)
);

insert into child (id, par_id, child_name) values (1,1,'자식1');  -- 생성안됨 : 부모 데이터가 없음
insert into par(id, par_name) values (1, '부모1');                -- 부모 데이터 생성
insert into child (id, par_id, child_name) values (1,1,'자식1');  -- 생성됨
insert into child (id, par_id, child_name) values (2,1,'자식2');  -- 생성됨
insert into child (id, par_id, child_name) values (3,2,'자식3');  -- 생성안됨 : 부모 데이터가 없음

 

/ 데이터베이스 보안 요구사항 정의 - 분석 프로세스 숙지

- 분석 과정 및 단계별 역활/산출물 숙지가 필요함
- 단계별로 진행함
- 이전 단계로 피드백 하는 과정을 가짐
- 사용자 요구 사항 분석의 정확성/명확성을 확보함
1. 요구사항 도출
- 데이터베이스의 대상 파악, 프로젝트 목표 숙지, 프로젝트의 범위를 기준으로 조사 범위를 결정
- 도출을 위해 업무관계자 인터뷰 및 외부자료 수집 및 분석등을 한다.
2. 요구사항 분석
- 도출된 요구사항의 명확성을 파악, 완전성 및 모호성 검증
- 불완전한 부분이 존재하면 요구사항 도출단계를 재수행
- 요구사항을 분류하여 통합 또는 분리하는 작업수행
3. 요구사항 기록
- 요구사항 목록 정리 및 관리자의 승인을 받아 확정
- 정리된 요구사항을 형식에 맞춰 문서화
- 프로젝트 종료 때까지 반영여부를 지속적으로 관리

 


[3,4,5교시 - 시스템 보안]

 

/ raid5 구성해보기

- 하드디스크를 1GB, 싱글로 3개 만든다.
- 부팅 시 새로 sdh, sdi, sdj가 확인된다.

- 부팅 후 'll /dev/sd*', 'fdisk -l | grep /dev/sd' 등으로 확인해본다.

ll /dev/sd*
fdisk -l | grep /dev/sd

- 각각의 'sdh, sdi, sdj'를 fdisk작업을 해준다.

[root@kyj ~]# fdisk /dev/sdh
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xd78be71d.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
First sector (2048-2097151, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): 
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@kyj ~]# fdisk /dev/sdi
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x3f42118a.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
First sector (2048-2097151, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): 
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): p

Disk /dev/sdi: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x3f42118a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdi1            2048     2097151     1047552   fd  Linux raid autodetect

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@kyj ~]# fdisk /dev/sdj
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xa18e714f.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
Partition number (1-4, default 1): 
First sector (2048-2097151, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): 
Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'

Command (m for help): p

Disk /dev/sdj: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa18e714f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdj1            2048     2097151     1047552   fd  Linux raid autodetect

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

- mdadm을 한다.
# mdadm -C /dev/md5 -l 5 -n 3 /dev/{sdh1,sdi1,sdj1}

- 확인1 

- 확인2 

- /dev/md5를 ext4로 포맷한다.
# mkfs -t ext4 /dev/md5

- 루트에 'raid5'폴더를 만들고 그 폴더에 마운트 시킨다.
# mkdir /raid5
# mount /dev/md5 /raid5

- 마운트되었는지 확인한다.
# df -h

- 리부팅 시 자동으로 마운트되도록 /etc/fstab에 데이터를 등록해준다.
# vi /etc/fstab
- /dev/md5    /raid5    ext4    defaults,nofail 0 0 ->내용 추가

- 리부팅
# reboot


/ raid 구성 전체적인 과정 정리
1. 하드디스크 추가
    1-1. 'll /dev/sd*'로 추가된 디스크 확인
2. 'fdisk /dev/sd블라블라'로 각각 파티셔닝(타입 코드는 fd로 입력)
3. mdadm -C /생성할/폴더 -l 레이드단계 -n 하드갯수 /dev/{하드, 목록, 들} : 레이드 구성
    3-1. mdadm -D /생성한/폴더 : 레이드 구성 확인
4. mkfs.ext4 /생성한/폴더 : ext4로 포멧
5. mkdir /마운트/폴더 : 마운트할 폴더 생성
6. mount /생성한/폴더 /마운트/폴더 : 레이드 구성한것을 새로만든 폴더에 마운트
7. vi /etc/fstab : 리부팅 시 자동 마운트 설정


/ 실습과제

1. RAID 구성

- 수행1 : LinearRaid, Raid0,를 구성하여라
    > 제출1 : 디스크 추가 및 fdisk 작업완료 후 ls -l /dev/sd* 
    > 제출2 : 마운트 작업 완료 후 df -h
    > 제출3 : 마운트 작업 완료 후 vi /etc/fstab

- 수행2 : Raid1, Raid5를 구성하여라
    > 제출1 : 디스크 추가하고 리부팅 후, ls -l /dev/sd* 
    > 제출2 : mdadm으로 md1, md5 구성 후, ls -l /dev/md* 
    > 제출3 : md1, md5에 대해 마운트 작업 후, df -h
    > 제출4 : mdadm --detail /md1
    > 제출5 : mdadm --detail /md5
    > 제출6 : cat /proc/mdstat
    > 제출7 : vi /etc/fstab


2. CentOS에 http 및 ssh 설치

- 수행1 : VMware를 사용하여 CentOS서버를 준비하고 root로 로그인한후에, Linux Server에 웹서버(httpd)를 설치하고, 서버상에서 적절한 명령어를 사용하여 Linux Server의 웹서비스 TCP 80포트, sshd서비스 tcp 22포트가 리스닝 가능상태임을 확인/캡쳐하여 제출하시오.

- 수행2 : Linux Server에 웹서버 인덱스페이지(index.html)을 구성하고, 호스트PC에서 Linux Server로 웹서버 페이지접근/오픈하시오.
필요한 경우 해당 서비스를 방화벽에서 오픈하고 접근/오픈된 웹서버페이지를 확인/캡쳐하여 제출하시오.(index.html 내용은 ‘This is Linux Server' 로 한다)

- 수행3 : 호스트PC에서 해당 Linux Server 에 ssh로 접속하되, putty등의 클라이언트 프로그램을 사용하고, 접속시 root계정 또는 centos계정을 사용하도록 한다.
호스트PC에서 ssh접속 완료후, 서버에서 # w, # who 명령어 구문 결과를 각각 확인/캡쳐하여 제출하시오.

- 수행4 : 클라이언트(호스트PC)에서 서버를 향해 putty 등의 프로그램을 사용하여 ssh로 클라이언트가 접속성공한 내역(ESTABLISHED)을 확인하기 위해서 
     # netstat -ant | grep LIST* 또는 
     # netstat -ant | grep ESTA* 또는
     # netstat -ant | grep 22 명령어 사용하여 확인/캡쳐하여 제출하시오.

 

 

 

728x90
728x90

[1,2교시 - 데이터베이스 보안]

/ 데이터베이스 보안 요구사항 정의


1. 데이터베이스 사용 용도를 분석한다.
    > 어떤 업무인지, 어떤 분야에서 사용하는지, 어떤 사용자들이 주로 사용하는지..


2. 데이터베이스 보안 설계 목적필요성을 분석한다.
    > 데이터베이스 보안 목적 분석
    > 데이터베이스 보안 필요성 분석


3. 데이터 무결성 규칙의 종류를 활용하여 분석한다.
    > 도메인 무결성 규칙 분석
    > 실체 무결성 규칙 분석
    > 참조 무결성 규칙 분석
    > 트리거 분석


4. 데이터베이스 보안 요구사항을 분석한다.
    > 권한을 부여받은 사용자만 접근을 허용하고 있는가?
    > 추론 방지가 요구되고 있는가?
    > 데이터베이스의 무결성이 보장되도록 하고 있는가?
    > 데이터의 논리적 일관성이 보장되고 있는가?
    > 감사 기능이 제공되고 있는가?
    > 사용자 인증이 적정하게 이루어지고 있는가?
    > 시스템 간 데이터의 전송 제한이 이루어지고 있는가?

 

[3,4,5교시 - 시스템 보안]

/ RAID1+0
- RAID1 + RAID0
- 신뢰성(안정성)과 성능(속도)이 동시에 뛰어난 방법

/ nslookup과 dig차이점
- nslookup www.naver.com   164.124.101.2
- dig @164.124.101.2 www.naver.com
- 으로 명령어 뒤의 순서가 반대이다.

/ Linear RAID 구축 실습
- CentOS&_101 탭 우클릭 > 세팅 > Add > 하드디스크 넥스트 > 넥스트 > 크리에이트 어쩌고 넥스트 >
   > 2GB, 싱글 넥스트 > 이름은 'test2.vmdk'로 설정 > 피니쉬 > ok > 서버 reboot
- 부팅할때 sdc가 확인된다.

- ll /dev/sd*로도 새로 추가한 하드디스크를 확인할 수 있다.

- fdisk를 raid용으로 파티셔닝해야 한다.
- 먼저 'fdisk -l'로 하드디스크를 확인한다.

- /dev밑에 sda, sdb, sdc가 확인이 되고 sdb와 sdc를 리니어 raid로 만들것이다.
- '/dev/sdb'를 새로 파티셔닝 한다. (이때 이전에 /dev/sdb1로 포맷하였더라도 '/dev/sdb'로 진행한다.)

- L을 누르면 모든 코드가 나온다.

- 확인

- 나오기

- 'fdisk -l /dev/sdb'로 확인해본다.

- sdc도 진행한다.
- 이 친구는 새로만들어야하니까 n으로 간다.

- 이후 t로 들어간 후 fd로 설정한다.

- w로 저장하고 나오기

- 'll /dev/sd*'로 확인할 수 있다.

- 'fdisk -l | grep fd'로도 확인가능하다.

- mdadm 사용하기
# mdadm --create /dev/md9 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1
- --create : 생성
- --level : 리니어 단계 성정
- --raid-devices 하드 하드 : 합칠 하드디스크

- mdadm --detail /dev/md9로 확인

- 'cat /proc/mdstat'으로도 확인가능하다.

- 이제 md9에 대해서 mkfs.ext4를 한다.

- 이제 폴더를 새로 만들어서 마운트를 한다.
# mkdir /linear
# mount /dev/md9 /linear
- 그리고 이제 컴퓨터를 켤때 언제든지 /dev/md9 장치가 (/linear) 디렉터리에 마운트되어 있도록 설정/etc/fstab의 파일내용을 수정해준다.

- 저장 후 리부팅 해준다.
- 이제 리부팅해도 바로 새로운 하드디스크를 리니어 raid로 인식한다.

- 이외 명령어 옵션
# mdadm --stop /dev/md9
# mdadm --run /dev/md9
# mdadm --detail /dev/md9


/ raid0 실습
- 새로 또 하드를 2개 추가한다. 1기가 싱글로

- 먼저 ll로 확인한다.

- sdd, sde를 fdisk한다.
- raid로 진행하기 위해 헥사코드를 fd로 해서 진행한다.

- sde fdisk

- 다시 'll /dev/sd*'로 확인해본다.

- 'fdisk -l | grep fd'로도 확인해본다.

- mdadm으로 진행한다.
# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1

- /dev에 md0으로 잘 생성되었는지 확인한다.

- mdadm --detail /dev/md0

- 이제 폴더를 만들고 마운트를 해보면 에러가 난다.
- mkfs.ext4를 하지 않아서 나는 에러다.

- md0를 mkfs.ext4를 해준다.

- 이제 마운트가 된다.

- 확인

- 이제 /etc/fstab의 파일 내용을 수정해준다.

 

/ RAID1 실습
- 하드디스크를 1기가 싱글로 2개를 더 붙인다.

- 리부팅 할때 새로운 하드디스크가 확인된다.

- 'll /dev/sd*'에서도 확인해본다.

- 두개의 하드디스크도 fdisk작업을 한다.

- 이제 mdadm작업을 한다.
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1

- --detail로 확인해본다.

- 마운트를 하기 전에 mkfs.ext4로 포맷을 한다.
# mkfs.ext4 /dev/md1

- 마운트를 하고 'df -h'를 하면 raid1로 구성한 하드디스크가 확인된다.
- RAID1로 구성하였기때문에 디스크 한개 만큼의 용량만 확인이 된다.

- 이것도 재부팅 시 자동으로 인식하기 위해 '/etc/fstab'파일을 수정해준다.

 

- 지금까지의 정보를 cat으로 확인해본다.
# cat /proc/mdstat

 

 

728x90
728x90

[1,2교시 - 데이터베이스 보안]

/ 다른 계정에 있는 테이블 복사해오기
- dba권한이 필요하다.
# grant dba  to kimjh9;
- 테이블 복사 쿼리
# create table EMPLOYEES as select * from hr.EMPLOYEES;

/ CMD나 터미널에서 쿼리 결과를 볼때 불편할때
# set pages 4000             -- 데이터가 화면에 표시되는 라인 수 (몇줄)
# set lines 5000               -- 데이터가 가로로 표시되는 라인 수
# col 컬럼명 for a숫자 (보통 10정도씀)   -- 한 데이터 컬럼이 화면에 표시되는 사이즈
# col 컬럼명 for 사이즈(a10) heading "바꿀컬럼명"

[3,4,5교시 - 시스템 보안]

/ fdisk로 확인해보기

 

/ 파일 시스템(File system)
- 파일이나 디렉토리를 효과적으로 다루기 위한 구조
- 윈도우 : fat16, fat32, fat64, NTFS, ReFS
* fat : File Allocation Table
* NTFS : New 테크놀로지 File System
- 최근에 NTFS, ReFS가 나왔는데 ReFS가 별로 성능이 좋지 못해 NTFS를 주로 쓴다.

- 리눅스 : ext(확장의 개념을 가지고 있다.), ext2, ext3, ext4(지금 실습하는 것), xfs(루트 쪽)
* journaling : 파일 시스템내에서 백업/에러/엑세스 관련된 정보를 이 기술을 사용해서 보관을 한다.
                  ext3이상부터 적용된다.

/ 파티션 해보기
# fdisk /dev/sdb
- 잘 모르니까 m을 눌러보자

m을 누른후..

- 파티셔닝을 해야하니 n을 누른다.
- 새로 추가한 하드를 디폴트로 p가 선택되어 있어서 그냥 엔터를 누른다.

- 이번에는 또 번호를 뭘로 줄꺼냐인데.. 기본 1번이 되어 있으므로 또 엔터


- 섹터 부분도 그냥 다 넘어간다.

- p를 누르면 적용된것을 확인할 수 있다.

- w를 누르면 작업에서 빠져나온다.

- 다시 확인해본다.
- 이때 맨 앞에 b가 들어가있는데 블록이라는 뜻이다.

- 확인2

 

- 마운트 등 다른 작업을 안해서 df -h에는 아직 안보인다.

 

/ 메모
- IDE는 2개까지만 연결가능하고, SCSI는 16개까지 연결 가능하다.
- 하드디스크를 1개 장착하는 흐름도는
'물리적인 장착 > fdisk > /dev/sdb1 확인 > mkfs.ext4 > /dev/sdb1 확인 > mount > /mydata > /etc/fstab > 리부팅' 이다.

- mkfs.ext4를 한다.
# mkfs.ext4 /dev/sdb1
- Creating journal이 된다. (밑에서 2번째 줄)

 

/ 파일 시스템 구조

 

# df -hi
- i 옵션은 inode를 확인하기 위한 옵션이다.

 

- / 에다가 tdir 폴더를 만든다.
# mkdir /tdir

- 마운트를 한다.
# mount /dev/sdb1 /tdir

- 확인
# df -h

 

/ mkfs.ext4
- 방금 mkfs.ext4를 이용해서 저널링을 만들었다.
# mkfs -t etx4 /dev/sdb1  == mkfs.ext4 /dev/sdb1 명령어가 같다.
- -t로 만들고 싶은 형식을 지정할 수 있다. (ext3, ext4 등등)
- mke2fs : ext2, ext3, ext4 파일 시스템을 생성할때 사용하는 명령어
            : 예외적으로 ext4는 따로 -T옵션을 준다. ex) mke2fs -T ext4 /dev/sdb1
- mke2fs의 -t 옵션 : 뒤에 붙는 형식으로 주겠다. ex) mke2fs -t ext2
- mke2fs의 -j 옵션 : 저널링을 주는 옵션. 뒤에 ext3만 줄 수 있다. ex) mke2fs -j ext3

/ 마운트
- mount 논리장치 물리장치
# mount /dev/sdb1 /tdir

/ 마운트 정보
# mount -l
- 맨밑에 아래와 같은 내용이 나온다.
- 'mount -l'의 결과 화면은 시험에 자주 나오니 기억해두자. (장치 on 위치 type 형태)

# mount -l | grep /tdir
- grep도 가능하다.

 

/ 연결을 끊을 때
- 내가 마운트할 디렉토리안에 들어가 있거나 사용하고 있으면 언마운트 할 수 없다.

- umount명령어를 이용하여 언마운트할 수 있다.
- 경로명, 위치명 둘다 가능하다.
# umount /tdir
# umount /dev/sdb1


- 언마운트 확인
# df -h
# mount -l | grep /tdir

 

/ 마운트된 정보가 저장되는 곳
- '/etc/fstab'파일 : 부팅할때 명시된 장치들을 확인한다.
# vi /etc/fstab

- 편집한다.
> 디스크장치명 ; 경로 ; fs형식 ; defaults(기본속성), nofail(구문에 에러가 있어서 문제가 있더라도 패일 발생하지마) ; 0 0
- 앞숫자 : 덤프(1로 되어있으면 이슈 등 을 로그로 남긴다),
- 뒷숫자 :  부팅할때 깨졌는지 정상인지 아닌지 파일 시스템 체크. 1이면 체크

- cat으로 작성한 내용을 확인한다.

- 일시적으로 마운트가 깨졌을때 fstab에 있는 내용을 자동으로 가져올때
# mount -a

- fstab에 오류가 나면 init 1모드에 진입하게 된다.

 

# blkid

 

# nmcli c

 

/ fstab
- 장치명 ; 경로 ; fs형식 ; 속성옵션 ; 0 0
- /dev/sdb1  /tdir  ext4  defaults,nofail  0 0
- 속성 옵션 : 디스크용량 할당에 대한 옵션을 적는다. 
- 디스크 쿼터(quota) : 사용자들에게 용량을 제한해서 제공하는 기능
    > usrquota : v1, 유저에게 quota를 적용
    > grpquota : v1, 그룹대상에게 quota를 적용
    > usrjquota : v2, 유저에게 quota를 적용
    > grpjquota 대신 jqfmt사용 : v2, 그룹대상에게 quota를 적용
    > ex) /dev/sdb1   /tdir   ext4   defaults,nofail,usrquota,grpquota   0 0
    > ex) /dev/sdb1   /tdir   ext4   defaults,nofail,usrjquota=aquota.user,jqfmt=vfs   0 0
    > edquota : 사용자 또는 그룹에 쿼터를 설정할 때 사용하는 명령어
    > quotacheck : 사용자별 디렉토리에 생성한 쿼터 설정파일을 체크할때
    > quota : 로그인 된 사용자의 쿼터 설정 정보를 확인
    > repquota : /home처럼 시스템에 설정된, 시스템 단위의 설정 정보를 확인
- aquota : 사용자가 기록을 하게끔 하는 명령어

 

/ RAID(Redundant Array of Inexpensive Disks)
- 윈도우, 리눅스 똑같다.
- 여러개의 디스크를 하나의 디스크처럼 사용함
- 비용 절감 + 신뢰성 향상 + 성능 향상의 효과를 낸다.
- 하드웨어 RAID, 소프트웨어 RAID가 있고 실무에서는 하드웨어 RAID가 많이 쓰인다.
- 실습은 소프트웨어 RAID를 할것임.
- 레이스 2~4는 써보니까 너무 안 좋아서 안 씀.
- Linear RAID : 쭉쭉쭉 계속 붙여서 쓰는거. 용량 상관없이 확장 가능. 앞에 붙인 디스크에 문제가 생기면 싹 다 날라감
- RAID0 : 모든 디스크에 동시저장, 가장빠름, 10G랑 100G랑 묶으면 20G가 잡힘(10G의 10, 100G의 10),
             근데 디스크 하나 나가면 짝 다나감. 똑같은 컨텐츠가 많은 회사는 RAID0를 쓰기도 한다.
- RAID1 : 미러링, 두개를 묶으면 2분의1용량만 사용할 수 있음.
             한쪽 디스크가 고장나도 복원가능(Fail over). 공간효율은 안 좋지만 중요한 데이터를 저장하기에 적절하다.
- RAID5 : 3개부터 묶을 수 있음, 모든 디스크에 동일하게 저장됨.
             3개를 묶으면 3분의 2만 사용가능하다(n개면 n-1개만 사용가능).
             오류가 발생하면 '패리티'라는것을 이용해서 데이터를 복구
- RAID6 : 4개부터 묶음 수 있음. 패리티 사용. 4개중에 2개가 나가도 사용가능(n-2)

 

 

 

 

 

728x90
728x90

[1,2교시 - 데이터베이스 보안]

- 실행창에서 cmd를 검색창에 입력 후 쉬프트+컨트롤+엔터를 누르면 관리자로 실행된다.

- 접속하면 데이터 베이스 이름을 확인할 수 있다.

- sys계정은 관리자 계정이라 무엇이든 할 수 있고 이외에는 사용자 계정이다.

 

/ 계정 생성
> create user 계정이름 identified by 비밀번호;

- 생성된 사용자 확인

 

/ 권한주기
- 권한은 SYS 계정에서만 줄 수 있다.
- 접속권한, 테이블 생성권한 주기
> grant connect, resource to 계정;

 

- 그러면 이제 cmd를 열어서 방금 내가 만든 계정으로 바로 접속이 가능하다.

 

- 테이블이 몇개 있는지 확인

SYS계정 확인
방금 만든 사용자 계정 확인

 

- 테이블 select 조회시 데이터가 끊어져서 나올때

- 'set pages 4000' 과 'set lines 5000'명령어를 입력하면 이쁘게 잘 나온다.

 

- 중요도 : 접근제어, 암호화, 작업결재, 취약점
- DBMS 취약점 분석 평가 항목은 아래와 같다.

 

- 테이블 생성

CREATE TABLE emp (
    empno NUMBER(4) NOT NULL,
    ename VARCHAR2(10),
    job VARCHAR2(9),
    mgr NUMBER(4),
    hiredate DATE,
    sal NUMBER(7,2),
    comm NUMBER(7,2),
    deptno NUMBER(2)
);



- 새로 만든 emp테이블에서 empno를 프라임키로 만들기

alter table emp add constraint emp_pk primary key(empno);

 

- 테이블에 데이터 넣기

insert into 테이블이름 values(데이터1, 데이터2, 데이터3 등등);

- 데이터 확인

 

- cmd에서 하기 힘드니 SQL Developer를 이용해본다.
- 실행 후 이름은 system 비밀번호는 oracle로 해서 테스트하고 접속한다.

 

 

 

[3,4,5교시 - 시스템 보안]

/ 클라이언트용 리눅스 이미지 추가
- lvm : 로지컬 어쩌고 저쩌고 인데 우리는 싱글이라서 표준 파티션을 사용한다.(lvm이 무엇인지 검색해보기)
- swap추가하면 sda1이 보이는데 왜 그런것인지도 자세히 검색해보기
- 그놈 데스크탐은 지놈응용, 개발용 도구 선택하기
- 네트워크는 켬으로 선택
- 네트워크 설정할때 하단의 호스트 이름에 'client'로 설정
- kdump사용안함으로 설정

- fdisk -l : 현재 파티션 정보(목록)
- 20Gb로 했는데 21기가로 보이는 이유 : 논리적으로 보이기 때문


- fdisk /dev/sdb : sdb를 파티셔닝..

- 디스크를 추가하면 sd뒤에 알파벳이 순서대로 붙어서 sda, sdb, sdc.. 순으로 이름이 지어진다.
- 이때 sda를 두개로 파티셔닝 하면 sda1, sda2 가 되고
- sdb를 파티셔닝을 안하고 한개로 쓰겠다 하면 sdb1이 되는 식이다.

# df -h : 서버의 사용량 가용량을 보는 명령어. -h 옵션은 사람이 쉽게 볼 수 있게 보여줘라

 

 

/ 관리자 권한
- 관리자 권한 : su -   => root로 로그인
- su -c "명령어" : 임시로 잠깐 명령어를 쓸때만 root권한을 빌려씀. 권한만 빌려서 쓰고 로그인 변경X

/ 일반 사용자에게 임시 관리자 권한을 주기
# sudo
- sudo를 쓰게 하려면 따로 설정을 해줘야 한다.
- 관리자로 들어간 후 'vi /etc/sudoers'를 수정해준다.

/ vi 편집기에서 줄 복사하기
- yy를 눌러서 줄을 버퍼에 복사한 후 원하는 줄에 가서 p를 누르면 해당줄이 복사된다.

 

- 네트워크 재시작

 

- sudo 를 한경우 특정 시간동안 sudo를 한것이 적용되어서 한동안은 root권한의 작업을 할때 sudo를 할때 비밀번호를 묻지 않는다.

/ 편집기
- 텍스트 기반 편집기 : vi, emac(리처드 스톨만이 제작함), pico
- 그래픽 기반 편집기 : gedit

Q) X윈도우(init 5)환경에서만 사용가능한 편집기가 아닌 것은?
1. gedit
2. nano
3. xemacs
4. gvim

- 구분하기 -> GNOME(일반 그래픽 환경) / KDE(고급스러운 그래픽 환경)

/ 런레벨
- init 0 : 시스템 종료
- init 1 : 유지보수 모드, 단독
- init 2 : 거의 사용X, (NFS가 지원이 안되는 다중(멀티)유저 모드)
- init 3 : CLI모드(명령어 모드), 다중 모드, NFS 지원가능
- init 4 : 거의 사용X
- init 5 : X윈도우 기반 (그래픽 모드), 다중 모드, NFS 지원가능
- init 6 : 리부팅
* NFS : 네트워크 파일 시스템

/ cli에서 명령어를 백그라운드로 실행시키려 할때 맨 끝에 &를 붙여준다.

gedit /etc/hostname &

 

/ 백그라운드로 프로그램을 돌리는 법
# vi /etc/hostname &
- 또는 vi에 들어가 있는 상태에서 컨트롤+z를 누르면 잠깐 뒤로 넘긴다.

/ 백그라운드로 돌아가는 프로그램들 확인하는 법
# jobs

/ 백그라운드로 들어간 작업을 꺼내는 법
- foreground : fg %작업번호

 

/ GNOME 기반 응용 프로그램
- nautilus : GUI 시스템 파일 관리자 -> nemo
- mutter : 디스플레이 제어(매니저)
- metacity : GNOME 2.x 윈도우 매니저
- enlightenment : 초기 사용 윈도우 매니저
- GTK+ : GNOME 관련 라이브러리(OS : GimpToolkit)
- GimpToolkit : 이미지 프로그램(그림판, 포토샵)
- totem : 미디어플레이어
- evolution : 오피스 프로그램

/ KDE 기반 응용 프로그램
- konqueror : 만능 파일 관리자
- kwin : KDE 2.x 윈도 매니저
- Qt : KDE 관련 라이브러리(C++)

 

/ 1번 서버에 하드디스크 추가하기
- 첫번째 서버에 우클릭 > 세팅 > +클릭 > 하드디스크 선택 다음 > SCSI 선택 다음 > 크리에이드 어쩌고 선택 다음 > 1기가, 싱글> 이름 적당히 짓고 피니쉬 > 세팅 화면에서 ok를 꼭 누를것
* SCSI : 스몰 컴퓨터 시스템 인터페이스

- 아직은 fdisk를 해도 안보인다. (리부팅을 해야 함)

 

- 리부팅을 하니 보인다.
- 아직 파티셔닝을 하지 않아서 sdb1 같은 식으로 보이지 않고 sdb로만 보인다.

- 아직 파티셔닝을 하지 않아서 'df -h'로는 보이지 않는다.

 

내일 'fdisk /dev/sdb', 'mkfs.ext4 /dev/sdb1', 'mount' 등을 써볼것이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

[1,2교시 데이터베이스]

- 오라클 설치 및 실습
- 비밀번호는 oracle로 통일한다.

 

SQL > select * from all_users;

SQL > show user;

 

/ hr계정의 비밀번호를 변경한다.
SQL> alter user hr identified by hr;

 

/ hr로 접속하기
- 바로 들어가면 막혀있다.
- 락이 걸리면 아무 계정으로도 접속되어 있지 않다
- 다시 sysdba로 접속 한 후 account unlock으로 hr 계정의 락을 푼다.
- conn 계정/비번 으로 hr계정에 로그인 해본다.
- 성공

 

- 데이터베이스 들 목록의 구조
- NAME이 테이블 이름이다.

 

- 쓰레드(?)
- 내용 중 인스턴스(INSTANCE)가 테이블 이름이다.

 

 

[3,4,5교시 시스템]

/ ssh 설치했던 config파일 찾기
- yum으로 설치했던 이름 찾고
# yum list installed | grep ssh

- openssh-server로 설치했었으니까 rpm -qc에서 openssh-server로 찾기
# rpm -qc openssh-server

 

- 텔넷 설정

service telnet #/etc/services
{
    disable = no                                    # 해당 서비스 사용?
    socket_type = stream                         # steam : TCP소켓, dgram : UDP소켓
    protocol = tcp                                  # 프로토콜
    wait = no                                        # 연결할때 대기시간 제공 여부(다른 접속을 할 수 있게 해주겠느냐)
    user = root                                      # 서비스를 시작하는 권한 사용자
    server = /usr/sbin/in.telnetd                # 서비스를 처리하는 프로그램 위치
    log_on_failure += USERID                   # USERID를 포함해서 로그인실패 정보를 로그에 쌓겠다.
    access_times = 07:30-18:30                 # 접속이 가능한 시간
    cps = 50 10                                    # Connect Per Second.
                                                        # 앞숫자 : 1초에 허용되는 연결수.
                                                        # 뒤숫자 : 앞숫자를 초과하면 연결거부하는 시간(초)
    instance = 50                                   # 서버에 접근/접속할 수 있는 최대 클라이언트 수
    per_source = 2                                 # 출발지(소스)마다 연결은 최대 2개만 허용
    only_from = 10.10.10.10 192.168.111.1  # 접속할 수 있는 (소스)아이피 또는 대역 제한(띄어쓰기 구분)
}

 

/ 명령어 모드 서버 설치 및 클라이언트용 서버 설치

- new > 티피컬 > 세번째 넥스트 > 리눅스 센트os > 이름을 CentOS 7_102, 위치는 "D:\CentOS\CentOS7_102"
> 20Gb 싱글 > 피니쉬

- 102의 에디트 > 프린트, 사운드, usb 삭제 > cd/dvd선택 > Use ISO image file > centos ios파일 로드 > ok

- 102 파워 on!

- 한국어 > 키보드 추가 영어 미국 > 소프트웨어 선택 최소설치 > 설치대상 파티션을 설치합니다. > 표준 파티션 > +클릭 > swap을 2048, /만 선택해서 추가 > 네트워크는 켬 > 설치 시작

- 비밀번호는 password , 사용자는 centos/centos

- 호스트 네임 변경할때 꼭 /etc/hostname을 vi로 변경하지 않아도 된다.
# hoswnamectl set-hostname 호스트이름

 

- se리눅스 활성화 확인
# sestatus

- se리눅스 비활성화 하기
# vi /etc/sysconfig/selinux
- SELINUX를 disabled로 변경

 

- nmtui > Edit a connection > 첫번째 엔터

 

- ifconfig와 nslookup이 실행이 안된다. 설치가 안되어 있기 때문
- yum으로 설치하기
- 이미지에서 오타났는데 bind-utils이다.
- systemctl restart network로 재시작하고 ifconfig를 하면 아이피가 확인된다.

 

- 여까지 하고 리부트(reboot)

- VMware에서 여기까지 진행된 내용을 스냅샷을 찍는다.
- 시계에 플러스있는모양 클릭하여 저장한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

/ 이름을 물어보면 정보를 알려줌
# dig www.naver.com  
- 자세하게 알려줌 

/ 네트워크 설정하면서 우리가 집어넣은 네임서버 정보를 볼 수 있다.
# cat /etc/resolv.conf

 

/ 파이프 more, 파이프 less
# rpm -ql httpd | more -> 스페이스바로 아래아래로 볼 수 있다.
# rpm -ql httpd | less -> 화살표로 왔다갔다 볼 수 있다.
- less를 빠져나올때는 q를 누르면 된다.
- less는 한줄씩 볼때는 좋은데 양이 또 너무 많으면 보기 힘들다.
- more은 윗 페이지를 다시 볼 수 없다.

 

# yum info httpd | head -10
- | -10 -> 헤드에서 10줄만 보여줘

# yum search httpd | head -10

- info와 search의 차이, 각 결과화면을 기억하기

 

# yum -y update httpd
- 업데이트 하기
- 되어 있는 경우 할것이 없다고 나옴

# yum -y install httpd
- 이미 설치되어있는 경우 할것이 없다고 나옴

/ 서비스 활성화, 비활성화 시키기
# systemctl disable httpd
# systemctl enable httpd
- ln : 링크
- -s : 소프트 링크

 

/ 링크
- ln : link
- ln -s : soft link. 유연성x. 링크 원본이 삭제되어도 목적 파일이 삭제되지 않음
- ln    : hard link. 유연성x. 링크 원본이 삭제되면 목적파일링크가 삭제된다.

/ 방화벽 정책
- All Deny : 일단 다 막고 시작함. 특정포트, 특정 서비스만 오픈, 중급이상 관리자들이 많이 사용
- All Open : 일단 다 열고 시작함. 필요한 포트와 서비스만 차단, 초급관리자들이 많이 사용
* 우리꺼는 들어올때는 All Deny, 나가는것은 All Open이다.

 

여기까지 복습
=================================================================

/ ssh
- Secure Shell의 약자. 22/tcp 암호화

/ telnet, telnetd : 23/tcp 암호화
- 텔넷은 보안이 취약하여 root로 바로 접속할 수 없다.

/ 텔넷 yum 확인
# yum list telnet*
- telnet : 클라이언트용
- telnet-server : 서버용

 

/ 설치하기
# yum install -y telnet telnet-server

 

/ 설치 후 확인
# yum list telnet*

 

/ 텔넷 시스템 시작
# systemctl start telnet.socket
# systemctl enable telnet.socket

/ 텔넷 상태 확인
# systemctl status telnet.socket

 

/ 프로세스 찾는 과정...
- ps -ef에서 telnet으로 검색이 안되는데 이유는 systemd로 통합이 되어서 그렇다고..
# ps -ef | grep systemd 로 검색해야 한다.

 

/ 텔넷 접속용 계정 따로 만들기 실습
# useradd teluser
- shadow에서 조회했을때 !!으로 되어있으면 teluser로 로그인할 수 없는 상태이다.
* *이어도 패스워드가 잠겨있는 상태이나 다른 인증방식으로 로그인할 수 있는 상태이다.

- 비밀번호를 만들어 주면 로그인이 가능해진다.
# passwd teluser
- 패스워드 부분에 $6$는 비밀번호 암호화 알고리즘, 두번째 $블라블라$는 솔팅 암호화 난수이다.
- 끝 부분의 7은 비밀번호 만료일수일다. (6번째 순서)
- 비어있는 7번째는 사용자 계정이 만료가 되는 날짜를 임의로 넣을 수 있다.
- 비어있는 8번째는 사용자 계정이 만료가 되려면 며칠이 남았는지 표시된다.(만료일수)

 

/ 사용자 관련 설정 파일
# vi /etc/login.defs
- 요 부분이 중요하다. 외워둘것

 

/ 사용자를 추가할때 홈 디렉토리를 어따가 둘지, 쉘을 뭘 쓸지 등등을 정한다.

 

/ 배시쉘을 쓰는 계정의 프로파일에 대한 정보. 배시쉘에 대한 일반적인 정보가 들어있는 디렉토리이다.
# ls -al /etc/skel

 

/ 사용자를 생성할때 홈디렉토리를 설정하고 싶다면 -d 옵션을 준다.
# useradd -d 경로 사용자이름
ex) # useradd -d /root/mydir teluser2

/ 사용자를 지울때 홈 디렉토리까지 지우려면
# userdel -r 사용자이름
ex) # userdel -r teluser2

/ 사용자를 만들면서 비밀번호를 같이 적용하려면 -p옵션을 준다.
# useradd -p 비밀번호 사용자이름
ex) # useradd -p 1234 teluser3
- 단, 이렇게 하면 shadow에 평문으로 저장이 된다.

 

/ 이전 리눅스의 /etc/passwd에 있는 비밀번호를 /etc/shadow에 옮기려면
- /etc/passwd pwconv -> /etc/shadow를 하면 된다. (지금 리눅스에서 하면 이상해짐)
- 되돌리는 것은 pwunconv를 하면 된다.

 

/ 터미널 접속하기
* 터미널에서는 사용자 계정일 경우 $로 표시된다.

 

/ 접속한 유저들 확인해보기
# who

 

/ 텔넷 나가기
# exit

/ 방화벽에 23번 포트 허용해주기

 

/ 외부 pc에서 cmd로 텔넷을 사용해보기
- 맨처음에는 텔넷을 사용할 수 없으므로 활성화 해야한다.

- 제어판 > 프로그램 > Windows 기능 켜기/끄기 > 텔넷 클라이언트 체크

- 이제 접속이 될것이다.

- who로 확인해보면 접속한 유저 목록이 확인된다.

- 텔넷으로 tcping처럼 확인할 수도 있다.
ex) telnet www.naver.com 22일때 빈화면이 나오면 해당 포트가 열려있는 것이다.

- putty로 텔넷 접속을 해볼 수도 있다.

* 가상 터미널 서버 pts(pseudo terminal server)

- w명령어와 who명령어의 결과 화면을 기억해두자.
- w는 쉘 정보는 보이는데 who는 안나온다.

- w, who 는 /ver/run/utmp에서 보이는 파일이다.
- /var/log/btmp는 lastb인데, 실패한 로그인 이력을 저장한다.
- /var/log/wtmp는 last인데, 로그인/로그아웃 리부팅
- /var/log/lastlog는 lastlog인데, 마지막 로그인이력

/ 관리자로 사용자를 바꾸기
# su - root
- su를 할때 -를 어지간하면 쓰는것을 추천 : 대시를 쓰지 않으면 루트 사용자의 옵션을 가져가지 않는다.

/ sudo
- 관리자 계정이 아닐때 sudo를 붙이면 관리자 계정으로 실행시키게 된다.(패스워드는 입력해야 함)

- 텔넷은 은퇴하는 프로그램이다...

 

/ ssh
- 공개키 인증방식과 관련하여 접속할것인데 접속할것이냐? 예

/ 쁘띠로 접속 후 서버에서 접속된 내용을 확인하기

 

- 또는 /var/log의 secure파일을 확인해볼 수 있다.
- 로그인 인증 내역이 남는다.
# cat /var/log/secure

 

/ ssh의 22번 포트 변경하기
- ssh의 22번 포트는 너무 유명한 포트라 접속하는 22번 포트를 변경할 수도 있다.
- 컨피그 파일 확인하기
# rpm -qc openssh-server
- 에서 /etc/ssh/sshd_config가 설정파일이다.

- sshd_config파일의 17번째 라인을 주석해제하고 포트를 변경한 후,ㅊㅇ 
- #systemctl restart sshd로 재시작을 해준다.
- 어지간하면 포트는 1023포트 이상으로 적용해준다.
- 확인은 # netstat -antp | grep sshd로 하면 된다.
- 근데 방화벽이 막혀있어서 밖에서 바로 접속이 안된다..
- 2220 방화벽을 추가해주자

 

/ 외부에서 루트가 로그인 하지 못하게 하기
- PermitRootLogin
- 아까의 /etc/ssh/sshd_config에서 48행의 PermitRootLogin을 no로 변경해준다.

# vi /etc/services
- 46, 47행의 포트번호를 변경해준다.

- 그리고 # systemctl restart sshd로 서비스를 재시작 해준다.

- 이후 쁘띠로 centos로 접속하여 'su -' 관리자 계정으로 스위치 유저를 하더라도 접속했던 계정은 그대로 centos이다.

 

- 누가 'se -'명령어를 서서 관리자 계정으로 스위치 유저를 했는지도 알 수 있다.
# cat /var/log/secure

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

 

각 항목이 무엇을 뜻하는지 확인해보기

 

패킷 트레이서 문제 풀어보기

 

 

네트워크(구간) 호스트(장치명) IP주소
100.100.100.0/24
(R1~ISP 구간)
R1 [S0/0/0] 100.100.100.2
ISP [S0/0/0] 100.100.100.50
182.16.0.0/16
(VLAN 10 Sales)
R1 [F0/0.10] 해당 서브넷에서 호스트에 할당 가능한 임의의 IP 주소
Sales_PC 182.16.0.1
182.30.0.0/16
(VLAN 10 Sales)
R1 [F0/0.20] 해당 서브넷에서 호스트에 할당 가능한 임의의 IP 주소
Manage_PC 182.30.0.1
S1 182.30.0.2
192.168.1.0/24 IDC_Server 192.168.1.10

 

1. 라우터 R1에서 콘솔 접속 시 "Hello Router!" 메시지가 보이도록 하기

2. 라우터 R1에서 콘솔 로그인 할때 Username은 'master', Password는 '1111'로 설정하기

3. 라우터 R1의 "Privileged mode"에 접속할때 Password로 '1111'을 입력하도록 해보기

4. 위의 표를 참고하여 각 장비의 네트워크 장치에 IP주소를 할당하고 필요할 경우 각 네트워크 장비의 해당 장치를 활성화 하기

5. 위의 장비 중 Sales_PC, Manage_PC, S1의 게이트웨이(Gateway) 또는 Default Gateway를 해당 서브넷에서 호스트의 할당 가능한 마지막 IP 주소로 설정하기

6. Sales_PC, Manage_PC의 네임서버(DNS Server) 주소를 IDC_Server의 IP주소로 설정하기

7. 아래 표를 참고하여 S1에 VLAN을 구성하기

VLAN 이름(ID) Port
Sales(VLAN 10) Fa0/1
Manage(VLAN 20) Fa0/2

 

 

 

 

 

 

728x90

'정보보안학원 > 과정평가형 일지' 카테고리의 다른 글

13일차 - 데이터베이스 보안, 시스템 보안  (0) 2022.05.02
11일차 - 시스템  (0) 2022.04.28
9일차 - 시스템  (0) 2022.04.26
8일차 - 네트워크  (0) 2022.04.25
7일차 - 네트워크  (0) 2022.04.22
728x90

/ 아이피 정보 확인
# ifconfig

> ether 블라블라 : 맥주소
> inet 블라블라 : 아이피
> eno : 인터페이스 이름

 

/ 8.8.4.4 : 구글 2차 주소

/ 특정 포트의 프로세스 검색
# netstat -ant | grep 22

/ 서비스 포트
> 잘 알려진 포트(Well known) : 1~1023, http 80, ftp 21, ssh 22, telnet 23, smtp 25, dns 53, dhcp 67, pop3 110
> 등록된 포트(Registered) : Oracle 1521, MsSQL 1433, MySQL 3306
> 동적포트(Dynamic) : 임의로 사용, 클 -> 서버
출발하는 쪽 포트와 도착하는 쪽 포트는 같을 수 없다.

/ 프로세스 검색 
# ps -ef | grep sshd

- 두번째 보이는 것은 검색하는 프로세스가 보이는 것이다.
- 이것이 보이지 않게 하려면 'ps -ef | grep sshd | grep -v grep'을 하면 된다.

 

/ 로그인한 계정이 가지고 있는 uid, gid, groups가 뭐냐
# id


- 내가 누구냐
# who am i, whoami

/ 커널을 확인하는 명령어 1(-a옵션을 쓰면 길게 나온다.)
# uname -r
# uname -a

 

/ 커널 버전 확인2
# cat /etc/*release*

 

/ 커널 버전 확인3
# cat /proc/version

 

/ /(최상위) 하위 디렉토리들

/ proc 디렉토리
- 구동되는 임시값들이 들어감

/ etc 디렉토리

/ bin 디렉토리
- 기본적인 명령파일을 가지고 있는 디렉토리

/ boot 디렉토리
- 리눅스가 부팅할때 기본적으로 로딩하는 정보를 (boot loader)가지고 있음

/  dev 디렉토리
- dvd롬, cd롬 정보를 가지고 있다.

/ home 디렉토리
- 일반 사용자들의 홈디렉토리가 들어가는 곳

/ lib 디렉토리
- 프로그램이 구동될때 참조하는 라이브러리들이 있음

/ mnt 디렉토리 (마운트의 줄임말)
- 마운트 정보들이 들어있음

/ root
- 관리자 정보가 들어감

/ run
- 계속 돌아가고 있을때의 로그가 쌓임

/ var
- 로그가 주로 쌓임
- 배리어스의 준말
- 이슈가 있을때의 로그만 쌓임

/ sbin
- 중요한 명령어들이 들어가 있는 곳이다.
- system bin

/ tmp
- 스티키 비트가 관련있다. 

 

/ 패키지 설치

- 설치 시 차이점
> rpm : 로컬에 파일이 있을 경우. rpm -ivh 파일이름.rpm
           이것저것 상세히 하나하나 다 설치해야 함
> yum : 인터넷에 파일이 있을 경우. 인터넷상의 장소(레포지토리)에서 설치파일을 끌어다가 설치, 레드햇, CentOS
           한큐에 다 지을 수 있음, 의존성 있는 파일들까지 쫙 끌어다가 설치해줌
           네트워크가 되어야 함. DNS, nslookup이 되어야 한다.
           yum lock : 알 수 없는 이유로 잠긴 것
           could not reserve host : 네트워크나 dns에 문제가 있을때
           no matching list : 인터넷 저장소에 설치하려는 패키지를 찾을 수 없을때

- httpd, nginx, tomcat
> 웹서버 구축
> 데몬, 프로세스, 서비스

- httpd가 설치되어 있는지 확인
# rpm -qa httpd
# rpm -qa | grep httpd


* rpm : 레드햇 패키지 모듈

- 패키지 설치 여부 확인
# rpm -qa 패키지이름

- 설정파일 찾기(config)
# rpm -qc 패키지이름

- 생성된 dir or 파일 목록(list)
# rpm -ql 패키지이름

- 설치된 정보(info)
# rpm -qi 패키지이름

 

# yum list httpd



# yum info httpd

 

# yum search httpd

 

# yum install httpd -y
- y옵션 : 무조건 yes로 설치함

 

- 또 설치하려고 하면 이렇게 나옴

 

# rpm -qi httpd

 

# yum -y remove(erase) httpd
- y옵션 : 무조건 지움

 

# !히스토리번호
- history 명령어 번호의 명령어를 재실행한다.

# !!
- 바로 앞전의 명령어를 다시 한다.

# rpm -qa httpd

# rpm -qa | grep httpd

- 버전정보
> httpd-2.4.6-97.el7
2 : 주버전
4 : 부버전
6 : 패치버전
-97 : 릴리즈 버전
.el7 : 

- netstat -ant | grep 80
> httpd를 설치하자 마자 이 명령어를 치면 아무것도 안나옴

- 시스템 시작 명령어
# service httpd start 가 systemctl start httpd로 바뀜(CentOS부터는 systemctl로 해야함. 어순 주의)


- 시스템 활성화
# systemctl enable httpd
- 서버가 켜지거나 꺼질때 또 실행을 시켜줘야해서 활성화를 시켜줌
- 자동으로 알아서 구동이 된다.

 

- 명령어를 연달아 두개 실행하기
> && 를 사이에 두고 다른 명령어를 적어주면 된다.
> 앞 명령어와 뒤의 명령어를 연결시켜 주는 역활이다.
> '&&' 앞 명령어가 실행성공이 되어야 뒤 명령어도 실행이 된다.

> ';' 으로 연결하면 둘중에 하나가 실패해도 실행된다.

 

# ps -ef | grep httpd
- 부모 프로세스 하위로 자식프로세스들이 생긴다.

# ls -l /proc/7854/exe
- httpd의 프로세스들이 proc 디렉토리 하위에 존재하고 있다.

 

# ps -ef | grep httpd | grep -v grep

 

- 네트워크의 상태 조회
# netstat -antup | grep httpd
> a : 
> n : 
> t : 
> u : 
> p : 

 

- 127.0.0.1 : 루프백 아이피

- 외부에서 접근하게 하려면 방화벽을 열어주어야 한다.

 

/ 방화벽 설정

- 방화벽 확인
# systemctl status firewalld
- 데몬으로 돌아가는 애들은 이름뒤에 'd'가 붙는다.

* 이름뒤에 d가 붙는 애들 -> net-snmp : snmpd / bind : named
* 설치할때 이름이랑 데몬이름이 달라서 헷갈릴 수 있지만 자주 쓰이는 애들이라 걱정 ㄴㄴ하다.

- 방화벽 설정
# firewall-config (GNOME Desktop에서 창을 띄우기)
- 설정 부분 : 런타임 -> 영구적 : 영구적으로 설정해야 킬때마다 켜짐.
- 왼쪽의 public > 서비스탭의 http 체크
- 옵션 > Firewalld 불러오기 클릭 후 닫기 : 영구적으로 했기때문에 저장이 된다.

 

- 방화벽 설정된 내용 확인하기
# firewall-cmd --list-all

> 이제 외부에서도 접근할 수 있게 되었다.

 

/ 윈도우에서 tcping 테스트 하기
- 특정 아이피의 포트가 나에게 열려있는지 확인한다.
> '다운로드 링크'에서 'tcping.exe'파일을 다운받고 'C:\Windows\System32'경로에 위치시킨다.
* 계속 하겠냐고 물어보면 계속 하겠다고 클릭하기

- cmd창에서 테스트를 해본다.
# tcping 아이피 포트

 

/ 세션정보가 끊어지는것 확인
# netstat -ant | grep 80

 

/ 로그확인
- 위치 및 파일 : /var/log/httpd/access_log
# cd /var/log/httpd/
# cat -n access_log : 전체 내용을 확인하기
# tail -f access_log : 파일의 최신내용을 계속 업데이트 해서 보기. 끝의 10줄을 계속 업데이트 해서 보여줌



/ 명령어로 방화벽 설정

# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --permanent --add-service=http
- --permanent 옵션 : 영구적인

- 방화벽 설정하고 저장하기
# firewall-cmd --reload

- 영구적 저장(껏다 켜도 다시 실행되게 하려면)permanent옵션을 꼭 하고 reload를 하기
- 껏다 켰을때마다 다시 키게 하려면 permanent/reload를 안해도 됨

 

# firewall-cmd --list-all
- ports에 값이 들어간것을 확인할 수 있다.

 

# cat /etc/services | grep ssh
- 포트와 서비스 이름을 찾기
- /etc/services이 위치와 파일이름이 시험에 자주 나온다 함

 

# rpm -qc httpd
- 서비스의 설정파일이 설치된 위치 확인

# rpm -ql httpd
- 설치하면서 생긴 디렉토리랑 파일 확인
- 이중 /var/www/html이 웹 페이지가 보여지는 파일이 위치하는 곳이다.

 

/ 웹페이지에 보여지는 파일을 수정 후 반영하기

 

/ 프로세스 동작방식
- Standalone 방식 : 혼자 늘 항상 대기, 웹 서비스 등. 늘 떠있느라 자원을 소모한다.
- 슈퍼데몬(Xinetd) : 호출하면 실행, 프로세스. 늘 대기하지 않는다. 퍼포먼스 차원에서는 슈퍼데몬이 좋다.
- 두개의 차이는 리마 시험에 종종 나온다.

=======================================

/ 복습 (뭐 뭐 있었나 써보기)
- 서버 리부팅 : 
- 시스템종료 :
> showdown -h now = shutdown -P 는 같다.
> poweroff [옵션] 이라는 것으로 종료할 수도 있다.
> systemctl halt
> systemctl poweroff

/ 런레벨
- init 0 : 시스템 종료
- init 1 : 싱글모드, 복구모드(console모드)
- init 2 : 멀티유저모드, NFS X
- init 3 : 완전 멀티유저모드 -> cli 모드, NFS ok
- init 4 : 사용x
- init 5 : xWindows 지원, 완전 멀티유저모드
- init 6 : 시스템 리부팅

/ 프로세스 죽이기
# kill -l 
- SIGINT : 인터럽트, 실행중지 CTRL+C
- SIGHUP : hangup, 대기시켰다가 재시작
- SIGQUIT : 키보드를 사용한 종료 CTRL+\
- (중요)SIGKILL : 무조건 프로세스를 강제 종료. kill -9 pid
- SIGTERM : kill -15 pid. 저장한거 다 저장하고 정상적인 종료를 시킴. 킬 -9랑 -15를 많이 비교함
- SIGCONT : continue. STOP된것을 다시 실행
- SIGSTOP : 무조건 정지. 즉각 정지. 9는 종료지만 이것은 정지이다. 19
- SIGTSTP : CTRL+Z. 실행을 정지했다가 다시 실행시키기 위해서 대기시키는 신호

 

728x90

'정보보안학원 > 과정평가형 일지' 카테고리의 다른 글

11일차 - 시스템  (0) 2022.04.28
10일차 - 네트워크  (0) 2022.04.27
8일차 - 네트워크  (0) 2022.04.25
7일차 - 네트워크  (0) 2022.04.22
6일차  (0) 2022.04.21
728x90

/ 패킷 트레이서 실습

 

- 패스트이더넷 / 이더넷 차이
  그냥 이더넷은 10M짜리

- 모듈 추가시 (패스트 이더넷)에서 0/ 이런식은 기본으로 장착되어있는것이고
1/ 이런것은 추가로 장착한것이다.

 

- 실습할 패킷 트레이서 파일을 열기.

- Router0 더블클릭 > Physical 탭 클릭 > 전원 off > 왼쪽 모듈 목록에서 패스트 이더넷이 두개있는 'NM-2FE2W'선택하여 모듈 추가

- 추가 후 CLI탭에서 'sh ip int bri aud'명령어로 추가된 모듈 확인

 


- CONNECTIONS의 까만선 클릭 후 라우터랑 스위치 연결(패스트이더넷/24~패스트이더넷/22까지)

- 다시 라우터 CLI에서 명령어를 친다.
Router > en
Router# conf t
Router(config)#int f0/0
Router(config-if)#ip add 192.168.100.129 255.255.255.224
Router(config-if)#do ping 192.168.100.130   (핑 나가는것 확인)



- pc0 프롬프트에서 핑을 날려본다.
- pc0 더블클릭 > Desktop 탭 > Command Prompt < ping 192.168.100.129


-라우터에서 ping 테스트 시 맨처음에 . 이 나오는 이유
> 맥 어드레스를 확인하기 때문에

- Secondary IP 주소 사용이란?
> 랜카드 하나에 여러개하는것
>en
#conf t
#int f0/0
#ip add 192.168.100.129 255.255.255.224
#ip add 192.168.100.161 255.255.255.240 sec
#ip add 192.168.100.1 255.255.255.128 sec
#no sh

 

- 세컨더리 어드레스(secondary address) vs VLAN

- Secondary IP는 좋지 않아서 Inter-Vlan 방식을 적용할것
스위치(허브) 특성상 하나의 패킷이 들어올때 전체 포트에 신호를 발생(플러딩) - CSMA/CD (충돌감지방식)
이후 이 문제를 해결하기 위해 스위치(지능형) 에 VLAN 방식을 도입하여 브로드캐스트도메인을 나누는 역할 을 통해 멀티캐스트 및 유니캐스트가 가능하도록 설정 하는 기술로 발전 됨
포트 단위로 브로드캐스트도메인을 나누고 콜리전도메인을 나눈 결과로 플러딩 현상을 최대한 줄일 수 있으며
이런 적용 기술을 통해 충동감지방식이 더이상 필요 없게  됨

스위치 쪽에는 vlan database 를 설계하고 
그에 맞춰서 라우터 쪽에 Inter-Vlan 설정과 encapsulation (암호화? - 인코딩) 를 적용하여 태깅 작업을 수행함.
이때, 태깅 기술은 IEEE802.1q 방식을 적용하며
하나의 라인에 여러개의 VLAN 을 통과 시킬때 적용해야 하는 기술임

 

- 이때 스위치에는 VLAN 설정을 라우터에는 Router-on-a-stick 즉 Inter-Vlan 방식을 적용

 

- 스위치 계정 정보 까먹었을때(패킷트레이서에서만)
콘피그에서 인터페이스 클릭 > reload 명령어 입력

 

ip를 맥으로 -> arp

 

- 검색해볼것
lan, vlan, arp, inter-vlan, 태깅기술(IEEE802.1q 등등), 패킷 트레이서의 약어와 원래 명령어
정적 라우팅, 동적 라우팅, 스위치에 트렁크 주는것
- 연습해볼것
2진수, 10진수, 8진수, 16진수 변환

 

- 동일장비는 크로스, 중간에 스위치를 거치지 않을 경우에는 크로스로 연결

 

 

참고 . 패킷트레이서 기본실습 솔루션_0422_1.txt
참고 . https://aws-hyoh.tistory.com/entry/VLAN-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

VLAN 쉽게 이해하기 #1

여러분은 허브(Hub)란 단어를 들으면 무엇을 떠올리시나요? 전 아무래도 네트워크 계통에서 일을 하다 보니 다수의 컴퓨터를 연결시켜주는 이더넷 허브(Ethernet Hub)를 떠올립니다. 이더넷 허브는

aws-hyoh.tistory.com

 

 

\\192.168.0.250\남궁영\과평A_2204_SEC_남궁영\01_NW보안구축\03_수행하기

 

 

 

 

728x90

'정보보안학원 > 과정평가형 일지' 카테고리의 다른 글

10일차 - 네트워크  (0) 2022.04.27
9일차 - 시스템  (0) 2022.04.26
7일차 - 네트워크  (0) 2022.04.22
6일차  (0) 2022.04.21
5일차  (0) 2022.04.21
728x90

/ 실습

- 정보기기 기본이해.pdf 파일 14페이지

/ OSI 7계층

 

 

/ IP란?

- 네트워크 환경에서 컴퓨터(노드)사이에 통신을 하기 위해 각 컴퓨터에 부여된 주소(라고 생각하면 된다.)
* 사실은 각 컴퓨터라기보단 랜카드에 부여된 것인데 일단은 이해를 쉽게 하기위해 컴퓨터라고 생각하자. 또는 핸드폰..
- 이때 아이피 주소는 네트워크 ID호스트 ID로 나뉘게 되는데 예를 들면 이런것이다.
  ex) 내 아이피가 192.168.10.100라고 했을때 [192.168.10]까지는 네트워크 주소라고 말하고 의미는 '집주소'같은 것이다.
       그리고 아이피의 맨 끝인 [.100]부분은 호스트 주소라고 말하고 의미는 '상세주소'같은 것이다.

IP 네트워크 ID 호스트 ID
192.168.10.100 192.168.10 .100
주소 기본 집 주소 상세 주소
서울시 중랑구 면목동 00-00번지 101201 서울시 중랑구 면목동 00-00번지 101동 201호

 

/ IP의 구조

- ip는 32비트로 나누어진다.

1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0

- 근데 이렇게 화면에 표시하면 보기가 너무 불편하니 8비트씩 잘라서 4부분으로 나누고 점찍고 10진수로 표시한다.

1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0
192 168 10 100
첫번째 옥탯 두번째 옥탯 세번째 옥탯 네번째 옥텟

- 나눠진 8비트를 부르는 말은 '옥텟'이다.
- ip는 4개의 옥텟 구조로 되어있다고 할 수 있다.



/ IP 클래스

- 옛날 사람들이 ip를 뭔가 효율적이고 적정하게 배분하기 위해 첫번째 옥탯의 규칙으로 클래스를 나누었다.
- 첫번째 옥텟의 '앞선 비트'에 따라 A, B, C, D, E 클래스로 나누어진다. (이것을 대역에 따라 나눈다고 한다.)
- 시작 ip주소는 각 옥텟의 비트가 제일 작을때를 뜻하고, 각 옥텟의 수가 점점 올라가서 최대값이 되면 끝 주소가 된다.
- 클래스 A는 대규모, 클래스 B는 중규모, 클래스 C는 소규모 네트워크 환경에 쓰인다.
- 클래스 D는 멀티캐스트용, E는 연구/개발용 혹은 미래에 사용하기 위해 남겨놓은 것으로 일반적으로 사용되지 않는다.
- 클래스 A에서 첫 옥텟이 00000000(0)인것과 01111111(127)인 ip는 예약이 되어 있어서 사용할 수 없다.

클래스 앞선 비트 첫번째 옥텟 시작 IP주소
2진수
(10진수)
끝주소
2진수
(10진수)
클래스 A 0 00000000 00000000.00000000.00000000.00000000
(0.0.0.0)
01111111.11111111.11111111.11111111
(127.255.255.255)
클래스 B 10 10000000 10000000.00000000.00000000.00000000
(128.0.0.0)
10111111.11111111.11111111.11111111
(191.255.255.255)
클래스 C 110 11000000 11000000.00000000.00000000.00000000
(192.0.0.0)
11011111.11111111.11111111.11111111
(223.255.255.255)
클래스 D 1110 11100000 11100000.00000000.00000000.00000000
(224.0.0.0)
11101111.11111111.11111111.11111111
(239.255.255.255)
클래스 E 1111 11110000 11110000.00000000.00000000.00000000
(240.0.0.0)
11111111.11111111.11111111.11111111
(255.255.255.255)

* A, B, C, D나눈게 이해가 잘 안되면 돈으로 잠시 생각해보자.
A = 1,000원 ~ 1,999원
B = 2,000원 ~ 2,999원
.
.
.
뭐 대충 이런식으로 구간을 나눠놓은 것이라고 생각하면 된다.

- 각 클래스를 대규모, 중규모, 소규모 별로 쓴다고 했는데 어떻게 그렇게 쓰느냐... 하면
   클래스별로 네트워크ID로 사용하는 옥텟의 갯수가 정해져 있다. 

클래스 A 0                                                              
네트워크 ID
옥탯 1개
호스트 ID
호스트 ID 갯수 = 2의 24승 = 약1,670만개
클래스 B 1 0                                                            
네트워크 ID
옥탯 2개
호스트 ID
호스트 ID 갯수 = 2의 16승 = 약 6만5천개
클래스 C 1 1 0                                                          
네트워크 ID
옥탯 3개
호스트 ID
2의 8승 = 256개

- 이게 뭔 의미이냐..하면
  클래스 A의 경우, ip의 32비트 중에 앞의 8자리는 그냥 회사 번호라고 생각하면 되고 뒤의 24자리가 각 사원컴퓨터 번호라고 생각하면 1,670만명의 사원이 있다고 볼 수 있다. 1,670명이 아니라 1,670만명.
  클래스 B의 경우 ip의 32비트 중에 앞의 16자리를 회사 번호라고 생각하면 뒤에 16비트로는 6만5천명의 사원컴퓨터가 된다.

- 위처럼 네트워크ID호스트ID구분하기 위해 쓰는 것서브넷 마스크(subnet mask)이다.
- '서브넷 마스크'라는 것의 생김새는 ip와 비슷하게 생겼다. 옥텟.옥텟.옥텟.옥텟
- 근데 각 옥텟의 구성이 '10101010.11011010.00101010.00110011' 이런식으로 되면 안된다.
- '11111111.00000000.00000000.00000000'처럼 연속된 1과 연속된 0으로 구성되어야 한다.
- 네트워크 ID가 되는 부분은 1로 표시하고, 호스트ID가 되는 부분은 0으로 표시한다.

클래스 서브넷 마스크
2진수
서브넷 마스크
10진수
클래스 A 11111111.00000000.00000000.00000000 255.0.0.0
클래스 B 11111111.11111111.00000000.00000000 255.255.0.0
클래스 C 11111111.11111111.11111111.00000000 255.255.255.0

- ...?
- 이것이 뭐 어쩌라는 것이냐면..
  예를 들어 '클래스 A로 ip주소를 10.10.10.10을 할당 받았다'그러면 아래와 같이 파악할 수 있다.
  (첫번째 옥탯이 네트워크 ID 8개로 모두 채워졌구나 하고.)

10 10 10 10
네트워크 ID
11111111
호스트 ID
00000000.00000000.00000000

  '클래스 B로 ip주소를 172.10.10.10을 할당 받았다'면 아래와 같이 파악할 수 있다.
  (두번째 옥탯까지 네트워크 ID 16개로 모두 채워졌구나 하고.)

172 10 10 10
네트워크 ID
11111111.11111111
호스트 ID
00000000.00000000

  '클래스 C로 ip주소를 192.168.10.10을 할당 받았다'면 아래와 같이 파악할 수 있다.
  (세번째 옥탯까지 네트워크 ID 24개로 모두 채워졌구나 하고.)

192 168 10 10
네트워크 ID
11111111.11111111.11111111
호스트 ID
00000000


- 네트워크ID가 뭐지.. 호스트ID가 뭐지.. 하면 위에 적은 집주소, 상세주소를 떠올려보자.
  회사에서 내 아이피가 B클래스이고 '172.10.10.10' 라면 [172.10]까지는 특정 회사에 대해 묶여 있는 것(네트워크ID)이고 그 뒤의 [.10.10]은 그 회사에 있는 컴퓨터를 특정지을 수 있는 것(호스트 ID)이다.
  직원이 만약 10명이면 ip를 대충 이런식으로 받았을것이다.
  172.10.10.0
  172.10.10.1
  172.10.10.2
  .
  . 
  .
  172.10.10.9
  172.10.10.10

- 또, 서브넷 마스크를 프리픽스(Prefix)라는 방법을 이용해서 아이피뒤에 표시해주기도 한다.
- '클래스 A로 ip주소를 10.10.10.10을 할당 받았다'를 보면 네트워크ID의 갯수가 8개이므로 '10.10.10.10/8' 이렇게 표시한다.
- '클래스 B로 ip주소를 172.10.10.10을 할당 받았다'를 보면 네트워크ID의 갯수가 16개이므로 '172.10.10.10/16' 이렇게 표시한다.
- '클래스 C로 ip주소를 192.168.10.10을 할당 받았다'를 보면 네트워크ID의 갯수가 24개이므로 '192.168.10.10/24' 이렇게 표시한다.
- 이게 뭔말이냐면 보통 아이피를 클래스 A다, 클래스 B다 이렇게 말 안하고 '192.168.10.10/24'이런식으로 표기하는데,
  이때 프리픽스의 숫자를 보고 '네트워크ID가 24자리까지 있구나. 이건 클래스 C다'하고 알아야 한다는 것이다.

 

- 여기까지 모두 이해되었다면 이제.. 단순히 A, B, C클래스로 나누었을때의 단점을 알아보고 이에대한 대응방안으로 나온 서브넷팅이라는 것을 알아볼 차례이다.
-  ip를 단순히 A, B, C클래스로 나누어 할당을 하려고 보니 안쓰는 ip가 대거 발생하는 문제가 생겼다.
- 예를 들어 어떤 회사가 50개의 아이피를 할당해달라고 요청했을때 클래스C로 할당을 하자니 256개중에 약 200개가 사용하지 않는 ip가 되어버린다..
  ex) 192.168.10.0/24

클래스 C 1 1 0                                                          
네트워크 ID
50개의 ip가 필요한 회사에
호스트 ID
2의 8승
256개를 할당해버림

- 어쩔까..어쩔까.. 하다가 나온것이 '호스트ID쪽의 비트를 쪼개보자!'하고 서브넷팅이다.

 

/ 서브넷팅

- 만약 'ip가 100개 필요한 상황이다'하면 일단 비트로 몇개를 만들 수 있나 보자.
  1비트로는 0, 1이니까 2개 만들 수 있고(2의 1승 = 2개)
  2비트로는 00, 01, 10, 11 이니까 4개를 만들 수 있다. (2의 2승 = 4개)
  3비트로는 000, 001, 010, 011, 100, 101, 110, 111. 총 8개를 만든다. (2의 3승 = 8개)
  이런 식으로 몇 비트로 ip 100개를 충당할 수 있을까.. 생각해보면 7비트로 128개를 만들면 ip 100개는 충당할 수 있다는 결론이 나온다.

1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0
네트워크 ID   호스트 ID
7비트로 128개 만듬 

- 이때 7비트로 호스트ID를 만들게 됬을때 4번째 옥탯의 맨 앞에 있는 1비트는 어떻게 되는거냐,
  이 비트는 네트워크ID로 쓰게되는데 이걸 서브넷 구분 비트라고 한다.

- 만약 ip가 10,000개 필요하다면?
  보자보자.. 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384  ..니까 2의 12승. 12비트를 호스트ID영역으로 만들고 나머지는 네트워크 ID로 만들면 되겠다.

- 10,000개 필요한데 16,000개나? 라고 할 수 있지만 6만5천개 만든것보다 낫잖아.. 하는것이 서브넷팅이다.
- 그림을 보면 알겠지만 몇번째 옥탯에 있는 비트자리에서 나뉘어지는가에 따라 클래스B에서 할당하는지 클래스C에서 할당하는지 알 수 있다.

 

- '몇개를 할당한다' 까지는 알겠으면 이제 범위를 구하는 쪽도 알아보자.
- 서브넷팅이라는 개념이 사실 위에서 서술한대로도 설명할 수 있지만 또 다른 방식으로도 서술해보자면
- 클래스 C에서 할당가능 한 ip의 갯수는 256개인데, 이때 256개라는 뜻은 네번째 옥탯의 8비트. 즉 00000000(10진수 0) ~ 11111111(10진수 255)까지라서 256개가 카운트 된것이다.
- 이때 8비트의 맨 앞자리 수를 0 또는 1로 고정시켜서 7비트로만 범위를 카운트해보면 127개씩 범위가 나온다.

자릿수 1 2 3 4 5 6 7 8
첫번째 경우 0 0000000 ~ 1111111
두번째
경우
1 0000000 ~ 1111111

  첫번째 경우 00000000(10진수 0) ~ 01111111(10진수 127) 로 범위가 나오고
  두번째의 경우 10000000(10진수 128) ~ 11111111(10진수 255)로 범위가 나온다.
  그리고 각 갯수는 256개를 반으로 쪼갠 127개가 된다.
- 첫번째 경우 192.168.10.0 ~ 192.168.10.127
  두번째 경우 192.168.10.128 ~ 192.168.10.255
  (파란색은 네트워크ID영역이고 주황색은 호스트ID영역이다.)

  * 2진수가 바로바로 10진수로 변환이 안되면 일단은 2진수 계산기 사이트를 이용해보자. 그치만 계산할줄은 알아야 한다.  

- 이번엔 맨 앞자리수 말고 맨앞 두자릿수를 00, 01, 10, 11로 고정시키고 6비트로 범위를 나눠보면 어떻게 될까?

자릿수 1 2 3 4 5 6 7 8
첫번째 경우 0 0 000000 ~ 111111
두번째
경우
0 1 000000 ~ 111111
첫번째 경우 1 0 000000 ~ 111111
두번째
경우
1 1 000000 ~ 111111

  첫번째 경우 00000000(10진수 0) ~ 00111111(10진수 63) 로 범위가 나오고
  두번째 경우 01000000(10진수 64) ~ 01111111(10진수 127) 로 범위가 나오고
  세번째 경우 10000000(10진수 128) ~ 10111111(10진수 191) 로 범위가 나오고
  네번째의 경우 11000000(10진수 192) ~ 11111111(10진수 255)로 범위가 나온다.
  그리고 각 갯수는 128개를 반으로 쪼갠 64개가 된다.
ex) 
    첫번째 경우 192.168.10.0 ~ 192.168.10.63
    두번째 경우 192.168.10.64 ~ 192.168.10.127
    세번째 경우 192.168.10.128 ~ 192.168.10.191
    네번째 경우 192.168.10.192 ~ 192.168.10.255
    파란색은 네트워크ID영역이고 주황색은 호스트ID영역이다.

- 클래스 C에서 봤으니 클래스 B에서도 한번 예를 들어볼까나
  클래스 B에서 할당가능한 호스트ID ip의 갯수는 약 65,000개인데 이때 65,536개는 8+8비트. 즉 16비트의 00000000.00000000(10진수 0) ~ 11111111.11111111(10진수 65535)까지라서 65,536개가 카운트 된것이다.
- 이때도 똑같이 16비트에서 맨 앞자리 비트를 0 또는 1로 고정시켜서 15비트로만 범위를 카운트해보면 32,768개씩이 된다.

자릿수 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
첫번째 경우 0 0000000.00000000 ~ 1111111.11111111
두번째
경우
1 0000000.00000000 ~ 1111111.11111111

  첫번째 경우 00000000.00000000(10진수 표현 0.0) ~ 01111111.11111111(10진수 표현 127.255) 로 범위가 나오고
  두번째의 경우 10000000.00000000(10진수 표현 128.0) ~ 11111111.11111111(10진수 표현 255.255)로 범위가 나온다.
  그리고 각 범위의 갯수는 65,536개를 반으로 쪼갠 32,768개가 된다.
ex) 
    첫번째 경우 129.10.0.0 ~ 129.10.127.255
    두번째 경우 129.10.128.0 ~ 129.10.255.255
    파란색은 네트워크ID영역이고 주황색은 호스트ID영역이다.

  * 2진수가 바로바로 10진수로 변환이 안되면 일단은 2진수 계산기 사이트를 이용해보자. 그치만 계산할줄은 알아야 한다.  

- 이번에도 맨 앞자리 비트 말고 앞 두자리 비트를 00, 01, 10, 11로 고정시키고 14비트로 범위를 나눠보면 어떻게 될까?

자릿수 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
첫번째 경우 0 0 000000.00000000 ~ 111111.11111111
두번째
경우
0 1 000000.00000000 ~ 111111.11111111
세번째 경우 1 0 000000.00000000 ~ 111111.11111111
네번째
경우
1 1 000000.00000000 ~ 111111.11111111

  첫번째 경우 00000000.00000000(10진수 0) ~ 00111111.11111111(10진수 63.255) 로 범위가 나오고
  두번째 경우 01000000.00000000(10진수 64.0) ~ 01111111.11111111(10진수 127.255) 로 범위가 나오고
  세번째 경우 10000000.00000000(10진수 128.0) ~ 10111111.11111111(10진수 191.255) 로 범위가 나오고
  네번째의 경우 11000000.00000000(10진수 192.0) ~ 11111111.11111111(10진수 255.255)로 범위가 나온다.
  그리고 각 범위의 갯수는 32,768개를 반으로 쪼갠 16,384개가 된다.
ex) 
    첫번째 경우 129.10.0.0 ~ 129.10.63.255
    두번째 경우 129.10.64.0 ~ 129.10.127.255
    세번째 경우 129.10.128.0 ~ 129.10.191.255
    네번째 경우 129.10.192.0 ~ 129.10.255.255
    파란색은 네트워크ID영역이고 주황색은 호스트ID영역이다.

- 이때 위에서 말했던 00, 01, 10, 11 이런식으로 아이피 대역을 4개로 나누든 00, 01 두개로 나누든 했던 부분을 서브넷 구분 비트라고 하고 요 부분은 네트워크ID로 쓰이게 된다.

- 바로 위 예시의 첫번째 경우 129.10.0.0 ~ 129.10.63.255 범위에서 129.10.55.56 라는 아이피를 할당 받았다면 129.10.55.56/18으로 표기할 수 있는데, 그 이유는 아래의 구조와 같기 때문이다.

  

/ 이쯤 되면 사실 그냥 비트 쪼개기 놀이 하는 느낌인데 뭐 시험이나 실무 이런곳에서 어떻게 쓰이는지 살펴보자.

 

 

 

 

 

 

 

/ 고정길이 서브넷 마스크(FLSM)

 

/ 가변길이 서브넷 마스크(VLSM)

 

728x90

'정보보안학원 > 과정평가형 일지' 카테고리의 다른 글

9일차 - 시스템  (0) 2022.04.26
8일차 - 네트워크  (0) 2022.04.25
6일차  (0) 2022.04.21
5일차  (0) 2022.04.21
4일차  (0) 2022.04.19

+ Recent posts