웹사이트 검색

LFCA: Linux 시스템을 보호하기 위한 기본 보안 팁 - 17부


이제 그 어느 때보다 우리는 조직이 매우 가치 있고 막대한 재정적 보상을 받는 매우 민감하고 기밀인 데이터를 획득하여 보안 침해가 끊임없이 발생하는 세상에 살고 있습니다.

잠재적으로 파괴적인 사이버 공격을 당할 위험이 높음에도 불구하고 대부분의 기업이 제대로 준비되지 않았거나 위험 신호를 간과하여 종종 파괴적인 결과를 초래한다는 것은 다소 놀라운 일입니다.

2016년에 Equifax는 일련의 보안 실수로 인해 수백만 건의 기밀 고객 기록이 도난당하는 치명적인 데이터 침해를 겪었습니다. 자세한 보고서에 따르면 Equifax의 보안 팀이 올바른 보안 조치를 구현했다면 침해를 예방할 수 있었던 것으로 나타났습니다.

실제로 위반이 발생하기 몇 달 전에 Equifax는 보안을 손상시킬 수 있는 웹 포털의 잠재적인 취약점에 대해 경고를 받았지만 안타깝게도 그 경고는 무시되어 심각한 결과를 초래했습니다. 다른 많은 대기업들도 공격의 희생양이 되었으며, 공격은 순간이 지날수록 계속해서 복잡해지고 있습니다.

Linux 시스템의 보안이 얼마나 중요한지는 아무리 강조해도 지나치지 않습니다. 귀하는 침해의 잠재적 표적이 될 수 있는 유명 금융 기관이 아닐 수도 있지만 그렇다고 해서 경계를 늦추어야 한다는 의미는 아닙니다.

Linux 서버를 설정할 때 특히 인터넷에 연결되어 원격으로 액세스하는 경우 보안을 최우선으로 생각해야 합니다. Linux 서버를 보호하려면 기본적인 보안 기술을 갖추는 것이 필수적입니다.

이 가이드에서는 침입자로부터 시스템을 보호하기 위해 취할 수 있는 몇 가지 기본 보안 조치에 중점을 둡니다.

사이버 공격 벡터

침입자는 Linux 서버에 액세스하기 위해 다양한 공격 기술을 이용합니다. 시스템을 보호하기 위해 취할 수 있는 몇 가지 조치에 대해 알아보기 전에 해커가 시스템에 침투하는 데 사용할 수 있는 몇 가지 일반적인 공격 벡터를 활용해 보겠습니다.

1. 무차별 공격

무차별 공격 공격은 해커가 시행착오를 거쳐 사용자의 로그인 자격 증명을 추측하는 공격입니다. 일반적으로 침입자는 사용자 이름과 비밀번호의 올바른 조합을 얻을 때까지 자동화된 스크립트를 사용하여 지속적으로 진입을 얻습니다. 이러한 유형의 공격은 취약하고 쉽게 추측할 수 있는 비밀번호를 사용할 때 가장 효과적입니다.

2. 취약한 자격 증명

앞서 언급했듯이 password1234와 같이 짧고 쉽게 추측할 수 있는 비밀번호와 같은 취약한 자격 증명은 시스템에 잠재적인 위험을 초래합니다. 비밀번호가 짧고 복잡하지 않을수록 시스템이 손상될 가능성이 높아집니다.

3. 피싱

피싱은 공격자가 합법적인 기관이나 귀하가 알고 있거나 거래하는 사람이 보낸 것처럼 보이는 이메일을 피해자에게 보내는 사회 공학 기술입니다.

일반적으로 이메일에는 피해자에게 민감한 정보를 공개하도록 유도하는 지침이 포함되어 있거나 회사 사이트로 위장한 가짜 사이트로 연결되는 링크가 포함될 수 있습니다. 피해자가 로그인을 시도하면 공격자는 이들의 자격 증명을 탈취합니다.

4. 악성코드

멀웨어는 악성 소프트웨어의 약어입니다. 여기에는 몸값을 대가로 빠르게 확산되어 피해자의 시스템을 인질로 삼도록 설계된 바이러스, 트로이 목마, 웜, 랜섬웨어 등 광범위한 악의적인 애플리케이션이 포함됩니다.

이러한 공격은 조직을 약화시키고 조직의 비즈니스를 마비시킬 수 있습니다. 일부 악성 코드는 이미지, 비디오, 단어 또는 PowerPoint 문서와 같은 문서에 삽입되어 피싱 이메일에 패키지될 수 있습니다.

5. 서비스 거부 공격(DoS)

DoS 공격은 서버나 컴퓨터 시스템의 가용성을 제한하거나 영향을 미치는 공격입니다. 해커는 장기간 동안 사용자가 서버에 액세스할 수 없게 만드는 트래픽이나 핑 패킷으로 서버를 가득 채웁니다.

DDoS(분산 서비스 거부) 공격은 대상을 사용할 수 없게 만드는 트래픽으로 대상을 가득 채우는 여러 시스템을 사용하는 일종의 DoS입니다.

6. SQL 인젝션 공격

Structured Query Language의 약어인 SQL은 데이터베이스와 통신하는 데 사용되는 언어입니다. 이를 통해 사용자는 데이터베이스에서 레코드를 생성, 삭제 및 업데이트할 수 있습니다. 많은 서버는 데이터베이스와 상호 작용하기 위해 SQL을 사용하는 관계형 데이터베이스에 데이터를 저장합니다.

SQL 주입 공격은 악의적인 SQL 코드를 주입하여 서버가 공개하지 않을 민감한 데이터베이스 정보를 공개하게 만드는 알려진 SQL 취약성을 활용합니다. 데이터베이스에 신용카드 번호, 주민등록번호, 비밀번호 등 개인 식별 정보가 저장되어 있는 경우 이는 엄청난 위험을 초래합니다.

7. 중간자 공격

일반적으로 MITM으로 축약되는 중간자 공격은 두 당사자 간의 트래픽을 도청하거나 수정할 목적으로 두 지점 사이의 정보를 가로채는 공격자를 포함합니다. 목표는 피해자를 염탐하거나 데이터를 손상시키거나 민감한 정보를 훔치는 것입니다.

Linux 서버 보안을 위한 기본 팁

공격자가 시스템을 침해하는 데 사용할 수 있는 잠재적인 게이트웨이를 살펴본 후 시스템을 보호하기 위해 취할 수 있는 몇 가지 기본 조치를 살펴보겠습니다.

1. 물리적 보안

서버의 물리적 위치와 보안에 대해서는 별로 고려하지 않습니다. 그러나 온프레미스 환경에 서버를 두려는 경우 일반적으로 여기에서 시작합니다.

백업 전원, 중복 인터넷 연결 및 충분한 냉각 기능을 갖춘 데이터 센터에서 서버를 안전하게 보호하는 것이 중요합니다. 데이터 센터에 대한 접근은 승인된 직원으로만 제한되어야 합니다.

2. 시스템 저장소 및 패키지 업데이트

서버가 설정되면 가장 먼저 수행할 단계는 다음과 같이 리포지토리와 애플리케이션 소프트웨어 패키지를 업데이트하는 것입니다. 패키지를 업데이트하면 기존 애플리케이션 버전에 존재할 수 있는 모든 허점이 패치됩니다.

Ubuntu/Debian 배포판의 경우:

sudo apt update -y
sudo apt upgrade -y

RHEL/CentOS 배포판의 경우:

sudo yum upgrade -y

3. 방화벽 활성화

방화벽은 들어오고 나가는 트래픽을 필터링하는 애플리케이션입니다. UFW 방화벽과 같은 강력한 방화벽을 설치하고 필요한 서비스와 해당 포트만 허용하도록 활성화해야 합니다.

예를 들어 다음 명령을 사용하여 Ubuntu에 설치할 수 있습니다.

sudo apt install ufw

설치한 후 다음과 같이 활성화합니다.

sudo ufw enable

HTTPS와 같은 서비스를 허용하려면 다음 명령을 실행하세요.

sudo ufw allow https

또는 해당 포트인 443을 허용할 수 있습니다.

sudo ufw allow 443/tcp

그런 다음 변경 사항을 적용하려면 다시 로드하세요.

sudo ufw reload

허용된 서비스 및 열린 포트를 포함하여 방화벽 상태를 확인하려면 다음을 실행하세요.

sudo ufw status

4. 불필요한 서비스/포트를 끄십시오.

또한 방화벽에서 사용되지 않거나 불필요한 서비스와 포트를 끄는 것이 좋습니다. 사용되지 않는 포트가 여러 개 있으면 공격 환경이 늘어납니다.

5. 보안 SSH 프로토콜

기본 SSH 설정은 안전하지 않으므로 일부 조정이 필요합니다. 다음 설정을 적용해야 합니다.

  • 원격 로그인에서 루트 사용자를 비활성화합니다.
  • SSH 공개/개인 키를 사용하여 비밀번호 없는 SSH 인증을 활성화합니다.

첫 번째 지점에서는 /etc/ssh/sshd_config 파일을 편집하고 다음 매개변수를 수정하여 표시된 대로 표시되도록 합니다.

PermitRootLogin no

루트 사용자의 원격 로그인을 비활성화한 후 일반 사용자를 생성하고 sudo 권한을 할당합니다. 예를 들어.

sudo adduser user 
sudo usermod -aG sudo user 

비밀번호 없는 인증을 활성화하려면 먼저 다른 Linux PC(가급적이면 PC)로 이동하여 SSH 키 쌍을 생성하세요.

ssh-keygen

그런 다음 공개 키를 서버에 복사하십시오.

ssh-copy-id user@server-IP

로그인한 후에는 /etc/ssh/sshd_config 파일을 편집하고 표시된 매개변수를 수정하여 비밀번호 인증을 비활성화해야 합니다.

PasswordAuthentication no

SSH 개인 키는 로그인에 사용할 수 있는 유일한 방법이므로 분실하지 않도록 주의하십시오. 안전하게 보관하고 클라우드에 백업하는 것이 좋습니다.

마지막으로 SSH를 다시 시작하여 변경 사항을 적용합니다.

sudo systemctl restart sshd
요약

사이버 위협이 진화하는 세상에서 Linux 서버 설정을 시작할 때 보안을 최우선적으로 고려해야 합니다. 이 가이드에서는 서버를 강화하기 위해 취할 수 있는 몇 가지 기본 보안 조치를 강조했습니다. 다음 주제에서는 서버를 강화하기 위해 취할 수 있는 추가 단계에 대해 더 자세히 살펴보겠습니다.