웹사이트 검색

RHEL 7의 초기 서버 설정 및 구성


이 튜토리얼에서는 베어 메탈 서버 또는 가상 사설 서버에 Red Hat Enterprise Linux 7을 새로 설치한 후 처리해야 하는 첫 번째 구성 단계에 대해 설명합니다.

요구사항

  1. RHEL 7 최소 설치

중요: CentOS 7 사용자는 이 문서에 따라 CentOS 7에서 초기 서버 설정을 수행할 수 있습니다.

RHEL 7 시스템 업데이트

첫 번째 단계에서는 루트 권한이 있는 계정으로 또는 루트로 직접 RHEL 서버 콘솔에 로그인하고 아래 명령을 실행하여 설치된 패키지, 커널과 같은 시스템 구성 요소를 완전히 업데이트합니다. 또는 다른 보안 패치를 적용하세요.

yum check-update
yum update

로컬로 다운로드한 모든 패키지 및 기타 관련 YUM 캐시를 제거하려면 아래 명령을 실행하십시오.

yum clean all

RHEL 7에 시스템 유틸리티 설치

다음 유틸리티는 일상적인 시스템 관리에 유용할 수 있습니다. nano(vi 편집기를 대체하는 텍스트 편집기), wget, curl(패키지 다운로드에 사용되는 유틸리티) 주로 네트워크를 통해) net-tools, lsof(로컬 네트워킹 관리용 유틸리티) 및 bash-completion(명령줄 자동 완성).

아래 명령을 실행하여 한 번에 모두 설치하십시오.


yum install nano wget curl net-tools lsof bash-completion

RHEL 7에서 네트워킹 설정

RHEL 7에는 네트워크 구성 파일을 수동으로 편집하는 것부터 ip, ifconfig, nmtui, nmcli 또는 경로.

초보자가 네트워크 구성을 관리하고 변경하는 데 사용할 수 있는 가장 쉬운 유틸리티는 nmtui 그래픽 명령줄입니다.

nmtui 유틸리티를 통해 시스템 호스트 이름을 변경하려면 그림과 같이 nmtui-hostname 명령을 실행하고 시스템 호스트 이름을 설정한 후 확인을 눌러 완료합니다. 아래 스크린샷에서.


nmtui-hostname

네트워크 인터페이스를 조작하려면 아래 스크린샷과 같이 nmtui-edit 명령을 실행하고 편집하려는 인터페이스를 선택한 후 오른쪽 메뉴에서 편집을 선택합니다.

nmtui 유틸리티에서 제공하는 그래픽 인터페이스에 들어가면 아래 스크린샷에 표시된 대로 네트워크 인터페이스 IP 설정을 지정할 수 있습니다. 완료되면 [tab] 키를 사용하여 확인으로 이동하여 구성을 저장하고 종료합니다.

네트워크 인터페이스 새 구성을 적용하려면 nmtui-connect 명령을 실행하고 관리하려는 인터페이스를 선택한 다음 비활성화/활성화 옵션을 눌러 해제하고 시작하세요. 아래 스크린샷에 표시된 대로 IP 설정과의 인터페이스입니다.


nmtui-connect

네트워크 인터페이스 설정을 보려면 인터페이스 파일의 내용을 검사하거나 아래 명령을 실행할 수 있습니다.


ifconfig enp0s3
ip a
ping -c2 google.com

속도, 링크 상태를 관리하거나 기계 네트워크 인터페이스에 대한 정보를 얻는 데 사용할 수 있는 다른 유용한 유틸리티로는 ethtoolmii-tool이 있습니다.


ethtool enp0s3
mii-tool enp0s3

새 사용자 계정 만들기

다음 단계에서는 서버에 루트로 로그인한 상태에서 아래 명령을 사용하여 새 사용자를 만듭니다. 이 사용자는 나중에 시스템에 로그인하고 관리 작업을 수행하는 데 사용됩니다.

adduser tecmint_user

위 명령을 사용하여 사용자를 추가한 후 아래 명령을 실행하여 이 사용자에 대한 강력한 비밀번호를 설정하십시오.

passwd tecmint_user

이 새 사용자가 첫 번째 로그인 시도 시 비밀번호를 변경하도록 강제하려면 아래 명령을 실행하세요.

chage -d0 tecmint_user

이 새 사용자 계정은 현재 일반 계정 권한을 갖고 있으며 sudo 명령을 통해 관리 작업을 수행할 수 없습니다.

관리 권한을 수행하기 위해 루트 계정을 사용하지 않으려면 사용자를 “wheel” 시스템 그룹에 추가하여 이 새 사용자에게 관리 권한을 부여하십시오.

"wheel" 그룹에 속한 사용자는 기본적으로 RHEL에서 실행에 필요한 명령을 작성하기 전에 sudo 유틸리티를 사용하여 루트 권한으로 명령을 실행할 수 있습니다.

예를 들어, “tecmint_user” 사용자를 “wheel” 그룹에 추가하려면 아래 명령을 실행합니다.

usermod -aG wheel tecmint_user

그런 다음 새 사용자로 시스템에 로그인하고 'sudo yum update' 명령을 통해 시스템 업데이트를 시도하여 사용자에게 루트 권한이 부여되었는지 테스트합니다.

su - tecmint_user
sudo yum update

RHEL 7에서 SSH 공개 키 인증 구성

RHEL 서비스 보안을 강화하려면 다음 단계에서 새 사용자에 대한 SSH 공개 키 인증을 구성하세요. 공개 키와 개인 키인 SSH 키 쌍을 생성하려면 서버 콘솔에서 다음 명령을 실행하세요. SSH 키를 설정하는 사용자로 시스템에 로그인했는지 확인하세요.

su - tecmint_user
ssh-keygen -t RSA

키가 생성되는 동안 키를 보호하기 위해 암호를 추가하라는 메시지가 표시됩니다. 강력한 암호를 입력하거나 SSH 서버를 통해 작업을 자동화하려는 경우 암호를 비워 두도록 선택할 수 있습니다.

SSH 키가 생성된 후 아래 명령을 실행하여 공개 키 쌍을 원격 서버에 복사합니다. 원격 SSH 서버에 공개 키를 설치하려면 해당 서버에 로그인하기 위한 자격 증명이 있는 사용자 계정이 필요합니다.

ssh-copy-id [email 

이제 인증 방법으로 개인 키를 사용하여 SSH를 통해 원격 서버에 로그인을 시도해야 합니다. SSH 서버에서 비밀번호를 묻지 않고도 자동으로 로그인할 수 있어야 합니다.

ssh [email 

원격 SSH 서버에 키를 수동으로 설치하려는 경우 공개 SSH 키의 내용을 보려면 다음 명령을 실행하십시오.

cat ~/.ssh/id_rsa

RHEL 7의 보안 SSH

SSH 데몬을 보호하고 비밀번호나 키를 통해 루트 계정에 대한 원격 SSH 액세스를 허용하지 않으려면 SSH 서버 기본 구성 파일을 열고 다음과 같이 변경하세요.

sudo vi /etc/ssh/sshd_config

#PermitRootLogin yes 줄을 검색하고 줄 시작 부분에서 # 기호(해시태그)를 제거하여 줄의 주석 처리를 해제하고 아래에 표시된 것처럼 줄을 수정합니다. 발췌.

PermitRootLogin no

그런 다음 SSH 서버를 다시 시작하여 새 설정을 적용하고 루트 계정으로 이 서버에 로그인을 시도하여 구성을 테스트합니다. 지금은 SSH를 통한 루트 계정 액세스가 제한되어야 합니다.

sudo systemctl restart sshd

일정 기간 동안 활동이 없으면 서버에 대한 모든 원격 SSH 연결을 자동으로 연결 해제하려는 상황이 있습니다.

이 기능을 시스템 전체에서 활성화하려면 아래 명령을 실행하세요. 그러면 TMOUT bash 변수가 기본 bashrc 파일에 추가되고 모든 SSH 연결이 강제로 연결 해제되거나 삭제됩니다. 5분 동안 활동이 없으면 종료됩니다.

su -c 'echo "TMOUT=300" >> /etc/bashrc'

tail 명령을 실행하여 /etc/bashrc 파일 끝에 변수가 올바르게 추가되었는지 확인하세요. 이후의 모든 SSH 연결은 지금부터 5분 동안 활동이 없으면 자동으로 닫힙니다.

tail /etc/bashrc

아래 스크린샷에서는 drupal 시스템에서 RHEL 서버로의 원격 SSH 세션이 5분 후에 자동 로그아웃되었습니다.

RHEL 7에서 방화벽 구성

다음 단계에서는 네트워크 수준에서 시스템을 더욱 안전하게 보호하기 위해 방화벽을 구성합니다. RHEL 7은 서버에서 iptables 규칙을 관리하기 위해 Firewalld 애플리케이션과 함께 제공됩니다.

먼저 아래 명령을 실행하여 시스템에서 방화벽이 실행되고 있는지 확인하십시오. Firewalld 데몬이 중지된 경우 다음 명령을 사용하여 시작해야 합니다.

sudo systemctl status firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld

방화벽이 활성화되어 시스템에서 실행되면 firewall-cmd 명령줄 유틸리티를 사용하여 방화벽 정책 정보를 설정하고 SSH 데몬과 같은 일부 특정 네트워크 포트에 대한 트래픽을 허용할 수 있습니다. 내부 웹 서버 또는 기타 관련 네트워크 서비스에.

지금은 서버에서 SSH 데몬을 실행하고 있으므로 다음 명령을 실행하여 SSH 서비스 포트에 대한 트래픽을 허용하도록 방화벽 정책을 조정할 수 있습니다.

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

다음에 서버를 시작할 때 규칙을 적용하지 않고 즉시 방화벽 규칙을 추가하려면 아래 명령 구문을 사용하십시오.

sudo firewall-cmd --add-service=sshd

HTTP 서버, 메일 서버 또는 기타 네트워크 서비스와 같은 다른 네트워크 서비스를 서버에 설치하는 경우 다음과 같이 특정 연결을 허용하는 규칙을 추가할 수 있습니다.

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=smtp

모든 방화벽 규칙을 나열하려면 아래 명령을 실행하십시오.

sudo firewall-cmd --permanent --list-all

RHEL 7에서 불필요한 서비스 제거

기본적으로 RHEL 서버에서 실행 중인 모든 네트워크 서비스(TCP 및 UDP) 목록을 얻으려면 아래 샘플에 설명된 대로 ss 명령을 실행하세요.

sudo ss -tulpn

ss 명령은 Postfix 마스터 서비스 및 NTP 프로토콜을 담당하는 서버와 같이 시스템에서 기본적으로 시작되고 실행되는 몇 가지 흥미로운 서비스를 표시합니다.

이 서버를 메일 서버로 구성할 계획이 없다면 아래 명령을 실행하여 Postfix 데몬을 중지, 비활성화 및 제거해야 합니다.

sudo systemctl stop postfix.service 
sudo yum remove postfix

최근 NTP 프로토콜을 통한 불쾌한 DDOS 공격이 보고되었습니다. 내부 클라이언트가 이 서버와 시간을 동기화하기 위해 RHEL 서버를 NTP 서버로 실행하도록 구성하지 않으려면 아래 명령을 실행하여 Chrony 데몬을 완전히 비활성화하고 제거해야 합니다.

sudo systemctl stop chronyd.service 
sudo yum remove chrony

다시 한 번 ss 명령을 실행하여 시스템에서 다른 네트워크 서비스가 실행 중인지 확인하고 해당 서비스를 비활성화 및 제거합니다.

sudo ss -tulpn

서버에 정확한 시간을 제공하고 상위 시간 피어 서버와 시간을 동기화하려면 아래 명령을 실행하여 ntpdate 유틸리티를 설치하고 공용 NTP 서버와 시간을 동기화할 수 있습니다.

sudo yum install ntpdate
sudo ntpdate 0.uk.pool.ntp.org

사용자 개입 없이 매일 실행되도록 ntpdate 시간 동기화 명령을 자동화하려면 다음 내용을 사용하여 자정에 실행되도록 새 crontab 작업을 예약하세요.

sudo crontab -e

Crontab 파일 발췌:

@daily /usr/sbin/ntpdate 0.uk.pool.ntp.org

그게 다야! 이제 RHEL 서버는 웹 서버, 데이터베이스 서버, 파일 공유 서비스 또는 기타 특정 애플리케이션 설치 및 구성과 같은 사용자 정의 네트워크 서비스 또는 애플리케이션에 필요한 추가 소프트웨어를 설치할 준비가 되었습니다.

RHEL 7 서버를 더욱 안전하게 보호하고 강화하려면 다음 문서를 확인하세요.

  1. RHEL 7 강화 및 보안을 위한 대규모 가이드 - 1부
  2. RHEL 7 강화 및 보안을 위한 메가 가이드 - 2부

이 RHEL 7 시스템에 웹사이트를 배포할 계획이라면 LAMP 스택 또는 LEMP 스택을 설정하고 구성하는 방법을 알아보세요.