Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스에서 소프트웨어를 안전하게 다운로드하는 5가지 방법

리눅스에는 바이러스가 없다는 것은 흔한 오해입니다. 실제로는 리눅스에도 악성코드가 존재합니다. 프로그램 파일을 일일이 검사해 감염된 파일을 찾아낼 수는 있지만, 리눅스 시스템이 침해되었다는 사실을 인지하기까지 몇 달이 걸릴 수도 있습니다.

신뢰는 섬세한 것이며, 쉽게 내주어서는 안 됩니다. 인터넷에 올라와 있다는 이유만으로 무조건 믿을 수 있는 것은 아닙니다. 운영체제와 자신을 보호하기 위해 반드시 몇 가지 조치를 취해야 합니다.

방심하면 정보 유출, 바이러스 감염, 심지어 허가받지 않은 사용자의 리눅스 머신 접근까지 이어질 수 있습니다. 따라서 이 글에서는 리눅스에서 소프트웨어를 안전하게 다운로드하는 방법을 정리했습니다.

1. 해시 값 확인하기

해시 값(또는 체크섬)은 데이터를 암호화 함수에 통과시켜 생성되는 영숫자 문자열로, 파일의 디지털 서명 역할을 합니다.

손상된 파일을 다운로드하지 않았는지 확인하기 위해 많은 오픈소스 사이트에서는 파일 다운로드 완료 후 얻어야 하는 예상 해시 값을 함께 제공합니다. 예를 들어 살펴보겠습니다.

인기 있는 웹 서버인 Tomcat 10을 다운로드한다고 가정해 봅시다. Tomcat 버전 10.0.6의 해시 값은 다음과 같습니다.

3d39b086b6fec86e354aa4837b1b55e6c16bfd5ec985a82a5dd71f928e3fab5370b2964a
5a1098cfe05ca63d031f198773b18b1f8c7c6cdee6c90aa0644fb2f2 *apache-tomcat-10.0.6.tar.gz

*apache-tomcat-10.0.6.tar.gz 부분은 단순히 파일 이름일 뿐이며, 3d39...2f2까지의 값이 실제 해시 값입니다.

이 값을 확인하려면 아카이브 파일을 다운로드한 디렉터리로 이동한 후 다음 명령어를 실행합니다.

sha512sum apache-tomcat-10.0.6.tar.gz

위에서 언급한 해시 값이 출력되어야 합니다. 다른 값이 나온다면 다운로드가 손상되었음을 의미하므로 즉시 삭제해야 합니다.

이 예시에서 사용한 해싱 함수는 sha512입니다. Apache Tomcat 재단이 다운로드 무결성을 보호하기 위해 이 함수를 사용하기로 결정했기 때문입니다.

다른 사이트에서는 널리 쓰이는 sha256, sha384 같은 다른 해싱 함수를 사용할 수도 있습니다.

웹사이트가 다른 해싱 함수를 사용하는 경우라면, 명령어 이름만 해당 함수명으로 바꾸면 됩니다.

sha256sum 파일이름
sha384sum 파일이름

참고로 여기서 사용한 파일은 TAR 파일(즉, 아카이브 파일)입니다. 그렇다면 바이너리 파일을 다운로드했다면 어떻게 될까요? 다행히 리눅스에서는 파일 형식과 관계없이 동일한 해시 결과를 얻을 수 있습니다.

리눅스 해시 함수의 기본 모드는 텍스트 모드입니다. 따라서 바이너리 모드로 전환하려면 -b 옵션을 다음과 같이 사용합니다.

sha256sum -b 파일이름

2. 안전한 사이트 이용하기

안전한 사이트에서 다운로드하면 멀웨어에 감염될 위험이 크게 줄어듭니다. 기본 원칙으로, 항상 다운로드하려는 소프트웨어의 공식 다운로드 사이트를 이용해야 합니다. 공식 웹사이트를 찾을 수 없는 경우라면 신뢰할 수 있는 사이트를 이용하는 것을 고려하세요.

FileHorse나 SourceForge 같은 다운로드 사이트는 신뢰할 만한 사이트의 좋은 예입니다. 이런 사이트들은 오랫동안 운영되며 사용자들의 신뢰를 쌓아왔습니다.

3. 소스 코드 직접 컴파일하기

오픈소스 커뮤니티가 존재하는 가장 큰 이유 중 하나는, 대형 소프트웨어 회사를 맹목적으로 신뢰하고 PC에서 승인되지 않은 작업을 하지 않기를 바라는 대신 스스로 검증할 수 있다는 점입니다.

바이너리 파일을 다운로드하면 코드를 컴파일한 사람에게 일정 권한을 넘겨주는 셈입니다. 하지만 소스 코드에 접근할 수 있다면 그 권한을 다시 자신의 손에 쥘 수 있습니다.

오픈소스를 활용하면 소프트웨어가 개발자가 말하는 대로 정확히 작동하는지 독립적으로 검증할 수 있습니다. 유일한 단점은 평균 이상의 프로그래밍 실력이 필요하고, 해당 분야에 대한 깊은 지식도 갖추어야 한다는 점입니다.

전략적으로 관심 있는 핵심 파일만 골라 검토하는 방법도 있습니다.

예를 들어 GitHub 저장소에서 C 소스 코드를 클론 받았다고 가정해 봅시다. 직접 컴파일하는 방법은 다음과 같습니다.

먼저 아래 명령어로 build-essential 패키지를 설치합니다. 이 패키지에는 리눅스에서 소프트웨어를 빌드할 때 필요한 중요한 도구들이 포함되어 있습니다.

sudo apt-get install build-essential

이제 gcc 컴파일러로 C 코드를 컴파일합니다.

gcc program-name.c -o program-name

컴파일이 완료되면 다음과 같이 프로그램을 실행할 수 있습니다.

./program-name

4. 공식 패키지 관리자 사용하기

소프트웨어를 설치, 업데이트, 삭제하는 가장 쉬운 방법은 패키지 관리자를 사용하는 것입니다. pacman, dpkg, DNF, APT 등 다양한 패키지 관리자가 있으며, 패키지 관리자는 공식 소프트웨어 저장소 및 앱 스토어와 직접 연동됩니다.

패키지 관리자는 많은 작업을 대신 처리해 줍니다. 소프트웨어에 필요한 의존성 관리, 다운로드 무결성과 진위 확인, 버전 관리 같은 표준 작업들을 자동으로 담당합니다.

또 하나 좋은 점은 대부분의 배포판에 패키지 관리자가 기본으로 탑재되어 있다는 것입니다. 예를 들어 Debian 10에는 APT가, Arch 기반 시스템에는 pacman이 포함되어 있습니다.

5. 개인적인 리서치

소프트웨어 세계는 끊임없이 변화하므로 보안 트렌드를 꾸준히 파악하는 것이 자신을 지키는 핵심 요소입니다. 상황에 따라 선택할 수 있는 다양한 설치 옵션이 있습니다. 예를 들어 가상 머신에 소프트웨어를 설치하거나 앱 컨테이너화를 활용하는 방법이 있습니다.

특히 앱 컨테이너화는 주목할 만한 트렌드입니다. 서로 다른 실행 환경에서도 앱이 동일하게 작동하도록 보장해 주기 때문입니다.

소프트웨어 코어와 의존성의 실행을 기반 인프라로부터 격리할 수 있다는 점은 전례 없는 수준의 보안을 제공합니다. 예를 들어 의존성의 보안을 한 번만 검증하면 다양한 환경에서도 동일한 보안 수준이 적용되기를 기대할 수 있습니다.

또한 소프트웨어 리뷰를 살펴보고 GitHub 토론을 팔로우하는 것도 좋은 습관입니다. 소프트웨어 리뷰를 통해 다운로드 후 기대할 수 있는 사항, 사용자들이 발견한 예기치 않은 동작, 추천 사항 등을 폭넓게 파악할 수 있습니다.

GitHub 토론은 소프트웨어 설치 중과 이후에 취해야 할 선제적 조치를 알려주기도 합니다. 공식 문서에 포함되지 않은 다양한 보안 고려사항도 얻을 수 있습니다.

또한 GitHub에서 기여자가 많은 포크(fork) 프로젝트에도 주목해야 합니다. 프로토콜 변경이 진행 중일 수 있으며, 이러한 업데이트를 놓치면 보안이 위협받을 수 있습니다.

권장 사항과 모범 사례

주요 소프트웨어를 다운로드하기 전에 시스템 패키지와 저장소 목록을 먼저 업데이트하는 것이 항상 좋은 습관입니다. Arch Linux의 pacman을 비롯한 모든 패키지 관리자는 패키지 설치, 업데이트, 삭제 기능을 제공합니다.

설치된 패키지가 최신 상태인지 확인한 후 필요한 소프트웨어를 다운로드하면 됩니다. 가능하다면 패키지 관리자로 패키지를 다운로드하는 것이 좋습니다. 이것이 리눅스에서 소프트웨어를 설치하고 업데이트하는 가장 쉽고 안전한 방법입니다.