Rocky Linux 9를 사용한 초기 서버 설정


소개

새 Rocky Linux 9 서버를 처음 생성할 때 초기 설정의 일부로 초기에 수행해야 하는 몇 가지 구성 단계가 있습니다. 이렇게 하면 서버의 보안과 유용성이 향상되고 구축할 수 있는 견고한 기반이 제공됩니다.

1단계 - 루트로 로그인

서버에 로그인하려면 서버의 공인 IP 주소를 알아야 합니다. 암호가 필요하거나 인증을 위해 SSH 키를 설치한 경우 루트 사용자 계정의 개인 키도 필요합니다. 서버에 아직 로그인하지 않은 경우 이 프로세스를 자세히 다루는 SSH를 사용하여 Droplet에 연결하는 방법에 대한 설명서를 따를 수 있습니다.

서버에 아직 연결되어 있지 않은 경우 지금 다음 명령을 사용하여 루트 사용자로 로그인하십시오(명령의 강조 표시된 부분을 서버의 공용 IP 주소로 대체).

  1. ssh root@your_server_ip

호스트 인증에 대한 경고가 나타나면 수락합니다. 암호 인증을 사용하는 경우 루트 암호를 입력하여 로그인하십시오. 암호로 보호된 SSH 키를 사용하는 경우 각 세션에서 키를 처음 사용할 때 암호를 입력하라는 메시지가 표시될 수 있습니다. 암호를 사용하여 서버에 처음 로그인하는 경우 루트 암호를 변경하라는 메시지가 표시될 수도 있습니다.

루트 정보

루트 사용자는 Linux 환경의 관리 사용자이며 매우 광범위한 권한을 가집니다. 루트 계정의 권한이 높아졌기 때문에 정기적으로 사용하는 것이 권장됩니다. 루트 계정에 내재된 권한 중 일부는 우연히라도 매우 파괴적인 변경을 수행할 수 있는 기능이기 때문입니다.

따라서 다음 단계는 일상 업무에 영향을 미치는 범위가 축소된 대체 사용자 계정을 설정하는 것입니다. 이 계정은 필요할 때 여전히 증가된 권한을 얻을 수 있습니다.

2단계 - 새 사용자 만들기

루트로 로그인하면 지금부터 로그인하는 데 사용할 새 사용자 계정을 만들 수 있습니다.

이 예에서는 sammy라는 새 사용자를 생성하지만 원하는 사용자 이름으로 바꿔야 합니다.

  1. adduser sammy

다음으로 sammy 사용자에 대해 강력한 암호를 설정합니다.

  1. passwd sammy

암호를 두 번 입력하라는 메시지가 표시됩니다. 이렇게 하면 사용자가 사용할 준비가 되지만 먼저 이 사용자에게 sudo 명령을 사용할 수 있는 추가 권한을 부여합니다. 이렇게 하면 필요할 때 루트로 명령을 실행할 수 있습니다.

3단계 - 관리 권한 부여

이제 일반 계정 권한이 있는 새 사용자 계정이 생겼습니다. 그러나 경우에 따라 관리 작업을 수행해야 할 수도 있습니다.

일반 사용자에서 로그아웃하고 루트 계정으로 다시 로그인하지 않으려면 일반 계정에 "수퍼유저\ 또는 루트 권한을 설정할 수 있습니다. 이렇게 하면 일반 사용자가 관리자 권한으로 명령을 실행할 수 있습니다. 각 명령 앞에 sudo라는 단어를 넣어 권한을 부여합니다.

새 사용자에게 이러한 권한을 추가하려면 휠 그룹에 새 사용자를 추가해야 합니다. 기본적으로 Rocky Linux 9에서 wheel 그룹에 속한 사용자는 sudo 명령을 사용할 수 있습니다.

루트로 다음 명령을 실행하여 새 사용자를 wheel 그룹에 추가합니다(강조 표시된 단어를 새 사용자 이름으로 대체).

  1. usermod -aG wheel sammy

이제 일반 사용자로 로그인하면 명령 앞에 sudo를 입력하여 수퍼유저 권한으로 작업을 수행할 수 있습니다.

4단계 - 방화벽 설정

방화벽은 서버에 대한 기본 수준의 보안을 제공합니다. 이러한 애플리케이션은 명시적으로 승인한 포트/서비스를 제외하고 서버의 모든 포트에 대한 트래픽을 거부합니다. Rocky Linux에는 이 기능을 수행하는 firewalld라는 서비스가 있습니다. firewall-cmd라는 도구는 firewalld 방화벽 정책을 구성하는 데 사용됩니다.

참고: 서버가 DigitalOcean에서 실행 중인 경우 선택적으로 firewalld 대신 DigitalOcean 클라우드 방화벽을 사용할 수 있습니다. 디버그하기 어려울 수 있는 규칙 충돌을 방지하려면 한 번에 하나의 방화벽만 사용해야 합니다.

먼저 firewalld를 설치합니다.

  1. dnf install firewalld -y

기본 firewalld 구성은 ssh 연결을 허용하므로 방화벽을 즉시 켤 수 있습니다.

  1. systemctl start firewalld

서비스의 상태를 확인하여 서비스가 시작되었는지 확인하십시오.

  1. systemctl status firewalld
Output
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-09-13 18:26:19 UTC; 1 day 2h ago Docs: man:firewalld(1) Main PID: 15060 (firewalld) Tasks: 4 (limit: 10938) Memory: 28.1M CPU: 6.127s CGroup: /system.slice/firewalld.service └─15060 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

활성활성화 둘 다입니다. 즉, 서버가 재부팅되면 기본적으로 시작됩니다.

이제 서비스가 시작되어 실행 중이므로 firewall-cmd 유틸리티를 사용하여 방화벽에 대한 정책 정보를 가져오고 설정할 수 있습니다.

먼저 어떤 서비스가 이미 허용되었는지 나열해 보겠습니다.

  1. firewall-cmd --permanent --list-all
Output
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

이름으로 활성화할 수 있는 추가 서비스를 보려면 다음을 입력하십시오.

  1. firewall-cmd --get-services

허용되어야 하는 서비스를 추가하려면 --add-service 플래그를 사용하십시오.

  1. firewall-cmd --permanent --add-service=http

이렇게 하면 http 서비스가 추가되고 들어오는 TCP 트래픽이 80 포트로 허용됩니다. 방화벽을 다시 로드하면 구성이 업데이트됩니다.

  1. firewall-cmd --reload

나중에 구성할 수 있는 추가 서비스에 대해 방화벽(서비스 또는 포트 포함)을 명시적으로 열어야 합니다.

5단계 - 일반 사용자에 대한 외부 액세스 활성화

이제 매일 사용하는 루트가 아닌 일반 사용자가 있으므로 이를 사용하여 서버에 SSH로 연결할 수 있는지 확인해야 합니다.

참고: 새 사용자로 로그인하여 sudo를 사용할 수 있는지 확인할 때까지 루트로 로그인된 상태를 유지해야 합니다. 이렇게 하면 문제가 있는 경우 문제를 해결하고 필요한 사항을 루트로 변경할 수 있습니다. DigitalOcean Droplet을 사용 중이고 루트 SSH 연결에 문제가 있는 경우 DigitalOcean 콘솔을 사용하여 Droplet에 로그인할 수 있습니다.

새 사용자에 대한 SSH 액세스를 구성하는 프로세스는 서버의 루트 계정이 인증에 암호를 사용하는지 아니면 SSH 키를 사용하는지에 따라 다릅니다.

루트 계정이 암호 인증을 사용하는 경우

암호를 사용하여 루트 계정에 로그인한 경우 SSH에 대한 암호 인증이 활성화됩니다. 새 터미널 세션을 열고 새 사용자 이름으로 SSH를 사용하여 새 사용자 계정에 SSH로 연결할 수 있습니다.

  1. ssh sammy@your_server_ip

일반 사용자의 비밀번호를 입력하면 로그인됩니다. 관리자 권한으로 명령을 실행해야 하는 경우 다음과 같이 명령 앞에 sudo를 입력하십시오.

  1. sudo command_to_run

각 세션에서 처음으로 sudo를 사용할 때(그리고 이후에도 정기적으로) 일반 사용자 암호를 입력하라는 메시지가 표시됩니다.

서버의 보안을 강화하려면 비밀번호 인증을 사용하는 대신 SSH 키를 설정해야 합니다. Rocky Linux 9에서 SSH 키 설정에 대한 이 가이드를 따라 키 기반 인증을 구성하는 방법을 알아보세요.

루트 계정이 SSH 키 인증을 사용하는 경우

SSH 키를 사용하여 루트 계정에 로그인한 경우 SSH에 대한 비밀번호 인증이 비활성화됩니다. 성공적으로 로그인하려면 새 사용자의 ~/.ssh/authorized_keys 파일에 공개 키 사본을 추가해야 합니다.

공개 키는 이미 서버에 있는 루트 계정의 ~/.ssh/authorized_keys 파일에 있으므로 해당 파일과 디렉터리 구조를 새 사용자 계정에 복사할 수 있습니다.

올바른 소유권과 권한으로 파일을 복사하는 가장 간단한 방법은 rsync 명령을 사용하는 것입니다. 이것은 루트 사용자의 .ssh 디렉토리를 복사하고, 권한을 유지하고, 파일 소유자를 수정하는 모든 작업을 단일 명령으로 수행합니다. 일반 사용자의 이름과 일치하도록 아래 명령의 강조 표시된 부분을 변경해야 합니다.

참고: rsync 명령은 후행 슬래시로 끝나는 소스 및 대상을 후행 슬래시가 없는 것과 다르게 처리합니다. 아래의 rsync를 사용할 때 소스 디렉토리(~/.ssh)에 슬래시가 포함되어 있지 않은지 확인하십시오(~를 사용하고 있지 않은지 확인하십시오. /.ssh/).

명령에 실수로 슬래시를 추가한 경우 rsync는 루트 계정의 ~/.ssh 디렉토리의 내용에 복사합니다. >sudo 전체 ~/.ssh 디렉토리 구조를 복사하는 대신 사용자의 홈 디렉토리. 파일은 잘못된 위치에 있으며 SSH는 파일을 찾아 사용할 수 없습니다.

  1. rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

이제 로컬 컴퓨터의 새 터미널로 돌아가서 루트가 아닌 사용자로 새 SSH 세션을 엽니다.

  1. ssh sammy@your_server_ip

비밀번호를 사용하지 않고 새 사용자 계정으로 로그인해야 합니다. 관리자 권한으로 명령을 실행해야 하는 경우 다음과 같이 명령 앞에 sudo를 입력하십시오.

  1. sudo command_to_run

각 세션에서 처음으로 sudo를 사용할 때(그리고 이후에도 정기적으로) 일반 사용자 비밀번호를 입력하라는 메시지가 표시됩니다.

결론

이제 서버에 대한 견고한 기반이 마련되었습니다. 지금 서버에 필요한 모든 소프트웨어를 설치할 수 있습니다. 예를 들어 Nginx 웹 서버를 설치하여 시작할 수 있습니다.