1. 리눅스 개념


  1. 리눅스 개념
    1. 리눅스
      1. 개념
        1. 컴퓨터 운영체제
        2. 애플리케이션이 실행되는 환경
      2. 기능
        1. 하드웨어 감지 및 준비
        2. 프로세스 관리
        3. 메모리 관리
          1. 요청된 메모리의 처리 방식을 결정.
        4. 사용자 인터페이스 제공
          1. 사용자 계정 생성 및 사용자 간 경계 설정
          2. 사용자 간 및 그룹 간 계정 분리
            → 사용자가 자신의 파일과 프로세스 제어할 수 있는 토대
        5. 파일시스템 제어
          1. 파일시스템 구조는 리눅스 운영체제와 한 몸(모듈로 로드되기도 함)
          2. 각종 파일과 디렉터리에 대해 그 소유권과 접근 권한 제어
        6. 사용자 접근 권한 및 인증 방식 제공
        7. 관리용 유틸리티 제공
        8. 서비스 시작
          1. 웹 페이지를 볼 수 있는 웹 브라우저가 포함됨과 동시에 리눅스 자체가 웹 페이지를 다른 시스템에 제공하기 위한 서버 컴퓨터가 되기도 함
        9. 프로그래밍 도구 제공
      3. 대기업에서 주로 사용하는 리눅스의 고급 기능
        1. 클러스터링
          1. 다수의 시스템이 외부에서 하나의 시스템처럼 보이도록 클러스터 구성
          2. 서비스는 클러스터 노드들이 주고받을 수 있도록 구성
          3. 클러스터 노드에서는 서비스가 방해받지 않고 지속적으로 실행되는 것처럼 보임
        2. 가상화
          1. 가상화 호스트에서는 다른 리눅스 시스템을 비롯하야 마이크로소프트 윈도우, BSD 등 다른 운영체제까지도 가상 게스트로 실행 가능
          2. 외부에서는 가상 게스트가 개별 컴퓨터로 보임
          3. KVM과 젠(Xen)
        3. 클라우드 컴퓨팅
          1. 대규모 가상화 환경 관리
          2. 오픈 스택(OpenStack) 또는 레드햇 엔터프라이즈 가상화
            1. 다수의 가상화 호스트
            2. 가상 네트워크
            3. 사용자 및 시스템 인증
            4. 가상 게스트
            5. 네트워크 기반 스토리지
        4. 실시간 컴퓨팅
          1. 우선순위 높은 프로세스들을 빠르고 예측 가능하도록 실행하기 위해
        5. 전문 저장소
          1. 전문화된 로컬 및 네트워크 스토리지 인터페이스 사용 가능
          2. 공유 스토리지 장치
            ex. Ceph와 GusterFS
      4. 차이점
        1. 운영체제를 만들 때 사용했던 코드 볼 수 있다
        2. 사용 목적에 부합하지 않을 경우 가장 기본적인 수준에서 변경할 수 있고 운영체제를 직접 빌드하여 사용할 수 있다.
        3. 코드를 통해 버그를 찾는다거나 보안 취약점을 찾아서 확인하고 무슨 일을 하는지 알 수 있다.
        4. 필요한 소프트웨어를 운영체제에 직접 끼워넣을 수 있다.
      5. OSI(Open Source Initiative) 오픈 소스 정의
        1. 기본 목적: 소스 코드를 함께 사용
        2. 규칙 for 오픈 소스 코드의 자유와 무결성 보호
          1. 자유 배포
          2. 소스 코드
          3. 파생 작업
          4. 저작자의 소스 코드 무결성
          5. 개인 또는 단체에 대한 차별 금지
          6. 연구 분야에 대한 차별 금지
          7. 라이선스 배포
          8. 라이선스는 특정 제품으로만 국한되어서는 안 된다
          9. 라이선스는 다른 소프트웨어를 제한해서는 안 된다
          10. 라이선스는 기술 중립적이어야 한다
      6. 리눅스 배포판
        1. 슬랙웨어
          1. 디스크 포맷
          2. 스왑 공간 활성화
          3. 사용자 계정 만들기
        2. 크노픽스
        3. 젠투
        4. 맨드레이크 → 맨드리바
        5. 레드햇 → 기업용(레드햇 엔터프라이즈 리눅스, RHEL) 및 개인용(페도라)
          1. 초기 배포판 특징
            1. RPM 패키지 관리
              1. 소프트웨어 패키지에 파일 및  패키지 정보 함께 넣음
                ex. 누가 만들었는지, 문서화 파일인지 설정파일인지 등
              2. 소프트웨어 패키지 정보가 로컬 RPM 데이터베이스에 저장
              3. 설치, 검색, 업데이트, 제거 편리
            2. 단순 설치
            3. 그래픽 기반 시스템 관리
          2. RHEL
            1. 빠른 트랜잭션 처리
            2. 클러스터나 가상호스트로 배치될 수 있는 시스템
            3. JBoss → 자바 기반 애플리케이션을 인터넷이나 기업 인트라넷에 배포하기 위한 미들웨어 제품
            4. 레드햇 엔터프라이즈 가상화
              → 가상화 호스트 + 각종 관리자 + 게스트 컴퓨터
              → 사용자가 직접 거대한 가상 컴퓨팅 환경을 설치, 실행, 관리, 마이그레이션, 서비스 해제 등 가능
            5. 레드햇 클라우드폼 → 클라우드 관리 플랫폼
            6. 도커(Docker) 형태의 리눅스 컨테이너와 RHEL 아토믹
              → 클라우드용 애플리케이션 컨테이너화 방법 제공
          3. 페도라
        6. 데비안 GNU/리눅스 배포판
          1. 리눅스 민트
          2. elemetary OS
          3. 조린(Zorin)
          4. LXLE
          5. 칼리(Kali)
          6. 우분투
            1. 단순하고 사용하기 쉬운 그래픽 기반 인스톨러와 도구 채용
            2. 서버 패키지 제공
            3. 완전한 데스크톱 시스템
      7. 레드햇 공인 전문가
        1. RHCSA → 기본적인 시스템 관리 기술
          1. 기본적인 도구 이해
            1. 셸(bash)에 대한 실무 지식
            2. 설명에 대한 올바른 명령 문법 사용하고 입출력 리디렉션(<, >, >>) 수행
            3. 원격 및 로컬 시스템 로그인
            4. 파일의 권한이나 소유권 생성, 이동, 복사, 링크, 삭제, 변경
            5. man 페이지와 /usr/share/doc에서 원하는 정보 찾을 수 있어야 함
          2. 실행 시스템 운영
            1. 리눅스 부팅 프로세스 이해
            2. 단일 사용자 모드 진입
            3. 시스템 종료
            4. 재부팅
            5. 타깃(=런레벨, runlevel에 해당하는 새로운 용어) 변경 수행
            6. 프로세스 식별하고 값을 변경하거나 요청을 받으면 프로세스 죽일 수 있어야 함
            7. 가상 머신 및 네트워크 서비스 시작 및 중지
            8. 로그 파일 찾아 해석 가능
          3. 로컬 저장소 구성
            1. 디스크 파티션 설정에서 물리적 볼륨의 생성
            2. LVM(논리적 볼륨 관리)구성
            3. 암호화(LUKS)
            4. 파티션을 파일시스템이나 스왑 공간으로 설정하여 마운트하거나 부팅 시 활성화할 수 있어야 함
          4. 파일시스템 생성 및 구성
            1. 여러 파일시스템을 만들고 자동으로 마운트 할 수 있어야 함
            2. 정규 리눅스 파일시스템(ext2, ext3, ext4 등),
              LUKS 암호화 파일시스템,
              네트워크 파일시스템(NFS 및 CIFS) 등을 다룰 수 있어야 함
            3. set group ID 비트 기능과 ACL(Access Control List) 사용하여 협업 디렉터리 만들 수 있어야 함
            4. LVM 사용하여 논리 볼륨 크기 늘릴 수 있어야 함
          5. 시스템 배포 및 구성, 유지 관리
            1. 네트워크 구성, cron 작업 생성, 기본 런레벨 설정, RHEL 시스템 설치 등
            2. 간단한 HTTP 및 FTP 서버 구성 능력
            3. 레드햇 네트워크 / 원격 보관소(repository )/ 로컬 파일시스템에서 소프트웨어 패키지를 가져다 설치할 수 있는 능력
            4. 새로운 커널을 올바로 설치할 수 있어야 함
            5. 시스템 시작 시 여러 커널 중 하나를 선택하여 부팅시키는 능력
          6. 사용자 및 그룹 관리
            1. 사용자 및 그룹 계정을 추가, 삭제, 변경
            2. change 명령을 사용한 암호 기간 설정 반드시 숙지
            3. LDAP 디렉터리 서버로 연결하여 시스템 인증할 수 있도록 구성하는 능력
          7. 보안 관리
            1. 기본적인 방화벽(firewalld 또는 system-config-firewall, iptables) 설정 방법과 SELinux 사용 방법 이해
            2. 키 입력 기반 인증 위한 SSH 설정 능력
        2. RHCE
          1. 시스템 구성과 관리에 필요한 넓은 범위의 주제
            1. 본딩(bonding)
              1. 네트워크 링크 종합 능력
            2. IP 트래픽 라우팅
              1. 특정 네트워크 주소의 정적 라우트 설정 능력
            3. 방화벽
              1. 웹, FTP, NFS 등의 서비스를 제공하는 시스템에서 특정 포트의 트래픽을 차단하거나 허용할 수 있어야 함
              2. 접속자의 IP 주소에 따라 특정 서비스를 차단하거나 허용할 수 있어야 함
            4. 커널 turnable 파라미터
              1. /etc/sysctl.conf파일과 sysctl 명령으로 커널 turnable 파라미터 설정할 수 있어야 함
              2. /etc/sysctl.conf 파일을 활용하여 /proc/sys에서 IP 포워딩 설정 변경할 수 있어야 함
            5. 커버로스(Kerberos) 인증
              1. 커버로스 방식을 사용하여 RHEL 시스템 사용자를 인증할 수 있어야 함
            6. iSCSI(internet Small Computer System Interface)
              1. iSCSI는 컴퓨팅 환경에서 데이터 스토리지 시설을 이어주는 IP 기반의 스토리지 네트워킹 표준
              2. 부팅 시 iSCSI 타깃을 마운트하는 iSCSI 타깃 및 이니시에이터로 시스템을 설정할 수 있어야 함
            7. 시스템 보고
              1. sar 등의 기능을 사용하여 시스템의 메모리, 디스크 액세스, 네트워크 트래픽, 프로세서 활용 등에 관한 보고서 작성 능력
            8. 셸 스크립팅
              1. 입력을 받고 이를 다양한 방법으로 출력하는 셸 스크립트를 만들 수 있어야 함
            9. 원격 로그 처리
              1. 로그 메시지를 수집하여 이를 원경 로깅 서버에 분배할 수 있도록 rsyslogd 기능을 구성할 수 있어야 함
              2. 로깅 클라이언트에서 로그 메시지를 수집할 수 있도록 원격 로깅 서버 기능을 구성할 수 있어야 함
            10. SELinux
              1. 모든 서버 구성의 보안이 SELinux로 올바르게 유지되고 있는지 강제(Enforcing) 모드의 보안 강화 리눅스(Security Enhanced Linux)를 사용하여 확인할 수 있어야 함
          2. 네트워크 서비스 설치하기와 구성하기
            1. 목표
              1. 모든 네트워크 서비스에 대해 정해진 단계를 밟아 각 서비스에 필요한 패키지를 설치하고 액세스를 허용할 수 있도록 SELinux를 설정할 수 있어야 함
              2. 부팅 시 서비스가 시작하도록 설정하고, 호스트나 사용자가 제공하는 서비스의 보안을 유지할 수 있어야 함
            2. 구체적인 서비스
              1. 웹 서버
                1. 아파치 서버(HTTP/HTTPS) 구성 능력
                2. 가상 호스트를 설정하고 CGI 스크립트를 배포할 수 있어야 함
                3. 사설 디렉터리를 사용하고 특정 리눅스 그룹에서 콘텐츠를 관리할 수 있도록 해야 함
              2. DNS 서버
                1. DNS 쿼리를 다른 DNS 서버로 전달할 수 있는 캐시 전용 이름 서버로 동작할 수 있도록 DNS 서버(bind 패키지)를 설정할 수 있어야 함.
                2. 마스터나 슬레이브 영역까지 구성할 필요 없음
              3. NFS 서버
                1. 특정 디렉터리를 특정 클라이언트 시스템과 공유하여 그룹 간 협업에 사용될 수 있도록 NFS 서버를 구성할 수 있어야 함
              4. Windows 파일 공유 서버
                1. 특정 호스트 및 사용자에게 SMB 공유 기능을 제공할 수 있도록 리눅스(삼바, samba)를 설정할 수 있어야 함
                2. 이를 통해 그룹 간 협업을 구현
              5. 메일 서버
                1. 로컬 호스트 외부에서 보낸 메일을 수신할 수 있도록 postfix와 sendmail을 구성할 수 있어야 함
                2. 스마트 호스트(smart host)로 메일을 전달(릴레이)할 수 있어야 함
              6. 보안 셸 서버
                1. 로컬 시스템에 대한 원격 로그인
                2. 키 입력 기반 인증을 허용할 수 있도록 SSH 서비스(sshd)를 설정할 수 있어야 함
                3. sshd.conf 파일을 필요에 따라 구성하는 능력
              7. 네트워크 시간 서버
                1. NTP(Network Time Protocol) 피어들과 시간을 동기화할 수 있도록 NTP 서버(ntpd)를 구성할 수 있어야 함
              8. 데이터베이스 서버
                1. 마리아DB 데이터베이스를 구성하고 다양한 관리방법을 이해하여 MariaDB.org 사이트로부터 마리아DB를 구성할 수 있어야 함

댓글 없음:

댓글 쓰기

3. 추상 데이터 타입