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