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