Security/K-Shield Jr.
[K-Shield Jr.] 리눅스 서버 기본 활용 방안 (1)
Limetime
2025. 1. 18. 23:45
반응형
- 복습
- 용어를 정의해야 하는 이유?
- 혼선 최소화
- 오해와 오역 예방
- 의미를 명확히
- 통일성
- 이견, 분쟁 원할하게 해결
- 조직 내 정보를 보호하기 위한 활동
- 보안의 3요소
- 기밀성 (C) : 인가된 사용자 외에 노출되지 않음
- 스니핑/도청
- 무결성 (I) : 인가된 사용자에 의해서 변경 가능
- 스푸핑
- 가용성 (A) : 자산의 계속적 이용을 가능하게 하는 것
- DoS/DDoS
- 기밀성 (C) : 인가된 사용자 외에 노출되지 않음
- 추가적인 2요소
- 인증 - 정당한 권한을 가진 사용자임을 증명하는 것
- 부인방지 - 어떠한 행위에 대해 부인하는 것을 막기 위해(오리발 금지)
- 스니핑 vs 도청
- 도청 안에 스니핑이 포함되어 있다.
- 스니핑은 “통신 상”의 도청
- 서비스 vs 서버
- 서버(Server)가 제공하는 것이 서비스(Service)
- 로그 vs 로깅
- 기록과 기록 중
- 로그 - 전체의 기록 / 기록된 데이터
- 로깅 행위에서 발생된 데이터, 파일 등등
- 시스템 사용에 관련된 전체의 기록
- 실질적으로 증거로 채택되는 데이터
- 로깅
- 증거가 되는 데이터를 시간 순으로 기록
- 데이터베이스 vs 데이터 보안 vs 데이터베이스 보안
- 집합체, 자료손실을 방지하고 보호, 저장된 데이터 보호
- 자료창고, 자료, 자료 창고 보안
- 데이터를 저장하는 공간, 저장된 데이터 보호, 데이터 저장소 보호
- DBMS 내의 테이블, 데이터 등의 집합체를 나타내는 구조, 보안 사고로부터 자료손실을 방지하고 보호, DB 또는 DBMS 내 저장된 데이터 보호
- 저장된 자료창고, 자료 자체 보호, 저장된 자료창고 보호
- 네트워크 노드 vs 네트워크 시스템 vs 정보 시스템
- 노드는 연결된 장비나 시스템
- router, switch 등 네트워크 연결 및 데이터 전송을 위한 시스템
- 컴퓨터 주변장치, 본체, 단말 등 구성되는 하드웨어 소프트웨어
- 로드밸런싱 (부하분산)
- 트래픽 분산을 위한 스위칭 기술 / 처리 능력과 가용성을 향상시키는 기술
- 제로데이 vs 원데이
- 제로데이
- 개발사에서 A라는 공격 방식이 우리 프로그램에 적용이 되는 것을 인지하고 패치 프로그램을 만들고 있던 와중 공격을 당한 것.
- 개발사에서 A라는 공격 방식이 우리 프로그램에 적용되는 것 자체를 인식하지 못한 상태에서 공격을 당한 것
- 원데이
- A라는 공격 방식이 우리 프로그램에 적용되는 것을 인지하고 패치 프로그램을 제작하여 배포하였으나, 해당 패치를 적용하지 않음으로써 발생되는 공격
- 제로데이
- 침입 방지 시스템 vs 침입 차단 시스템 vs 침입 탐지 시스템 vs 정보보호 시스템
- 침입 방지 시스템 = 침입 차단 + 침입 탐지 + @
- 정보보호 시스템은 정보 자산 보호를 목적으로 하는 시스템
- 침입 차단 시스템 (IPS)
- 침입 탐지 시스템 (IDS)
- 암호학
- 보안기사 암호
- 대칭키
- 비대칭키
- PKI
- SSL/TLS
- 해시
- 암호화 vs 인코딩?
- 정보의 호환성 (표현식의 변화 / 심볼 ↔ 코드) : encoding
- 정보의 은닉 및 기밀화 (암호 ↔ 평문 변환 시 인가자에 한하는 것을 목적으로 함) : crypto
- 목적과 관점에 따른 기준을 제외하면, 종류를 기반으로 하는 기준으로 인코딩과 암호화를 가르는 것은 난해하다?
- 네트워크
- 무선네트워크
- WEP*, WPA, WPA2, WPA3
- KISA, NIST 권고하는 방식 → WPA2, WPA3
- WEP는 왜? 사용하면 안되는가? → 복호화가 가능하다.
- RC4 → IV(Initial Vector) → 24bit → 2^24
- 생일문제/생일이론(Birthday Paradox) : 사람이 임의로 모였을 때, 그 중에 생일이 같은 두 명이 존재할 확률을 구하는 문제.
- 생일이 가능한 가지 수(2월 29일 포함) : 366개
- 367명 이상의 사람이 모이면
비둘기집
원리에 따라 생일이 같은 두 명이 반드시 존재. - 23명 이상이 모인다면 그 중 두 명이 생일이 같은 확률은 1/2을 넘는다.
- 57명이 넘어가면 99%가 넘어 간다.
- ⇒ 이니셜 벡터가 재사용될 확률. 재사용된 그 이니셜 벡터를 캐치할 확률 굉장히 높다. → 복호화가 빠르게 진행된다.
- WEP*, WPA, WPA2, WPA3
- 무선네트워크
- 고전 암호 vs 현대 암호
- 컴퓨터 사용을 기준으로 나뉨
- 컴퓨터 사용 전 단위 : 알파벳
- 카이사르, 시저
- 컴퓨터 사용 후 단위 : 비트
- DES(취약하다.), RSA, AES, SEED, ARIA
- Feistel, Non-Feistel
- 컴퓨터 사용 전 단위 : 알파벳
- 컴퓨터 사용을 기준으로 나뉨
- 해독 vs 복호화
- cipher text → plain text
- 복호화 키의 유무
- 복호화 : 정당한 사용자가 정당한 키를 이용하여 평문으로 변환하는 경우
- 해독 : 정당하지 않은 사용자가 암호문을 평문으로 변환하는 경우
- 보안기사 암호
- 용어를 정의해야 하는 이유?
- 꿀팁
- chattr로 ia 옵션을 주면 rm으로 삭제가 안된다.
- 침해사고 시 공격자가 공격에 사용할 파일이 삭제가 안되도록 옵션을 거는 경우가 있다.
- 반드시 ia옵션을 빼주고 삭제를 해야 한다.
- i (immutable) : 파일 수정 x(쓰기, 삭제, 이름 변경은 물론 링크도 생성 못함)
- a (append only) : 파일은 append mode로만 열 수 있기 때문에, 파일을 쓰는 것은 가능하지만 삭제는 못함
- chattr로 ia 옵션을 주면 rm으로 삭제가 안된다.
리눅스 서버 종류와 특징
- 유닉스 개요
- 리눅스 뿌리
- 대부분 C언어를 기반하여 개발된 운영체제
- 이식성이 강함 → 적은 노력으로 새로운 기종에 이식 가능
- 시분할 구성 → 다중 사용자, 멀티 태스킹, 이식성으로 설계
- System V계열과 BSD계열로 나뉨.
- System V : 상업 지향적 성향
- BSD : 연구 개발 지향적
- 현재는 두 장점을 모두 갖는 형태를 취함
- 유닉스 종류
- System V R4.0
- 유닉스 표준 버전으로 벨 연구소에서 개발된 유닉스 정식 이름
- SCO UNIX
- Santa Cruz Operation 사의 SCO Open Desktop과 SCO Open Release 3의 이름이며 UNIX SVR3.2.5의 구현 형태
- SunOS
- Sun사의 BSD 계열 운영체제
- Solaris
- 대표적인 유닉스 OS
- Sun의 SVR4 구현
- HP-UX
- SVR4의 변형으로 HP사에서 개발된 운영체제
- AIX
- IBM의 System V계열 OS로 SVR4, BSD, OSF/1 특징을 고루 가지고 있다.
- 인텔 프로세스를 위한 Free UNIX 방식의 OS
- System V R4.0
- 리눅스 개요
- Open Source, Open License, Free
- Free Software Foundation → GNU(GNU’s Not Unix)
- 리누스 토발즈 개발.
- 이식성 높
- 리눅스 종류
- 데비안 계열
- 우분투
- 캐노니컬 만듦, 대표적인 리눅스 계열 OS
- 개인용 노트북과 데스크톱에서 가장 인기 높음. (서버 전용 OS도 존재)
- 칼리 리눅스
- 모의 해킹 또는 Offensive 보안을 목적으로 만들어진 OS
- 여러 해킹 도구, 툴이 포함
- 리눅스 민트
- 자바, 플래시 웹 플러그인 등을 기본적으로 포함한 OS
- 우분투에 비해 GUI의 외향적 아름다움에 상대적으로 더 집중함.
- 우분투
- 레드햇 계열
- 페도라
- 기업용 RHEL(Red Hat Enterprise Linux)에서 페도라 프로젝트를 후원하면서 만들어진 일반 사용자용 OS
- 페도라를 바탕으로 RHEL 개발
- RHEL
- 레드햇에서 개발한 리눅스 배포판
- 유료 라이선스로 판매되는 대신 레드햇 측의 기술지원 제공
- 개발용으로 무료 라이선스 사용 가능
- CentOS
- 페도라가 RHEL의 기술 반영을 따라가지 못해 완벽에 가깝게 반영하는 것을 목적으로 만들어짐
- 카카오, 네이버와 같은 국내 대기업에서도 활용되는 오픈소스 OS
- 페도라
- 그 외 계열
- 맨드리바(Mandriva)
- ALT, Mazeya
- PC LinuxOS
- 슬랙웨어(Slackware)
- Vector Linux
- Frugalware
- 젠투(Gentoo)
- Sabayon Linux
- 아치(Arch)
- Manjaro Linux
- 맨드리바(Mandriva)
- 데비안 계열
리눅스 쉘의 이해 (https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/)
- 쉘(Shell)의 개요
- 쉘은 응용프로그램과 OS 사이에 위치.
- 사용자와 시스템 간의 다리 역할을 함. → 사용자로부터 명령을 받아 해석하고 실행하는 역할.
- 의미
- OS 상에서 다양한 OS 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램
- 사용자가 운영체제의 내부(커널) 사이의 인터페이스를 감싸는 층이라는 의미로 사용
- 분류
- CLI : 명령 줄 (Command Line) 인터페이스 제공
- GUI : 그래픽 사용자 (Graphic User) 인터페이스 제공
- 기능
- 명령어 해석기 기능
- 사용자와 커널 사이에서 명령을 해석해 전달
- 프로그래밍 기능
- 여러 명령을 사용해 반복하여 수행하는 작업을 하나의 프로그램으로 제작 (쉘 스크립트)
- 사용자 환경 설정의 기능
- 초기화 파일 기능을 이용해 환경을 설정
- 로그인할 때, 초기화 파일이 실행되어 사용자의 초기 환경을 설정
- 쉘(Shell)의 종류
- 그래픽 쉘(GUI)
- MS 윈도우 환경
- 윈도우 탐색기
- 라이트스탭
- 지오쉘
- BB4Win
- 이미지 데시크톱
- 매킨토시 파인더
- X 윈도우 시스템 기반 환경 (주로 유닉스)
- MS 윈도우 환경
- 명령 줄 쉘(CLI)
- 유닉스 쉘
- 본 쉘(sh) : 최초의 쉘인 톰프슨 쉘을 대체하는 실행파일로 AT&T 벨 연구소 스티븐 본이 개발
- Almquist shell(ash)
- Bash : 본 쉘(sh)에서 다양한 기능을 확장시킨 쉘 (Bourne-again shell)
- GNU 프로젝트, sh기반, 리눅스 표준 쉘, sh 명령어 문법과 호환
- ksh, csh의 유용한 기능을 참고하여 히스토리, 명령어 완성 기능, 히스토리 치환, 명령행 편집 등 지원
- C쉘(csh)
- C언어 기반, 강력한 프로그램 작성 기능 지원
- 히스토리 기능, 별명(Alias), 작업 제어 등의 유용한 기능 포함
- 테넥스 C 쉘(tcsh)
- TENEX(명령행 완성 기능) + csh
- 명령어 완성 기능, 명령행 편집 기능 등을 지원
- 콘 쉘(ksh), 스키마 쉘(scsh), Z 쉘(zsh)
- ksh : sh를 확장하여 개발
- 작업 제어, 별명 기능, 히스토리 기능, 명령행 편집 기능, 명령행 완성 기능 등 csh의 많은 기능을 추
- ksh : sh를 확장하여 개발
- 유닉스 쉘
- COMMAND.COM : 도스용 쉘
- CMD.EXE : OS/2의 텍스트 모드와 윈도우 NT용
- 그래픽 쉘(GUI)
- 쉘 확인
- 로그인 쉘 관련 환경 변수 : SHELL
- 현재 설정된 쉘 확인 방법
echo $SHELL --------------- /bin/bash
- 변경 가능한 쉘 확인
chsh -l cat /etc/shells ---------------------- ## Vaild Shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
- chsh
- 사용자 로그인 쉘 변경 명령어
- 변경한 쉘의 적용은 다음 로그인부터 유효
echo $SHELL
/bin/bashChanging shell for kisa.
New shell [/bin/bash]: /bin/sh
암호 :
Shell changed./bin/sh - echo $SHELL
- chsh
- 사용자 로그인 쉘 정보 확인
cat /etc/passwd | grep kisa -------------------------------------- kisa:x:501:501::/home/kisa:/bin/bash
- 쉘의 입출력
- echo
- 주어진 문자열을 공백과 개행 문자 등을 포함하여 표준 출력으로 출력하는 명령어
- 사용법 : echo [옵션] [문자열]
echo Hello World
Hello WorldHello WorldnHello WorldHello World $
```- -n : 마지막에 따라오는 개행 문자(newline) 문자를 출력하지 않음
- -e : 문자열에서 역 슬래시()와 조합되는 이스케이프 문자를 인용부호(”)로 묶어 인식
- echo -n "Hello World"
- echo -e "Hello World\n"
- echo Hello World\n
- 이스케이프 문자 종류
- \a : 경고음 소리 출력
- \b : 백스페이스
- \c : 마지막 개행 문자 출력 안함
- \f : 폼 피드 형식 (프린터에서 용지 바꿈)으로 출력
- \n : 개행 문자 출력
- \r : 캐리지 리턴 : 문자의 새 줄을 시작하는데 쓰는 제어 문자나 그 구조
- \t : 수평 탭
- \v : 수직 탭
- \ : 역 슬래시
- 리다이렉션
- 명령어의 표준 출력 값을 특정 파일에 저장하는 행위
- ‘>’와 ‘>>’
- ‘>’ : 명령어의 표준 출력 값을 파일의 첫번째부터 새로 입력 Overwrite
- ‘>>’ : 명령어의 표준 출력 값을 파일의 마지막에 이어서 입력 Append
- 스크립트 작성
$ 명령어 > 파일명 $ 명령어 >> 파일명 ===================== vi test.sh #!/bin/sh echo "hello world!!" > file.txt echo "hi" >> file.txt
- 스크립트 실행 결과
chmod +x test.sh ./test.sh cat file.txt --------------------- hello world!! hi
- 파이프
- 명령과 명령을 연결할 때 사용
- ‘|’ 사용법
명령어 | 명령어 명령어 | 명령어 | 명령어 ...
- 실행 예시
cat /etc/passwd | grep kisa ------------------------------ kisa:x:501:501::/home/kisa:/bin/bash touch file.txt ls -al | grep file ------------------------------ -rw-rw-r-- 1 kisa 17 1월 28 18:07 file.txt
- echo
리눅스 기본 명령어 사용법
- 시스템 종료 및 재시작
- 시스템 즉시 종료
shutdown -h now halt init 0
- 즉시 재시작
shutdown -r now reboot init 6
- shutdown 명령 옵션 예시
shutdown -h 10m # 10분 후에 종료 shutdown -r 22:00 # 종료 후 오후 10시에 재가동 shutdown -c # 예약된 종료 취소
- Run level
- init 0 ~ 6
- 0 : 시스템 종료
- 1 : Single user
- 2 : Multiuser (NFS 기능 X)
- 3 : Multiuser (모든 기능)
- 4 : X
- 5 : X-Windows 부팅 & Multiuser
- 6 : 재부팅
- init 0 ~ 6
- 파일 및 디렉토리 목록 보기
- ls (list segments)
ls ------------------------------- Desktop Documents Downloads Music Pictures Public Templates Videos
- 추가 옵션 및 예시
- -a : 디렉터리 내의 모든 파일 출력 (숨김 파일 포함)
- -l : 파일 정보를 표시
- -s : 블록 단위로 파일 크기 표시
- -t : 파일 최근 변경 시간에 따라 정렬해서 출력
- —color : 파일 종류에 따라 색상 표시
- -R : 현재 작업 디렉토리와 하위 디렉토리 모두 출력
- —help : 도움말
- 현재 디렉터리 이름 출력
- pwd 명령어 (Print name of Working Directory, Print Working Directory)
pwd -------------------------- /home/user
- 파일 혹은 디렉터리 복사
- cp 명령어
- 추가 옵션 및 예시
- cp 명령어
| **옵션** | **기능** |
| --- | --- |
| -a | 파일의 속성, 링크 정보들을 유지하면서 복사 |
| -b | 백업 파일을 만듦 |
| -d | 심볼릭 파일 자체를 심볼릭 정보와 함께 복사 |
| -f | 복사할 파일이 존재할 때, 삭제하고 복사 |
| —p | 원본 파일의 소유, 그룹, 권한, 허용 시간을 보존한 채로 복사 |
| -r | 서브 디렉터리 내에 있는 모든 파일까지 통째로 복사 |
| -u | 대상 파일보다 원본 파일이 새로운 것일 때 복사 |
- 파일 삭제
- rm 명령어
- 추가 옵션 및 예시 (rm -rf /* 쓰면 망함)
- rm 명령어
| 옵션 | 기능 |
| --- | --- |
| -d | 디렉터리 삭제 |
| -f | 삭제할 것인가라는 메시지 없이 그대로 강제 삭제 |
| -i | 삭제 시 일일이 삭제할 것인지 물음 |
| -r | 하위 디렉터리를 포함한 파일들을 모두 삭제 |
| -v | 삭제되기 전의 파일을들을 보여줌 |
- 디렉터리 생성 및 삭제
- mkdir
- 디렉터리 생성
- mkdir [옵션] 생성 디렉터리 이름 (복수 지정 가능)
- -p 옵션 : 지정한 하위 디렉터리까지 한 번에 생성
- rmdir (잘 안씀.. 왜? 안에가 비어 있어야 삭제가 됨.. 그래서 rm -r을 씀)
- 디렉터리 제거 (rm -d)
- rmdir [옵션] 제거할 디렉터리 이름 (복수 지정 가능)
- -p 옵션 : 지정한 하위 디렉터리까지 한 번에 제거
- mkdir
- 파일 이동 및 이름 변경
- mv
반응형