이제는 기업들이 지속적으로 고도로 민감하고 기밀성 있는 데이터를 획득하기 위한 동기로 하는 보안 침해에 노출되는 세상에서 살고 있습니다. 이 데이터는 매우 가치 있으며 거대한 금전적 보상을 가져다 줍니다.
잠재적으로 파괴적인 사이버 공격을 당할 위험이 높은데도 대부분의 기업들이 충분히 대비되어 있지 않거나 경고 신호를 간과하고 있어서 종종 파괴적인 결과를 초래하고 있습니다.
2016년에는 Equifax가 보안 결함의 연이은 시리즈로 인해 수백만 건의 고도로 기밀적인 고객 기록이 탈취된 대형 데이터 침해를 겪었습니다. 상세 보고서에 따르면, 적절한 보안 조치가 Equifax의 보안 팀에 의해 시행되었다면 이 침해는 예방 가능했을 것으로 나타났습니다.
사실, 침해 몇 달 전에 Equifax는 웹 포털에서 보안을 침해할 수 있는 잠재적 취약점에 대해 경고를 받았지만 안타깝게도 이 경고는 무시되었고 심각한 결과를 초래했습니다. 많은 다른 대기업들도 계속해서 복잡해지는 공격의 피해자가 되고 있습니다.
리눅스 시스템의 보안이 얼마나 중요한지 강조할 수 없습니다. 당신이 침해의 잠재적 대상인 고위험 금융 기관이 아니더라도 경계를 풀어서는 안 된다는 것을 의미합니다.
보안은 특히 인터넷에 연결되어 원격으로 접근될 경우 Linux 서버를 설정할 때 가장 중요한 사항이어야 합니다. Linux 서버를 보호하는 데 기본적인 보안 기술을 보유하는 것이 중요합니다.
이 가이드에서는 시스템을 침입자로부터 보호하기 위해 취할 수 있는 몇 가지 기본적인 보안 조치에 중점을 둡니다.
사이버 공격 벡터
침입자는 여러 가지 공격 기술을 이용하여 Linux 서버에 접근하려고 합니다. 시스템을 보호하기 위해 취할 수 있는 몇 가지 조치에 대해 자세히 살펴보기 전에, 해커가 시스템을 침투하는 데 사용할 수 있는 일반적인 공격 벡터 중 몇 가지를 살펴봅시다.
1. 브루트 포스 공격
A brute-force attack is an attack where the hacker uses trial and error to guess the login credentials of the user. Usually, the intruder will use automated scripts to continuously gain entry until the right combination of the username and password is obtained. This kind of attack is most effective where weak & easily guessable passwords are used.
2. 약한 자격 증명
앞서 언급한 것처럼, 약한 자격 증명 예를 들어 password1234와 같이 짧고 쉽게 추측할 수 있는 암호는 시스템에 잠재적인 위협을 가할 수 있습니다. 암호가 짧고 복잡하지 않을수록 시스템이 침해될 가능성이 높습니다.
3. 피싱
피싱은 공격자가 피해자에게 실제로 있는 기관이나 알고 있는 사람이나 업무를 함께 하는 사람으로부터 온 것처럼 보이는 이메일을 보내는 사회 공학 기술입니다.
일반적으로 이메일에는 피해자가 민감한 정보를 泄露하도록 유도되는 지침이나 회사 사이트를模倣하는 가짜 사이트로 연결되는 링크가 포함되어 있습니다. 피해자가 로그인을 시도할 때, 그들의 자격 증명이 공격자에 의해 캡쳐되는 것입니다.
4. 마웨어
Malware는 malicious software의 약자로, 바이러스, 트로이안, 웜, 랜섬웨어와 같은 많은 악의적인 응용 프로그램을 포함합니다. 이러한 프로그램들은 빠르게 확산하고 피해자의 시스템을 인질로 취급하고 ranSomware에 대한赎买를 요구합니다.
이러한 공격은 조금이라도 무력하고 조직의 사업을麻痺시킬 수 있습니다. 일부 마웨어는 이미지, 동영상, 워드나 PowerPoint 문서와 같은 문서에 注入되어 피싱 이메일로 패키지될 수 있습니다.
5. 서비스 거부 공격 (DoS)
A DoS attack is an attack that limits or impacts the availability of a server or computer system. The hacker floods the server with traffic or ping packets that render the server inaccessible to users for prolonged durations.
A DDoS (Distributed Denial of Service) attack is a kind of DoS that employs multiple systems that flood a target with traffic rendered it unavailable.
6. SQL Injection Attack
Structured Query Language의 약자인 SQL는 데이터베이스와 통신하는 데 사용되는 언어입니다. 그것은 사용자가 데이터베이스에서 레코드를 생성, 삭제 및 업데이트할 수 있게 합니다. 많은 서버들은 관계형 데이터베이스에 데이터를 저장하고 SQL을 사용하여 데이터베이스와 상호 작용합니다.
SQL Injection 공격은 악의적인 SQL 코드를 注入함으로써 서버가 그렇지 않으면 공개하지 않을 민감한 데이터베이스 정보를 泄露하도록 하는 알려진 SQL 취약점을滥觞합니다. 만약 데이터베이스가 신용카드 번호, 사회보장번호, 패스워드와 같은 개인 식별 정보를 저장한다면, 이것은 큰 위험을 가져옵니다.
7. 중간자 공격
일반적으로 MITM로 약칭되는 중간자 공격은 공격자가 두 지점 사이의 정보를 가로채어 통신을 eavesdropping하거나 수정하는 것을 목적으로 하는 공격입니다. 그 목적은 피해자를 감시하거나 데이터를 손상시키거나 민감한 정보를 훔치는 것입니다.
Linux 서버를 안전하게 유지하기 위한 기본 팁
시스템을 침해할 수 있는 공격자의 가능한 문들을 살펴본 후, 시스템을 보호할 수 있는 기본적인 조치를 살펴봅시다.
1. 물리적 보안
서버의 물리적 위치와 보안에는 크게 생각하지 않습니다. 그러나 온-premise 환경에 서버를 두시려면 보통 여기서 시작하게 됩니다.
서버가 데이터 센터에 안전하게 설치되어 백업 전원,多重 인터넷 연결 및 충분한 냉감을 갖추고 있음을 확실히 해야합니다. 데이터 센터에는 허가된 인원만 접근할 수 있어야합니다.
2. 시스템 저장소와 패키지 업데이트
서버가 설정되면, 먼저 시스템 저장소와 응용 프로그램 패키지를 업데이트해야합니다. 패키지 업데이트는 응용 프로그램의 기존 버전에 존재할 수 있는 여유를 모두 수정합니다.
Ubuntu / Debian 배포판의 경우:
$ sudo apt update -y $ sudo apt upgrade -y
RHEL / CentOS 배포판의 경우:
$ sudo yum upgrade -y
3. 방화벽 활성화
A firewall is an application that filters incoming and outgoing traffic. You need to install a robust firewall such as the UFW firewall and enable it to only allow the required services and their corresponding ports.
예를 들어, 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 설정은 안전하지 않으므로 일부 조정이 필요합니다. 다음 설정을 적용하세요:
첫 번째 항목에 대해, /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 서버를 설정할 때 보안은 높은 우선순위여야 합니다. 이 가이드에서는 서버를 강화하기 위해 취할 수 있는 기본적인 보안 조치를 강조했습니다. 다음 주제에서는 서버를 강화하기 위해 취할 수 있는 추가 단계에 대해 더 깊이 살펴보겠습니다.