22.4. 설정 예
22.4.1. 데몬으로 rsync 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Enterprise Linux를 사용하는 경우 rsync를 데몬으로 사용하여 여러 클라이언트가 중앙 집중식 파일을 보관하고 동기화된 상태로 유지하도록 중앙 집중식 서버로 직접 통신할 수 있습니다. 다음 예제에서는 올바른 도메인에서 네트워크 소켓을 통해 rsync를 데몬으로 실행하는 방법과 SELinux에서 이 데몬이 사전 정의된(SELinux 정책) TCP 포트에서 실행될 것으로 예상하는 방법을 보여줍니다. 그러면 비표준 포트에서
rsync 데몬이 정상적으로 실행되도록 SELinux 정책을 수정하는 방법을 보여줍니다.
이 예제는 단일 시스템에서 SELinux 정책 및 로컬 데몬 및 프로세스에 대한 제어 권한을 시연하기 위해 수행됩니다. 이 예제는 SELinux가 rsync에 어떤 영향을 미칠 수 있는지를 보여줍니다. rsync의 포괄적인 설명서는 이 문서의 범위를 벗어납니다. 자세한 내용은 공식 rsync 설명서 를 참조하십시오. 이 예제에서는 rsync,setroubleshoot-server 및 audit 패키지가 설치되어 있다고 가정하고, SELinux 대상 정책이 사용되며 SELinux가 강제 모드로 실행 중이라고 가정합니다.
절차 22.1. rsync가 rsync로 시작됨_t
- getenforce 명령을 실행하여 SELinux가 강제 모드에서 실행 중인지 확인합니다.
~]$ getenforce Enforcing이 명령은 SELinux가 강제 모드에서 실행되는 경우Enforcing을 반환합니다. - 다음 명령을 실행하여 rsync 바이너리가 시스템 경로에 있는지 확인합니다.
~]$ which rsync /usr/bin/rsync - rsync를 데몬으로 실행하는 경우 구성 파일을 사용하고
/etc/rsyncd.conf로 저장해야 합니다. 이 예제에서 사용되는 다음 구성 파일은 매우 간단하며 사용 가능한 모든 옵션을 나타내는 것이 아니라rsync데몬을 시연하는 데 충분합니다.log file = /var/log/rsync.log pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock [files] path = /srv/rsync comment = file area read only = false timeout = 300 - 이제 rsync가 데몬 모드에서 작동하도록 간단한 구성 파일이 있으므로 다음 명령을 실행하여 시작할 수 있습니다.
~]# systemctl start rsyncd.servicersyncd가 성공적으로 시작되었는지 확인합니다(아래 출력과 유사하게 표시되어야 하며 타임 스탬프만 다릅니다).~]# systemctl status rsyncd.service rsyncd.service - fast remote file copy program daemon Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled) Active: active (running) since Thu 2014-02-27 09:46:24 CET; 2s ago Main PID: 3220 (rsync) CGroup: /system.slice/rsyncd.service └─3220 /usr/bin/rsync --daemon --no-detach이제rsync_t도메인에서 실행 중이므로 SELinux는rsync데몬을 통해 보호 메커니즘을 적용할 수 있습니다.~]$ ps -eZ | grep rsync system_u:system_r:rsync_t:s0 3220 ? 00:00:00 rsync
이 예에서는
rsync_t 도메인에서 rsyncd 실행을 수행하는 방법을 보여줍니다. rsync는 소켓이 활성화된 서비스로도 실행할 수 있습니다. 이 경우 클라이언트가 서비스에 연결을 시도할 때까지 rsyncd 가 실행되지 않습니다. rsyncd 가 소켓 활성화 서비스로 실행되도록 하려면 위의 단계를 따르십시오. rsyncd 를 소켓 활성화 서비스로 시작하려면 root로 다음 명령을 입력합니다.
~]# systemctl start rsyncd.socket
다음 예제에서는 이 데몬이 기본이 아닌 포트에서 성공적으로 실행되도록 하는 방법을 보여줍니다. 다음 예제에서는 TCP 포트 10000이 사용됩니다.
절차 22.2. 기본이 아닌 포트에서 rsync 데몬 실행
/etc/rsyncd.conf파일을 수정하고 글로벌 구성 영역에 있는 파일 상단에port = 10000행을 추가합니다(즉, 파일 영역을 정의하기 전에). 새 구성 파일은 다음과 같이 나타납니다.log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock port = 10000 [files] path = /srv/rsync comment = file area read only = false timeout = 300- 이 새 설정으로
rsync데몬을 시작하면 다음과 유사한 거부 메시지가 SELinux에 의해 기록됩니다.Jul 22 10:46:59 localhost setroubleshoot: SELinux is preventing the rsync (rsync_t) from binding to port 10000. For complete SELinux messages, run sealert -l c371ab34-639e-45ae-9e42-18855b5c2de8 semanage유틸리티를 사용하여rsync_port_t:의 SELinux 정책에 TCP 포트 10000을 추가합니다.~]# semanage port -a -t rsync_port_t -p tcp 10000- 이제 TCP 포트 10000이
rsync_port_t의 SELinux 정책에 추가되었으므로rsyncd가 이 포트에서 정상적으로 시작되고 작동합니다.~]# systemctl start rsyncd.service~]# netstat -lnp | grep 10000 tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 9910/rsync
SELinux는 정책을 수정했으며 이제
rsyncd 가 TCP 포트 10000에서 작동할 수 있도록 허용합니다.