소개
새로운 Rocky Linux 8 서버를 처음 만들 때, 기본 설정의 일환으로 조기에 수행해야 할 몇 가지 구성 단계가 있습니다. 이를 통해 서버의 보안성과 사용성이 향상되며 후속 작업에 견고한 기반을 제공합니다.
단계 1 — 루트로 로그인하기
서버에 로그인하려면 서버의 공용 IP 주소를 알아야 합니다. 또한 인증을 위해 SSH 키를 설치했다면 root 사용자 계정의 개인 키가 필요합니다. 아직 서버에 로그인하지 않은 경우에는 SSH를 사용하여 드롭렛에 연결하는 방법에 대한 문서를 참조하여이 프로세스를 자세히 살펴볼 수 있습니다.
이미 서버에 연결되어 있지 않은 경우 다음 명령을 사용하여 root 사용자로 로그인하십시오 (명령의 강조 부분을 서버의 공용 IP 주소로 대체하십시오):
호스트 신뢰성에 관한 경고를 수락하세요. 암호 인증을 사용하는 경우에는 로그인하기 위해 root 암호를 제공하세요. 암호 인증을 사용하고 암호가 있는 SSH 키를 사용하는 경우, 세션마다 키를 처음 사용할 때마다 암호를 입력하라는 프롬프트가 나타날 수 있습니다. 암호를 사용하여 서버에 처음 로그인하는 경우에는 root 암호를 변경하라는 프롬프트도 나타날 수 있습니다.
루트에 관하여
루트 사용자는 Linux 환경에서 관리자 사용자로, 매우 광범위한 권한을 갖습니다. 높은 권한 때문에, 일반적으로 루트 계정을 사용하는 것은 비권장됩니다. 루트 계정의 권한 중 일부는 실수로 매우 파괴적인 변경을 할 수 있는 능력이기 때문입니다.그러므로 다음 단계는 일상적인 작업을 위해 영향력 범위가 축소된 대체 사용자 계정을 설정하는 것입니다. 이 계정은 필요할 때마다 증가된 권한을 얻을 수 있습니다.
단계 2 — 새 사용자 만들기
루트로 로그인한 후에는 이제부터 사용할 새 사용자 계정을 만들 수 있습니다.
이 예제는 sammy라는 새 사용자를 만듭니다. 그러나 원하는 사용자 이름으로 대체해야 합니다:
다음으로, sammy
사용자에 대한 강력한 암호를 설정하세요:
암호를 두 번 입력하라는 메시지가 표시됩니다. 그러면 사용자가 사용할 준비가 됩니다. 그러나 우선 이 사용자에게 sudo
명령을 사용할 수 있는 추가 권한을 부여하겠습니다. 필요할 때 root로 명령을 실행할 수 있도록 이를 허용합니다.
단계 3 — 관리 권한 부여
이제 우리에게는 일반적인 계정 권한이 있는 새 사용자 계정이 있습니다. 그러나 때로는 관리 작업을 수행해야 할 수 있습니다.
일반 사용자로서 로그아웃하고 root 계정으로 다시 로그인하지 않도록 하기 위해 일반 계정에 “슈퍼 사용자” 또는 root 권한을 설정할 수 있습니다. 이렇게 하면 일반 사용자가 각 명령 앞에 sudo
라는 단어를 넣음으로써 관리 권한으로 명령을 실행할 수 있습니다.
새 사용자에게 이러한 권한을 추가하려면 새 사용자를 wheel 그룹에 추가해야 합니다. Rocky Linux 8에서 기본적으로 wheel 그룹에 속한 사용자는 sudo
명령을 사용할 수 있습니다.
루트로 이 명령을 실행하여 새로운 사용자를 wheel 그룹에 추가합니다 (강조된 단어를 새로운 사용자 이름으로 대체하세요):
이제 일반 사용자로 로그인한 상태에서 sudo
를 명령어 앞에 입력하여 슈퍼유저 권한으로 작업을 수행할 수 있습니다.
단계 4 — 기본 방화벽 설정
방화벽은 서버의 기본 수준의 보안을 제공합니다. 이러한 응용 프로그램은 명시적으로 승인한 포트/서비스를 제외한 서버의 모든 포트로의 트래픽을 거부하는 것을 담당합니다. Rocky Linux에는 이 기능을 수행하는 firewalld
라는 서비스가 있습니다. firewall-cmd
라는 도구를 사용하여 firewalld
방화벽 정책을 구성합니다.
참고: 만약 서버가 DigitalOcean에서 실행 중이라면 DigitalOcean 클라우드 방화벽을 대신 사용할 수도 있습니다. 충돌하는 규칙을 피하기 위해 한 번에 한 개의 방화벽만 사용하는 것을 권장합니다.
firewalld
를 먼저 설치합니다:
기본 firewalld
구성은 ssh
연결을 허용하므로 방화벽을 즉시 켤 수 있습니다:
서비스 상태를 확인하여 시작되었는지 확인합니다:
Output● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago
Docs: man:firewalld(1)
Main PID: 13180 (firewalld)
Tasks: 2 (limit: 5059)
Memory: 22.4M
CGroup: /system.slice/firewalld.service
└─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
주의하세요. 이것은 active
및 enabled
둘 다입니다. 이는 서버가 다시 부팅될 경우 기본적으로 시작됩니다.
이제 서비스가 실행되고 있으므로 방화벽에 대한 정책 정보를 가져오고 설정하기 위해 firewall-cmd
유틸리티를 사용할 수 있습니다.
먼저 이미 허용된 서비스를 나열해 봅시다:
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:
이름으로 추가로 활성화할 수 있는 서비스를 보려면 다음을 입력하세요:
허용되어야 하는 서비스를 추가하려면 --add-service
플래그를 사용하세요:
이는 http
서비스를 추가하고 포트 80
으로의 들어오는 TCP 트래픽을 허용합니다. 방화벽을 다시로드하면 구성이 업데이트됩니다:
나중에 구성할 추가 서비스에 대해 방화벽을 명시적으로 열어야 함을 기억하세요 (서비스 또는 포트로).
단계 5 — 일반 사용자의 외부 액세스 활성화
이제 일상적인 사용에 대한 일반 비-root 사용자가 있으므로 해당 사용자를 사용하여 서버에 SSH로 액세스할 수 있는지 확인해야 합니다.
참고: 새로운 사용자로 로그인하고 sudo
를 사용할 수 있는지 확인할 때까지, root로 로그인하는 것이 좋습니다. 이렇게 하면 문제가 발생할 경우 root로서 문제 해결을 할 수 있습니다. DigitalOcean Droplet을 사용하고 root SSH 연결에 문제가 있는 경우, DigitalOcean 콘솔을 사용하여 Droplet에 로그인할 수 있습니다.
새로운 사용자의 SSH 액세스를 구성하는 과정은 서버의 root 계정이 인증에 비밀번호 또는 SSH 키를 사용하는지 여부에 따라 다릅니다.
루트 계정이 비밀번호 인증을 사용하는 경우
만약 비밀번호를 사용하여 root 계정에 로그인했다면, SSH에 비밀번호 인증이 활성화되어 있습니다. 새 사용자 계정으로 SSH에 연결하려면 새로운 터미널 세션을 열고 새 사용자 이름을 사용하여 SSH를 사용합니다:
일반 사용자의 비밀번호를 입력한 후 로그인됩니다. 관리 권한이 필요한 명령을 실행해야 하는 경우에는 다음과 같이 명령 앞에 sudo
를 입력하십시오:
세션마다 처음으로 sudo
를 사용할 때 일반 사용자 비밀번호가 요청됩니다 (그리고 때때로 이후에도).
서버의 보안을 강화하기 위해 비밀번호 인증 대신 SSH 키를 설정하는 것을 강력히 권장합니다. Rocky Linux 8에서 SSH 키 설정 가이드를 따라 키 기반 인증을 구성하는 방법을 배우세요.
루트 계정이 SSH 키 인증을 사용하는 경우
만약 루트 계정에 SSH 키를 사용하여 로그인했다면, SSH에 대한 비밀번호 인증이 비활성화되어 있습니다. 성공적으로 로그인하려면 새로운 사용자의 ~/.ssh/authorized_keys
파일에 공개 키의 사본을 추가해야 합니다.
이제 서버의 루트 계정의 ~/.ssh/authorized_keys
파일에 이미 공개 키가 있으므로, 해당 파일 및 디렉터리 구조를 새로운 사용자 계정으로 복사할 수 있습니다.
올바른 소유권과 권한을 가진 파일을 복사하는 가장 간단한 방법은 rsync
명령을 사용하는 것입니다. 이 명령은 루트 사용자의 .ssh
디렉터리를 복사하고 권한을 보존하며 파일 소유자를 수정합니다. 아래 명령어의 강조된 부분을 정규 사용자의 이름과 일치하도록 변경해야 합니다:
참고: rsync
명령은 슬래시로 끝나는 소스와 대상을 슬래시 없이 끝나는 것과 다르게 취급합니다. 아래의 rsync
를 사용할 때는 소스 디렉토리인 (~/.ssh
)에 슬래시가 끝나지 않도록 하십시오 (~/.ssh/
를 사용하지 않았는지 확인하십시오).
명령에 실수로 슬래시를 추가하면 rsync
가 루트 계정의 ~/.ssh
디렉토리의 내용을 sudo
사용자의 홈 디렉토리로 복사하여 전체 ~/.ssh
디렉토리 구조를 복사하지 않습니다. 파일이 잘못된 위치에 있게 되고 SSH가 그것들을 찾아 사용할 수 없습니다.
이제 로컬 머신의 새 터미널에서 새로운 SSH 세션을 엽니다. 루트가 아닌 사용자로 로그인해야 합니다:
비밀번호를 사용하지 않고 새 사용자 계정에 로그인해야 합니다. 관리자 권한으로 명령을 실행해야 할 경우에는 다음과 같이 명령 앞에 sudo
를 입력하십시오:
세션마다 (그리고 주기적으로) 처음으로 sudo
를 사용할 때 일반 사용자 암호를 입력해야 합니다.
결론
이 시점에서 서버에 튼튼한 기반을 갖추었습니다. 이제 서버에 필요한 소프트웨어를 설치할 수 있습니다.
Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-8