-
[born2beroot] 리눅스(Debian) 시스템/서버 관련 개념42Seoul 2022. 10. 1. 23:52
본 과제에서는 리눅스 시스템 및 서버 관리에 대해 배우는 것이 학습 목표이다.
- Debian vs CenOS
- Debian
- 자유 소프트웨어
- 지원하는 아키텍쳐 다양
- 서버, 임베디드, 모바일, .... 모든 것을 타겟으로 함
- 업데이트 주기가 잦음
- 더 좋은 소프트웨어 지향하기 때문
- 패키지 관리가 편리
- CentOS
- 상업용 소프트웨어
- 아키텍쳐로 x86-64 밖에 지원하지 않음
- 타겟 제한
- 업데이트 주기가 김
- 상업용 OS이기 때문 > 안정성 중요
- Debian
- Dist signature
- 디스크가 가지는 다른 디스크와 중복되지 않는 고유한 ID
- 운영체제와 특정 프로그램은 이를 통해 각각의 디스크 판별
- .vdi file
- virtual disk image file
- VirtualBox 전용 디스크 이미지 포맷
- Virtual Machine
- 물리적 컴퓨터와 동일한 기능을 제공하는 소프트웨어 컴퓨터
- 컴퓨팅 환경을 소프트웨어로 구현한 것, 즉, 컴퓨터 시스템을 에뮬레이션하는 소프트웨어
- 가상 머신의 장점
- 1. 운영체제 지원 : 운영체제 a에서 돌아가는 소프트웨어를 운영체제 b에서 돌릴 수 있다
- 2. 기반구조 강화 : 소수의 강력한 호스트에서 많은 가상머신을 돌릴 수 있다
- 여러 운영 체제를 돌리기 위해 많은 물리적 컴퓨터가 필요하지 않다
- 3. 테스팅과 복구
- 가상머신 안에서 안전하게 프로그램을 테스트할 수 있다
- 가상머신의 시스템 상태(설정, 메모리, 디스크 상태 등)를 캡쳐하는 기술인 스냅샷으로 쉽게 이전으로 되돌릴 수 있다
- Partition
- 하나의 디스크나 메모리를 여러 공간으로 나누어 사용
- 디렉토리 관리 용이
- 하나가 바이러스에 감염되더라도 다른 파티션의 데이터는 보호될 확률 높음
- 리눅스 파티션의 의미
- Logical volume
- 디스크의 볼륨이란 정보를 저장하고 있는 디스크를 몇 개로 분할해서 개별 디스크로 취급하는 것
- 물리적 볼륨(물리장치)을 모아 만든 볼륨 그룹의 사용 가능한 확장 영역으로 논리 볼륨을 만듦
- 논리볼륨을 사용하는 이유
- 여러 개를 합쳐 하나 처럼 사용 가능
- 자투리 공간 활용 가능
- 기존에 사용 중인 디스크 공간 확장 가능
- Logical volume manager(LVM)
- Logical Volume을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이자 프로그램
- 커널 : 운영체제의 핵심. 입출력 관리, 소프트웨어의 요청(system call)을 하드웨어가 처리할 수 있도록 변환하는 역할. 사용자는 shell을 이용하여 kernel을 통해 하드웨어를 사용할 수 있다.
- Logical Volume을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이자 프로그램
- Encrypted partitions
- 데이터의 기밀성 보장을 위해 파티션 암호화
- 왜 최소 2개의 파티션을 암호화해야 하는가?
- 암호화된 파티션을 사용할 때, 그 키는 RAM에 저장되어 있음
- 최대절전모드(hibernation) 시 시스템 전원을 끄기 전에 시스템 메모리의 내용은 swap 파티션에 기록 됨(노트북에서 쉽게 일어나는 상황)
- 이 때, swap 파티션이 암호화되어있지 않다면 제 3자가 여기 있는 키로 암호화된 파티션의 데이터에 접근할 수 있다
- 그래서 swap은 필수로 암호화
- Boot loader
- 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램
- 부트로더는 디스크에서 커널을 찾아 로드 및 실행시킴
- 리눅스의 부트로더 : GRUB 부트로더
- 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램
- AppArmor
- 시스템 관리자가 프로그램 프로필 별로 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈
- 운영체제에서 접근 통제를 통해 시스템 자원을 적절한 권한을 가진 사용자나 그룹만 사용할 수 있도록
- apparmor profile : 프로그램 별 보안 정책 설정
- to check : aa-status
- apt
- advanced package tool
- Debian 계열 Linux 배포판을 사용하는 컴퓨터에 설치된 software package(ex : .deb package)를 확인 및 구성, 설치를 자동화하는 프로그램
- 설치할 패키지 명을 입력하면 /etc/apt/sources.list 에서 해당 패키지 + 종속성 목록과 함께 찾아 자동으로 설치
- 종속성 문제 걱정하지 않아도 됨
- 유연함
- 사용자가 새로운 소스 목록 추가 가능
- 시스템 업그레이드 시 해당 패키지 업그레이드하지 않게 해 현재 버전 계속 사용하는 등의 작업 가능
- apptitude
- 사용자 인터페이스 있음
- 사용자가 대화형으로 패키지 검색해 설치, 제거하는 high-level 패키지 관리 도구
- apt보다 방대
- 사용자 인터페이스 있음
- apt vs apptitude
- apt-get이 패키지 설치/업그레이드/시스템 업그레이드/종속성 검사 등을 한다면 aptitude는 추가로 설치된 패키지 목록, 패키지를 자동/수동으로 설치하도록 표시, 업그레이드에 사용할 수 없는 패키지 보관 등의 작업 할 수 있음
- 패키지 삭제 시 aptitude는 사용되지 않는 패키지까지 삭제
- 반면 apt는 사용자가 -auto-remove, apt-get autoremove 명시해야
- apt는 설치/제거 중 충돌 시 종료
- aptitude는 해결 방법 제시
- TCP(Transmission Control Protocol)
- 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 네트워크 프로토콜
- SSH(Secure Shell)
- 네트워크 프로토콜의 하나로, 컴퓨터 간 공용 네트워크를 통한 안전한 통신을 위해 사용
- 모든 과정이 암호화되어 보안성 높음
- 한 쌍의 키(public/private key)를 통해 접속하려는 컴퓨터에 대한 인증 과정 거침
- public key : 공개되어도 안전, 메시지 전송 전 암호화에 쓰임
- private key : 공개되어서는 안 됨, 암호화된 메시지 복호화
- 사용 예 : 데이터 전송, 원격 제어
[공부] SSH (Secure Shell) : 기초 및 심화 개념
* 개인적인 공부 내용을 기록한 글입니다. SSH 기초 1. SSH란? Secure Shell = 보안 셸 원격지 호스트 컴퓨터에 접속하기 위해 사용하는 인터넷 프로토콜이다. 과거에 주로 사용되던 Telnet은 암호화가 이
choco4study.tistory.com
- 방화벽(Firewall)
- 미리 정의된 보안 규칙에 기반하여 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템
- 신뢰할 수 있는 내부 네트워크와 신뢰할 수 없는 외부 네트워크(ex. internet) 간 장벽
- UFW(Uncomplicated Firewall)
-
- netfilter : 리눅스 커널모듈로서 네트워크 패킷을 처리하기 위한 프레임워크
- 패킷 : 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록
- ipstables : netfilter에 원하는 룰을 넣을 수 있는 프로그램
- ipstables를 통한 작업을 간편화한 것이 UFW
- netfilter : 리눅스 커널모듈로서 네트워크 패킷을 처리하기 위한 프레임워크
-
- IP 넘버에 이름 붙이는 이유 (hostname)
- 사람들이 기억하기 쉽도록
- Port Forwarding
- 포트(Port)를 전달(Forwarding)
- 특정한 포트로 들어오는 데이터 패킷을 다른 포트로 바꿔서 다시 전송해주는 작업
- Sudo (Super-user do)
- root 계정으로 접속하여 작업하는 것 보다 안전
- 사용자들이 root 비밀번호를 알 필요가 없음
- 권한을 뺏기 위해 매번 비밀번호를 바꿀 필요가 없다
- sudo 명령어를 통해서만 작업 가능하므로 관리자 계정보다 더 적은 권한이 주어짐
- 실수하더라도 그 데미지가 적어진다
- sudo 명령어 실행 시 이를 사용한 유저 이름과 명령어가 기록됨
- 감사(auditing) 가능
- 사용자들이 root 비밀번호를 알 필요가 없음
- root 계정으로 접속하여 작업하는 것 보다 안전
- Wall
- 메세지/파일의 콘텐츠/standard input 등을 현재 로그인한 유저들의 터미널에 출력
- Cron
- 어떠한 작업을 특정 시간에 실행시키기 위한 데몬
- 데몬 : 멀티태스킹 운영체제에서 사용자가 직접 제어하지 않으며 백그라운드에서 작업하는 프로그램
- 어떠한 작업을 특정 시간에 실행시키기 위한 데몬
'42Seoul' 카테고리의 다른 글
[Born2BeRoot] VDI, VHD, VMDK 포맷의 차이점, 디스크 이미지 파일 (0) 2022.09.20 [Born2BeRoot] 가상머신(Virtual Machine) (0) 2022.09.19 [42Seoul] ft_printf 구현의 이론적 배경 (0) 2022.08.02 [42Seoul] ft_printf : va_arg(), 바이트패딩에 대한 약간의 고찰 (0) 2022.07.30 [get_next_line] 배경지식(정적변수, 파일디스크립터) (0) 2022.07.14 - Debian vs CenOS