모던 리눅스 관리
12가지 실무 프로젝트로 배우는 리눅스 관리의 기술
이 책은 최신 기술을 활용한 리눅스 관리 방법을 가상화, 연결, 암호화, 네트워킹, 이미지 관리, 시스템 모니터링의 6가지 주제로 나눠 설명한다. 가상 머신에 리눅스를 설치하고 서버를 구축하는 방법뿐만 아니라 구축 이후에 리눅스를 관리하고 운영하며 겪을 수 있는 다양한 문제를 해결하는 방법까지 다룬다. VM과 컨테이너를 이용한 가상화, AWS S3를 이용한 데이터 백업, Nextcloud를 이용한 파일 공유 서버 구축, 앤서블을 이용한 데브옵스 환경 구축 등 최신 기술을 활용한 실용적인 12가지 프로젝트로 실무에 필요한 리눅스 관리 방법을 배울 수 있다.
«모던 리눅스 관리»는 1~4장을 공개합니다.
목차
- 1장 리눅스의 기본
- 1.1 리눅스를 써야 하는 이유
- 1.2 리눅스 기본 지식
- 1.2.1 리눅스 파일 시스템
- 1.2.2 리눅스 탐색 도구
- 1.2.3 리눅스 파일 관리 도구
- 1.2.4 키보드 트릭
- 1.2.5 의사 파일 시스템
- 1.2.6 누가 대장인지 보여주는 sudo
- 1.3 도움말 보기
- 1.3.1 맨 페이지
- 1.3.2 Info
- 1.3.3 인터넷
- 1.4 마무리
- 1.4.1 요약
- 1.4.2 핵심 용어
- 1.4.3 좋은 보안 습관
- 1.4.4 명령 복습
- 2장 리눅스 가상화: 리눅스 작업 환경 구축하기
- 2.1 가상화란 무엇인가
- 2.2 버추얼박스 사용하기
- 2.2.1 리눅스 패키지 관리자 사용하기
- 2.2.2 VM 정의하기
- 2.2.3 OS 설치하기
- 2.2.4 버추얼박스 VM 복제하고 공유하기
- 2.3 리눅스 컨테이너 사용하기
- 2.3.1 LXC 준비
- 2.3.2 컨테이너 생성하기
- 2.4 마무리
- 2.4.1 요약
- 2.4.2 핵심 용어
- 2.4.3 좋은 보안 습관
- 2.4.4 명령 복습
- 3장 원격 연결: 네트워크에 연결된 서버에 안전하게 접근하기
- 3.1 암호화의 중요성
- 3.2 OpenSSH로 시작하기
- 3.3 SSH로 원격 서버에 로그인하기
- 3.4 패스워드 없이 SSH 접근하기
- 3.4.1 새로운 키 쌍 생성하기
- 3.4.2 네트워크를 통해 공개 키 복사하기
- 3.4.3 다중 암호화 키 이용하기
- 3.5 SCP로 안전하게 파일 복사하기
- 3.6 SSH 연결로 원격 그래픽 프로그램 사용하기
- 3.7 리눅스 프로세스 관리하기
- 3.7.1 ps 명령으로 프로세스 살펴보기
- 3.7.2 systemd 이용하기
- 3.8 마무리
- 3.8.1 요약
- 3.8.2 핵심 용어
- 3.8.3 좋은 보안 습관
- 3.8.4 명령 복습
- 4장 아카이브 관리: 전체 파일 시스템 백업 및 복사하기
- 4.1 왜 아카이빙을 할까
- 4.1.1 압축
- 4.1.2 아카이빙할 때 고려 사항
- 4.2 무엇을 아카이빙할까
- 4.3 어디에 백업해야 할까
- 4.4 tar로 파일과 파일 시스템 아카이빙하기
- 4.4.1 단순 아카이브와 압축의 예
- 4.4.2 파일 시스템 아카이브 스트리밍하기
- 4.4.3 find로 파일 모으기
- 4.4.4 권한 및 소유권 유지하기와 아카이브 추출하기
- 4.5 dd로 파티션 아키이빙하기
- 4.5.1 dd 사용하기
- 4.5.2 dd로 디스크 소거하기
- 4.6 rsync로 아카이브 동기화하기
- 4.7 백업 계획 시 고려할 사항
- 4.8 마무리
- 4.8.1 요약
- 4.8.2 핵심 용어
- 4.8.3 좋은 보안 습관
- 4.8.4 명령 복습
- 5장 관리 자동화: 자동화된 원격 사이트 백업 설정하기
- 5.1 Bash 스크립트 살펴보기
- 5.1.1 시스템 파일 백업 스크립트
- 5.1.2 파일명 변경 스크립트
- 5.2 AWS S3로 데이터 백업하기
- 5.2.1 AWS 명령줄 인터페이스 설치하기
- 5.2.2 AWS 계정 환경 설정하기
- 5.2.3 버킷 생성하기
- 5.3 cron으로 정기 백업 스케줄링하기
- 5.4 anacron으로 비정기 백업 스케줄링하기
- 5.4.1 S3 동기화 작업 실행하기
- 5.5 systemd 타이머로 정기 백업 스케줄링하기
- 5.6 마무리
- 5.6.1 요약
- 5.6.2 핵심 용어
- 5.6.3 좋은 보안 습관
- 5.6.4 명령어 복습
- 6장 응급 도구: 시스템 복구 장치 구축하기
- 6.1 복구 모드에서 작업하기
- 6.1.1 GRUB
- 6.1.2 우분투의 복구 모드
- 6.1.3 CentOS의 레스큐 커널
- 6.1.4 복구 도구 찾기
- 6.2 라이브 부트 복구 드라이브 만들기
- 6.2.1 시스템 복구 이미지
- 6.2.2 라이브 부트 이미지를 USB 드라이브에 쓰기
- 6.3 라이브 부트 드라이브 이용하기
- 6.3.1 시스템 메모리 테스트
- 6.3.2 손상된 파티션
- 6.3.3 손상된 파일 시스템에서 파일 복구하기
- 6.4 chroot로 파일 시스템을 마운트해 패스워드 복구하기
- 6.5 마무리
- 6.5.1 요약
- 6.5.2 핵심 용어
- 6.5.3 좋은 보안 습관
- 6.5.4 명령 복습
- 7장 웹 서버: 미디어위키 서버 구축하기
- 7.1 LAMP 서버 구축하기
- 7.2 수동으로 아파치 웹 서버 설정하기
- 7.2.1 우분투에서 아파치 웹 서버 설치하기
- 7.2.2 웹 사이트 도큐먼트 루트 채우기
- 7.3 SQL 데이터베이스 설치하기
- 7.3.1 SQL 보안 강화하기
- 7.3.2 SQL 관리하기
- 7.4 PHP 설치하기
- 7.4.1 우분투에 PHP 설치하기
- 7.4.2 PHP 설치 테스트하기
- 7.5 미디어위키 설치 및 설정하기
- 7.5.1 빠진 확장 기능 문제 해결하기
- 7.5.2 데이터베이스에 미디어위키 연결하기
- 7.6 CentOS에 아파치 웹 서버 설치하기
- 7.6.1 네트워크 포트 이해하기
- 7.6.2 네트워크 트래픽 제어하기
- 7.6.3 CentOS에 MariaDB 설치하기
- 7.6.4 CentOS에 PHP 설치하기
- 7.7 마무리
- 7.7.1 요약
- 7.7.2 핵심 용어
- 7.7.3 좋은 보안 습관
- 7.7.4 명령 복습
- 8장 네트워크 파일 공유: Nextcloud로 파일 공유 서버 구축하기
- 8.1 기업용 파일 공유와 Nextcloud
- 8.2 snap으로 Nextcloud 설치하기
- 8.3 수작업으로 Nextcloud 설치하기
- 8.3.1 하드웨어 요구 사항 확인하기
- 8.3.2 LAMP 서버 구축하기
- 8.3.3 아파치 설정하기
- 8.3.4 Nextcloud 내려받고 언패킹하기
- 8.4 Nextcloud 관리하기
- 8.5 Nextcloud의 주 스토리지로 AWS S3 사용하기
- 8.6 마무리
- 8.6.1 요약
- 8.6.2 핵심 용어
- 8.6.3 좋은 보안 습관
- 8.6.4 명령 복습
- 9장 웹 서버 보안 강화하기
- 9.1 인프라 보안 강화하기
- 9.2 네트워크 접근 제어하기
- 9.2.1 방화벽 설정하기
- 9.2.2 비표준 포트 사용하기
- 9.3 전송 데이터 암호화하기
- 9.3.1 웹 사이트 도메인 준비하기
- 9.3.2 렛츠 인크립트로 인증서 생성하기
- 9.4 인증 절차 보안 강화하기
- 9.4.1 SELinux로 파일 시스템 개체 제어하기
- 9.4.2 SELinux 설치하고 활성화하기
- 9.4.3 SELinux 정책 적용하기
- 9.4.4 시스템 그룹과 최소 권한의 원칙
- 9.4.5 컨테이너 안에 프로세스 격리하기
- 9.4.6 위험한 사용자 ID 값 검색하기
- 9.5 시스템 리소스 감사하기
- 9.5.1 열린 포트 스캐닝하기
- 9.5.2 활성화된 서비스 스캐닝하기
- 9.5.3 설치된 소프트웨어 검색하기
- 9.6 마무리
- 9.6.1 요약
- 9.6.2 핵심 용어
- 9.6.3 명령 복습
- 10장 네트워크 연결: VPN과 DMZ로 보안 강화하기
- 10.1 OpenVPN 터널 구축하기
- 10.1.1 OpenVPN 서버 설정하기
- 10.1.2 OpenVPN 클라이언트 설정하기
- 10.1.3 VPN 테스트하기
- 10.2 침입 방지 네트워크 구축하기
- 10.2.1 DMZ 살펴보기
- 10.2.2 iptables 사용하기
- 10.2.3 iptables로 DMZ 구축하기
- 10.2.4 Shorewall로 DMZ 구축하기
- 10.3 인프라 테스트용 가상 네트워크 구축하기
- 10.4 마무리
- 10.4.1 요약
- 10.4.2 핵심 용어
- 10.4.3 명령 복습
- 11장 시스템 모니터링: 로그 파일 이용하기
- 11.1 시스템 로그 이용하기
- 11.1.1 journald로 로깅하기
- 11.1.2 syslogd로 로깅하기
- 11.2 로그 파일 관리하기
- 11.2.1 journald 방식
- 11.2.2 syslogd 방식
- 11.3 대용량 파일 사용하기
- 11.3.1 grep 이용하기
- 11.3.2 awk 사용하기
- 11.3.3 sed 사용하기
- 11.4 침입 탐지 모니터링하기
- 11.4.1 메일 서버 설정하기
- 11.4.2 트립와이어 설치하기
- 11.4.3 트립와이어 설정하기
- 11.4.4 트립와이어 테스트 리포트 생성하기
- 11.5 마무리
- 11.5.1 요약
- 11.5.2 핵심 용어
- 11.5.3 좋은 보안 습관
- 11.5.4 명령 복습
- 12장 사설 네트워크에서 데이터 공유하기
- 12.1 NFS로 파일 공유하기
- 12.1.1 NFS 서버 준비하기
- 12.1.2 클라이언트 준비하기
- 12.1.3 부팅 시 NFS 공유 리소스 마운트하기
- 12.1.4 NFS 보안
- 12.2 삼바로 윈도우 사용자와 파일 공유하기
- 12.2.1 삼바 설정 테스트
- 12.2.2 윈도우에서 삼바 서버 접근하기
- 12.3 심볼릭 링크로 자기 자신에게 파일 공유하기
- 12.4 마무리
- 12.4.1 요약
- 12.4.2 핵심 용어
- 12.4.3 좋은 보안 습관
- 12.4.4 명령 복습
- 13장 시스템 성능 문제 해결하기
- 13.1 CPU 부하 문제
- 13.1.1 CPU 부하 측정하기
- 13.1.2 CPU 부하 관리하기
- 13.1.3 문제 일으키기(CPU 부하 시뮬레이션)
- 13.2 메모리 문제
- 13.2.1 메모리 상태 평가하기
- 13.2.2 스왑 상태 평가하기
- 13.3 스토리지 가용성 문제
- 13.3.1 inode 제한
- 13.3.2 해결책
- 13.4 네트워크 부하 문제
- 13.4.1 대역폭 측정하기
- 13.4.2 해결책
- 13.4.3 tc로 네트워크 트래픽 제어하기
- 13.5 모니터링 도구
- 13.5.1 모니터링 데이터 집계하기
- 13.5.2 데이터 시각화하기
- 13.6 마무리
- 13.6.1 요약
- 13.6.2 핵심 용어
- 13.6.3 좋은 보안 습관
- 13.6.4 명령 복습
- 14장 네트워크 문제 해결하기
- 14.1 TCP/IP 주소 체계 이해하기
- 14.1.1 NAT 주소란
- 14.1.2 NAT 주소 체계 이해하기
- 14.2 네트워크 연결 설정하기
- 14.3 아웃바운드 연결 문제
- 14.3.1 네트워크 상태 추적하기
- 14.3.2 IP 주소 할당하기
- 14.3.3 DNS 서비스 설정하기
- 14.3.4 막힌 곳 뚫기
- 14.4 인바운드 연결 문제
- 14.4.1 인터넷 연결 상태 검사하기: netstat
- 14.4.2 외부 연결 스캐닝하기: netcat
- 14.5 마무리
- 14.5.1 요약
- 14.5.2 핵심 용어
- 14.5.3 좋은 보안 습관
- 14.5.4 명령 복습
- 15장 주변 장치 문제 해결하기
- 15.1 연결된 장치 인식하기
- 15.2 리눅스 커널 모듈로 주변 장치 관리하기
- 15.2.1 커널 모듈 알아내기
- 15.2.2 커널 모듈을 수동으로 로드하기
- 15.3 부팅 시 커널 파라미터를 수동으로 관리하기
- 15.3.1 부팅 시 파라미터 전달하기
- 15.3.2 파일 시스템을 통해 파라미터 전달하기
- 15.4 프린터 관리하기
- 15.4.1 lp 명령 사용하기
- 15.4.2 CUPS로 프린터 관리하기
- 15.5 마무리
- 15.5.1 요약
- 15.5.2 핵심 용어
- 15.5.3 좋은 보안 습관
- 15.5.4 명령 복습
- 16장 데브옵스 도구: 앤서블로 서버 환경 배치하기
- 16.1 오케스트레이션 도구 살펴보기
- 16.2 앤서블 설치 및 설정하기
- 16.2.1 호스트에 패스워드 없이 접근하기
- 16.2.2 앤서블 호스트 구성하기
- 16.2.3 연결 테스트하기
- 16.3 인증하기
- 16.4 앤서블 플레이북 사용하기
- 16.4.1 간단한 플레이북 작성하기
- 16.4.2 다계층 및 역할이 있는 플레이북 생성하기
- 16.4.3 패스워드 관리하기
- 16.5 마무리
- 16.5.1 요약
- 16.5.2 핵심 용어
- 16.5.3 좋은 보안 습관
- 16.5.4 명령 복습
- 17장 결론
- 17.1 핵심 개념 리뷰
- 17.1.1 가상화
- 17.1.2 연결
- 17.1.3 암호화
- 17.1.4 네트워킹
- 17.1.5 이미지 관리
- 17.1.6 시스템 모니터링
- 17.2 앞으로 해야 할 일
- 17.3 참고 자료
- 부록 A 장별 명령 모음
- A.1 리눅스의 기본
- A.2 리눅스 가상화: 리눅스 작업 환경 구축하기
- A.3 원격 연결: 네트워크에 연결된 서버에 안전하게 접근하기
- A.4 아카이브 관리: 전체 파일 시스템 백업 및 복사하기
- A.5 관리 자동화: 자동화된 원격 사이트 백업 설정하기
- A.6 응급 도구: 시스템 복구 장치 구축하기
- A.7 웹 서버: 미디어위키 서버 구축하기
- A.8 네트워크 파일 공유: Nextcloud로 파일 공유 서버 구축하기
- A.9 웹 서버 보안 강화하기
- A.10 네트워크 연결: VPN과 DMZ로 보안 강화하기
- A.11 시스템 모니터링: 로그 파일 이용하기
- A.12 사설 네트워크에서 데이터 공유하기
- A.13 시스템 성능 문제 해결하기
- A.14 네트워크 문제 해결하기
- A.15 주변 장치 문제 해결하기
- A.16 데브옵스 도구: 앤서블로 서버 환경 배치하기