Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

1.6. 방화벽, SELinux 및 SSH 로그인으로 시스템 보안 강화

컴퓨터 보안은 컴퓨터 시스템을 하드웨어, 소프트웨어 또는 정보에 대한 도용 또는 손상으로부터 보호하는 것뿐 아니라 서비스 중단 또는 잘못된 방향을 보호하는 것입니다. 따라서 컴퓨터 보안을 보장하는 것은 기업이 민감한 데이터를 처리하거나 일부 비즈니스 트랜잭션을 처리하는 데 필요한 작업뿐만 아니라 필수 작업입니다.

컴퓨터 보안은 다양한 기능 및 도구를 포함합니다. 이 섹션에서는 운영 체제를 설치한 후 구성해야 하는 기본 보안 기능만 다룹니다. Red Hat Enterprise Linux 7 보안에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드 를 참조하십시오.

1.6.1. 방화벽 활성화 및 실행 확인

1.6.1.1. 방화벽의 취약점 및 시스템 보안 강화 방법

방화벽은 사전 결정된 보안 규칙을 기반으로 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템입니다. 방화벽은 일반적으로 신뢰할 수 있고 안전한 내부 네트워크와 외부 네트워크 간의 장벽을 설정합니다.

Red Hat Enterprise Linux 7에서 방화벽은 Red Hat Enterprise Linux를 설치하는 동안 자동으로 활성화되는 firewalld 서비스에서 제공합니다. 그러나 Kickstart 구성과 같이 서비스를 명시적으로 비활성화한 경우 1.6.1.2절. “firewalld 서비스 다시 활성화” 에 설명된 대로 다시 활성화할 수 있습니다. Kickstart 파일의 방화벽 설정 옵션에 대한 개요는 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.

1.6.1.2. firewalld 서비스 다시 활성화

설치 후 firewalld 서비스가 비활성화되어 있는 경우 Red Hat은 이를 다시 활성화하는 것을 권장합니다.

일반 사용자로도 firewalld 의 현재 상태를 표시할 수 있습니다.

~]$ systemctl status firewalld

firewalld 가 활성화되어 실행되지 않으면 root 사용자로 전환하고 해당 상태를 변경합니다.

~]# systemctl start firewalld
~]# systemctl enable firewalld

firewalld 와 관련된 설치 후 절차에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드 를 참조하십시오. 방화벽 설정 및 사용에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드를 참조하십시오.

1.6.2. SELinux 적용 상태 확인

1.6.2.1. SELinux의 정의 및 시스템 보안 강화 방법

SELinux(Security Enhanced Linux) 는 시스템 보안 계층을 통해 어떤 프로세스가 어떤 파일, 디렉터리 및 포트에 액세스할 수 있는지 결정합니다.

SELinux 상태

SELinux 에는 다음 두 가지 상태가 있습니다.

  • enabled
  • disabled

SELinux 가 비활성화된 경우 DC(Discretionary Access Control) 규칙만 사용됩니다.

SELinux 모드

SELinux 가 활성화되면 다음 모드 중 하나에서 실행할 수 있습니다.

  • enforcing
  • 허용

강제 모드는 SELinux 정책이 적용됨을 의미합니다. SELinuxSELinux 정책 규칙에 따라 액세스를 거부하고, 특히 허용되는 상호 작용만 활성화합니다. 강제 모드는 설치 후 기본 모드이며 가장 안전한 SELinux 모드이기도 합니다.

허용 모드는 SELinux 정책이 적용되지 않음을 의미합니다. SELinux 는 액세스를 거부하지 않지만 강제 모드에서 실행하는 경우 거부가 거부된 작업에 대해 기록됩니다. 허용 모드는 설치 중에 기본 모드입니다. 허용 모드에서는 문제를 해결할 때 AVC(Access Vector Cache) 거부에 액세스해야 하는 경우와 같이 특정 경우에 유용합니다.

Red Hat Enterprise Linux 7 SELinux 에 대한 자세한 내용은 Red Hat Enterprise Linux 7 SELinux 사용자 및 관리자 가이드 를 참조하십시오.

1.6.2.2. SELinux의 필수 상태 확인

기본적으로 SELinux 는 설치 중에 허용 모드로 작동하며 설치가 완료되면 강제 모드로 작동합니다.

그러나 일부 특정 상황에서는 SELinux 를 허용 모드로 명시적으로 설정하거나 설치된 운영 체제에서 비활성화할 수도 있습니다. 예를 들어 Kickstart 구성에서 이 값을 설정할 수 있습니다. Kickstart 파일의 SELinux 설정 옵션에 대한 개요는 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.

중요

Red Hat은 시스템을 강제 모드로 유지할 것을 권장합니다.

현재 SELinux 모드를 표시하고 필요에 따라 모드를 설정하려면 다음을 수행합니다.

SELinux의 필수 상태 확인

  1. 현재 적용된 SELinux 모드를 표시합니다.

    ~]$ getenforce
  2. 필요한 경우 SELinux 모드를 전환합니다.

    스위치는 일시적이거나 영구적일 수 있습니다. 영구 스위치는 재부팅 시 지속되지 않지만 임시 스위치는 재부팅 시 지속되지 않습니다.

    • 강제 또는 허용 모드로 임시로 전환하려면 다음을 수행합니다.

      ~]# setenforce Enforcing
      ~]# setenforce Permissive
    • SELinux 모드를 영구적으로 설정하려면 /etc/selinux/config 구성 파일에서 SELINUX 변수를 수정합니다.

      예를 들어 SELinux 를 강제 모드로 전환하려면 다음을 수행합니다.

      # This file controls the state of SELinux on the system.
      # SELINUX= can take one of these three values:
      #   enforcing - SELinux security policy is enforced.
      #   permissive - SELinux prints warnings instead of enforcing.
      #   disabled - No SELinux policy is loaded.
      SELINUX=enforcing

1.6.2.3. 웹 콘솔에서 SELinux 관리

웹 콘솔에서 SELinux 강제 정책을 설정하거나 해제하려면 SELinux 옵션을 사용합니다.

기본적으로 웹 콘솔SELinux 강제 정책은 설정되어 있으며 SELinux 는 강제 모드로 작동합니다. 이 모드를 해제하면 SELinux 를 허용 모드로 전환할 수 있습니다. /etc/sysconfig/selinux 파일의 기본 구성에서 이러한 비교는 다음 부팅 시 자동으로 되돌아갑니다.

그림 1.3. 웹 콘솔에서 SELinux 관리

n의 SELinux

1.6.3. SSH 기반 인증 사용

1.6.3.1. SSH 기반 인증 및 시스템 보안을 조정하는 방법

다른 컴퓨터와의 통신을 보호하려면 SSH 기반 인증을 사용할 수 있습니다.

SSH(Secure Shell)는 클라이언트-서버 통신을 용이하게 하고 사용자가 SSH를 원격으로 실행하는 모든 호스트 시스템에 로그인할 수 있는 프로토콜입니다. SSH가 연결을 암호화합니다. 클라이언트는 암호화를 사용하여 인증 정보를 서버로 전송하며 세션 중에 전송되고 수신되는 모든 데이터는 암호화로 전송됩니다.

SSH를 사용하면 사용자가 암호 없이 인증할 수 있습니다. 이를 위해 SSH는 개인-공개 키 스키마를 사용합니다.

SSH 보호 장치에 대한 자세한 내용은 12.1.2절. “주요 기능” 을 참조하십시오.

1.6.3.2. SSH 연결 설정

SSH 연결을 사용할 수 있으려면 공개 키와 개인 키로 구성된 두 개의 키 쌍을 만듭니다.

키 파일 생성 및 서버에 Them 복사

  1. 공개 및 개인 키를 생성합니다.

    ~]$ ssh-keygen

    두 키는 모두 ~/.ssh/ 디렉터리에 저장됩니다.

    • ~/.ssh/id_rsa.pub - public key
    • ~/.SSH/id_rsa - 개인 키

      공개 키는 시크릿일 필요가 없습니다. 개인 키를 확인하는 데 사용됩니다. 개인 키는 시크릿입니다. 키 생성 프로세스 중에 지정한 암호로 개인 키를 보호하도록 선택할 수 있습니다. 암호를 사용하면 인증은 더 안전하지만 더 이상 암호가 제공되지 않습니다. ssh-agent 명령을 사용하여 이를 방지할 수 있습니다. 이 경우 세션이 시작될 때 한 번만 암호를 입력합니다. ssh-agent 구성에 대한 자세한 내용은 12.2.4절. “키 기반 인증 사용” 을 참조하십시오.

  2. 가장 최근에 수정된 공개 키를 로그인하려는 원격 머신에 복사합니다.

    ~]# ssh-copy-id USER@hostname

    따라서 이제 안전한 방법으로 시스템을 입력할 수 있지만 암호를 입력하지 않아도 됩니다.

1.6.3.3. SSH 루트 로그인 비활성화

시스템 보안을 강화하기 위해 기본적으로 활성화되어 있는 root 사용자의 SSH 액세스를 비활성화할 수 있습니다.

이 항목에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드 를 참조하십시오.

SSH 루트 로그인 비활성화

  1. /etc/ssh/sshd_config 파일에 액세스합니다.

    ~]# vi /etc/ssh/sshd_config
  2. #PermitRootLogin yes 를 다음과 같이 읽는 행을 변경합니다.

    PermitRootLogin no
  3. sshd 서비스를 다시 시작합니다.

    ~]# systemctl restart sshd