You cannot see this page without javascript.

진주성 블로그 방문하기

[ssh 인증키를 이용한 rsync 백업하기]

일반적인 rsync 를 이용할 경우 포트 873 포트를 이용하여 파일 전송을 하게 된다.

TCP 포트를 사용하게 되므로 포트스캔으로 IPS 장비에 의해 탐지될수도 있고

패킷을 분석하게 되면 파일명이나 내용이 보일수 있기에 보안에 취약하다

SSH 를 이용하게 되면 기본포트나 포트 변경을 하더라도 원격 접속용이기 때문에

접속에 대해서는 프리하게 사용할수 있고 ssh 자체 암호화 기능이 있으므로 패킷분석에 발견될

우려는 극히 드물다

 

- 사전 작업

0) 소스 및 타겟서버(HP-UX 11.31 기준)rysnc 설치

- 설치파일명 : ixRsync_ixRsync_A.20.00-3.0.9.001_HP-UX_B.11.23_IA_PA.depot (HP-UX 11.23)

- 설치파일명 : ixRsync_ixRsync_A.20.00-3.0.9.001_HP-UX_B.11.31_IA_PA.depot (HP-UX 11.31)

다운로드 :

ixRsync_ixRsync_A.20.00-3.0.9.001_HP-UX_B.11.23_IA_PA.depot

ixRsync_ixRsync_A.20.00-3.0.9.001_HP-UX_B.11.31_IA_PA.depot

 

# LANG=C

# swinstall -s /tmp/ixRsync_ixRsync_A.20.00-3.0.9.001_HP-UX_B.11.31_IA_PA.depot

 

# swlist |grep -i rsync (swlist로 확인)

ixRsync A.20.00-3.0.9.001 File Transfer Program

 

## cs1 서버에서 cs3 서버 데이터를 동기화하기##

- cs1 서버(172.16.170.6) : target data

- cs3 서버(172.16.170.10): source data

 

 

1) 공개키 생성

cs1서버에서 ssh 인증키 생성

(개인키를 가진쪽이 공개키를 가진쪽으로 접속한다.

, cs1에서 cs3으로 공개키를 이용하여 passwd 없이 접속한다)

 

root@cs1 [/]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Please be patient.... Key generation may take a few minutes

Enter file in which to save the key (//.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in //.ssh/id_rsa.

Your public key has been saved in //.ssh/id_rsa.pub.

The key fingerprint is:

06:2f:28:b6:d6:27:b0:24:94:90:73:4f:46:8b:2c:66 root@cs1

The key's randomart image is:

+--[ RSA 2048]----+

|.. .. |

|+.o.o. |

|.Eo+. . |

|+. .. o |

|. = . . S |

| + * o |

| + o . |

| . o |

| |

+-----------------+

root@cs1 [/]#

## 패스워드를 입력하지 않았다. /.ssh/id_rsa.pub 파일이 공개키이며, 접속하려는 서버에 심어 두어야 한다

 

root@cs1 [/]# cd /.ssh

root@cs1 [/.ssh]# ll

total 48

-rw------- 1 root sys 1675 Jul 3 11:07 id_rsa

-rw-r--r-- 1 root sys 390 Jul 3 11:07 id_rsa.pub

-rw-r--r-- 1 root sys 888 Jul 3 10:36 known_hosts

 

2) 공개키를 cs3서버의 /.ssh/authorized_keys 에 넣는다

(cs1서버의 /.ssh/id_rad.pub 파일을 ftpcs3서버의 //.ssh/에 넘긴 후 autorized_keyrename

또는 id_rad.pub파일 내용을 copycs3서버에서 viautorized_key파일 생성후 paste해도 됨)

** autorized_key파일의 퍼미션을 600으로 변경한다.

 

# cd /.ssh

# chmod 600 autorized_key (퍼미션 600으로 변경)

root@cs3[/.ssh]#ll authorized_keys (퍼미션 확인: 600)

total 32

-rw------- 1 root sys 390 Jul 3 10:06 authorized_keys

 

 

3) cs1 서버에서 cs3서버로 접속테스트

# ssh -i /.ssh/id_rsa 172.16.170.10

또는 ssh -i /.ssh/id_rsa cs3 (/etc/hosts 파일에 해당 IP 등록 되있을경우)

=> password 확인 없이 cs3서버로 로그인된다.

 

 

4) rsync 명령 실행

*** 단순동기화(cs3: 원본, cs1: 사본) ***

root@cs1 [/]# rsync -avz -e ssh 172.16.170.10:/tmp/rsync_source/ /tmp/rsync_target

또는

root@cs1 [/]# rsync -avz -e ssh cs3:/tmp/rsync_source/ /tmp/rsync_target

(cs3 서버의 /tmp/rsync_sourcecs1 서버의 /tmp/rsync_target으로 동기화)

 

*** 동기화(삭제파일도 동일적용) ***

root@cs1 [/]# rsync -avz --delete -e ssh 172.16.170.10:/tmp/rsync_source/ /tmp/rsync_target

 

*** 2번에서 공개키 생성을 하지 않은 상황에서 계정의 접속 비번을 입력해주면 파일 전송이 가능하다

root@cs1 [/]# rsync -avz user@172.16.170.10:/tmp/rsync_source/ /tmp/rsync_target

(해당 유져의 패스워드를 입력하면 파일전송이 시작된다. 당연 목적지 파일 디렉토리 쓰기 퍼미션이 있어야 된다)

 

5) cron에 등록하여 매일 세벽 3시에 백업 수행할 경우

---------------------------------------------------------------------------------------

vi rsync_backup.sh

#!/bin/sh

/usr/bin/rsync -avz -e ssh 172.16.170.10:/tmp/rsync_source/ /tmp/rsync_target

---------------------------------------------------------------------------------------

 

 

# crontab -e

00 03 * * * /bin/sh /root/backup/rsync_backup.sh > /dev/null 2>&1

 

6) rsyncd.conf 설정에 의한 서비스 데몬 실행

 

위 4번의 방법으로 안될경우 고전적인 방법으로 rsyncd 를 기동하여 파일 주고 받고를 할수 있다

먼저 /etc/rsyncd.conf 의 내용을 추가 수정한다. 포트는 873을 사용하므로 방화벽은 오픈되어 있어야 된다.

앞에도 언급 했듯이 보안상 좋지 않은 설정 이므로 아래 환경 파일에 필히 "hosts allow " 에 접속하는 서버를

등록해 줘야 된다.

임시 용도로 사용한뒤 데몬프로세서를 죽여 놓는게 좋을듯 하다

 

root@cs1 [/]# vi /etc/rsyncd.conf

syslog facility = local5
uid = root
gid = root
##############################################################
[R]
        comment = root directory
        path = /
        hosts allow = cs1, cs2, cs3
        read only = no
        timeout = 600

 

 

그리고 데몬을 실행 한다.

 

root@cs1 [/]# rsync --daemon

 

그러면 프로세서가 수행 되면서 접속 대기를 합니다.

 

클라이언터쪽 파일 백업받을 서버에서 아래와 같이 수행합니다.

 

root@cs1 [/]# rsync -avz  /tmp/rsync_source cs3::R/tmp/rsync_target

 

리눅스에는 기본적으로 설치 되어 있는 툴 이므로 자유롭게 사용 가능하다

 

번호 제목 날짜 조회 수
65 BCP 2017.11.01 588
64 WLAN, VLAN 2017.11.01 189
63 ISMS - 정보보호관리체계 2017.11.01 169
62 위험관리 2017.11.01 218
61 법규 - 추가작성 2017.11.01 113
60 개발보안 file 2017.11.01 563
59 어플리케이션 보안 file 2017.11.01 133
58 시스템보안 file 2017.11.01 1314
57 DDos 공격대응 가이드 - kisa 자료 file 2017.10.31 290
56 블록체인 file 2017.10.31 161
55 route access-list file 2017.10.30 590
54 전자서명의 원리 file 2017.10.30 183
53 사이버 침해사고 대응 절차 file 2017.10.29 235
52 스니핑용 promisc 모드 file 2017.10.29 320
51 DDoS 공격도구 file 2017.10.18 221
진주성 블로그 방문하기
CLOSE