[리눅스 스터디] 5. 인터넷, 네트워크, 도메인
1. 인터넷
- DNS A레코드에 대하여
- Client - Server 구조
- public ip, private ip, NAT 개념
2. Apache 웹 서버
- 웹 브라우저와 웹 서버
- apache 설치, elinks 활용
- apache conf 파일에서 log, document root 설정
3. 원격제어 SSH
- SSH client가 설치된 컴퓨터에서 SSH server가 설치된 컴퓨터를 원격제어 할 수 있다.
- 이것은 웹브라우저와 웹서버의 관계와 매우 유사하다.
- SSH 서버 설치하기
- openssh-server 설치
- sshd가 실행되면 정상이다.
- openssh-server 설치
4. 포트(Port)
- port는 서버의 ‘문’ 과 같은 역할이다.
- well-known port(0~1024): 22, 80, 443 등
- ssh, http도 다른 port로 접속되게 할 수 있다.
- 포트포워딩 : 라우터의 설정에서 private network의 포트 포워딩 할 수 있다.
5. 도메인
- hosts 파일
- 도메인 구입
- 서브 도메인
DNS 동작 원리
dig +trace {domain}
을하면 DNS의 동작원리를 파악할 수 있다.- 도메인의 맨 뒤에는 .이 생략되어 있다. ’.’은 root도메인을 의미한다.
- 전세계적으로 도메인은 ‘계층구조’에 의해서 저장, 관리된다.
- 모든 컴퓨터는 지정된 로컬 DNS를 지닌다.
- root DNS 서버는 ’.’을 담당하며, 로컬 DNS는 도메인을 resolve하기 위해 최초로 root DNS에 질의한다.
- root DNS 서버는 ‘egoing.ga.’ 중 .ga도메인을 담당하는 최상위 DNS에 대한 정보를 알고 있기 때문에 .ga DNS에 질의한다.
- .ga 최상위 DNS에 egoing.ga.를 질의하여 도메인 소유자 DNS 정보를 얻는다.
- 로컬 DNS는 마지막으로 도메인 소유자의 DNS는 해당 도메인의 IP 주소를 로컬 DNS 서버에 반환한다.
- 이 ip는 로컬 DNS에 캐싱되며, 요청 컴퓨터에게 반환된다.
6. 서버간 동기화 (rsync)
touch test{1..10}
- rsync는 ‘증분 백업’을 한다. 즉 변경 사항이 있을 때에만 전송을 하기 때문에 효율적이다.
rsync -av src/ dest
- 다른 서버로 rsync 하기
rsync -azP ~/rsync/src/ J6419@192.168.0.3:~/rsync/dest
- -a : archive mode. 백업 시 사용
- -z : 전송 시에 압축(compress)하여 전송
- -P : 전송의 ㅡprogress를 보기
- 192.168.0.3 서버에 J6419 계정으로 접속하여 ~/rsync/dest 경로에 원천으로 부터 백업한다.
- 백업 시에는 로컬에서도 rsync를 쓰는 것이 좋다. 왜냐하면 cp 명령어는 기본적으로 권한, 소유, timestamp와 같은 메타데이터를 원천과 동일하게 복사해주지 않기 때문이다.
- cp 명령을 사용해서 백업을 할 경우에는 파일 백업의 경우 ‘-p(preserve)’ 옵션을, 디렉토리 백업일 경우 ‘-a(archive)’ 옵션을 반드시 주어야 한다.
7. SSH Key : 로그인 없이 인증하기
SSH 공개-비공개 key 방식
- Client 컴퓨터에서
ssh-keygen
하여 public/private 키 페어를 생성한다.- id_rsa, id_rsa.pub, authorized_keys, known_hosts 파일이 생성됨
- id_rsa.pub 공개키 파일의 내용을 접속 대상의 서버 ~/.ssh 디렉토리의 authorized_keys파일 뒤에 붙여준다.
- 이를 안전하게 하기 위해 ssh-copy-id 명령을 활용한다.
ssh-copy-id J6419@192.168.0.3
- 위에서 언급한 rsync 명령은 기본적으로 ssh로 통신하기 때문에
rsync -azP ~/rsync/src/ J6419@192.168.0.3:~/rsync/dest
와 같이 명령을 활용하기 위해서는 로그인 없이 인증하기를 적용해두어야 한다.
RSA
RSA는 암호화 방식 중의 하나이며 암호화 방식은 크게 대칭키/비대칭키 암호화 방식으로 나눠 볼 수 있다.
- 대칭키 암호화 방식
- 암호화, 복호화 시 모두 같은 key를 쓰는 방식
- AES256 등(iv, secret)
- 비대칭키 암호화 방식
- 암호화 할 때는 private key(비밀키), 복호화 할 때는 public key(공개키)를 쓰는 방식
- RSA는 여기에 해당한다.
SSH Client가 SSH Server에 접속할 때 RSA방식을 이용해서 인증된 유저임을 증명하게 된다. client가 server에 접속 요청을 하게 되면 server에서 random key값을 client에게 보내게 되고 client는 그 key값을 private key로 암호화하여 server에 전송한다. server에서는 전달받은 암호화된 key값을 공개키를 이용하여 복호화하게 되며 그것이 server가 처음에 전송한 random key값과 일치한다면 해당 client를 인증된 사용자로 로그인시켜주는 방식이다.
스터디 문제
- DNS의 동작원리에 대해서 설명해보세요.
내 컴퓨터가 jy.com 이라는 도메인에 질의를 했다고 가정하고 설명하겠다. 도메인의 맨 뒤에는 .라는 루트 도메인이 생략되어 있다. 즉 = jy.com = jy.com. 이다.
- 내 컴퓨터는 내 컴퓨터의 로컬 DNS 에 jy.com. 에 대해서 질의를 한다.
- 로컬 DNS는 최초로 root DNS에 마지막 ’.’ 바로 앞의 절(여기서는 .com) 대해서 질의한다.
- root DNS는 .com 을 담당하는 최상위 DNS 정보를 가지고 있기 때문에 그것에 대한 정보를 반환해준다.
- 로컬 DNS는 .com 최상위 DNS에 ‘jy.com.’ 에 대해서 질의하여 도메인 소유자 DNS 정보를 얻는다.
- 로컬 DNS는 마지막으로 도메인 소유자의 DNS에 ‘jy.com.’ 에 대해서 질의하여 해당 도메인의 A 레코드를 참조하여 IP 주소를 얻는다.
- 로컬 DNS는 이 결과를 캐싱하며, 내 컴퓨터에 결과를 반환해준다.
-
백업 시, cp가 아닌 rsync를 쓰는 이유는 무엇인가?
- 증분 백업(동기화)
- 압축
- 메타 데이터까지 복사
- 데이터 손실 최소화
- 기타 백업에 유용한 다양한 옵션
-
대칭키/비대칭키 암호화 방식에 대해서 설명하고 각각의 예를 말해보세요.
암복호화 시 동일한 키를 쓰느냐 다른 키를 쓰느냐의 차이
-
대칭키 : AES256
-
비대칭키 : RSA
-
SSH를 loginless하게 사용하는 방법 중 RSA를 활용한 접속방식에 대해서 설명해보세요.
SSH Client가 SSH Server에 loginless하게 접속할 때 RSA방식을 이용해서 인증된 유저임을 증명하게 된다. client가 server에 접속 요청을 하게 되면 server에서 random key값을 client에게 보내게 되고 client는 그 key값을 private key로 암호화하여 server에 전송한다. server에서는 전달받은 암호화된 key값을 공개키를 이용하여 복호화하게 되며 그것이 server가 처음에 전송한 random key값과 일치한다면 해당 client를 인증된 사용자로 로그인시켜주는 방식이다.