소개
새로운 Rocky Linux 9 서버를 처음으로 만들 때 초기 설정의 일부로 일찍 취해야 할 몇 가지 구성 단계가 있습니다. 이것은 서버의 보안과 사용 가능성을 높이고 견고한 기반을 제공하여 이후에 진행될 작업을 위한 기초를 마련할 것입니다.
단계 1 — Root로 로그인하기
서버에 로그인하려면 서버의 공용 IP 주소를 알아야 합니다. 또한, 인증을 위해 SSH 키를 설치했다면 root 사용자의 계정에 대한 개인 키 또는 암호가 필요합니다. 아직 서버에 로그인하지 않았다면, 저희의 “Droplet에 SSH로 연결하는 방법” 문서를 따르는 것이 좋습니다. 이 문서는 이 과정을 자세히 다루고 있습니다.
이미 서버에 연결되어 있지 않은 경우 다음 명령을 사용하여 root 사용자로 로그인하십시오 (명령의 강조 부분을 서버의 공용 IP 주소로 대체하십시오):
- ssh root@your_server_ip
경고를 수락하십시오. 호스트의 신뢰성에 관한 경고가 표시되면 수락하십시오. 암호 인증을 사용하는 경우 root 암호를 제공하여 로그인하십시오. 암호로 보호된 SSH 키를 사용하는 경우 세션마다 키를 처음 사용할 때마다 암호를 입력하라는 프롬프트가 표시될 수 있습니다. 이번이 암호로 서버에 로그인하는 첫 번째 시간이면 root 암호를 변경하라는 프롬프트도 나타날 수 있습니다.
루트에 관하여
루트 사용자는 Linux 환경에서의 관리자 사용자이며 매우 광범위한 권한을 갖고 있습니다. 높은 권한으로 인해 루트 계정을 일상적으로 사용하는 것은 권장되지 않습니다. 루트 계정의 권한 중 일부는 실수로 매우 파괴적인 변경을 가할 수 있는 능력을 포함하고 있기 때문입니다.
따라서 다음 단계는 일상적인 작업에 대한 영향 범위를 줄인 대안 사용자 계정을 설정하는 것입니다. 이 계정은 필요할 때마다 권한을 확장하여 얻을 수 있습니다.
단계 2 — 새로운 사용자 생성
루트로 로그인한 상태에서 이제부터 사용할 새 사용자 계정을 만들 수 있습니다.
이 예제는 새 사용자인 sammy를 만듭니다. 그러나 원하는 사용자 이름으로 대체하세요:
- adduser sammy
다음으로 sammy
사용자에게 강력한 암호를 설정하십시오:
- passwd sammy
암호를 두 번 입력하라는 메시지가 나타납니다. 이후 사용자가 사용할 준비가되었습니다. 그러나 먼저이 사용자에게 sudo
명령을 사용할 수 있는 추가 권한을 부여합니다. 필요할 때 명령을 root로 실행할 수 있게 합니다.
단계 3 — 관리 권한 부여
이제 일반적인 계정 권한을 가진 새 사용자 계정이 있습니다. 그러나 때로는 관리 작업을 수행해야 할 수도 있습니다.
일반 사용자로서 로그 아웃하고 root 계정으로 다시 로그인하지 않고 관리 작업을 수행하려면 일반 계정에 “슈퍼 사용자” 또는 root 권한을 설정할 수 있습니다. 이렇게하면 일반 사용자가 각 명령 앞에 sudo
라는 단어를 넣어 관리 권한으로 명령을 실행할 수 있습니다.
이러한 권한을 새 사용자에게 추가하려면 새 사용자를 wheel 그룹에 추가해야합니다. Rocky Linux 9의 기본 설정에서 wheel 그룹에 속한 사용자는 sudo
명령을 사용할 수 있습니다.
As 루트, 다음 명령을 실행하여 새로운 사용자를 wheel 그룹에 추가하십시오 (강조된 단어는 새 사용자 이름으로 대체하십시오):
- usermod -aG wheel sammy
이제 귀하의 보통 사용자로 로그인한 상태에서 명령어 앞에 sudo
를 입력하여 슈퍼유저 권한으로 작업을 수행할 수 있습니다.
단계 4 — 방화벽 설정
방화벽은 서버의 기본 수준 보안을 제공합니다. 이러한 응용 프로그램은 명시적으로 승인한 포트/서비스를 제외한 서버의 모든 포트로의 트래픽을 거부하는 역할을 합니다. Rocky Linux에는 이 기능을 수행하는 firewalld
서비스가 있습니다. firewall-cmd
라는 도구를 사용하여 firewalld
방화벽 정책을 구성합니다.
참고: 만약 귀하의 서버가 DigitalOcean에서 실행 중이라면 DigitalOcean Cloud Firewalls 대신에 firewalld
를 선택적으로 사용할 수 있습니다. 간섭하는 규칙을 피하기 위해 한 번에 하나의 방화벽만 사용해야 합니다.
firewalld
를 먼저 설치하십시오:
- dnf install firewalld -y
기본 firewalld
구성은 ssh
연결을 허용하므로 방화벽을 즉시 활성화할 수 있습니다:
- systemctl start firewalld
서비스의 상태를 확인하여 시작되었는지 확인하십시오:
- 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
유틸리티를 사용할 수 있습니다.
먼저 이미 허용된 서비스를 나열해 봅시다:
- firewall-cmd --permanent --list-all
Outputpublic (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:
이름으로 활성화할 수 있는 추가 서비스를 보려면 다음을 입력하십시오:
- firewall-cmd --get-services
허용되어야 할 서비스를 추가하려면 --add-service
플래그를 사용하십시오:
- firewall-cmd --permanent --add-service=http
이렇게 하면 http
서비스가 추가되어들어오는 TCP 트래픽을 포트 80
으로 허용합니다. 방화벽을 다시로드한 후 구성이 업데이트됩니다:
- firewall-cmd --reload
나중에 구성할 수 있는 추가 서비스에 대해 방화벽(서비스 또는 포트)를 명시적으로 열어야 함을 기억하십시오.
단계 5 — 정기 사용자의 외부 액세스 활성화
일상적인 사용에 대한 일반적인 비루트루트 사용자가 있으므로 해당 사용자를 사용하여 서버에 SSH로 액세스할 수 있는지 확인해야 합니다.
참고: 새로운 사용자로 로그인하고 sudo
를 사용할 수 있는지 확인하기 전에 root로 로그인한 상태를 유지해야 합니다. 이렇게 하면 문제가 발생할 경우 문제를 해결하고 필요한 변경을 root로 수행할 수 있습니다. DigitalOcean 드롭렛을 사용하고 root SSH 연결에 문제가 있는 경우, DigitalOcean 콘솔을 사용하여 드롭렛에 로그인할 수 있습니다.
새로운 사용자의 SSH 액세스를 구성하는 프로세스는 서버의 root 계정이 인증을 위해 비밀번호를 사용하거나 SSH 키를 사용하는지에 따라 달라집니다.
루트 계정이 비밀번호 인증을 사용하는 경우
루트 계정에 비밀번호를 사용하여 로그인한 경우 SSH에 대한 비밀번호 인증이 활성화됩니다. 새로운 사용자 계정으로 SSH로 로그인하려면 새 터미널 세션을 열고 다음과 같이 새 사용자 이름을 사용하여 SSH를 사용하십시오:
- ssh sammy@your_server_ip
일반 사용자의 암호를 입력한 후 로그인됩니다. 필요한 경우 관리 권한으로 명령을 실행해야 할 때에는 다음과 같이 명령 앞에 sudo
를 입력하십시오:
- 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가 그것들을 찾아서 사용할 수 없습니다.
- rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
이제 로컬 머신에서 새로운 터미널을 열고 비-루트 사용자로 새 SSH 세션을 엽니다:
- ssh sammy@your_server_ip
비밀번호를 사용하지 않고 새 사용자 계정에 로그인해야 합니다. 관리자 권한으로 명령을 실행해야 할 경우에는 다음과 같이 명령 앞에 sudo
를 입력해야 합니다:
- sudo command_to_run
세션마다 (그리고 가끔 그 후에) 처음으로 sudo
를 사용할 때 일반 사용자 암호를 입력하라는 메시지가 나타납니다.
결론
현재 단계에서는 서버에 견고한 기반을 갖추었습니다. 이제 서버에 필요한 소프트웨어를 설치할 수 있습니다. 예를 들어, Nginx 웹 서버를 설치하여 시작할 수 있습니다.
Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-9