본문 바로가기
GOORM

GOORM: Kubernetes-16

by hxunz 2021. 11. 15.
      1. Facts (사실, 객관)
        : 웹 서비스 구축 과정이 시작되면서 버츄얼박스에서 서버도 새로 만들었다. 이론 강의로는 작업 스케줄링이랑 ssh에 대해서 배우고 예제 문제 풀이도 했다.
         
      2. Feelings (느낌, 주관)
        : 월요일이라 그런지 피곤했다... 그래도 이번에 vm을 좀 쉽게 다룰 수 있게 설정을 바꿔서 그나마 할만했다. 

      3. Findings (배운 점)
        : at 명령 사용
         - 단일성 작업 예약 등록 : at [option] time-spec
         - ctrl + D : at 프롬프트 종료
         - -q 옵션 : 대기 큐 지정, 기본 설정 대기큐는 a

        cron 데몬
         - 사용자가 예약한 작업들은 /var/spool/cron 디렉토리에 각 사용자 이름으로 생성된 파일에 저장

        crontab
         - 주기적인 작업을 예약 할 때는 crontab 명령 사용
         - crontab -e : 작업 예약
        메타문자 설명
        * 조건에 대해 무조건 참을 의미
        - 범위 지정
        , 다수의 값 지정
        / 조건에 대한 주기 지정
         - 필드의 구분자는 공백으로 작성, 공백 대신 탭 사용 가능
         - crontab file-name : 파일을 사용하여 등록할 때
         - crontab -e : 예약된 작업을 하나씩 제거
         - crontab -r : 예약된 작업 전체를 삭제

        at(cron) 작업 예약 기능을 사용할 수 있는 대상 설정
         - /etc/at.allow
         - /etc/at.deny
         - /etc/cron.allow
         - /etc/cron.deny

        deny 파일만 있을 경우(블랙리스트 방식)
         - deny 파일에 명시된 사용자는 at 또는 cron  명령 사용 불가
         - 기본 값으로 설정되어 있으며, deny 파일에 아무 사용자도 적혀 있지 않음
         - 현재 모든 사용자는 at 또는 cron 작업 예약을 사용할 수 있음

        allow 파일이 있을 경우(화이트리스트 방식)
         - allow 파일 내에 명시된 사용자만 at 또는 cron 명령 사용 가능
         - 명시된 사람 이외의 사용자는 모든 기능 사용 차단

        allow, deny 파일이 모두 없을 경우
         - root 사용자만 at, cron 작업 사용 가능


시스템 작업 예약
 - cron : 매 분 마다 작업을 확인하여 수행
 - anacron : 하루에 한 번 작업을 확인하여 수행
 - run-parts : 인자로 지정된 디렉토리 내의 모든 실행 파일을 실행
 - RANDOM_DELAY : 각 작업에 설정된 지연 시간에 추가적으로 지연될 수 있는 최대 지연 시간을 의미
 - START_HOUR_RANGE : 작업이 수행될 시간 범위 지정

SSH 연결 과정
 - 비대칭키 암호화 알고리즘 : 데이터를 암호화하고 복호화할 때 사용하는 키가 다른 암호화 알고리즘
                                            암호화를 수행하는 키와 복호화 하는 키가 다름 (공개키+개인키)
                                            암호화를 수행하는 과정이 복잡 - 시스템에서 암호화 연산에 부하가 많이 걸림. 키의 길이가 길어야 함
                                            키 교환의 문제는 해결됨

                                             공개키(Public Key) : 데이터를 암호화하여 전달하며 공개키와 쌍으로 이루어진 개인키를 이용하여 
                                                                               암호화된 데이터를 복호화 하는데 사용
                                            개인키(Private Key) : 절대로 공개해서는 안되는 키로 해당 시스템에만 존재해야 하는 키
 - 대칭키 암호화 알고리즘 : 데이터를 암호화와 복호화 할 때 사용하는 키가 같은 암호화 알고리즘
                                          암호화를 수행하는 쪽과 복호화 수행하는 쪽이 같은 키를 사용 (키는 1개)
                                            가장 단순하지만, 강력한 암호화 방식
                                            시스템의 부하 등이 효율적, 키의 길이도 적당

                                            키 교환의 문제가 발생
                                          비밀키(Secret Key)
 - 해시 암호화(hash) : 리눅스, 윈도우 등 운영체제에서 패스워드 저장 시 사용

                                   비가역적 암호화 방식 (해시로 계산된 값을 통해 원본 값을 계산할 수 없음)

                                   암호화 알고리즘에 따라 결과값의 크기가 결정 (원본 데이터의 크기와는 무관)

                                   패스워드 검증, 무결성 검증 등의 용도로 사용 - 입력값이 같으면 결과도 같음
 - 클라이언트와 서버는 SSH를 통해 암호화 된 통신을 수행
 - ssh [user-name]@address
 - X11 포워딩 : ssh 명령에 -X 옵션 추가

실제 암호화를 통신에 적용한 경우(HTTPS,SSH)는 대칭키 방식 + 비대칭키 방식
 - 클라이언트는 서버에게 암호화 통신을 위한 연결 요청
 - 서버는 암호화 통신을 위한 서버의 공개키를 클라이언트에게 전달
 - 비밀키를 공개키로 암호화하여 서버에 전송
 - 서버는 클라이언트가 보내준 비밀키를 사용하여 이후 대칭키 암호화에 사용

OpenSSH의 구성 파일

파일 이름 설명
moduli Diffie-Hellman 알고리즘에 사용되는 파라미터가 포함
ssh_config OpenSSH 클라이언트 설정에 필요한 파일
sshd_config OpenSSH 서버 설정에 필요한 파일
ssh_hostkey 해당 알고리즘의 개인키
ssh_hostkey.pub 해당 알고리즘의 공개키


키 파일 생성
 - ssh-keygen [option] [argument]
 - -t 옵션 : 암호화 알고리즘 지정
 - ssh-keygen -t ecdsa : ecdsa 암호화 알고리즘의 암호 키를 생성

키 파일 복사
 - ssh-copy-id [option] [argument] [user-name]@address
 - -i 옵션 : 다른 위치에 저장되어 있는 공개키 파일을 지정하여 전송

암호화를 수행하는 쪽과 복호화 수행하는 쪽이 같은 키를 사용 (키는 1개)

가장 단순하지만, 강력한 암호화 방식
시스템의 부하 등이 효율적, 키의 길이도 적당

키 교환의 문제가 발생



실습 예제

 

1. 다음 일회성 작업을 예약해보시오 (작업 예약은 root 사용자로)

 1) 오늘 밤 11시 30분에 /tmp 디렉토리 내 모든 파일의 목록을 /tmp/filelist로 저장

# at 23:30

at> ls -l > /tmp/filelist

at> Ctrl + D

 

 2) 현재부터 30분 뒤에 /etc/ssh 내 모든 파일을 /root/ssh.tar.gz 파일로 아카이브로 생성하시오.

# at now + 30min

at> tar cvf /root/ssh.tar.gz /etc/ssh/*

at> Ctrl + D



2. 다음 주기 작업을 예약하시오 (작업 예약은 root 사용자로)

 1) 매 주 일요일 자정 (0시 0분)에 현재 시스템의 메모리 사용량을 조회하는 'free' 명령의 실행결과를 /tmp/freemem 파일에 저장하시오/

# crontab -e

0 0 * * 0 free > /tmp/freemem

 

 2) 매 달 1일 아침 7시에 현재 시스템의 저장소 사용 현황을 조회하는 'df -h' 명령의 실행 결과를 /root/storage 파일로 저장하시오.

# crontab -e

0 7 1 * * df -h > /root/storage

 

 3) 매년 12월 25일 자정에 다음 작업을 예약하시오.

    - /tmp/merrychristmas 파일을 생성하고, 내용은 "Merry Christmas!"로 저장

    - /etc/hosts파일을 root 사용자의 홈 디렉토리에 gift라는 이름으로 복사

# cat > /root/christmas.sh

echo “Merry Christman!” > /tmp/merrychristmas

cp /etc/hosts /root/gift

Ctrl + D

# chmod a+x /root/christmas.sh

 

# crontab -e

0 0 25 12 * /root/christmas.sh 



3. 다음과 같은 설정을 추가하시오

 1) server 시스템에 사용자 추가

  - 사용자명: remoteroot

  - sudo를 통해 관리자 권한을 사용할 수 있도록 설정

  - sudo 명령 실행 시 패스워드 인증 없이 실행할 수 있도록 설정 (sudoers)

server# useradd remoteroot

server# visudo

remoteroot ALL=(ALL) NOPASSWD: ALL

 

 2) client 시스템에 사용자 추가

  - 사용자명: user

client# useradd user

 

 3) user 사용자가 server 시스템의 remoteroot 사용자로 로그인할 수 있도록 키 기반 인증 설정

  - 키 생성

  - 키 복사

 

user@client $ ssh-keygen

user@client $ ssh-copy-id remoteroot@192.168.56.100

 

 4) server 시스템의 ssh 서버 설정에서 패스워드 인증을 허용하지 않도록 설정 후 sshd 서비스 재시작

server# vi /etc/ssh/sshd_config

PasswordAuthentication no

 

'GOORM' 카테고리의 다른 글

GOORM: Kubernetes-18  (0) 2021.11.17
GOORM: Kubernetes-17  (0) 2021.11.16
GOORM: Kubernetes-15  (0) 2021.11.12
GOORM: Kubernetes-14  (0) 2021.11.11
GOORM: Kubernetes-13  (0) 2021.11.10

댓글