가상 환경 세팅
SSH
키 기반 인증
패스워드 기반 인증
: 지식 기반 인증 → 가장 약함
사용자를 지정하지 않고 로그인 할 경우 어떤 사용자로 로그인 되나?
지금 시스템을 사용하고있는 사용자
계정명 없이 ssh 접속할때? (client → server)
→ 내가 접속한 시스템(client)에 로그인된 계정 이름으로 접속됨(해당 client의 사용자로 접속하는것이 아님)
server에 같은 이름의 계정이 없다면? 로그인 불가
서명 →fingerprint
server의 fingerprint가 맞는지 질문
SSH는 PKI구조 없음 제 3자가 검증해줄수 없기 때문에 나한테 검증을 요구하는것
vagrant의 비밀키
vagrant ssh control과 같은 결과
ssh_config → 클라이언트 설정 파일 / sshd_config → 서버 설정 파일
sshd_config / 패스워드 인증 불가, 개인키도 없음
모든 시스템에서 패스워드 인증 yes로 수정 / ssh 재시작
control에서 접속 시도하면 패스워드 기반 인증으로 접속 시도
처음 ssh로 접근할때 내가 검증→yes→~/.ssh/known_hosts에 키 등록
다음에 접속 시도할때는 ~/.ssh/known_hosts와 원격 서버에 기록된 fingerprint 비교해서 접근 허용/불가를 판정
기본 암호화 방식 → RSA
맨 아래는 생성될 키의 경로 지정하라는 메세지
반드시 패스워드 설정해야함
3072 ⇒ 키의 길이
기본위치에 키를 저장하지 않으면 인식되지 않음 / 위치 경로를 지정하지 않으면 자동으로 기본 위치에 생성됨
비밀키
공개키
control) authorized_keys
mgmt1) authorized_keys
호스트에서 비밀키 파일의 위치
클라이언트 ssh키를 다른 서버에 등록(해당 키를 갖고있는 서버라면 접속 가능해짐)
공개키를 지정하면 fingerprint 확인 가능
접속할 서버의 공개키가 저장된 파일
#control
rm .ssh/knownhosts
ssh 192.168.200.101
#질문~ => no
#다시 생성되지 않음
#mgmt1
cd /etc/ssh
ls ssh_host_*
4개의 키 쌍 파일(dsa,ecdsa... ⇒ 암호화 알고리즘)
암호같이 긴 문자열 ⇒ fingerprint
known host 파일을 생성하고 검증하는 목적
접속할 대상의 시스템을 미리 스캐닝
같다
블록친 부분의 첫 부분 : 호스트 ip→ 인코딩되었음
/etc/ssh/ssh_config
맨 아래 설정이 yes 라서 hash 값으로 인코딩 되는 것
-o 옵션 설정 / 바람직하지 않은 방법 / 권장하는 방법 → ssh-keyscan
클라이언트의 공개키를 등록한 파일
Sudo를 사용할 수 있는 사용자는?
일반 사용자가 sudo 명령으로 루트 권한을 행사하기 위해서는 /etc/sudoers 파일에 일반 사용자에 대한 권한 설정이 포함되어 있어야 한다.
자신의 PW를 이용해서 접속 ⇒ su(접속하려는곳의 PW 필요)보다 안전
/etc/sudoers 오타나면??
문법오류로 sudo 실행되지 않음 → 루트로 접근 불가(루트 PW 모른다는 가정) ⇒ visudo 권장
visudo
사용자/%그룹 HOST=(User) Cmnd
NOPASSWD PW 입력할 필요 없이 root 권한 사용
RedHat 기반 OS - wheel 그룹에 포함된 사용자 (배포판마다 다름)
ssh key passpharase를 매번 입력하지 않고 사용하는 방법은?
SSH Key Pasephrase를 설정한 경우, SSH 키를 사용해 인증 시 마다 SSH Key Pasephrase를 요구하는데, 매번 입력하는것이 번거롭다면 ssh agent를 구성한다.
에이전트 등록을 쉘에게 맡김
ssh-add
생성한 SSH 키를 ssh-agent에 등록
중간자 공격
known_hosts의 지문과 원격에서 받아온 지문이 다름
위 경우가 모두 MITM인것은 아님
known_hosts 수정으로 해결 가능