Security/K-Shield Jr.

[K-Shield Jr.] 리눅스 서버 기본 활용 방안 (1)

Limetime 2025. 1. 18. 23:45
반응형
  • 복습
    • 용어를 정의해야 하는 이유?
      • 혼선 최소화
      • 오해와 오역 예방
      • 의미를 명확히
      • 통일성
      • 이견, 분쟁 원할하게 해결
      • 조직 내 정보를 보호하기 위한 활동
    • 보안의 3요소
      • 기밀성 (C) : 인가된 사용자 외에 노출되지 않음
        • 스니핑/도청
      • 무결성 (I) : 인가된 사용자에 의해서 변경 가능
        • 스푸핑
      • 가용성 (A) : 자산의 계속적 이용을 가능하게 하는 것
        • DoS/DDoS
    • 추가적인 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%가 넘어 간다.
                • ⇒ 이니셜 벡터가 재사용될 확률. 재사용된 그 이니셜 벡터를 캐치할 확률 굉장히 높다. → 복호화가 빠르게 진행된다.
      • 고전 암호 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로만 열 수 있기 때문에, 파일을 쓰는 것은 가능하지만 삭제는 못함

리눅스 서버 종류와 특징

  • 유닉스 개요
    • 리눅스 뿌리
    • 대부분 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
  • 리눅스 개요
    • 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

리눅스 쉘의 이해 (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 윈도우 시스템 기반 환경 (주로 유닉스)
    • 명령 줄 쉘(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의 많은 기능을 추
    • COMMAND.COM : 도스용 쉘
    • CMD.EXE : OS/2의 텍스트 모드와 윈도우 NT용
  • 쉘 확인
    • 로그인 쉘 관련 환경 변수 : 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

리눅스 기본 명령어 사용법

  • 시스템 종료 및 재시작
    • 시스템 즉시 종료
    • 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 : 재부팅
  • 파일 및 디렉토리 목록 보기
    • 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 명령어
      • 추가 옵션 및 예시

        | **옵션** | **기능** |
        | --- | --- |
        | -a |  파일의 속성, 링크 정보들을 유지하면서 복사 |
        | -b | 백업 파일을 만듦 |
        | -d | 심볼릭 파일 자체를 심볼릭 정보와 함께 복사 |
        | -f | 복사할 파일이 존재할 때, 삭제하고 복사 |
        | —p | 원본 파일의 소유, 그룹, 권한, 허용 시간을 보존한 채로 복사 |
        | -r | 서브 디렉터리 내에 있는 모든 파일까지 통째로 복사 |
        | -u | 대상 파일보다 원본 파일이 새로운 것일 때 복사 |

 

  • 파일 삭제
    • rm 명령어
      • 추가 옵션 및 예시 (rm -rf /* 쓰면 망함)

        | 옵션 | 기능 |
        | --- | --- |
        | -d | 디렉터리 삭제 |
        | -f | 삭제할 것인가라는 메시지 없이 그대로 강제 삭제 |
        | -i | 삭제 시 일일이 삭제할 것인지 물음 |
        | -r | 하위 디렉터리를 포함한 파일들을 모두 삭제 |
        | -v | 삭제되기 전의 파일을들을 보여줌 |
  • 디렉터리 생성 및 삭제
    • mkdir
      • 디렉터리 생성
      • mkdir [옵션] 생성 디렉터리 이름 (복수 지정 가능)
      • -p 옵션 : 지정한 하위 디렉터리까지 한 번에 생성
    • rmdir (잘 안씀.. 왜? 안에가 비어 있어야 삭제가 됨.. 그래서 rm -r을 씀)
      • 디렉터리 제거 (rm -d)
      • rmdir [옵션] 제거할 디렉터리 이름 (복수 지정 가능)
      • -p 옵션 : 지정한 하위 디렉터리까지 한 번에 제거
  • 파일 이동 및 이름 변경
    • mv

반응형