Today I Learn - 30

이정빈·2021년 3월 23일
0

클라우드 엔지니어

목록 보기
31/53
post-thumbnail

SSH (Secure Shell)

암호화 적용
ssh 연결 방법 : ssh [사용자ID@]<대상서버의 주소>

SSH 서버의 암호화 관련 파일

/etc/ssh/key, /etc/ssh/key.pub : 암호화 관련 공개키/개인키 파일

SSH Key

사용자가 암호 기반의 인증 대신 키 기반의 인증 사용 가능
사용자 암호 키 생성
ssh-keygen
키 위치 지정 (기본값 : 사용자 홈/.ssh/id_rsa)
개인키/공개키 쌍으로 생성됨 : id_rsa(개인키), id_rsa.pub(공개키)
공개키는 노출되어도 상관없으나, 개인키는 취급에 주의 (파일 위치 및 권한)

# ssh-copy-id

생성한 공개키 쌍 중 공개키를 SSH 서버에 저장
서버는 사용자의 공개키를 보유하고 있다가, 사용자 인증 요청시 키 기반 인증 사용
서버가 사용자의 공개키로 암호화한 데이터의 해석을 클라이언트에게 요청하므로, 클라이언트가 개인키를 가지고 있어야만 해독이 가능
Challenge/Response 방식의 인증

SSH 관련 파일

~/.ssh/known_hosts
클라이언트에서 접속하는 서버에 대한 정보를 저장하기 위하여 사용
known_hosts 파일에 등록되어 있지 않은 서버로 접속할 경우, 서버로부터 전달받은 공개키의 지문(Fingerprint, 해쉬값)을 출력하며, 접속할 대상 서버가 맞는지에 대한 검증을 사용자에게 요청
검증 시 사용자의 승인(yes) 입력 시, 해당 키를 knows_hosts 파일에 저장
known_hosts 파일에 등록된 서버에 접속할 경우, 키 검증 경고가 출력되지 않음
~/.ssh/authorized_keys
키 기반인증을 하기 위하여 클라이언트가 전달한 공개키가 저장되는 파일
사용자 별로 키를 저장함 (/root/.ssh/authorized_keys, /home/user/.ssh/authorized_keys 등)
암호화 방식 및 클라이언트가 전달한 공개키, 접속하고자 하는 사용자의 정보가 파일에 저장됨
/etc/ssh/sshd_config
sshd(ssh 서버 데몬)의 설정을 저장하는 파일
sshd 프로토콜 종류(v1, v2), 보안 관련된 설정 등을 저장
키 기반 인증, 관리자 로그인 허용 설정 등을 주로 사용

SSH 설정 파일

/etc/ssh/ssh_config : SSH 클라이언트(ssh 명령어) 설정
/etc/ssh/sshd_config : SSH 서버 데몬 설정

SSH 터널링 관련 기능

X11 forwarding : GUI 창을 실행하도록 전달
scp : ssh 터널링을 통해 네트워크로 파일 복사
sftp : ssh 터널링을 통해 ftp 기능 사용
scp, sftp는 별도 설치가 필요하지 않음 : ssh와 함께 구성됨
ssh만 연결 가능하면 파일 복사 가능

블록 기반 스토리지

시스템에서 스토리지를 블록 장치로 취급
DAS : Direct Attached Storage - 직접 연결된 장치
SAN : Storage Area Network - FC(FibreChannel) - iSCSI
파일 기반 스토리지
파일시스템이 이미 구성된 스토리지를 공유
NAS : Network Attached Storage - NFS/CIFS

NFS(Network File System)

유닉스/리눅스 계열 시스템의 기본 파일 공유 형태
Sun Microsystems(Solaris Unix, Java)
파일 기반의 공유 스토리지 : 공유 서버에서 설정한 공유 디렉토리를 다른 시스템이 연결하여 사용
현재 사용중인 NFS 버전 : NFSv4
관련 프로세스
rpc.mountd : NFS 마운트 요청을 처리, 내부 RPC처리(Remote Procedure Call)
nfs-server : NFS 공유설정에 따른 공유를 실행
rpc.idmapd : NFSv4에서 ID와 이름 연결, UID와 GID 이름 전환

NFS 실습

NFS 서버 관련 기능 설치
yum search nfs-utils
yum -y install nfs-utils
NFS 공유 설정
/etc/exports 파일을 사용하여 공유 설정 추가
공유디렉토리 공유대상 [(옵션)]

공유할 디렉토리 생성

mkdir /share
chmod 777 /share

공유 설정 예시

vi /etc/exports
/share 192.168.100.200
/share 192.168.100.0/24
/share www.example.local
/share *.example.local
/share 192.168.100.0/24 192.168.101.0/24
/share server[1-5].example.local

방화벽 설정 변경

firewall-cmd --add-service=nfs --permanent
firewall-cmd --add-service=rpc-bind --permanent
firewall-cmd --add-service=mountd --permanent
firewall-cmd --reload

NFS 연결 (클라이언트에서 실행)

mount <저장소장치> <마운트포인트>
mount -t nfs <원격nfs 디렉토리정보> <마운트포인트>
마운트포인트 생성
mkdir /mount/nfs
마운트
mount -t nfs 192.168.100.100:/share /mount/nfs

NFS 공유 설정 변경

기존 공유설정 (/etc/exports) 파일의 공유 설정을 읽기/쓰기 가능으로 변경
/share 192.168.100.0/24(rw)
공유설정 변경 후 설정 적용
exportfs -r // 변경설정 적용
exportfs -v // 설정상태 확인

NFS 공유 시 권한 관련 옵션

sec : 공유되는 파일의 권한 규칙
sys : 기본값. 각 시스템의 사용자의 UID/GID를 기준으로 적용됨
none : 모든 사용자의 권한을 nfsnobody 로 처리
ex) /etc/exports 파일의 설정 수정
/share 192.168.100.0/24(rw,sec=none)
krb5… : 통합사용자 인증 설정(IPA) - Directory Service(LDAP…)
root_squash : sec=sys 설정이 되어 있더라도, root 계정에 대해서는 nfsnobody 권한을 사용하도록 설정
ex) /etc/exports 파일 설정 수정
/share 192.168.100.0/24(rw,sec=sys,no_root_squash)
ro, rw : 읽기 전용 or 읽기/쓰기
공유 시, 마운트 시 각각 ro, rw 설정 가능
한쪽이라도 ro로 설정되어 있을 경우, 결과적으로 읽기만 가능

=====================================================

자동마운트 설정(Automount)

NFS 마운트 시 mount 명령어로 연결할 경우는 지속적으로 마운트가 유지
자동마운트 설정 시, 설정이 적용될 때 즉시 마운트가 실행되지 않음
자동마운트를 통해 연결될 위치에 접근 시, 마운트가 수행됨
장시간 사용하지 않을 경우, 스스로 연결을 해제함
NFS 서버의 디렉토리 내 하위 디렉토리 등을 한 설정으로 마운트되도록 할 수 있음
ex) NFS 자동마운트를 통한 사용자 홈 디렉토리 공유
자동마운트 설정 시 : 마스터 맵 - 직접/간접 맵
마스터 맵 : 마운트 포인트, 맵 파일을 명시
<마운트포인트> <맵 파일 경로>
/etc/auto.master.d/<파일명>.autofs 형태로 생성된 파일만 적용
직접 맵 : 마운트포인트에 지정된 경로를 자동마운트 설정. 마운트포인트가 절대경로
<마운트포인트(절대경로)> <마운트옵션> <NFS공유위치>
간접 맵 : 마운트포인트에 대한 정보를 상대경로로 지정. 마스터맵에 설정된 마운트포인트에, 간접맵 설정에 지정된 마운트포인트를 결합하여 마운트 위치 지정
<마운트포인트(상대경로)> <마운트옵션> <NFS공유위치>
실제 마운트되는 위치 : 마스터맵의 마운트포인트 + 간접맵 마운트포인트

자동마운트 실습

NFS 서버는 공유가 걸려있는 상태 (이전실습 상태 그대로 유지)
NFS 클라이언트에서 autofs 패키지를 설치
yum search autofs
yum install autofs
직접 마운트 설정
/etc/auto.master.d/test.autofs 파일 생성
/- /etc/test.direct

직접 마운트 설정이 들어있는 직접 맵 파일 생성

/etc/test.direct
/mount/nfs -rw,sync 192.168.100.100:/share

autofs 서비스 시작/활성화

systemctl start autofs.service
systemctl enable autofs.service
NFS 서버에서 공유 추가 설정
server# mkdir /shares
server# mkdir /shares/{alpha,bravo,charlie}
server# chmod -R 777 /shares
server# vi /etc/exports
/share 192.168.100.0/24(rw,sec=sys,no_root_squash)
/shares/alpha 192.168.100.0/24(rw)
/shares/bravo 192.168.100.0/24(rw)
/shares/charlie 192.168.100.0/24(rw)

server# exportfs -r
server# exportfs -v
기존 직접 마운트 정보 삭제
/etc/auto.master.d/test.autofs 파일 내용 삭제
mount 정보 확인 후 마운트 된 경로 해제
autofs 서비스 재시작
간접 마운트 설정
/etc/auto.master.d/test.autofs 파일 설정
/mount /etc/test.indirect

간접 맵 파일 생성

indirect -rw,sync 192.168.100.100:/share

간접 마운트로 생성된 경로 접근 후 확인

cd /mount
ls
cd /mount/indirect
간접 맵에서 와일드카드 사용
와일드카드 : *, ?
간접 마운트 설정시 특정 경로 및 그 하위 디렉토리 포함
기존 간접 마운트 맵 파일 사용
마운트포인트 경로는 마스터맵을 사용
indirect -rw,sync 192.168.100.100:/share

  •           -rw,sync        192.168.100.100:/shares/&

설정을 적용하기 위해 서비스 재시작

systemctl restart autofs

profile
WAS Engineer, Cloud Engineer(지망)

0개의 댓글