Rocky9

잉여 위키
Chnagil (토론 | 기여)님의 2026년 7월 10일 (금) 23:48 판 (새 문서: = Rocky Linux 9 초기 설치 및 기본 서버 설정 가이드 = == 문서 개요 == 본 문서는 Rocky Linux 9 또는 RHEL 9 계열 운영체제를 처음 설치한 후 기본 서버로 사용하기 위한 설정 절차를 설명한다. 다음 순서로 진행한다. # 운영체제 설치 # CLI에서 IP 주소 설정 # 호스트 이름 설정 # SSH 기본 설정 # SSH 특정 계정 접속 제한 # SSH 포트 변경 # firewalld 포트 허용 # firewalld 비활성...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

Rocky Linux 9 초기 설치 및 기본 서버 설정 가이드

문서 개요

본 문서는 Rocky Linux 9 또는 RHEL 9 계열 운영체제를 처음 설치한 후 기본 서버로 사용하기 위한 설정 절차를 설명한다.

다음 순서로 진행한다.

  1. 운영체제 설치
  1. CLI에서 IP 주소 설정
  1. 호스트 이름 설정
  1. SSH 기본 설정
  1. SSH 특정 계정 접속 제한
  1. SSH 포트 변경
  1. firewalld 포트 허용
  1. firewalld 비활성화 및 iptables 전환
  1. 서비스 상태 및 포트 확인
  1. SSH 및 SFTP 접속 테스트
  1. Samba 파일 공유 설정

본 문서의 명령어는 기본적으로 root 계정으로 실행하는 것을 기준으로 한다.

일반 계정으로 실행할 경우 명령어 앞에 sudo를 추가한다.

sudo 명령어

1. 운영체제 설치

1.1 설치 이미지 준비

Rocky Linux 설치 이미지는 일반적으로 다음 두 종류를 사용한다.

이미지 종류 설명

서버 환경에서는 일반적으로 DVD ISO 사용을 권장한다.

1.2 설치 USB 제작

Windows 환경에서는 Rufus, Ventoy 등의 프로그램을 사용하여 설치 USB를 만들 수 있다.

설치 대상 디스크의 기존 데이터는 모두 삭제될 수 있으므로 설치 전에 반드시 필요한 자료를 백업한다.

1.3 BIOS 또는 UEFI 설정

서버 또는 PC 전원을 켠 후 BIOS/UEFI 설정 화면에 진입한다.

주로 확인할 항목은 다음과 같다.

항목

VMware, KVM, Proxmox 등의 가상화 환경에 Rocky Linux를 설치하는 경우 ISO 파일을 가상 CD/DVD 장치에 연결한다.

1.4 설치 화면 진입

설치 USB 또는 ISO로 부팅한 후 다음 항목을 선택한다.

Install Rocky Linux 9

설치 언어를 선택한 후 설치 요약 화면으로 이동한다.

1.5 설치 대상 디스크 설정

설치 대상 디스크를 선택한다.

초심자는 자동 파티션 구성을 사용해도 된다.

서버 용도로 별도 파티션을 구성하려면 다음 예시를 참고한다.

마운트 지점 권장 용도

로그 서버, DB 서버, 웹 서버는 /var 사용량이 크게 증가할 수 있으므로 별도 볼륨으로 분리하는 것이 좋다.

1.6 소프트웨어 선택

서버 용도에서는 다음 설치 유형을 권장한다.

Minimal Install

GUI가 필요한 경우 다음을 선택할 수 있다.

Server with GUI

일반적인 서버는 보안과 자원 사용량을 고려하여 Minimal Install을 권장한다.

1.7 root 비밀번호 및 사용자 생성

설치 과정에서 root 비밀번호를 설정한다.

관리용 일반 계정도 함께 생성하는 것을 권장한다.

예시 계정:

사용자 이름: admin
관리자 권한: 활성화

관리자 권한을 활성화하면 해당 계정이 일반적으로 wheel 그룹에 추가된다.

설치 완료 후 시스템을 재부팅한다.

2. 설치 직후 기본 확인

2.1 운영체제 버전 확인

cat /etc/os-release

출력 예시:

NAME="Rocky Linux"
VERSION="9.x"
ID="rocky"

커널 버전 확인:

uname -r

전체 시스템 정보 확인:

hostnamectl

2.2 현재 사용자 확인

whoami

root 계정으로 전환:

sudo -i

2.3 패키지 업데이트

운영체제 설치 직후 전체 패키지를 업데이트한다.

dnf update -y

업데이트 후 커널이 변경되었으면 재부팅한다.

reboot

재부팅 후 커널 버전을 다시 확인한다.

uname -r

3. CLI에서 IP 주소 설정

Rocky Linux 9는 NetworkManager를 기본 네트워크 관리 서비스로 사용한다.

CLI에서는 주로 nmcli 명령어를 사용한다.

3.1 네트워크 인터페이스 확인

ip address

간단하게 확인:

ip -br address

NetworkManager 장치 상태 확인:

nmcli device status

출력 예시:

DEVICE   TYPE      STATE      CONNECTION
ens192   ethernet  connected  ens192
lo       loopback  connected  lo

위 예시에서 물리 네트워크 인터페이스는 ens192이다.

3.2 네트워크 연결 프로파일 확인

nmcli connection show

출력 예시:

NAME    UUID                                  TYPE      DEVICE
ens192  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  ens192

장치 이름과 연결 프로파일 이름은 다를 수 있다.

이후 명령어에서는 연결 프로파일 이름을 정확히 사용해야 한다.

3.3 DHCP 설정

연결 프로파일 이름이 ens192인 경우:

nmcli connection modify ens192 ipv4.method auto
nmcli connection modify ens192 ipv4.addresses ""
nmcli connection modify ens192 ipv4.gateway ""
nmcli connection modify ens192 ipv4.dns ""
nmcli connection up ens192

현재 할당된 IP 주소 확인:

ip -br address show ens192

기본 게이트웨이 확인:

ip route

DNS 확인:

cat /etc/resolv.conf

3.4 고정 IP 설정

다음 예시 환경을 기준으로 설정한다.

항목

고정 IP 설정:

nmcli connection modify ens192 \
ipv4.method manual \
ipv4.addresses 192.168.10.20/24 \
ipv4.gateway 192.168.10.1 \
ipv4.dns "192.168.10.1 8.8.8.8"

자동 연결 활성화:

nmcli connection modify ens192 connection.autoconnect yes

설정 적용:

nmcli connection up ens192

원격 SSH 접속 상태에서 IP 주소를 변경하면 접속이 끊길 수 있다.

가능하면 콘솔, iLO, iDRAC, IPMI, VMware 콘솔 등 별도의 관리 경로를 확보한 후 변경한다.

3.5 설정 결과 확인

IP 주소 확인:

ip -br address

라우팅 확인:

ip route

게이트웨이 통신 확인:

ping -c 4 192.168.10.1

외부 IP 통신 확인:

ping -c 4 8.8.8.8

DNS 이름 조회 확인:

ping -c 4 google.com

8.8.8.8 통신은 되지만 도메인 이름 통신이 되지 않으면 DNS 설정을 확인한다.

3.6 네트워크 설정 상세 확인

nmcli connection show ens192

IPv4 관련 항목만 확인:

nmcli -f ipv4 connection show ens192

4. 호스트 이름 설정

4.1 현재 호스트 이름 확인

hostname

상세 확인:

hostnamectl

4.2 호스트 이름 변경

예시 호스트 이름:

rocky-file01

설정 명령어:

hostnamectl set-hostname rocky-file01

FQDN 형식으로 설정할 수도 있다.

hostnamectl set-hostname rocky-file01.example.local

설정 확인:

hostnamectl
hostname

4.3 /etc/hosts 등록

내부 DNS가 없는 환경에서는 /etc/hosts에 서버 정보를 등록할 수 있다.

먼저 백업한다.

cp -a /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)

파일 편집:

vi /etc/hosts

설정 예시:

127.0.0.1       localhost localhost.localdomain
::1             localhost localhost.localdomain
192.168.10.20   rocky-file01.example.local rocky-file01

확인:

getent hosts rocky-file01

5. SSH 기본 설정

SSH는 원격에서 서버 CLI에 접속하기 위한 서비스다.

SFTP도 SSH 서비스를 이용하므로 SSH 설정과 동일한 포트를 사용한다.

5.1 SSH 서버 설치 여부 확인

rpm -q openssh-server

설치되지 않은 경우:

dnf install -y openssh-server

5.2 SSH 서비스 시작 및 자동 시작 설정

systemctl enable --now sshd

서비스 상태 확인:

systemctl status sshd

간단하게 정상 여부만 확인:

systemctl is-active sshd
systemctl is-enabled sshd

정상 상태 예시:

active
enabled

5.3 SSH 기본 설정 파일

SSH 서버 설정 파일:

/etc/ssh/sshd_config

추가 설정 파일 디렉터리:

/etc/ssh/sshd_config.d/

Rocky Linux 9에서는 기존 설정 파일 전체를 직접 수정하기보다 별도 설정 파일을 생성하는 방법도 사용할 수 있다.

예시:

/etc/ssh/sshd_config.d/10-custom.conf

5.4 SSH 설정 백업

설정 변경 전 반드시 백업한다.

cp -a /etc/ssh/sshd_config \
/etc/ssh/sshd_config.bak.$(date +%Y%m%d_%H%M%S)

추가 설정 파일 생성:

vi /etc/ssh/sshd_config.d/10-custom.conf

5.5 기본 보안 설정 예시

PermitRootLogin no
MaxAuthTries 5
LoginGraceTime 60
X11Forwarding no

각 항목의 의미는 다음과 같다.

항목

설정 문법 검사:

sshd -t

아무 메시지도 출력되지 않으면 일반적으로 문법 오류가 없는 상태다.

설정 적용:

systemctl reload sshd

reload 실패 시:

systemctl restart sshd

SSH 설정을 변경한 후 기존 접속 세션을 즉시 종료하지 않는다.

새 터미널에서 접속이 정상적으로 되는 것을 먼저 확인한 뒤 기존 세션을 종료한다.

6. SSH 접속 계정 제한

6.1 관리 계정 생성

예시 계정:

useradd admin
passwd admin

관리자 권한이 필요한 경우 wheel 그룹에 추가한다.

usermod -aG wheel admin

그룹 확인:

id admin

출력에 wheel 그룹이 포함되어 있는지 확인한다.

6.2 특정 계정만 SSH 접속 허용

설정 파일 편집:

vi /etc/ssh/sshd_config.d/10-custom.conf

특정 계정만 허용:

AllowUsers admin

여러 계정 허용:

AllowUsers admin operator backupuser

특정 그룹만 허용할 수도 있다.

AllowGroups wheel

AllowUsers 또는 AllowGroups 설정을 잘못 적용하면 SSH 접속이 모두 차단될 수 있다.

현재 사용 중인 관리 계정이 허용 목록에 포함되어 있는지 반드시 확인한다.

문법 검사:

sshd -t

설정 적용:

systemctl reload sshd

7. SSH 포트 변경

SSH 기본 포트는 TCP 22번이다.

외부에 직접 노출되는 서버는 자동화된 스캔 로그를 줄이기 위해 포트를 변경하는 경우가 있다.

포트 변경 자체는 강력한 보안 대책이 아니며, 계정 제한, 키 인증, 방화벽 접근 제어를 함께 적용해야 한다.

다음 예시에서는 SSH 포트를 TCP 2222번으로 변경한다.

7.1 SSH 설정 변경

vi /etc/ssh/sshd_config.d/10-custom.conf

설정 추가:

Port 2222

문법 검사:

sshd -t

아직 SSH 서비스를 재시작하지 않는다.

먼저 방화벽과 SELinux 설정을 적용해야 한다.

7.2 SELinux에 SSH 포트 등록

SELinux 관리 도구 설치:

dnf install -y policycoreutils-python-utils

현재 SSH 포트 정책 확인:

semanage port -l | grep ssh

TCP 2222번을 SSH 포트로 등록:

semanage port -a -t ssh_port_t -p tcp 2222

이미 포트가 등록되어 있다는 오류가 발생하면 수정 명령어를 사용한다.

semanage port -m -t ssh_port_t -p tcp 2222

등록 결과 확인:

semanage port -l | grep ssh

7.3 firewalld에서 SSH 포트 허용

현재 활성 존 확인:

firewall-cmd --get-active-zones

기본 존에 TCP 2222번 허용:

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

확인:

firewall-cmd --list-ports

7.4 SSH 서비스 재시작

systemctl restart sshd

상태 확인:

systemctl status sshd

포트 리스닝 확인:

ss -lntp | grep 2222

7.5 새 포트 접속 테스트

다른 PC 또는 새 터미널에서 테스트한다.

ssh -p 2222 admin@192.168.10.20

접속이 정상임을 확인한 후 기존 22번 포트를 방화벽에서 제거한다.

firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload

방화벽 상태 확인:

firewall-cmd --list-all

SSH 신규 포트 접속 확인 전에 기존 22번 포트를 먼저 차단하면 원격 접속이 불가능해질 수 있다.

8. firewalld 기본 사용법

Rocky Linux 9는 기본 방화벽 관리 도구로 firewalld를 사용한다.

일반적인 환경에서는 firewalld 사용을 권장한다.

8.1 firewalld 상태 확인

systemctl status firewalld

간단 확인:

systemctl is-active firewalld
systemctl is-enabled firewalld

8.2 firewalld 시작 및 자동 시작

systemctl enable --now firewalld

8.3 활성 존 확인

firewall-cmd --get-active-zones

기본 존 확인:

firewall-cmd --get-default-zone

전체 설정 확인:

firewall-cmd --list-all

8.4 서비스 단위 포트 허용

SSH 허용:

firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload

HTTP 허용:

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

HTTPS 허용:

firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Samba 허용:

firewall-cmd --permanent --add-service=samba
firewall-cmd --reload

8.5 포트 번호로 허용

TCP 8080 허용:

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

UDP 514 허용:

firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload

TCP와 UDP를 모두 사용하는 경우 각각 등록한다.

firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload

8.6 허용 설정 제거

TCP 8080 제거:

firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload

HTTP 서비스 제거:

firewall-cmd --permanent --remove-service=http
firewall-cmd --reload

8.7 런타임 설정과 영구 설정 차이

--permanent 옵션 없이 추가하면 현재 실행 중인 설정에만 반영된다.

firewall-cmd --add-port=8080/tcp

시스템 또는 firewalld 재시작 후 설정이 사라질 수 있다.

영구 설정:

firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

8.8 특정 IP에서만 SSH 허용

다음 예시는 192.168.10.0/24 대역에서만 TCP 22번 접근을 허용한다.

기존 SSH 서비스가 전체 대역에 허용되어 있다면 먼저 별도 콘솔을 확보한다.

Rich Rule 추가:

firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" accept'

기존 전체 SSH 허용 제거:

firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload

설정 확인:

firewall-cmd --list-rich-rules

9. firewalld 비활성화 및 iptables 전환

Rocky Linux 9에서는 firewalld 사용을 우선 권장한다.

iptables 방식은 다음과 같은 경우에만 고려한다.

  • 기존 운영 환경이 iptables 규칙으로 표준화되어 있는 경우
  • 기존 스크립트가 iptables 명령어를 사용해야 하는 경우
  • 애플리케이션 또는 운영 정책상 레거시 규칙 형식이 필요한 경우

Rocky Linux 9의 iptables 명령어는 내부적으로 nftables 호환 계층을 사용할 수 있다.

firewalld와 iptables 서비스를 동시에 운영하면 규칙 충돌이나 관리 혼선이 발생할 수 있으므로 한 가지 방식만 선택한다.

9.1 현재 방화벽 규칙 백업

firewalld 설정 확인 및 백업:

firewall-cmd --list-all-zones > /root/firewalld-backup-$(date +%Y%m%d_%H%M%S).txt

현재 nftables 규칙 백업:

nft list ruleset > /root/nftables-backup-$(date +%Y%m%d_%H%M%S).txt

원격 작업 중 방화벽 전환에 실패하면 SSH 접속이 차단될 수 있다.

콘솔, iLO, iDRAC, IPMI 또는 가상화 콘솔을 확보한 상태에서 진행한다.

9.2 iptables 서비스 패키지 설치

dnf install -y iptables-services

설치 확인:

rpm -q iptables-services

9.3 firewalld 비활성화

systemctl disable --now firewalld

상태 확인:

systemctl is-active firewalld
systemctl is-enabled firewalld

예상 출력:

inactive
disabled

9.4 iptables 기본 규칙 작성

기존 파일 백업:

cp -a /etc/sysconfig/iptables \
/etc/sysconfig/iptables.bak.$(date +%Y%m%d_%H%M%S) 2>/dev/null

설정 파일 편집:

vi /etc/sysconfig/iptables

SSH 22번과 Samba를 허용하는 예시:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -p tcp --dport 22 -j ACCEPT

-A INPUT -p udp --dport 137 -j ACCEPT
-A INPUT -p udp --dport 138 -j ACCEPT
-A INPUT -p tcp --dport 139 -j ACCEPT
-A INPUT -p tcp --dport 445 -j ACCEPT

-A INPUT -m conntrack --ctstate INVALID -j DROP

COMMIT

SSH 포트를 2222번으로 변경한 경우 다음과 같이 수정한다.

-A INPUT -p tcp --dport 2222 -j ACCEPT

기본 정책이 DROP인 상태에서 SSH 허용 규칙이 누락되면 원격 접속이 차단된다.

9.5 iptables 서비스 시작

systemctl enable --now iptables

상태 확인:

systemctl status iptables

규칙 확인:

iptables -L -n -v --line-numbers

저장:

service iptables save

또는 현재 규칙을 파일로 저장한다.

iptables-save > /etc/sysconfig/iptables

9.6 규칙 테스트

SSH 포트 확인:

iptables -L INPUT -n -v --line-numbers | grep -E '22|2222'

Samba 포트 확인:

iptables -L INPUT -n -v --line-numbers | grep -E '137|138|139|445'

전체 규칙 확인:

iptables-save

10. 서비스 정상 유무 확인

10.1 systemctl을 이용한 서비스 확인

SSH 상태 확인:

systemctl status sshd

Samba 상태 확인:

systemctl status smb
systemctl status nmb

실행 여부만 확인:

systemctl is-active sshd
systemctl is-active smb

부팅 시 자동 시작 여부 확인:

systemctl is-enabled sshd
systemctl is-enabled smb

10.2 실패한 서비스 확인

systemctl --failed

특정 서비스의 최근 로그 확인:

journalctl -u sshd -n 50 --no-pager

Samba 로그 확인:

journalctl -u smb -n 50 --no-pager

실시간 로그 확인:

journalctl -u sshd -f

10.3 설정 파일 문법 검사

SSH 설정 검사:

sshd -t

Samba 설정 검사:

testparm

11. 서비스 포트 리스닝 확인

11.1 ss 명령어 사용

전체 TCP/UDP 리스닝 포트 확인:

ss -lntup

TCP 포트만 확인:

ss -lntp

UDP 포트만 확인:

ss -lnup

SSH 22번 확인:

ss -lntp | grep ':22'

SSH 2222번 확인:

ss -lntp | grep ':2222'

Samba 포트 확인:

ss -lntup | grep -E ':137|:138|:139|:445'

11.2 결과에서 확인할 항목

출력 예시:

LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))

확인할 항목:

항목

서비스가 실행 중이어도 포트가 리스닝하지 않으면 설정 오류 또는 프로세스 시작 실패를 의심해야 한다.

12. 외부에서 포트 오픈 여부 확인

서버 내부의 ss 명령은 서비스 리스닝 여부를 확인한다.

방화벽과 네트워크를 포함한 실제 접근 가능 여부는 다른 PC에서 테스트해야 한다.

12.1 nc 명령어 설치

Rocky Linux에서 설치:

dnf install -y nmap-ncat

12.2 TCP 포트 테스트

SSH 22번 테스트:

nc -zv 192.168.10.20 22

SSH 2222번 테스트:

nc -zv 192.168.10.20 2222

Samba 445번 테스트:

nc -zv 192.168.10.20 445

성공 예시:

Connection to 192.168.10.20 22 port [tcp/ssh] succeeded!

실패 유형:

메시지

12.3 Windows PowerShell에서 테스트

Test-NetConnection 192.168.10.20 -Port 22

SSH 포트가 2222번인 경우:

Test-NetConnection 192.168.10.20 -Port 2222

확인 항목:

TcpTestSucceeded : True

13. SSH 접속 테스트

13.1 Linux 또는 macOS에서 접속

기본 포트:

ssh admin@192.168.10.20

변경 포트:

ssh -p 2222 admin@192.168.10.20

최초 접속 시 서버 호스트 키 확인 메시지가 표시될 수 있다.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

서버 주소가 맞는지 확인한 후 다음을 입력한다.

yes

13.2 Windows에서 SSH 접속

Windows PowerShell 또는 명령 프롬프트에서 실행한다.

ssh admin@192.168.10.20

변경 포트:

ssh -p 2222 admin@192.168.10.20

PuTTY를 사용할 경우 다음 항목을 입력한다.

항목

13.3 SSH 접속 장애 확인 순서

  1. 서버 IP 통신 확인
  1. SSH 서비스 상태 확인
  1. SSH 설정 문법 확인
  1. SSH 포트 리스닝 확인
  1. firewalld 또는 iptables 규칙 확인
  1. SELinux 포트 등록 확인
  1. 서버 로그 확인

확인 명령어:

ping -c 4 192.168.10.20
systemctl status sshd
sshd -t
ss -lntp | grep sshd
firewall-cmd --list-all
semanage port -l | grep ssh
journalctl -u sshd -n 100 --no-pager

14. SFTP 접속 테스트

SFTP는 FTP와 다른 프로토콜이다.

SFTP는 SSH 서비스를 이용하며 별도의 FTP 서버 프로그램이 필요하지 않다.

SSH 포트가 TCP 22번이면 SFTP도 TCP 22번을 사용한다.

SSH 포트를 2222번으로 변경하면 SFTP도 TCP 2222번을 사용한다.

14.1 Linux에서 SFTP 접속

기본 포트:

sftp admin@192.168.10.20

변경 포트:

sftp -P 2222 admin@192.168.10.20

SFTP에서 자주 사용하는 명령어:

명령어

14.2 Windows FileZilla에서 SFTP 접속

FileZilla 사이트 관리자에서 다음과 같이 설정한다.

항목

SFTP를 사용할 때 프로토콜을 FTP 또는 FTPS로 선택하면 접속되지 않는다.

14.3 SFTP 업로드 권한 확인

사용자 홈 디렉터리 권한 확인:

ls -ld /home/admin

파일 생성 테스트:

sudo -u admin touch /home/admin/sftp-test.txt

확인:

ls -l /home/admin/sftp-test.txt

테스트 파일 삭제:

rm -f /home/admin/sftp-test.txt

15. Samba 파일 공유 설정

Samba는 Linux 서버의 디렉터리를 Windows 네트워크 공유 방식으로 제공하는 서비스다.

Windows에서는 다음 형식으로 접근한다.

\\192.168.10.20\share

15.1 Samba 패키지 설치

dnf install -y samba samba-client

설치 확인:

rpm -q samba
rpm -q samba-client

15.2 공유용 계정 생성

Linux 계정 생성:

useradd -m shareuser
passwd shareuser

Samba 비밀번호 등록:

smbpasswd -a shareuser

Samba 계정 활성화:

smbpasswd -e shareuser

등록된 Samba 사용자 확인:

pdbedit -L

Linux 계정 비밀번호와 Samba 비밀번호는 별도로 관리될 수 있다.

15.3 공유 디렉터리 생성

공유 경로 예시:

/data/share

디렉터리 생성:

mkdir -p /data/share

소유자 설정:

chown -R shareuser:shareuser /data/share

권한 설정:

chmod 2770 /data/share

권한 확인:

ls -ld /data/share

15.4 Samba 설정 파일 백업

cp -a /etc/samba/smb.conf \
/etc/samba/smb.conf.bak.$(date +%Y%m%d_%H%M%S)

15.5 Samba 기본 설정

설정 파일 편집:

vi /etc/samba/smb.conf

설정 예시:

[global]
    workgroup = WORKGROUP
    security = user
    map to guest = never
    server min protocol = SMB2
    server role = standalone server

[share]
comment = Shared Folder
path = /data/share
browseable = yes
writable = yes
read only = no
valid users = shareuser
create mask = 0660
directory mask = 0770

주요 설정 설명:

항목

15.6 Samba 설정 문법 확인

testparm

특정 설정 파일 검사:

testparm /etc/samba/smb.conf

문법 오류가 있으면 서비스를 시작하기 전에 수정한다.

15.7 SELinux 설정

Samba가 공유 디렉터리에 접근할 수 있도록 SELinux 컨텍스트를 설정한다.

필요 도구 설치:

dnf install -y policycoreutils-python-utils

영구 컨텍스트 등록:

semanage fcontext -a -t samba_share_t "/data/share(/.*)?"

실제 디렉터리에 적용:

restorecon -Rv /data/share

확인:

ls -ldZ /data/share

출력에 다음 타입이 포함되어 있는지 확인한다.

samba_share_t

기존에 같은 경로의 SELinux 규칙이 이미 있는 경우 수정 옵션을 사용한다.

semanage fcontext -m -t samba_share_t "/data/share(/.*)?"
restorecon -Rv /data/share

15.8 Samba 서비스 시작

systemctl enable --now smb

NetBIOS 이름 검색이 필요한 환경에서는 nmb도 시작한다.

systemctl enable --now nmb

서비스 상태 확인:

systemctl status smb
systemctl status nmb

최신 Windows 환경에서 IP 주소 또는 DNS 이름으로 직접 접근하는 경우 smb 서비스만으로도 동작할 수 있다.

15.9 firewalld에서 Samba 허용

firewall-cmd --permanent --add-service=samba
firewall-cmd --reload

설정 확인:

firewall-cmd --list-services

상세 확인:

firewall-cmd --info-service=samba

15.10 Samba 포트 확인

ss -lntup | grep -E ':137|:138|:139|:445'

주요 Samba 포트:

포트 프로토콜

15.11 서버 내부에서 Samba 공유 테스트

공유 목록 확인:

smbclient -L localhost -U shareuser

공유 접속:

smbclient //localhost/share -U shareuser

접속 후 파일 목록 확인:

ls

테스트 파일 업로드:

put test.txt

종료:

exit

15.12 Windows에서 Samba 접속

Windows 탐색기 주소 표시줄에 다음을 입력한다.

\\192.168.10.20\share

호스트 이름으로 접근하는 경우:

\\rocky-file01\share

인증 창이 나오면 Samba 사용자 계정을 입력한다.

사용자 이름: shareuser
비밀번호: smbpasswd에서 등록한 비밀번호

사용자 이름 인식 문제가 있으면 다음 형식으로 입력한다.

rocky-file01\shareuser

또는:

.\shareuser

15.13 Windows 자격 증명 초기화

잘못된 계정 정보가 저장된 경우 명령 프롬프트에서 기존 연결을 삭제한다.

net use * /delete /y

특정 서버 연결만 삭제:

net use \\192.168.10.20\share /delete

다시 연결:

net use Z: \\192.168.10.20\share /user:shareuser

15.14 Samba 접속 장애 확인 순서

  1. 서버와 IP 통신 확인
  1. smb 서비스 상태 확인
  1. TCP 445 포트 리스닝 확인
  1. 방화벽 허용 확인
  1. Samba 설정 문법 확인
  1. Samba 계정 등록 확인
  1. Linux 디렉터리 권한 확인
  1. SELinux 컨텍스트 확인
  1. Samba 로그 확인

확인 명령어:

ping -c 4 192.168.10.20
systemctl status smb
ss -lntp | grep ':445'
firewall-cmd --list-all
testparm
pdbedit -L
ls -ld /data/share
ls -ldZ /data/share
journalctl -u smb -n 100 --no-pager

SELinux 차단 로그 확인:

ausearch -m AVC -ts recent

최근 Samba 로그 확인:

tail -n 100 /var/log/samba/log.smbd

로그 파일은 Samba 설정이나 패키지 버전에 따라 위치가 다를 수 있다.

16. 전체 설정 최종 점검

16.1 시스템 정보

cat /etc/os-release
hostnamectl
timedatectl

16.2 네트워크

ip -br address
ip route
nmcli device status
nmcli connection show
ping -c 4 192.168.10.1

16.3 SSH

systemctl is-active sshd
systemctl is-enabled sshd
sshd -t
ss -lntp | grep sshd
journalctl -u sshd -n 30 --no-pager

16.4 방화벽

firewalld 사용 시:

systemctl is-active firewalld
firewall-cmd --get-active-zones
firewall-cmd --list-all

iptables 사용 시:

systemctl is-active iptables
iptables -L -n -v --line-numbers
iptables-save

16.5 Samba

systemctl is-active smb
systemctl is-enabled smb
testparm
pdbedit -L
ss -lntup | grep -E ':137|:138|:139|:445'
ls -ldZ /data/share

17. 구축 완료 후 권장 사항

17.1 불필요한 root 원격 로그인 차단

PermitRootLogin no

17.2 일반 관리자 계정 사용

관리 계정을 wheel 그룹에 추가하고 필요할 때만 sudo를 사용한다.

usermod -aG wheel admin

17.3 사용하지 않는 서비스 비활성화

실행 중인 서비스 확인:

systemctl --type=service --state=running

불필요한 서비스를 확인한 후 비활성화한다.

systemctl disable --now 서비스명

서비스 용도를 확인하지 않고 임의로 비활성화하면 시스템 기능에 문제가 발생할 수 있다.

17.4 정기 업데이트

업데이트 확인:

dnf check-update

업데이트 적용:

dnf update -y

커널 및 핵심 라이브러리 업데이트 후에는 재부팅이 필요할 수 있다.

17.5 시간 동기화 확인

timedatectl
chronyc tracking
chronyc sources -v

시간대가 잘못된 경우 서울 시간대로 설정한다.

timedatectl set-timezone Asia/Seoul

17.6 설정 파일 백업

주요 설정 파일:

/etc/NetworkManager/system-connections/
/etc/hosts
/etc/hostname
/etc/ssh/sshd_config
/etc/ssh/sshd_config.d/
/etc/firewalld/
/etc/sysconfig/iptables
/etc/samba/smb.conf

백업 예시:

tar czvf /root/rocky-basic-config-$(date +%Y%m%d).tar.gz \
/etc/NetworkManager/system-connections \
/etc/hosts \
/etc/hostname \
/etc/ssh \
/etc/firewalld \
/etc/sysconfig/iptables \
/etc/samba/smb.conf 2>/dev/null

18. 전체 작업 순서 요약

1. Rocky Linux 9 설치
2. 설치 후 패키지 업데이트
3. 네트워크 인터페이스 확인
4. 고정 IP 및 DNS 설정
5. 게이트웨이와 외부 통신 확인
6. 호스트 이름 설정
7. 관리자 계정 생성
8. SSH 서비스 확인
9. root 직접 로그인 차단
10. 필요 시 SSH 허용 계정 제한
11. 필요 시 SSH 포트 변경
12. SELinux에 변경 포트 등록
13. 방화벽 포트 허용
14. SSH와 SFTP 접속 테스트
15. Samba 패키지 설치
16. Samba 계정 및 공유 디렉터리 생성
17. Samba 설정 파일 작성
18. SELinux 컨텍스트 설정
19. Samba 방화벽 허용
20. Windows에서 공유 접속 테스트
21. 설정 파일 백업

19. 빠른 점검 명령어 모음

# OS 버전
cat /etc/os-release

# 호스트 이름

hostnamectl

# IP 주소

ip -br address

# 라우팅

ip route

# NetworkManager

nmcli device status
nmcli connection show

# SSH 상태

systemctl status sshd

# SSH 문법

sshd -t

# 포트 리스닝

ss -lntup

# firewalld

firewall-cmd --list-all

# iptables

iptables -L -n -v --line-numbers

# Samba 문법

testparm

# Samba 계정

pdbedit -L

# Samba 서비스

systemctl status smb

# 실패한 서비스

systemctl --failed

# 최근 부팅 로그 오류

journalctl -p err -b --no-pager

관련 문서

  • Rocky Linux 9 사용자 및 그룹 관리
  • Rocky Linux 9 패키지 관리
  • Rocky Linux 9 systemd 서비스 관리
  • Rocky Linux 9 firewalld 상세 설정
  • Rocky Linux 9 SSH 키 인증 설정
  • Rocky Linux 9 SELinux 기본 관리
  • Rocky Linux 9 Samba 고급 설정
  • Rocky Linux 9 로그 확인 및 장애 분석