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

알고리즘 공부때문에 c를 다시 공부하고 있는데 비주얼 스튜디오에서 scanf가 에러라고 나온다.

검색을 해보니 비주얼 스튜디오에서만 나는 오류라고 한다.

해결 방법은 4가지가 있는데 그중 많이들 추천하는 방법은 파일 제일 최상단에
'#define _CRT_SECURE_NO_WARNINGS'을 넣어주는 것이다.

 

이외 
- scanf를 scanf_s로 고쳐쓰기 : 비주얼 스튜디오에서만 나는 에러라 굳이 코드를 바꿀필요는 없으므로 비추천한다고 함
- 파일 최상단에 '#pragma warning(disable:4996)'를 쓰기

- 상단 메뉴 중 '보기 > 속성 페이지(Shift+F4) > 왼쪽의 구성속성 > C/C++ > 일반 > 왼쪽 하단의 SDL 검사' 를 '아니요(/sdl-)'로 변경


어떤 방법으로 하든 뭐 해결만 되면 되지 않겠능가..

 

 

 

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

+ Recent posts