Rsync 사용법 (원격 데이터 동기화) CentOS7

2022. 6. 26. 11:18· Linux/Cloud
목차
  1. - rsync데몬 (포트 873) 를 이용한 동기화 (원격::Alias)
  2. - ssh를 이용한 동기화 (원격:/Path)
  3. Rsync 보안 침해사고 사례
반응형

rsync (Remote synchronization) 원격서버 데이터 동기화를 위해 만들어진 유틸리티

- 소유권,그룹권한,심볼릭 링크,타임스탬프 공유로 여러 서버 동기화

- 이미 동기화된 데이터는 제외하고 동기화 (네트워크 트래픽 최소화)

- ssh 프로토콜을 이용한 원격지 동기화

- 다른 동기화 프로그램(rcp, scp)  보안 및 속도가 빠름  (SCP 보안 취약점 CVE-2018-20685, CVE-2019-6109-11)

 

rsync는 크게 두가지 방법으로 사용합니다.

rsync데몬(systemctl start rsyncd)을 구동시켜서 사용하는 방법과 ssh로 바로 접속해서 사용하는 방법이 있습니다.

rsync데몬을 사용할 경우 rsyncd.conf에 정의된 Alias에 의해 동기화작업을 진행합니다. 동기화가 되는 서버가 많을 경우에도 Alias만 적절히 수정하면서 동기화시킬 수 있습니다.

ssh프로토콜을 사용하는 경우 rsync데몬과는 상관없이 구동됩니다. 보통 원격지 백업용으로 사용됩니다.

 

 

- rsync데몬 (포트 873) 를 이용한 동기화 (원격::Alias)

rsync데몬 (포트 873)을 사용하는 경우 /etc/rsyncd.conf 정의된 Alias을 이용합니다. 

rsyncd.conf 사용되는 계정은 root가 아닌 운용계정을 사용하는 것이 보안상 좋습니다.

 

원본서버 설정

- rsync 설치
# yum install rsync
# systemctl enable rsyncd
# systemctl start rsyncd

- rsync 사용자추가(운용계정)
# adduser rsync-user
# passwd rsync-user

- 방화벽 설정
# firewall-cmd --permanent --add-service rsyncd
# firewall-cmd --reload

- rsync 서비스 포트 확인(netstat -> yum install net-tools)
# netstat -tulpn | grep rsync
# tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      5177/rsync
# tcp6       0      0 :::873                  :::*                    LISTEN      5177/rsync

- rsync 테스트용 디렉토리 생성
# mkdir /tmp/rsync-test

- rsync 접속계정 비밀번호 생성 (계정:비밀번호 형식으로 rsyncd.passwd 추가)
# vi /etc/rsyncd.passwd
# rsync-user:testpassword

- rsyncd.passwd 접근권한제한
# chmod 0600 /etc/rsyncd.passwd

 

/etc/rsyncd.conf 설정

# vi /etc/rsyncd.conf

# rsync사용계정 및 그룹
uid = rsync-user
gid = rsync-user

# 외부접근제한 ALL
hosts deny = *

# 최대 허용접속 갯수
max connections = 1

# daemon PID
pid file = /var/run/rsyncd.pid

# 예외폴더 및 파일
exclude = lost+found/

# 읽기 전용
read only =yes

# 로그파일위치
log file = /var/log/rsync.log

# 파일전송로그 활성화
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3

# rsync alias
[test]
	# 디렉토리 경로
        path = /tmp/rsync-test
        # 리스팅 가능
        list = yes
        # rsync접근계정
        auth users = rsync-user
        # rsync 비밀번호
        secrets file = /etc/rsyncd.passwd
        # 허용 Host
        hosts allow = 10.0.120.55

SELinux 설정

- SELinux 설정
에러메세지(rsync @ERROR: chroot failed) 발생
# setsebool -P rsync_export_all_ro 1

rsync 재시작

# systemctl restart rsyncd

rsync alias확인

# rsync -v localhost::
test

 

 

 

 

백업(동기화)서버 설정

rsync alias 확인

# rsync -v 10.0.120.55::
test

telnet 이용한 네트워크 포트 확인

# telnet 10.0.120.55 873
Trying 10.0.120.55...
Connected to 10.0.120.55.
Escape character is '^]'.
@RSYNCD: 31.0

rsyncd.passwd 파일 생성

root계정이 아닌 경우 home디렉토리에 계정 생성 후 접근 제한하면 됩니다.

이때 백업(동기화)서버 rsyncd.passwd파일에는 비밀번호만 입력해야 됩니다.

# vi /home/{사용자계정}/rsyncd.passwd
testpassword
- 접근제한
# chmod 0600 /home/{사용자계정}/rsyncd.passwd

 

백업(동기화) 테스트

# rsync -aP --password-file=/home/{사용자계정}/rsyncd.passwd rsync-user@10.0.120.55::test /tmp/rsync-test

 

 

 

- ssh를 이용한 동기화 (원격:/Path)

ssh프로토콜을 사용할 경우 원격지 경로를 직접 명시하면 됩니다.

# rsync -option -e 'ssh -p ssh포트' user@origin-server:/path backup-server_path

하위 디렉터리 포함(-r), 타임스탬프 유지(-t), 동기화 출력(-v), 읽기편한포맷출력(-h)

원본서버 소유권 유지하지 않고 백업(동기화)을 실행하는 계정으로 귀속됨

# rsync -rtvh -e 'ssh -p 9999' backup-user@10.0.120.55:/tmp/rsync-test /home/backup-user/test
backup-user@10.0.120.55's password: ***********
receving incremental file list
.
.
.
.
send 304.89K bytes recevied 601.08K bytes 164.72K bytes/sec
total size is 978.09M speedup is 1,079.60

백업(동기화) 서버에 임의로 소유권을 지정해서 동기화(rsync)

--chown=소유자:소유자 그룹

# rsync -rtvh -e 'ssh -p 9999' --chown=db-user:db-group rsync-user@10.0.120.55:/tmp/rsync-test /home/backup-user/test
backup-user@10.0.120.55's password: ***********
receving incremental file list
.
.
.
.
send 304.89K bytes recevied 601.08K bytes 164.72K bytes/sec
total size is 978.09M speedup is 1,079.60

rsync 결과 리포트 출력

-- stats

# rsync -rt -e 'ssh -p 9999' --stats rsync-user@10.0.120.55:/tmp/rsync-test /home/backup-user/test
backup-user@10.0.120.55's password: ***********

Number of files: 16,204 (reg: 12,958, dir: 3,246)
Number of created files: 60 (reg: 55, dir: 5)
Number of deleted files: 0
Number of regular files transferred: 55
Total file size: 978,092,639 bytes
Total transferred file size: 142,705,304 bytes
Literal data: 142,705,304 bytes
Matched data: 0 bytes
File list size: 52,633
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 4,463
Total bytes received: 143,140,956

sent 4,463 bytes  received 143,140,956 bytes  26,026,439.82 bytes/sec
total size is 978,092,639  speedup is 6.83

주기적인 백업 스크립트(chmod +x rsync_backup.sh)

원본서버 ssh자동 로그인 허용해야 됩니다.

스크립트 생성 후 적절히 cron에 등록하면 됩니다.

####################################################
# Rsync backup script
####################################################
RUNTIME=$(date +"%Y-%m-%d %H:%M:%S")


echo -e "---------------------------------------------------" >> rsync_backup.log
echo -e "----           Rsync Backup $RUNTIME           ---- " >> rsync_backup.log
echo -e "---------------------------------------------------" >> rsync_backup.log

rsync -rt --delete --exclude='lost+found/' -e 'ssh -p 9999' --stats --chown=user:usergroup rsync-user@10.0.120.55:/raid/pg /backup/pg >> rsync_backup.log

echo -e "---------------------------------------------------" >> rsync_backup.log
echo -e "" >> rsync_backup.log
echo -e "" >> rsync_backup.log
echo -e "" >> rsync_backup.log

 

 

 

 

 

 

rsync client 옵션

shor long 설명
-a --archive 자주사용하는 옵션을 묶어놓은 옵션(-rlptgoD)
-r --recursive 하위디렉토리까지 복사 (옵션이 비활성시 "skipping directory" 메세지 출력됨)
-l --links 심볼릭 링크 유지
-p --perms 퍼미션 유지
-t --times 타임스탬프 유지
-g --group 그룹 소유권 유지
-o --owner 사용자 소유권 유지
-D   디바이스 파일보존 (same as --devices --specials)
-h --human-readable 읽기 편한 포맷으로 출력(Human)
-v --verbose 동기화시 상세 출력
-q --quiet 동기화시 출력표시 안함
  --delete 원본소스에 없는 파일은 백업서버에서 삭제
  --exclude 동기화 예외 파일지정
  --include 동기화 포함할 파일 지정
-n --dry-run 실제로 동기화(복사)가 되는게 아니라 구동 테스트
-b --backup 백업서버에 이미 파일이 존재할 경우 백업 디렉토리에 백업
-u --update 백업서버에 원본보다 최신 파일이 있을 경우 해당 파일은 복사하지 않음
-e   ssh 프로토콜 사용 (ex: -e 'ssh -p 9999')
-z   데이터파일 압축
     

https://cipleme.tistory.com/25

 

(centos7) rsync 자주 사용되는 명령어(옵션)

rsync (Remote Sync)는 site간의 파일 또는 디렉토리의 동기화를 위한 유틸리티입니다. 서버파일 명령어인 scp는 모든 파일을 전송하는 반면, rsync는 변경된 파일만 전송을 함으로써 더 빠르고 효율적인

cipleme.tistory.com

 

 

 

Rsync 보안 침해사고 사례

동기화 프로그램 Rsync 설정 오류로 인한 웹 서버 침해사고사례.pdf
1.06MB

'Linux > Cloud' 카테고리의 다른 글

시놀로지에 그누보드5 설치오류 500 Error, msyql_connect() Error  (0) 2024.07.24
Synology phpMyAdmin 접근제어 방법  (0) 2024.07.23
[OpenMediaVault5.6] Docker(Portainer) CUPS 설치  (0) 2022.02.04
[OpenMediaVault5.6] SFTP 설치  (0) 2022.01.30
[OpenMediaVault5.6] OMV Extras 설치 (Docker 사용)  (0) 2022.01.30
  1. - rsync데몬 (포트 873) 를 이용한 동기화 (원격::Alias)
  2. - ssh를 이용한 동기화 (원격:/Path)
  3. Rsync 보안 침해사고 사례
'Linux/Cloud' 카테고리의 다른 글
  • 시놀로지에 그누보드5 설치오류 500 Error, msyql_connect() Error
  • Synology phpMyAdmin 접근제어 방법
  • [OpenMediaVault5.6] Docker(Portainer) CUPS 설치
  • [OpenMediaVault5.6] SFTP 설치
zosystem
zosystem
몇 달만 지나도 가물가물해서 만든 곳
zosystem
동방노트
zosystem manage
전체
오늘
어제
  • 분류 전체보기 (278)
    • Linux (90)
      • 기본명령어&팁 (13)
      • 설치 및 셋팅 (16)
      • 네트워크보안 (5)
      • Samba&NFS (6)
      • 모니터링 (3)
      • Apache&nginx (5)
      • MySQL (2)
      • PHP (0)
      • Cloud (29)
      • Shell (1)
      • RAID (1)
      • PLEX (2)
      • Python (5)
      • Docker (2)
    • Windows (22)
    • Windows Server (9)
    • IoT (1)
    • 데이타베이스 (1)
    • 잡다한 개발팁 (19)
    • 개발유틸리티 (8)
    • 컴퓨터관리 (127)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • portainer
  • PID
  • Python
  • synology firewall
  • fail2ban
  • selenium
  • 프린터 방화벽
  • Printer
  • nt530u4e-e3b
  • synology phpmyadmin
  • fpc케이블
  • openmediavault 7
  • OMV
  • omv7
  • IP Camera
  • 원격 데스크톱 연결
  • 프린터
  • RDP
  • mysql_connect() error
  • docker
  • amd 드라이버 이슈
  • OpenMediaVault
  • CCTV
  • ap
  • 시놀로지 그누보드5 설치
  • phpmyadmin 접근제어
  • rsync
  • log syntax highlighting
  • 그래픽카드 드라이버 이슈
  • 바탕 화면 아이콘 설정 단축키

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
zosystem
Rsync 사용법 (원격 데이터 동기화) CentOS7
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.