웹사이트 검색

보안 체크 포인트


소개

이 체크포인트는 권장 보안 사례와 일반적으로 사용되는 보안 도구를 소개한 보안 소개 문서에서 배운 내용을 평가하는 데 도움을 주기 위한 것입니다. 이 체크포인트를 사용하여 이러한 주제에 대한 지식을 평가하고, 주요 용어 및 명령을 검토하고, 지속적인 학습을 위한 리소스를 찾을 수 있습니다.

클라우드 애플리케이션을 효율적으로 실행하려면 서버를 구성할 때 업계 권장 보안 사례를 구현해야 합니다. 서버 보안은 사용자와 개인 정보를 보호하는 데 매우 중요합니다. 클라우드 서버 자체와 웹 애플리케이션 모두에 대해 효과적인 보안 조치를 설정할 수 있습니다.

이 체크포인트는 서버 보안에 중점을 둡니다. 소개 기사의 핵심 아이디어를 통합하는 두 개의 섹션, 즉 주요 보안 용어 및 사례에 대한 간략한 개요와 특정 보안 도구와 관련된 하위 섹션이 있는 명령줄 사용에 대한 섹션을 찾을 수 있습니다. 이러한 각 섹션에는 지식을 테스트하는 데 도움이 되는 대화형 구성 요소가 있습니다. 이 체크포인트를 마치면 컨테이너에 대한 지속적인 학습 기회를 찾을 수 있습니다.

자원

  • 서버를 보호하기 위해 권장되는 보안 조치
  • Ubuntu 22.04에서 UFW로 방화벽을 설정하는 방법
  • Ubuntu 22.04에서 WireGuard를 설정하는 방법
  • Ubuntu 22.04에서 OpenVPN 서버를 설정하고 구성하는 방법
  • Ubuntu 22.04 서버를 업데이트된 상태로 유지하는 방법
  • Ubuntu 20.04에 Suricata를 설치하는 방법

보안이란 무엇입니까?

클라우드 서버를 보호하면 인프라의 취약성을 관리하고 잠재적 피해 및 악의적인 공격자로부터 보호할 수 있습니다.

클라우드 컴퓨팅의 보안 사례를 이해하려면 몇 가지 핵심 용어에 익숙해지는 것이 중요합니다.

다음 각 용어를 정의한 다음 드롭다운 기능을 사용하여 작업을 확인하십시오.

암호화는 안전한 전송이나 저장에 사용할 수 있는 알고리즘 변환을 통해 정보를 인코딩하는 과정을 의미합니다.

필요에 따라 대칭 또는 비대칭 암호화를 사용하여 목표를 달성할 수 있습니다.

SSH는 암호화된 보안 연결을 통해 원격 서버를 안전하게 관리할 수 있게 해주는 Secure Shell 프로토콜을 말합니다.

SSH 작동 방식에 대한 자세한 내용은 SSH 암호화 및 연결 프로세스 이해를 검토할 수 있습니다.

방화벽은 두 가지 주요 방식으로 서버에 대한 연결을 제어합니다. 네트워크에 노출되는 서버를 정의합니다.

서버에서 작업할 때 IPv6(128비트 영숫자) IP 주소를 사용하고 있는지 알아야 합니다. IPv4와 IPv6을 모두 사용할 수 있지만 IPv6으로 전환하는 것이 좋습니다.

서버가 설정되면 인증서 관리, 식별 및 통신 암호화를 위해 공개 키 인프라(PKI)에 참여하게 됩니다. TLS/SSL 암호화는 주로 HTTP에서 HTTPS 서버로 업데이트하기 위해 적법한 인증 기관(CA)의 인증서를 제공하여 추가 보안 수준을 제공하는 데 자주 사용됩니다.

드롭다운 기능을 사용하여 답을 얻으십시오.

Transport Layer Security를 가리키는 TLS는 웹 트래픽을 위한 암호화 프로토콜입니다. TLS 핸드셰이크에서 클라이언트와 서버는 메시지를 교환하고 메시지가 원본에서 온 것인지 확인하고 정보의 안전한 전송을 위해 통신을 관리할 암호화 방법(암호 모음)을 결정합니다. .

TLS 프로토콜은 비대칭 암호화로 알려진 공개 및 개인 키 암호화 방법을 사용합니다. 이 과정에서 키 쌍이 있습니다.

공유 키 암호화를 사용하면 보낸 사람과 받는 사람 모두 메시지를 해독하는 데 사용할 동일한 키 암호가 있습니다. 이 프로세스를 대칭 암호화라고 하며 단일 키를 사용합니다.

Let’s Encrypt를 인증 기관으로 사용하여 상용 인증 기관에서 SSL 인증서를 무료로 설치할 수 있습니다.

다음 섹션에서는 SSH를 통해 서버에 연결하고, VPN을 실행하고, 방화벽을 사용하고, 네트워크 보안을 모니터링하기 위한 핵심 원칙을 검토합니다.

SSH로 연결

초기 서버 설정에서.

드롭다운 기능을 사용하여 답을 얻으십시오.

~/.ssh/authorized_keys 폴더에 있습니다.

SSH는 일반적으로 포트 22에서 실행됩니다.

HTTP/HTTPS는 일반적으로 포트 80443에서 각각 실행됩니다.

SSH 포트 액세스를 업데이트하려면 선택한 미사용 포트를 참조하도록 서버의 sshd_config 파일에서 포트 22 사양을 수정한 다음 SSH 데몬을 다시 시작하십시오.

SSH 포트를 변경한 경우 원격 서버에 로그인할 때마다 새 포트를 지정해야 합니다.

추가 보호를 위해 서버에서 OpenSSH 클라이언트를 사용할 수 있습니다. 서버 측과 클라이언트 측 모두에서 OpenSSH를 강화하면 서버에 대한 원격 액세스와 관련된 보안이 향상됩니다.

SSH를 사용하려면 방화벽으로 SSH 액세스를 구성해야 합니다.

방화벽 사용

방화벽은 필요에 따라 구성할 수 있는 서버 안팎의 트래픽을 제어합니다. 효과적인 방화벽 정책을 선택할 때 서버에 대해 원하는 정책 종류와 다른 방화벽 프로그램이 요청에 응답하는 방법을 고려해야 합니다.

일반적으로 사용되는 일부 방화벽 프로그램에는 Iptables Essentials: Common Firewall Rules and Commands가 포함됩니다.

방화벽을 구성할 때 두 IPv6을 모두 사용할 수 있지만 IPv6도 관리하려면 방화벽을 업데이트해야 할 수 있습니다. 예를 들어 UFW는 기본적으로 IPv4만 관리하며 IPv6에 대한 규칙을 작성하려면 수동으로 구성해야 합니다.

VPN 실행

VPN은 개발자와 소비자 모두에게 도움이 될 수 있는 인터넷에 연결할 수 있는 암호화된 터널을 제공합니다. 개발자의 경우 VPN을 사용하면 민감한 포트를 열어 둘 필요가 없도록 다양한 로케일에서 자체 인프라에 액세스할 수 있습니다. 소비자로서 VPN을 사용하면 신뢰할 수 없는 네트워크(예: 커피숍이나 도서관의 WiFi)에 연결된 경우에도 안전하게 인터넷에 액세스할 수 있습니다.

VPC는 리소스에 대한 사설 네트워크 인터페이스인 Virtual Private Cloud 네트워크를 나타냅니다. VPC의 리소스는 내부 네트워크를 통해서만 서로 연결할 수 있으며 인그레스 게이트웨이가 설정되어 있지 않으면 공용 인터넷을 통해 액세스할 수 없습니다. VPC는 필요에 따라 확장할 수 있으므로 워크로드 관리 및 보안 연결에 이점을 제공합니다.

VPN 또는 가상 사설망은 마치 로컬 사설망에 있는 것처럼 인터넷을 통해 원격 컴퓨터 간의 사설망을 시뮬레이트합니다. VPN은 공유 네트워크 정보에 대한 보안 게이트웨이를 제공합니다.

OpenVPN 서버.

VPN 사용 여부에 관계없이 네트워크를 설정한 후에는 안전하고 지속 가능한 프로세스를 위해 시스템을 장기적으로 관리하고 싶을 것입니다.

네트워크 보안 관리

서버 설정 구성은 안전한 관행을 보장하기 위한 여러 단계 중 하나입니다. 서버를 최신 상태로 유지하고 네트워크를 강화하며 네트워크 보안을 모니터링하여 서버를 유지할 수 있습니다.

Rocky Linux 9 서버를 최신 상태로 유지하는 방법.

때때로 시스템 전반의 버그와 취약점을 패치하기 위해 커널 수준에서 업데이트를 실행해야 할 수도 있습니다. apt에 대해 무인 업그레이드 도구를 실행할 수 있지만 이로 인해 시스템이 약간 다운될 수 있습니다. 일관된 가동 시간을 보장해야 하는 경우 Kernelcare를 사용하여 백그라운드에서 실행할 수 있습니다.

또한 네트워크 트래픽을 스캔하고 모니터링하여 취약점이나 의심스러운 패킷을 찾을 수 있습니다. Suricata를 네트워크 모니터링 시스템으로 설치하여 서비스가 사용자 대신 관리할 규칙 세트를 정의했습니다.

서버에 연결하고 관리하는 것은 보안에 대한 이 문서에서 사용한 명령줄을 통해 수행되는 경우가 많습니다.

명령줄 사용

컨테이너에 대한 기사를 사용하기 시작했습니다.

보안 사례 소개에서 다음과 같은 명령을 통해 명령줄에 익숙해졌습니다.

  • add-apt-repository는 소프트웨어 리포지토리 정보를 서버에 추가하기 위한 sudo 사용 사용자로 지정합니다.
  • cat 파일 내용을 터미널에 출력합니다.
  • chmod 파일 권한을 변경합니다.
  • cp는 한 서버에서 파일을 복사하고 scp는 서버 간에 파일을 복사합니다.
  • 자르기는 지정된 문자열을 자르기 위해 -c 옵션을 사용하여 파일의 섹션을 제거합니다.
  • 날짜는 타임스탬프를 출력하고 +%s%N 옵션을 사용하여 초(%s) 및 분()을 출력합니다. >%N).
  • grep은 지정된 파일에서 텍스트와 문자열을 검색합니다.
  • jq는 명령 구문에 지정된 대로 항목을 읽고 필터링합니다.
  • kill을 sudo 사용 사용자로 지정하여 서비스를 중지해야 하는 신호를 지정합니다.
  • ln-s 옵션을 사용하여 파일 간에 심볼릭 링크를 만듭니다.
  • printf 주어진 문자열을 표시합니다.
  • sha1sum 체크섬을 인쇄하고 확인합니다.
  • ss 사용 중인 모든 TCP/UDP 포트를 나열하고 추가 정보를 위해 -plunt 옵션과 쌍을 이룹니다.
  • sysctl을 sudo 사용자로 사용하여 커널 매개변수를 구성하고 터미널 세션에 대한 새 값을 로드합니다.
  • systemctl은 OpenVPN을 systemd 서비스로, Suricata는 네트워킹 모니터링 패키지로 포함하여 서비스를 관리합니다.
  • resolvectl dns는 서버에서 사용하는 DNS 해석기를 식별합니다.
  • tail-f 옵션으로 지정된 파일에서 행을 출력합니다.
  • tee를 sudo 사용자로 사용하여 출력을 새 파일로 리디렉션합니다.

ip 명령 및 관련 하위 명령을 사용하여 네트워크 인터페이스를 구성했습니다.

  • ip addr 네트워크 인터페이스를 조회합니다. 그런 다음 ufw allow 명령과 함께 출력을 사용하여 선택한 네트워크 인터페이스를 통해 들어오는 트래픽을 활성화했습니다.
  • ip address show 시스템의 공용 IP 주소를 찾습니다.
  • ip route는 공용 네트워크 인터페이스를 찾습니다.

Ubuntu 서버에 대한 커널 수준 업데이트를 위해 라이브 패치 서비스를 실행하기로 선택한 경우 sudo 사용 사용자로 canonical-livepatch 서비스에 대한 하위 명령을 실행했습니다.

  • canonical-livepatch enable your-key 도구를 활성화합니다.
  • canonical-livepatch status 백그라운드 서비스의 상태를 확인합니다.

또한 파이프 연산자(|)를 사용하여 여러 명령을 함께 연결했습니다.

명령줄에서 UFW 실행

Ubuntu 22.04에서 UFW로 방화벽을 설정하는 방법:

  • ufw 기본 거부 수신 모든 수신 연결을 거부합니다(기본 상태).
  • ufw default allow outgoing 모든 발신 연결을 허용합니다(기본 상태).
  • ufw allow ssh는 원격 서버를 관리하려는 경우와 같이 포트 22에서 들어오는 SSH 연결을 허용합니다.
  • ufw는 port_number가 들어오는 연결을 위한 포트를 지정하도록 허용합니다.
  • ufw enable 방화벽을 활성화합니다.
  • ufw status는 방화벽의 상태를 확인하고 ufw status verbose는 설정된 모든 규칙을 확인합니다.
  • ufw allow http 또는 ufw allow 80은 HTTP를 통해 암호화되지 않은 웹 서버에서 들어오는 연결을 허용합니다.
  • ufw allow https 또는 ufw allow 443은 HTTP를 통해 암호화되지 않은 웹 서버에서 들어오는 연결을 허용합니다.
  • ufw allow port_number:port_number/tcpufw allow port_number:port_number /udp는 TCP/UDP 프로토콜을 지정하여 포트 범위를 허용합니다.
  • ufw allow from your_ip_address는 특정 IP 주소에서 연결을 허용합니다. 포트 port_number에 추가하여 IP 주소를 특정 포트로 보낼 수 있습니다.
  • 서브넷
  • ufw deny http는 HTTP 연결을 거부하고 ufw deny from your_ip_address는 특정 IP 주소의 모든 연결을 거부합니다.
  • ufw status numbered 번호가 매겨진 방화벽 규칙 목록을 생성합니다.
  • ufw delete 목록 번호를 사용하거나 allow 규칙(예: ufw delete allow http).
  • ufw disable 생성한 모든 규칙을 비활성화합니다.
  • ufw reset UFW를 비활성화하고 생성한 모든 규칙을 삭제합니다.

UFW Essentials: Common Firewall Rules and Commands에 대한 기사를 통해 UFW 설정 작업을 계속할 수 있습니다.

명령줄에서 VPN 실행

방화벽을 구성하는 것 외에도 두 가지 VPN 도구인 WireGuard 및 OpenVPN도 관리했습니다.

WireGuard VPN을 설정할 때 WireGuard 서버와 해당 피어 서버 모두에서 다음 WireGuard 명령을 실행했습니다.

  • wg는 WireGuard 서버를 관리합니다.
  • wg genkeywg pubkey는 WireGuard 서버용 개인 및 공개 키 쌍을 생성합니다.
  • wg setallowed-ips 설정과 WireGuard VPN에 대한 액세스를 관리하기 위한 특정 IP 주소 목록입니다.
  • wg-quickup 인수를 사용하여 터널을 시작하고 down 인수를 사용하여 VPN 연결을 수동으로 설정합니다.

tls-crypt 지시문인 경우 암호화 통신을 개선합니다.

이러한 기사와 모범 사례를 통해 이제 클라우드 서버를 보호하기 위한 기본 사항을 알게 되었습니다.

무엇 향후 계획?

클라우드 서버에 대한 보안 사례를 소개하는 이 문서에서는 클라우드 서버에서 강력한 보안 조치를 구축하기 위해 모범 사례 및 일반적으로 사용되는 도구에 대해 배웠습니다. 인프라가 보안 기반 구성으로 시작되도록 하려면 암호화, 사설 네트워킹, 보안 모니터링 및 서비스 감사에 대한 업계 모범 사례를 계속 따를 수 있습니다.

계속해서 서버 보안을 구축하려면 다음 자습서를 시도하십시오.

  • Rocky Linux 9에서 firewalld를 사용하여 방화벽을 설정하는 방법
  • Droplet을 VPC 게이트웨이로 구성하는 방법
  • 인증 기관(CA) 설정 및 구성 방법
  • Ubuntu 20.04에서 OpenSSH 클라이언트를 강화하는 방법

다음 자습서를 사용하여 시스템 간에 파일을 전송할 수 있습니다.

  • SFTP를 사용하여 원격 서버와 파일을 안전하게 전송하는 방법
  • Rsync를 사용하여 로컬 및 원격 디렉토리를 동기화하는 방법

DigitalOcean Kubernetes 클러스터에 대한 보안 관행을 구현하려면 다음 자습서를 시도하십시오.

  • DigitalOcean Kubernetes 클러스터 보안을 위한 권장 단계
  • Helm을 사용하여 DigitalOcean Kubernetes에서 Nginx 인그레스를 설정하는 방법
  • cert-manager, Traefik 및 Let’s Encrypt를 사용하여 Kubernetes에서 사이트를 보호하는 방법

아직 설치하지 않은 경우 서버와 연결된 도메인에 대한 상용 인증 기관의 SSL 인증서를 설치할 수도 있습니다.

새로 발견한 보안 지식으로 클라우드 여정을 계속할 준비가 된 것입니다. 아직 확인하지 않았다면 컨테이너에 대한 소개 기사를 확인하세요.