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 http protocol 기본적인 이해 2018.04.27 217
64 ISAC (정보공유분석센터) 2018.02.03 216
63 OSI 7 Layer 2017.11.01 214
62 top을 통해 살펴보는 프로세스 정보들 2020.03.05 210
61 정보보안 국가기술자격검정 최종합격자 현황 [1] 2019.03.27 199
60 ThreadDump 분석 2020.01.02 197
59 WLAN, VLAN 2017.11.01 189
58 윈도우 보안 2017.11.01 186
57 전자서명의 원리 file 2017.10.30 183
56 안전한 패스워드 가이드 file 2017.08.24 175
55 ISMS - 정보보호관리체계 2017.11.01 169
54 웹 서버 구축 보안점검 가이드 file 2017.08.25 168
53 웹로직 forceshutdown 시키는 스크립트 file 2017.09.13 166
52 블록체인 file 2017.10.31 161
51 Linux shell script file 2017.08.23 156
진주성 블로그 방문하기
CLOSE