본문 바로가기

리눅스 마스터 1급 1차 (필기) 대비 1과목 요약 정리

@Engineer-yr2025. 6. 13. 07:04
728x90
💡 1. 리눅스 역사 및 특징
  • 리누스 토발즈(Linus Torvalds)
    • 리눅스 커널 개발의 시작 (미닉스 참고). [23.03]
  • 리처드 스톨먼(Richard Stallman)
    • GNU 프로젝트 창시, FSF(자유 소프트웨어 재단) 설립, GPL(GNU 일반 공중 사용 허가서) 제정. [23.03]
    • GNU 프로젝트 개발 소프트웨어: gcc, gdb, emacs [15.03]
    • 주의: KDE는 GNU 프로젝트가 아닌 독립 데스크톱 환경 프로젝트입니다. [15.03]
  • 앤드루 S. 타넨바움(Andrew S. Tanenbaum)
    • 교육용 유닉스인 미닉스(Minix) 개발. [23.03]
  • 운영체제 동향
    • 편리한 사용자 인터페이스, 가상화 기술, 모바일 운영체제 보편화, 뛰어난 이식성 지원. [17.09, 15.03]
    • 주의: "개방적 운영체제에서 폐쇄적 운영체제로 바뀌고 있다"는 틀린 설명입니다. [15.03]
  • 모바일 운영체제
    • 리눅스 커널 기반 모바일 운영체제: Android, Tizen, webOS, GENIVI, QNX. [15.03]
    • 주의: Bada OS, OS X는 리눅스 커널 기반이 아닙니다. [15.03]
  • 리눅스 배포판
    • 초기부터 최근 순서: SLS → Slackware → SUSE [19.03]
    • 데비안(Debian) 계열: Knoppix, BackTrack (Kali Linux), Ubuntu, Linux Mint, Elementary OS. [19.03, 16.03]
    • 레드햇(RedHat) 계열: Fedora, CentOS, Oracle Linux, Scientific Linux. [18.09]
    • 주의: Vector Linux는 Slackware 계열입니다. [18.09]

💡 2. 리눅스 기술적 특징

🐧 리눅스의 기술적 특징

  • 다중 사용자(Multi-user) 시스템
    • 하나의 시스템을 여러 사용자가 동시에 사용 가능. [15.09]
  • 다중 작업(Multi-tasking) 시스템
    • 하나의 시스템에서 여러 작업을 동시에 수행 가능. [15.09]
  • 가상 메모리(Virtual Memory)
    • 물리적 메모리가 부족할 때 하드디스크의 일부를 메모리처럼 사용. [20.06, 18.03, 16.09, 16.03]
    • 스와핑(Swapping) 기술을 통해 메모리와 하드디스크 간 데이터 교환. [20.06]
    • free 명령어로 용량 확인 가능. [18.03]
  • 계층적 파일 구조(Hierarchical File System)
    • 최상위 디렉터리인 /(root)를 기준으로 모든 파일과 디렉터리가 계층적으로 구성. [16.03]
  • 장치의 파일화(Everything is File)
    • 모든 하드웨어 장치(키보드, 프린터, 하드디스크 등)를 파일처럼 다룸. [16.03]
    • 장치 파일들은 /dev 디렉터리에 위치.
  • 가상 콘솔(Virtual Console)
    • 하나의 모니터에서 여러 개의 터미널 세션(가상 터미널)을 제공. [16.03]
    • 기본적으로 6개의 가상 콘솔 제공 (Ctrl+Alt+F1 ~ F6). [16.03]
  • 파이프(Pipe)
    • 한 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 연결. [23.03]
    • | 기호 사용.
    • 주의: "표준 입출력이 아닌 다른 입출력으로 변경할 때 사용한다"는 틀린 설명입니다. [16.03]
  • 리다이렉션(Redirection)
    • 프로세스의 표준 입출력 방향을 변경. [23.03]
    • >, >>, < 기호 사용.
  • 동적 라이브러리(Shared Library)
    • 여러 프로그램에서 공유하여 사용하는 라이브러리.
    • 메모리 공간 절약 및 효율성 증대.
  • 뛰어난 이식성(Portability)
    • 다양한 하드웨어 아키텍처에서 실행 가능. [15.03]

💡 3. 리눅스 주요 라이선스

🐧 리눅스 주요 라이선스

  • GPL (General Public License)
    • GNU 프로젝트의 핵심 라이선스.
    • 소스 코드 공개 의무가 가장 강력함.
    • GPL이 적용된 소프트웨어를 수정하거나 배포할 경우, 수정된 소스 코드 또한 GPL에 따라 공개해야 함. [20.10, 19.09]
  • LGPL (Lesser General Public License)
    • GPL보다 완화된 조건의 라이선스.
    • 라이브러리(동적 라이브러리)에 주로 적용.
    • LGPL 라이브러리를 사용하는 소프트웨어는 소스 코드를 공개할 의무가 없음. [20.10, 16.06]
    • 주의: LGPL 라이브러리를 사용하는 프로그램을 상업용으로 판매할 경우 소스 코드를 공개할 의무는 없습니다. [16.06]
  • BSD (Berkeley Software Distribution License)
    • 가장 자유로운 라이선스 중 하나.
    • 소스 코드 공개 의무가 거의 없음.
    • 수정된 소스 코드에 대한 공개나 어떠한 표시도 하지 않아도 됨. [20.10, 19.09, 18.09]
    • 원작자 표시 의무만 존재.
  • MPL (Mozilla Public License)
    • 넷스케이프 커뮤니케이션즈에서 개발.
    • 소스 코드와 실행 파일을 별도로 공개 가능.
    • 주의: MPL이 적용된 소스코드를 수정하여 만든 2차적 저작물에 대해 소스코드의 비공개가 가능합니다. [18.09]
  • MIT License
    • BSD 라이선스와 유사하게 매우 자유로운 라이선스.
    • 주로 짧은 코드를 가진 소프트웨어에 적용.
    • 2차적 저작물에 대한 소스 코드 공개 의무 없음. [18.09]
  • Apache License
    • 아파치 소프트웨어 재단에서 개발.
    • BSD와 유사하게 소스 코드 공개 의무 없음. [18.09]
  • Freeware (프리웨어)
    • 무료로 사용 가능하지만, 소스 코드는 제공되지 않거나 배포상의 제약이 있을 수 있음. [17.03]
  • Shareware (셰어웨어)
    • 일정 기간 무료 사용 후 계속 사용하려면 비용 지불. [17.03]
    • 대부분 원시 코드가 제공되지 않거나 배포상 제약.
  • Proprietary Software (독점 소프트웨어/Closed Software)
    • 저작권자가 모든 권리를 소유하며, 사용, 복사, 배포, 수정에 제한이 있는 소프트웨어. [17.03]

💡 4. 리눅스 시스템의 특징 및 부팅 과정

🐧 리눅스 시스템의 특징 및 부팅 과정

  • Runlevel (실행 레벨)
    • 시스템의 동작 모드를 정의.
    • 주요 실행 레벨:
      • 0: 시스템 종료 (halt)
      • 1: 단일 사용자 모드 (single user mode, 복구 모드) [22.03]
      • 2: 다중 사용자 모드 (네트워크 미지원)
      • 3: 다중 사용자 모드 (텍스트 기반, 네트워크 지원)
      • 5: 다중 사용자 모드 (그래픽 기반, X-Window 지원) [17.09]
      • 6: 시스템 재부팅 (reboot)
    • 기본 실행 레벨 확인: /etc/inittab (SysVinit 기반), systemctl get-default (systemd 기반)
    • 실행 레벨 변경: init [레벨], telinit [레벨], systemctl isolate [target.target]
  • GRUB (GRand Unified Bootloader)
    • 리눅스의 기본 부트로더.
    • ROM-BIOS 다음에 실행되어 커널을 RAM으로 읽어 들여 적재하는 역할. [15.09]
    • 하드디스크의 첫 번째 MBR(Master Boot Record)에 저장됨. [15.09]
    • 역할:
      • 운영체제 선택 및 부팅.
      • 커널 이미지 로드.
      • 부팅 옵션 변경.
    • 주의: ROM-BIOS보다 먼저 컴퓨터를 시작할 때 수행된다는 설명은 틀립니다. [15.09]
  • 부팅 과정 (SysVinit 기반)
    1. BIOS: 전원 켜짐 → POST → 하드웨어 초기화 → MBR 읽기
    2. MBR: GRUB 실행
    3. GRUB: grub.conf (또는 grub.cfg) 파일 참조 → 커널 이미지와 initramfs (또는 initrd) 로드
    4. 커널: 시스템 초기화 → /sbin/init (PID 1) 실행
    5. Init: /etc/inittab 파일 참조 → 기본 실행 레벨 확인 → 해당 레벨의 스크립트 실행
    6. 서비스 데몬 실행 및 로그인 프롬프트 표시
  • systemd 기반 부팅 과정 (최신 리눅스 배포판)
    1. BIOS → MBR → GRUB (동일)
    2. GRUB → 커널 이미지 로드 (동일)
    3. 커널 → /sbin/init (systemd 심볼릭 링크) 또는 /usr/lib/systemd/systemd 실행
    4. systemd: *.target 파일 참조 → 서비스 및 데몬 실행
  • root 패스워드 분실 시 복구 (GRUB 환경 설정 파일 변경)
    • 커널 인자값에 init=/bin/sh 또는 rd.break 추가. [23.03]
    • 파일 시스템을 읽기/쓰기 모드로 변경: mount -o remount,rw /sysroot (또는 /)
    • 루트 경로 변경: chroot /sysroot
    • 패스워드 변경: passwd
    • 파일 시스템을 읽기 모드로 변경: mount -o remount,ro / (또는 /sysroot)
    • 재부팅: sync, exit, reboot -f
  • 시스템 성능 요소
    • 응답 시간(Response Time): 명령 수행 후 결과가 나올 때까지의 시간.
    • 처리량(Throughput): 단위 시간당 처리 능력. [15.09]
    • 가용성(Availability): 시스템이 정상적으로 작동하는 시간 비율.
    • 신뢰성(Reliability): 시스템이 오류 없이 얼마나 안정적으로 작동하는지.

💡 5. 리눅스 파일 시스템

🐧 리눅스 파일 시스템

  • 주요 파일 시스템
    • ext2: 초기 리눅스 표준 파일 시스템, 저널링 미지원.
    • ext3: ext2에 저널링 기능 추가, 최대 32TB 볼륨, 2TB 파일 지원.
    • ext4: ext3의 확장, 최대 1EB 볼륨, 16TB 파일 지원, 다중 블록 할당(mballoc). [17.03]
    • XFS: SGI에서 개발, 저널링 파일 시스템, 최대 16EB 볼륨, 8EB 파일 지원, RHEL 7 기본 파일 시스템. [15.03]
    • JFS: IBM에서 개발, 저널링 파일 시스템. [15.03]
    • Swap: 가상 메모리 영역. [18.03]
    • Procfs (/proc): 일종의 가상 파일 시스템, 동작 중인 프로세스, 하드웨어, 시스템 정보 제공. [16.09]
  • 저널링(Journaling) 파일 시스템
    • 파일 시스템의 변경 사항을 미리 기록하여 시스템 충돌 시 데이터 복구 능력 향상.
    • ext3, ext4, XFS, JFS 등이 지원.
  • 매직 넘버(Magic Number)
    • 파일 시스템의 종류를 식별하는 고유한 값.
    • ext4의 매직 넘버: 0xEF53. [17.09]
  • 파일 시스템 특징
    • 블록 기반: 데이터를 블록 단위로 저장.
    • inode: 파일 및 디렉터리의 메타데이터 저장 (소유자, 그룹, 권한, 생성/수정 시간, 크기, 데이터 블록 위치 등). [22.03]
    • Hard Link: 동일한 inode를 가리키는 여러 개의 파일 이름. 원본 파일 삭제 시에도 데이터 유지.
    • Symbolic Link (Soft Link): 원본 파일의 경로를 저장하는 새로운 파일. 원본 파일 삭제 시 링크 깨짐.

💡 6. 디스크 및 저장 장치

🐧 디스크 및 저장 장치

  • RAID (Redundant Array of Independent Disks)
    • 여러 개의 하드디스크를 묶어 하나의 논리적인 저장 장치처럼 사용.
    • 성능 향상, 데이터 안정성, 용량 증대 목적.
    • RAID 레벨:
      • RAID-0 (Striping): 데이터 분산 저장, 성능 향상, 안정성 없음 (하나의 디스크 손상 시 전체 데이터 손실). 최소 2개 디스크.
      • RAID-1 (Mirroring): 데이터 이중화 저장, 안정성 높음, 용량 낭비 (원래 용량의 절반만 사용). 최소 2개 디스크. [15.09]
      • RAID-5: 패리티(Parity) 정보를 분산 저장, 안정성과 성능을 동시에 제공. 최소 3개 디스크. 하나의 디스크 손상 허용. [23.03, 15.09]
      • RAID-6: 이중 패리티 정보 분산 저장, RAID-5보다 높은 안정성. 최소 4개 디스크. 두 개의 디스크 손상 허용. [19.03, 16.09]
      • RAID-10 (RAID 1+0): RAID-1과 RAID-0 조합, 고성능 및 고안정성. 최소 4개 디스크. [15.09]
  • LVM (Logical Volume Manager)
    • 논리적인 볼륨 관리. 물리적인 디스크의 용량을 동적으로 확장/축소 가능. [16.09]
    • 구성 순서: 물리적 볼륨(PV) → 볼륨 그룹(VG) → 논리적 볼륨(LV). [19.03]
  • Swap (스왑) 파티션
    • 하드디스크에 할당된 가상 메모리 공간. [18.03, 16.09]
    • 메모리 부족 시 사용되는 예비 공간. [18.03]
    • 크기 고정, 동적 조절 어려움. [18.03]

💡 7. 리눅스 데몬 및 서비스

🐧 리눅스 데몬 및 서비스

  • 데몬(Daemon):
    • 백그라운드에서 특정 서비스를 제공하는 프로그램.
    • 주로 d로 끝나는 이름 (httpd, sshd, syslogd).
  • 서비스 관리 도구
    • SysVinit: service, chkconfig, init 등 사용.
    • systemd (최신): systemctl 사용 (서비스 시작/중지/재시작, 부팅 시 자동 실행 설정 등).
  • xinetd:
    • 네트워크 서비스 관리 데몬 (슈퍼 데몬).
    • 소켓 기반 서비스를 관리하며, 요청이 있을 때만 해당 데몬을 실행하여 자원 절약.
    • /etc/xinetd.conf/etc/xinetd.d/ 디렉터리에서 설정.
    • log_type: 로그 기록 방식 설정 (FILE, SYSLOG). [17.03]
    • cps (Connections Per Second): 초당 최대 연결 수 제한. cps = rate timeout 형식. [20.06]
  • HTTPD (Apache HTTP Server):
    • 웹 서버 데몬.
    • 주요 설정 파일: /etc/httpd/conf/httpd.conf 또는 /etc/apache2/apache2.conf.
    • DocumentRoot 지시어로 웹 문서 디렉터리 설정. [20.10]
  • Squid:
    • 프록시 서버 데몬.
    • 주요 설정 파일: /etc/squid/squid.conf.
    • http_port로 포트 번호 설정. [20.06]
    • cache_dir로 캐시 디렉터리 설정. [17.09]
  • DHCPD (Dynamic Host Configuration Protocol Daemon):
    • IP 주소를 자동으로 할당하는 데몬.
    • 주요 설정 파일: /etc/dhcp/dhcpd.conf.
    • option routers로 게이트웨이 주소 설정. [20.06]
  • NTP (Network Time Protocol):
    • 시간 동기화 프로토콜.
    • ntpdate 명령으로 시간 동기화. [16.03]

💡 8. 리눅스 보안

🐧 리눅스 보안

  • iptables:
    • 리눅스 커널의 넷필터(Netfilter) 프레임워크를 이용한 방화벽 도구. [23.03, 15.03]
    • 정책(Policy) 및 규칙(Rule) 설정.
    • 주요 테이블 및 체인:
      • filter (기본): 패킷 필터링 (INPUT, OUTPUT, FORWARD). [17.09]
      • nat: 네트워크 주소 변환 (PREROUTING, POSTROUTING, OUTPUT). [23.03, 17.09]
      • mangle: 패킷 변형.
      • raw: 연결 추적 비활성화.
    • 주요 옵션:
      • -A: 규칙 추가 (Append)
      • -D: 규칙 삭제 (Delete)
      • -L: 규칙 목록 보기 (List)
      • -F: 모든 규칙 삭제 (Flush)
      • -P: 기본 정책 설정 (Policy) - ACCEPT, DROP, REJECT. [23.03, 19.03, 15.09]
      • -j: 대상 지정 (Jump Target) - ACCEPT, DROP, REJECT, LOG 등. [23.03, 15.03]
      • -s: 출발지 IP 주소 (Source) [23.03]
      • -d: 목적지 IP 주소 (Destination)
    • ACTION (대상):
      • ACCEPT: 패킷 허용.
      • DROP: 패킷을 조용히 버림 (응답 없음). [20.06, 15.03]
      • REJECT: 패킷을 버리고, 거부 메시지(ICMP Port Unreachable)를 보냄. [15.09]
      • LOG: 로그 기록.
    • iptables 정책 저장:
      • iptables-save > [파일이름] 또는 service iptables save (SysVinit). [17.09, 16.03]
      • 저장된 파일: /etc/sysconfig/iptables (레드햇 계열). [16.03]
      • 로그 파일: /var/log/messages 또는 /var/log/syslog. [20.10]
  • nftables:
    • iptables, ip6tables, arptables, ebtables를 대체하기 위해 개발된 차세대 방화벽 소프트웨어. [23.03]
  • TCP Wrapper:
    • 서비스에 대한 접근 제어.
    • hosts.allow, hosts.deny 파일 이용. [19.03]
  • SELinux (Security-Enhanced Linux):
    • 강제적 접근 제어(MAC)를 구현하는 보안 강화 커널 모듈.
    • 기존의 임의적 접근 제어(DAC)의 한계 보완.
  • IDS (Intrusion Detection System) / IPS (Intrusion Prevention System)
    • Snort: 가장 널리 사용되는 공개형 네트워크 기반 IDS/IPS. [23.03]
    • Suricata: Snort의 단점 보완, 멀티코어, 멀티스레딩 지원. [23.03, 20.06, 15.09]
    • Tripwire: 파일 무결성 검사 도구 (호스트 기반 IDS). [20.06, 15.03]
    • Portsentry: 포트 스캔 탐지 및 차단 도구. [23.03]
  • DoS (Denial of Service) / DDoS (Distributed Denial of Service) 공격
    • DoS: 단일 공격자가 특정 시스템의 자원을 고갈시켜 정상적인 서비스 방해. [18.09]
    • DDoS: 여러 공격자가 분산되어 동시에 서비스 거부 공격. [18.09]
    • 공격 유형:
      • SYN Flooding: TCP 3-way Handshake 과정 악용, SYN 패킷만 보내 ACK를 기다려 자원 고갈. [20.10, 19.09, 19.03, 18.09]
      • UDP Flooding: 다량의 UDP 패킷 전송. [19.09]
      • ICMP Flooding: 다량의 ICMP 패킷 전송 (Ping Flooding). [19.09]
      • Smurf Attack: ICMP Request를 브로드캐스트하여 다수의 시스템이 공격 대상에게 ICMP Reply를 보내도록 유도. [19.03, 18.03]
      • Land Attack: 출발지 IP와 목적지 IP를 동일하게 하여 패킷이 무한 루프에 빠지게 함. [19.03, 18.03]
      • Ping of Death: 정상 크기(65,535 byte)보다 큰 Ping 패킷 전송, 시스템 부하 유발. [19.09, 18.03]
      • Teardrop Attack: 조각난 IP 패킷의 Offset 정보를 조작하여 시스템 충돌 유발. [19.09, 19.03, 18.09, 18.03]
      • 메모리 자원 고갈 공격: malloc() 함수 등을 이용하여 메모리를 지속적으로 할당하여 시스템 마비. [20.06, 16.03]
      • 디스크 자원 고갈 공격: 불필요한 파일 생성 등으로 디스크 공간 소모. [23.03, 16.03]
      • 프로세스 자원 고갈 공격: fork() 함수 등을 이용하여 프로세스를 무한정 생성하여 시스템 마비. [23.03, 16.03]
      • 네트워크 대역폭 고갈 공격: 대량의 트래픽을 발생시켜 네트워크 마비. [23.03]
    • DDoS 공격 도구: Trinoo, TFN, TFN2K, Stacheldraht. [20.10, 18.03]
    • 주의: Boink는 DDoS 공격 도구가 아닙니다. [20.10]
  • Password Cracking Tools:
    • John the Ripper: 비밀번호 해독 도구. [20.06, 15.03]
    • Crack: 유닉스/리눅스 비밀번호 크래킹 도구.

💡 9. X-Window 시스템

🐧 X-Window 시스템

  • X-Window 시스템 구성 요소:
    • X 서버(X Server): 하드웨어(키보드, 마우스, 모니터 등)를 직접 제어하고, X 클라이언트의 요청을 처리하여 화면에 출력. [17.09]
    • X 클라이언트(X Client): 사용자 응용 프로그램. X 서버에 디스플레이 요청.
    • 윈도우 매니저(Window Manager): 윈도우의 모양, 크기, 위치 등을 관리 (예: Metacity, Kwin, Xfwm).
    • 디스플레이 매니저(Display Manager): 런 레벨 5(그래픽 모드) 부팅 시 로그인 창을 통해 사용자 인증을 수행. [17.09] (예: GDM, KDM, LightDM).
    • X 라이브러리: X 서버와 X 클라이언트 간의 통신을 위한 C 언어 기반 라이브러리 (Xlib, GTK, Qt 등). [15.03]
  • 환경 변수:
    • DISPLAY 환경 변수: X 클라이언트가 X 서버로 디스플레이를 전송할 때 사용. DISPLAY=[호스트이름 또는 IP]:[디스플레이 번호].[화면 번호]. [20.10]

💡 10. 가상화 기술

🐧 가상화 기술

  • 가상화(Virtualization):
    • 하드웨어 자원(CPU, 메모리, 스토리지, 네트워크)을 가상으로 분할하여 여러 운영체제를 동시에 실행. [17.09]
    • 자원 효율성 증대, 서버 통합, 개발 및 테스트 환경 구축 용이.
  • 클라우드 컴퓨팅(Cloud Computing):
    • 인터넷을 통해 컴퓨팅 자원을 서비스 형태로 제공. [20.06]
    • 서비스 유형:
      • IaaS (Infrastructure as a Service): 가상 서버, 스토리지 등 인프라 제공.
      • PaaS (Platform as a Service): 개발 플랫폼 제공 (OS, 미들웨어, 런타임).
      • SaaS (Software as a Service): 소프트웨어 애플리케이션 제공 (웹메일, CRM).
      • FaaS (Function as a Service) / Serverless Computing: 함수 단위의 코드 실행 환경 제공. [20.06]
    • 주의: "클라우드 컴퓨팅이 발전하면서 하드웨어 자원을 제외한 나머지 IT 자원은 서비스 형태로 제공할 수 있게 되었다"는 틀린 설명입니다. 하드웨어 자원도 IaaS 형태로 제공됩니다. [20.06]
  • 리눅스 가상화 기술/도구
    • KVM (Kernel-based Virtual Machine): 리눅스 커널에 내장된 가상화 기술. 하드웨어 가상화 지원.
    • QEMU: 하드웨어 에뮬레이션 및 가상화 도구. KVM과 함께 사용되어 성능 향상.
    • Xen: 하이퍼바이저 기반 가상화 기술.
    • Libvirt: 가상화 관리 라이브러리 및 도구 모음 (virsh, virt-manager, virt-top). [20.10, 19.09]
    • VirtualBox, VMware: 데스크톱 가상화 소프트웨어.

💡 11. 기타

🐧 기타

  • 시그널(Signal):
    • 프로세스 간 통신(IPC) 또는 프로세스 제어를 위한 소프트웨어 인터럽트.
    • 주요 시그널:
      • SIGINT (2): Ctrl+C, 프로세스 종료 요청. [19.03, 17.09]
      • SIGQUIT (3): Ctrl+\, 프로세스 종료 및 코어 덤프. [22.03]
      • SIGKILL (9): 프로세스 강제 종료 (무시할 수 없음). [22.03, 19.09]
      • SIGTERM (15): 프로세스 종료 요청 (우아한 종료). [22.03, 19.09]
      • SIGTSTP (20): Ctrl+Z, 프로세스 일시 정지 (정지 후 fg로 포어그라운드, bg로 백그라운드). [22.03, 16.03]
      • SIGSTOP (19): 프로세스 강제 일시 정지 (무시할 수 없음). [19.09, 16.03]
  • 프로세스 간 통신(IPC):
    • Pipe: 단방향 통신.
    • Named Pipe (FIFO): 파일 시스템에 이름이 있는 파이프.
    • Message Queue: 메시지 형태로 데이터 교환.
    • Shared Memory: 메모리 공간 공유.
    • Semaphore: 공유 자원 접근 제어.
    • Socket: 네트워크 기반 통신.
  • 디스플레이 서버 프로토콜:
    • Wayland: X-Window를 대체할 차세대 디스플레이 서버 프로토콜.
    • Mir: Canonical (Ubuntu 개발사)에서 개발한 디스플레이 서버.
  • 서비스 포트:
    • SSH (22/TCP): 원격 접속.
    • FTP (20, 21/TCP): 파일 전송.
    • Telnet (23/TCP): 원격 접속 (보안 취약).
    • SMTP (25/TCP): 메일 전송.
    • HTTP (80/TCP): 웹 서비스.
    • HTTPS (443/TCP): 보안 웹 서비스.
    • DNS (53/UDP, TCP): 도메인 이름 해석. [22.03]
  • VNC 서버:
    • 리눅스 서버와 윈도우 클라이언트 간의 데스크톱 공유 가능. [20.10]
  • HTTP 상태 코드:
    • 200 OK: 요청 성공.
    • 404 Not Found: 요청한 페이지 없음. [18.09]
    • 500 Internal Server Error: 서버 내부 오류.

🐧 리눅스 마스터 1급 1과목 핵심 빈출 지문 (2015년 ~ 2023년)

  1. 리누스 토발즈(Linus Torvalds)는 교육용 유닉스인 미닉스를 참고하여 리눅스 커널 개발을 시작했다.
  2. 리처드 스톨먼(Richard Stallman)GNU 프로젝트를 창시하고, 자유 소프트웨어 재단(FSF)을 설립했으며, GPL(GNU 일반 공중 사용 허가서)을 제정했다.
  3. GNU 프로젝트 개발 소프트웨어에는 `gcc`, `gdb`, `emacs` 등이 있다.
  4. KDE는 GNU 프로젝트가 아닌 독립 데스크톱 환경 프로젝트이다. (GNU 프로젝트 개발 소프트웨어에 대한 틀린 설명)
  5. 앤드루 S. 타넨바움(Andrew S. Tanenbaum)은 교육용 유닉스인 미닉스(Minix)를 개발했다.
  6. 최근 운영체제 동향은 편리한 사용자 인터페이스, 가상화 기술, 모바일 운영체제의 보편화, 뛰어난 이식성 지원 등이다.
  7. "개방적 운영체제에서 폐쇄적 운영체제로 바뀌고 있다"는 운영체제 동향에 대한 틀린 설명이다.
  8. 리눅스 커널 기반 모바일 운영체제에는 Android, Tizen, webOS, GENIVI, QNX 등이 있다.
  9. Bada OS, OS X는 리눅스 커널 기반 모바일 운영체제가 아니다.
  10. 리눅스 배포판의 초기부터 최근 순서는 SLS → Slackware → SUSE이다.
  11. 데비안(Debian) 계열 배포판으로는 Knoppix, BackTrack (Kali Linux), Ubuntu, Linux Mint, Elementary OS 등이 있다.
  12. 레드햇(RedHat) 계열 배포판으로는 Fedora, CentOS, Oracle Linux, Scientific Linux 등이 있다.
  13. Vector Linux는 Slackware 계열 배포판이다. (레드햇 계열 배포판에 대한 틀린 설명)
  14. 리눅스는 하나의 시스템을 여러 사용자가 동시에 사용할 수 있는 다중 사용자(Multi-user) 시스템이다.
  15. 리눅스는 하나의 시스템에서 여러 작업을 동시에 수행할 수 있는 다중 작업(Multi-tasking) 시스템이다.
  16. 가상 메모리(Virtual Memory)는 물리적 메모리가 부족할 때 하드디스크의 일부를 메모리처럼 사용하는 기술이다.
  17. 가상 메모리는 스와핑(Swapping) 기술을 통해 메모리와 하드디스크 간 데이터 교환을 수행한다.
  18. `free` 명령어로 가상 메모리(Swap) 용량을 확인할 수 있다.
  19. 리눅스는 최상위 디렉터리인 `/`(root)를 기준으로 모든 파일과 디렉터리가 계층적으로 구성되는 계층적 파일 구조(Hierarchical File System)를 갖는다.
  20. 리눅스에서는 모든 하드웨어 장치(키보드, 프린터, 하드디스크 등)를 파일처럼 다루는 장치의 파일화(Everything is File) 특징을 가진다.
  21. 장치 파일들은 `/dev` 디렉터리에 위치한다.
  22. 리눅스는 하나의 모니터에서 여러 개의 터미널 세션(가상 터미널)을 제공하는 가상 콘솔(Virtual Console)을 지원한다.
  23. 리눅스는 기본적으로 6개의 가상 콘솔을 제공하며, `Ctrl+Alt+F1` ~ `F6` 키 조합으로 전환할 수 있다.
  24. 파이프(Pipe)는 한 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 연결하는 프로세스 간 통신 기술이다.
  25. 파이프는 `|` 기호를 사용한다.
  26. "표준 입출력이 아닌 다른 입출력으로 변경할 때 사용한다"는 파이프에 대한 틀린 설명이다.
  27. 리다이렉션(Redirection)은 프로세스의 표준 입출력 방향을 변경하는 기능이다.
  28. 리다이렉션은 `>`, `>>`, `<` 기호를 사용한다.
  29. 동적 라이브러리(Shared Library)는 여러 프로그램에서 공유하여 사용하는 라이브러리로, 메모리 공간 절약 및 효율성 증대 효과가 있다.
  30. 리눅스는 다양한 하드웨어 아키텍처에서 실행 가능한 뛰어난 이식성(Portability)을 가진다.
  31. GPL (General Public License)은 GNU 프로젝트의 핵심 라이선스로, 소스 코드 공개 의무가 가장 강력하다.
  32. GPL이 적용된 소프트웨어를 수정하거나 배포할 경우, 수정된 소스 코드 또한 GPL에 따라 공개해야 한다.
  33. LGPL (Lesser General Public License)은 GPL보다 완화된 조건의 라이선스로, 라이브러리에 주로 적용된다.
  34. LGPL 라이브러리를 사용하는 소프트웨어는 소스 코드를 공개할 의무가 없다.
  35. LGPL 라이브러리를 사용하는 프로그램을 상업용으로 판매할 경우 소스 코드를 공개할 의무는 없다.
  36. BSD (Berkeley Software Distribution License)는 가장 자유로운 라이선스 중 하나로, 소스 코드 공개 의무가 거의 없으며, 원작자 표시 의무만 존재한다.
  37. MPL (Mozilla Public License)은 소스 코드와 실행 파일을 별도로 공개 가능하며, 수정된 소스코드의 비공개가 가능하다.
  38. MIT License는 BSD 라이선스와 유사하게 매우 자유로운 라이선스로, 2차적 저작물에 대한 소스 코드 공개 의무가 없다.
  39. Apache License는 BSD와 유사하게 소스 코드 공개 의무가 없는 라이선스이다.
  40. Freeware (프리웨어)무료로 사용 가능하지만, 소스 코드는 제공되지 않거나 배포상의 제약이 있을 수 있다.
  41. Shareware (셰어웨어)일정 기간 무료 사용 후 계속 사용하려면 비용을 지불해야 하는 소프트웨어이다.
  42. Proprietary Software (독점 소프트웨어/Closed Software)는 저작권자가 모든 권리를 소유하며, 사용, 복사, 배포, 수정에 제한이 있는 소프트웨어이다.
  43. Runlevel (실행 레벨)은 시스템의 동작 모드를 정의한다.
  44. 런 레벨 `0`은 시스템 종료 모드이다.
  45. 런 레벨 `1`은 단일 사용자 모드 또는 복구 모드이다.
  46. 런 레벨 `3`은 다중 사용자 모드(텍스트 기반, 네트워크 지원)이다.
  47. 런 레벨 `5`는 다중 사용자 모드(그래픽 기반, X-Window 지원)이다.
  48. 런 레벨 `6`은 시스템 재부팅 모드이다.
  49. GRUB (GRand Unified Bootloader)은 리눅스의 기본 부트로더로, ROM-BIOS 다음에 실행되어 커널을 RAM으로 읽어 들여 적재하는 역할을 한다.
  50. GRUB는 하드디스크의 첫 번째 MBR(Master Boot Record)에 저장된다.
  51. GRUB의 역할은 운영체제 선택 및 부팅, 커널 이미지 로드, 부팅 옵션 변경 등이다.
  52. GRUB는 ROM-BIOS보다 먼저 컴퓨터를 시작할 때 수행된다는 설명은 틀리다.
  53. root 패스워드 분실 시 복구는 GRUB 환경 설정 파일에서 커널 인자값에 `init=/bin/sh` 또는 `rd.break`를 추가하여 진행한다.
  54. 시스템 성능 요소에는 응답 시간(Response Time), 처리량(Throughput), 가용성(Availability), 신뢰성(Reliability)이 있다.
  55. ext2는 초기 리눅스 표준 파일 시스템으로, 저널링을 지원하지 않는다.
  56. ext3는 ext2에 저널링 기능이 추가된 파일 시스템이다.
  57. ext4는 ext3의 확장된 버전으로, 다중 블록 할당(`mballoc`)을 사용한다.
  58. XFS는 SGI에서 개발한 저널링 파일 시스템으로, RHEL 7의 기본 파일 시스템이다.
  59. JFS는 IBM에서 개발한 저널링 파일 시스템이다.
  60. Swap은 가상 메모리 영역이다.
  61. Procfs (`/proc`)는 일종의 가상 파일 시스템으로, 동작 중인 프로세스, 하드웨어, 시스템 정보를 제공한다.
  62. 저널링(Journaling) 파일 시스템은 파일 시스템의 변경 사항을 미리 기록하여 시스템 충돌 시 데이터 복구 능력을 향상시킨다.
  63. ext3, ext4, XFS, JFS 등이 저널링을 지원한다.
  64. 매직 넘버(Magic Number)는 파일 시스템의 종류를 식별하는 고유한 값이다.
  65. ext4의 매직 넘버는 `0xEF53`이다.
  66. inode는 파일 및 디렉터리의 메타데이터를 저장한다. (소유자, 그룹, 권한, 생성/수정 시간, 크기, 데이터 블록 위치 등)
  67. Hard Link동일한 inode를 가리키는 여러 개의 파일 이름이며, 원본 파일 삭제 시에도 데이터가 유지된다.
  68. Symbolic Link (Soft Link)는 원본 파일의 경로를 저장하는 새로운 파일이며, 원본 파일 삭제 시 링크가 깨진다.
  69. RAID (Redundant Array of Independent Disks)는 여러 개의 하드디스크를 묶어 하나의 논리적인 저장 장치처럼 사용하며, 성능 향상, 데이터 안정성, 용량 증대를 목적으로 한다.
  70. RAID-0 (Striping)은 데이터 분산 저장으로 성능을 향상시키지만, 안정성은 없다. (최소 2개 디스크)
  71. RAID-1 (Mirroring)데이터 이중화 저장으로 안정성이 높지만, 용량 낭비가 있다. (최소 2개 디스크)
  72. RAID-5패리티(Parity) 정보를 분산 저장하여 안정성과 성능을 동시에 제공하며, 하나의 디스크 손상을 허용한다. (최소 3개 디스크)
  73. RAID-6이중 패리티 정보를 분산 저장하여 RAID-5보다 높은 안정성을 제공하며, 두 개의 디스크 손상을 허용한다. (최소 4개 디스크)
  74. RAID-10 (RAID 1+0)은 RAID-1과 RAID-0의 조합으로, 고성능 및 고안정성을 제공한다. (최소 4개 디스크)
  75. LVM (Logical Volume Manager)은 물리적인 디스크의 용량을 동적으로 확장/축소할 수 있는 논리적인 볼륨 관리 기술이다.
  76. LVM의 구성 순서는 물리적 볼륨(PV) → 볼륨 그룹(VG) → 논리적 볼륨(LV)이다.
  77. Swap (스왑) 파티션은 하드디스크에 할당된 가상 메모리 공간으로, 메모리 부족 시 사용되는 예비 공간이다.
  78. 데몬(Daemon)백그라운드에서 특정 서비스를 제공하는 프로그램으로, 주로 `d`로 끝나는 이름을 갖는다.
  79. 서비스 관리 도구로는 SysVinit 기반의 `service`, `chkconfig`, `init` 등이 있으며, systemd 기반의 `systemctl`이 있다.
  80. xinetd는 네트워크 서비스 관리 데몬(슈퍼 데몬)으로, 요청이 있을 때만 해당 데몬을 실행하여 자원을 절약한다.
  81. `xinetd`의 `log_type`은 로그 기록 방식을 설정한다 (FILE, SYSLOG).
  82. `xinetd`의 `cps`는 초당 최대 연결 수를 제한한다 (`cps = rate timeout` 형식).
  83. HTTPD (Apache HTTP Server)는 웹 서버 데몬이다.
  84. HTTPD의 주요 설정 파일은 `/etc/httpd/conf/httpd.conf` 또는 `/etc/apache2/apache2.conf`이다.
  85. HTTPD에서 `DocumentRoot` 지시어로 웹 문서 디렉터리를 설정한다.
  86. Squid는 프록시 서버 데몬이다.
  87. Squid의 주요 설정 파일은 `/etc/squid/squid.conf`이며, `http_port`로 포트 번호를 설정하고, `cache_dir`로 캐시 디렉터리를 설정한다.
  88. DHCPD (Dynamic Host Configuration Protocol Daemon)IP 주소를 자동으로 할당하는 데몬이다.
  89. DHCPD의 주요 설정 파일은 `/etc/dhcp/dhcpd.conf`이며, `option routers`로 게이트웨이 주소를 설정한다.
  90. NTP (Network Time Protocol)시간 동기화 프로토콜이다.
  91. `ntpdate` 명령으로 시간 동기화를 수행한다.
  92. iptables는 리눅스 커널의 넷필터(Netfilter) 프레임워크를 이용한 방화벽 도구이다.
  93. iptables의 주요 테이블은 `filter` (패킷 필터링), `nat` (네트워크 주소 변환), `mangle` (패킷 변형), `raw` (연결 추적 비활성화)이다.
  94. iptables의 `filter` 테이블에서 사용 가능한 주요 체인은 `INPUT`, `OUTPUT`, `FORWARD`이다.
  95. iptables의 `nat` 테이블에서 사용 가능한 주요 체인은 `PREROUTING`, `POSTROUTING`, `OUTPUT`이다.
  96. iptables의 주요 옵션은 `-A` (규칙 추가), `-D` (규칙 삭제), `-L` (규칙 목록 보기), `-F` (모든 규칙 삭제), `-P` (기본 정책 설정), `-j` (대상 지정), `-s` (출발지 IP 주소)이다.
  97. iptables의 `ACCEPT` 액션은 패킷을 허용한다.
  98. iptables의 `DROP` 액션은 패킷을 조용히 버린다 (응답 없음).
  99. iptables의 `REJECT` 액션은 패킷을 버리고, 거부 메시지(ICMP Port Unreachable)를 보낸다.
  100. iptables 정책은 `iptables-save > [파일이름]` 또는 `service iptables save` 명령으로 저장할 수 있다.
  101. iptables 정책이 저장되는 파일은 레드햇 계열에서 `/etc/sysconfig/iptables`이다.
  102. iptables 관련 로그는 `/var/log/messages` 또는 `/var/log/syslog`에 기록된다.
  103. nftables는 `iptables`, `ip6tables`, `arptables`, `ebtables`를 대체하기 위해 개발된 차세대 방화벽 소프트웨어이다.
  104. TCP Wrapper는 서비스에 대한 접근 제어를 위해 `hosts.allow`, `hosts.deny` 파일을 이용한다.
  105. SELinux (Security-Enhanced Linux)강제적 접근 제어(MAC)를 구현하는 보안 강화 커널 모듈이다.
  106. Snort는 가장 널리 사용되는 공개형 네트워크 기반 IDS/IPS이다.
  107. Suricata는 Snort의 단점을 보완하며, 멀티코어, 멀티스레딩 지원, GPU 하드웨어 가속 지원이 가능하다.
  108. Tripwire파일 무결성 검사 도구 (호스트 기반 IDS)이다.
  109. Portsentry포트 스캔 탐지 및 차단 도구이다.
  110. DoS (Denial of Service) 공격단일 공격자가 특정 시스템의 자원을 고갈시켜 정상적인 서비스 방해를 유발한다.
  111. DDoS (Distributed Denial of Service) 공격여러 공격자가 분산되어 동시에 서비스 거부 공격을 수행한다.
  112. SYN FloodingTCP 3-way Handshake를 악용하는 DoS/DDoS 공격 유형이다.
  113. UDP Flooding은 다량의 UDP 패킷을 전송하는 DoS/DDoS 공격 유형이다.
  114. ICMP Flooding은 다량의 ICMP 패킷을 전송하는 DoS/DDoS 공격 유형 (Ping Flooding)이다.
  115. Smurf Attack은 ICMP Request 브로드캐스트를 이용하는 DoS/DDoS 공격 유형이다.
  116. Land Attack은 출발지/목적지 IP 주소를 동일하게 하는 DoS/DDoS 공격 유형이다.
  117. Ping of Death는 정상 크기보다 큰 Ping 패킷을 전송하는 DoS/DDoS 공격 유형이다.
  118. Teardrop Attack은 조각난 IP 패킷의 Offset 정보를 조작하여 시스템을 마비시키는 DoS/DDoS 공격 유형이다.
  119. 메모리 자원 고갈 공격은 `malloc()` 함수 등을 이용한 메모리 할당으로 시스템 자원을 고갈시키는 DoS/DDoS 공격 유형이다.
  120. 디스크 자원 고갈 공격은 불필요한 파일 생성으로 시스템 자원을 고갈시키는 DoS/DDoS 공격 유형이다.
  121. 프로세스 자원 고갈 공격은 `fork()` 함수 등을 이용한 프로세스 무한 생성으로 시스템 자원을 고갈시키는 DoS/DDoS 공격 유형이다.
  122. 네트워크 대역폭 고갈 공격은 대량의 트래픽 발생으로 시스템 자원을 고갈시키는 DoS/DDoS 공격 유형이다.
  123. DDoS 공격 도구에는 Trinoo, TFN, TFN2K, Stacheldraht가 있다.
  124. Boink는 DDoS 공격 도구가 아니다.
  125. Password Cracking Tools에는 John the Ripper, Crack 등이 있다.
  126. X 서버(X Server)하드웨어(키보드, 마우스, 모니터 등)를 직접 제어하고, X 클라이언트의 요청을 처리하여 화면에 출력한다.
  127. X 클라이언트(X Client)는 사용자 응용 프로그램으로, X 서버에 디스플레이를 요청한다.
  128. 윈도우 매니저(Window Manager)는 윈도우의 모양, 크기, 위치 등을 관리한다. (예: Metacity, Kwin, Xfwm)
  129. 디스플레이 매니저(Display Manager)는 런 레벨 5(그래픽 모드) 부팅 시 로그인 창을 통해 사용자 인증을 수행한다. (예: GDM, KDM, LightDM)
  130. X 라이브러리는 X 서버와 X 클라이언트 간의 통신을 위한 C 언어 기반 라이브러리이다 (Xlib, GTK, Qt 등).
  131. `DISPLAY` 환경 변수는 X 클라이언트가 X 서버로 디스플레이를 전송할 때 사용된다 (`DISPLAY=[호스트이름 또는 IP]:[디스플레이 번호].[화면 번호]`).
  132. 가상화(Virtualization)는 하드웨어 자원(CPU, 메모리, 스토리지, 네트워크)을 가상으로 분할하여 여러 운영체제를 동시에 실행하는 기술이다.
  133. 가상화는 자원 효율성 증대, 서버 통합, 개발 및 테스트 환경 구축 용이 등의 장점이 있다.
  134. 클라우드 컴퓨팅(Cloud Computing)은 인터넷을 통해 컴퓨팅 자원을 서비스 형태로 제공하는 것이다.
  135. 클라우드 서비스 유형에는 IaaS, PaaS, SaaS가 있다.
  136. FaaS (Function as a Service) 또는 Serverless Computing은 함수 단위의 코드 실행 환경을 제공하는 클라우드 컴퓨팅의 일종이다.
  137. "클라우드 컴퓨팅이 발전하면서 하드웨어 자원을 제외한 나머지 IT 자원은 서비스 형태로 제공할 수 있게 되었다"는 틀린 설명이다. (하드웨어 자원도 IaaS 형태로 제공된다.)
  138. 리눅스 가상화 기술/도구에는 KVM (Kernel-based Virtual Machine), QEMU, Xen, Libvirt, VirtualBox, VMware 등이 있다.
  139. Libvirt는 가상화 관리 라이브러리 및 도구 모음으로, `virsh`, `virt-manager`, `virt-top` 등이 있다.
  140. 시그널(Signal)은 프로세스 간 통신(IPC) 또는 프로세스 제어를 위한 소프트웨어 인터럽트이다.
  141. `SIGINT` (2) 시그널`Ctrl+C` 키 조합으로 발생하며, 프로세스 종료를 요청한다.
  142. `SIGQUIT` (3) 시그널`Ctrl+\` 키 조합으로 발생하며, 프로세스 종료 및 코어 덤프를 생성한다.
  143. `SIGKILL` (9) 시그널은 프로세스를 강제 종료하며, 무시할 수 없는 시그널이다.
  144. `SIGTERM` (15) 시그널은 프로세스 종료를 요청하며, 우아한(graceful) 종료를 유도한다.
  145. `SIGTSTP` (20) 시그널`Ctrl+Z` 키 조합으로 발생하며, 프로세스를 일시 정지한다.
  146. `SIGSTOP` (19) 시그널은 프로세스를 강제 일시 정지하며, 무시할 수 없는 시그널이다.
  147. 프로세스 간 통신(IPC) 방식에는 Pipe, Named Pipe (FIFO), Message Queue, Shared Memory, Semaphore, Socket 등이 있다.
  148. 디스플레이 서버 프로토콜에는 Wayland (X-Window 대체), Mir 등이 있다.
  149. SSH의 기본 서비스 포트22/TCP이다.
  150. FTP의 기본 서비스 포트20, 21/TCP이다.
  151. Telnet의 기본 서비스 포트23/TCP이다.
  152. SMTP의 기본 서비스 포트25/TCP이다.
  153. HTTP의 기본 서비스 포트80/TCP이다.
  154. HTTPS의 기본 서비스 포트443/TCP이다.
  155. DNS의 기본 서비스 포트53/UDP, TCP이다.
  156. VNC 서버는 리눅스 서버와 윈도우 클라이언트 간의 데스크톱 공유를 가능하게 한다.
  157. HTTP 상태 코드 `200 OK`는 요청이 성공했음을 나타낸다.
  158. HTTP 상태 코드 `404 Not Found`는 요청한 페이지를 찾을 수 없음을 나타낸다.
  159. HTTP 상태 코드 `500 Internal Server Error`는 서버 내부 오류가 발생했음을 나타낸다.
728x90
Engineer-yr
@Engineer-yr :: SE-STUDY

https://github.com/yurimheo

공부 기록

목차