• TELNET 이란?
    • 인터넷 혹은 Local-Network 연결에 사용되는 "표준 네트워크 프로토콜".
    • TCP/IP Stack을 갖춘 대부분의 네트워크 장비와 OS에서는, 원격을 위해~ 몇가지 종류의 텔넷 서비스를 지원 한다.
    • 하지만 사실상... 보안문제 때문에 SSH 으로 대체가 되었다고 보면 된다.
  • SSH 이란?
    • Secure Shell.
    • (네트워크 상에서) 다른 컴퓨터에 로그인, 원격명령, 파일복사 등등에 기능으로 개발된 프로토콜.
    • 기존의 rsh, rlogin, 텔넬 등을 대체하기 위해서 설계 됨. (강한인증 및 보안통신)
    • SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다.
  • SSH 명령
    • 접속 : ssh 계정@172.12.345.67
    • 복사 : ssh-copy-id -i .ssh/id_rsa.pub 계정@172.12.345.67
    • ...
  • SSH 키설정
    • 서버1)
      • SSH 키생성 : ssh-keygen -t rsa
      • 해당 공개키 확인 : cd .ssh 및 cat id_rsa.pub
    • 서버2)
      • 서버1 공개키 작성 : cd .ssh 및 vi authorized_keys
      • chmod 644 authorized_keys
    • 이후, 서버1 에서 -> 서버2 으로 (인증없이) SSH 접속 가능.
  • SSH Tunneling (Port-Forwarding)
    • Local Port-Forwarding
      • HostA:$ ssh -L 로컬Port:목적지IP:목적지Port 계정@HostB
      • 예) ssh -L 1818:127.0.0.1:22 계정@172.1.2.3 // 나의 홀
      • 예) ssh -L 1818:172.1.2.3:3306 계정@172.1.2.3 // 너의 홀
      • 예) ssh -L 1818:172.9.8.7:3306 계정@172.1.2.3 // 너의 그의 홀
    • Remote Port-Forwarding
      • HostA:$ ssh -L 원격Port:목적지IP:목적지Port 계정@HostB
  • SCP 이란?
    • "Secure Shell(SSH)"을 기반으로,
    • local<->remote 및 remote<->remote” 호스트 간의... 'Securely 전송' 프로토콜 or 프로그램.
    • 예) scp -P 포트 {파일} 계정@아이피:/home/{디렉토리}
    • 예) scp -P 포트 계정@아이피:/home/{파일} ./
    • 프로토콜
      • 호스트간의 파일전송(BSD RCP 기반) 및 데이터 (TCP 22) transfer & authentication 정의.
        • A Client can send files to a Server. (Upload)
        • A Clients can also request files from a Server. (Download)
      • local <-> remote
        • local Client -> (SSH 커넥션) -> (SCP Process to be Start) -> remote Host
        • SCP Process
          • source모드 : reads disk files and sends to ...
          • sink모드 : accepts files and writes them.
      • remote <-> remote
        • Client -> (SSH conn to SRC host, Request that it) -> src_remote Host
        • Client -> (Open SCP conn) -> dest_romote Host (Not support open two SCP conn)
        • (Client 는 중개자)
    • 프로그램
      • Software tool implementing the SCP protocol as a service daemon or client.
  • %
  • (번외) RSYNC 란?
    • 동기화 및 전송 프로그램 or 프로토콜
      • delta-encoding 및 Zlib 압축으로~ 용량 최소화 하고, SSH 혹은 stunnel 을 통해 데이터 보안 됨.
      • 보통 (daemon-mode) Program으로 동작.
      • "rsync:// " 식에, 파일 서비스 Protocol으로도 사용.
      • 특정 SRC 와 DEST 의 파일(혹은 디렉토리)을 지정하여, BackUp 혹은 Mirroring 구축.
      • (src,dest 둘다 remote으로 지정 할수는 없다... 당연히 중개자가 없으니...)
    • 장점 (Vs SCP)
      • remote-update 프로토콜을 이용해서, 파일의 차이나는 부분만 전송!
      • 그래서, (SCP 보다) 더 빠르고 효율적으로 원격시스템과 통신 할수있다.
        • scp basically reads the source file and writes it to the destination.
        • rsync special delta transfer algorithm and a few optimizations to make the operation a lot faster.
      • 압축 송/수신 으로 적은 대역폭 및 좋은 보안성.
      • symlink, device, 소유자, 그룹권한 등의 '파일 부가정보'도 같이 복사 가능!
      • (scp는 symlink가 있으면, 해당 원본전송)
      • rsync 커맨드는 옵션이 매우 많다. (원본전송후 삭제 등등) (scp는 빈약)
    • 동작방식 및 알고리즘
      • local -> "rsync" 커맨드 -> SSH 접속 -> local 및 remote 간 연결 -> remode -> "rsync" 인보크 -> 파일 데이터 통신
      • 대상파일 판단 : 
        • 파일의 크기 및 수정 시간을 체크하여 판단함.
        • 매우 가볍게 처리가 가능하지만, 오차가 날수 있음.
        • --checksum 옵션을 통해 파일 ‘체크썸’ 값까지 비교 가능
      • 전송할 파일의 부분 데이터 판단 :
        • 파일을 고정 크기에 Chunk로 나눈 뒤, Checksum을 계산하여 변화된 부분만 복사.
        • 앞 부분의 정보수정으로 모든 Chunk가 밀리는 현상을 대비해서 `Rolling hash`도 사용.
      • (rdiff 유틸리티는 rsync algorithm을 사용해서 두 파일간의 차이인 delta files 을 생성)
      • (rdiff-backup은 delta값 증분 만큼을 저장하여, 원격간의 파일 백업을 유지)
      • (rdiff 에서 사용하는 librsync 라이브러리는 rsync algorithm과 독립적으로 구현이 되어 있음)
    • 실행 및 옵션
      • rsync [옵션] [계정]@[src:/디렉토리] [dest 디렉토리]
        • -a : archice mode ( 심볼릭 링크, 속성, 퍼미션, 소유권 등 보곤)
        • -v : verbose mode (자세한 정보 출력)
        • -z : compress (전송시 압축)
        • -r : 하위 디렉토리 포함
        • -u :  --update update only (don't overwrite newer files)
        • -e ssh : ssh를 이용한 rsync 동기화
        • --stats : 결과보고
        • --delete : 원본 서버에 없는 파일은 백업 서버에서 삭제
        • --progress : rsync 진행 상항 보기
        • --exclude : 제외할 파일 지정
        • --bwlimit : 대역폭(복사속도) 제어
        • --max-size : 특정 크기 이상 파일 제외(rsync 2.6.4 버전부터 추가된옵션)
        • --min-size : 특정 크기 이하 파일 제외(rsync 2.6.7 버전부터 추가된옵션)
      • 예) rsync -avz --bwlimit=1024 {파일} 계정@아이피::{디렉토리}
      • 예) rsync -avzh 계정@아이피::{디렉토리} ./
      • Rsync Server Mode
      • 예) rsync logagent@아이피::LOG-AGENT
      • 예) rsync -avz temp.txt logagent@아이피::LOG-AGENT

-끝-

'통신과 프로토콜 그리고 보안' 카테고리의 다른 글

JWT (JSON Web Token)  (0) 2020.10.19
OAuth  (0) 2019.11.10
HTTP 와 SSL 및 보안  (0) 2019.11.10
SMTP , (POP3) , (IMAP)  (0) 2019.11.10
인터넷(Internet) 과 웹(Web)  (0) 2019.10.27

+ Recent posts