
소프트웨어는 복잡하고 끊임없이 변화합니다. 버그는 피할 수 없습니다. 인터넷 시대 이전에는 버그는 고쳐야 할 결함일 뿐이었습니다. 이제 버그는 해커가 시스템에 무단으로 액세스하는 방법 중 하나인 기회입니다. 사이버 보안 업계는 이러한 위협을 바탕으로 번창하고 있습니다. 이들의 제품은 '방어'하고 '보호'하지만, 오래되고 패치가 적용되지 않은 운영 체제 및 애플리케이션에 존재하는 취약점을 악용하는 단순한 보안 허점을 막지는 못합니다.
이 문서에서는 이 문제의 배경을 검토하고 Ubuntu, Red Hat 및 Fedora의 무인 업데이트 패키지와 KernelCare, Kgraft, Ksplice 및 Livepatch의 라이브 패치 솔루션을 사용하여 문제를 해결하는 팁을 제공합니다.
스테로이드의 변화
소프트웨어 개발에는 조용한 위기가 있습니다.
프로그래머에게는 그 어느 때보다 좋은 시기입니다. 그들의 작업은 거의 모든 계층의 수많은 사람들에게 영향을 미칩니다. 개발자에게 주어지는 기회는 무궁무진하며, 사용자인 우리에게도 그 가능성은 놀랍습니다.
역설적이게도 프로그래머에게는 그 어느 때보다 힘든 시기입니다. 새로운 것을 배우고 만들어야 한다는 압박감이 그 어느 때보다 커졌습니다. 프로그래머들은 코드 한 줄을 작성하기 훨씬 전부터 언어를 읽고 배우고, API와 동작이 변경되면 다시 읽고 다시 배우는 데 몇 시간을 소비합니다. 심지어 언어마다 매달 '히트 퍼레이드 '(www.tiobe.com)가 열리고, 거대 기술 기업에 지원하는 프로그래머는 이력서에 최소 6개 이상의 언어가 있어야 면접 기회를 잡을 수 있습니다. 개귀에 경 읽기 , 복사한 SQL 치트시트로 취업하던 시대는 지났습니다.
더 이상 영웅은 없습니다.
그리고 더 이상 영웅은 없습니다. 이제 그들은 모두 팀으로 일하며 팀의 작업을 기반으로 합니다. 팀원들은 멀리 떨어져 있고 유연하며, 서로 연결되어 있고 예리하지만 직접 만나는 경우는 거의 없습니다. 그들로부터 코드는 계단식으로 다른 팀으로 흘러들어가 테스트하고 확장하며 이를 깨기 위해 최선을 다합니다.
이 모든 작업에는 시간이 걸리지만, 여러분과 저는 새로운 콘텐츠, 다음 반복 작업, 최신 업데이트를 기다리고 있기 때문에 시간이 없습니다. 우리는 릴리스라는 거대한 풍선껌 덩어리로 뭉쳐진 인간의 집중된 노력의 결과물을 코드로 얻습니다. 수많은 사람들이 다양한 언어로 코드를 작성하는 작업의 산물입니다. 이는 스테로이드 같은 변화이며, 그 대가는 발전입니다.
계속 읽기: 더 빠른 패치 관리로 규정 준수 지원
좋은 점, 나쁜 점, 귀여운 점
소프트웨어 복잡성이 리스크가 되는 방법
먼저, 발전은 좋은 것이라는 데 동의합시다. 따라서 발전이 좋으면 변화도 좋은 것입니다. 하지만 변화는 위험을 의미하며, 항상 바뀌는 코드는 버그가 발생할 위험이 더 크기 때문에 좋지 않습니다. 인터넷 시대 이전에는 버그는 그저 버그일 뿐이었습니다. 의도하지 않았고 감지되지 않은 버그에도 위험이 도사리고 있었지만, 그 범위와 영향에는 한계가 있었습니다. 인터넷 시대에는 더 이상 한계가 없습니다.
애플리케이션 간의 상호 연결성이 폭발적으로 증가함에 따라 버그는 더 이상 단순한 불편함이 아닙니다. 버그는 코드를 만드는 사람만큼이나 뛰어난 재능을 가진 프로그래머에게 기회가 되고 있습니다. 이들은 코드를 깨뜨리려는 프로그래머들입니다. 이들은 다양한 이름으로 불리며 다양한 목적을 위해 일합니다. 가장 널리 알려진 이름은 해커이며, 해커의 목표는 매우 다양합니다.
저는 좋은 해커, 나쁜 해커, 귀여운 해커의 세 가지 유형을 봅니다. 좋은 해커는 활발한 연구 커뮤니티로, 새로운 소프트웨어와 오래된 소프트웨어를 끊임없이 조사하여 취약점을 찾습니다. 착한 해커는 재미와 스릴, 평판과 교육을 위해 해커 활동을 합니다. 나쁜 사람들은 이러한 모든 이유로 취약점을 조사하지만 대부분 돈이나 그에 상응하는 데이터를 노립니다.
사이버 보안 사각지대
오래된 소프트웨어는 사이버 보안의 허점입니다.
사이버 보안은 규모가 크고 성장하고 있는 분야입니다. 불법적인 침입과 악용으로부터 컴퓨터 시스템을 보호하는 데 어느 정도 도움이 되는 수많은 제품이 있습니다. 이러한 제품에는 멀웨어 및 바이러스 스캐너, 다양한 종류의 방화벽, 로그인 검사기 및 비밀번호 검사기, 데이터 스니퍼 등 다양한 구성 요소가 있으며, 각기 다른 공격 방법 또는 벡터를 방어하도록 설계되었습니다.
하지만 보안에는 사각지대가 있습니다. 아무리 정교한 보안 제품이라도 오래된 시스템을 완벽하게 보호할 수는 없습니다. 소프트웨어를 항상 최신 상태로 유지하는 것은 간단해야 하지만 그렇지 않습니다. 오래된 소프트웨어의 취약점으로 인해 시스템이 손상된 수많은 사고 사례를 통해 알 수 있습니다.
"시스템이 구식이 되는 이유는 무엇인가요?"라고 질문해 보겠습니다.
가장 확실한 대답은 우리가 허용했기 때문입니다. 시스템을 설치하고 업데이트하려면 시간과 노력이 필요합니다. 다운타임을 예약하고, 로그인하고, 명령을 실행하거나 GUI를 사용해야 합니다. 번거롭고 지루한 작업입니다. 수십, 수백 대의 서버에서 이 작업을 1년에 여러 번 반복해야 할 수도 있습니다.
서버 구성 관리 도구를 사용하면 작업이 더 쉬워집니다. 이렇게 하면 모든 서버를 동시에 업데이트할 수 있습니다. 하지만 좋은 도구는 비용이 들고 무료 도구는 배우는 데 시간이 걸리기 때문에 여유가 있는 사람은 거의 없습니다. 스크립트를 작성할 수도 있지만 일부 사용자에게는 프로그래밍 기술이 필요합니다.
Linux 관점
Linux는 다른 OS처럼 자체 업데이트가 불가능합니다.
지금까지 말씀드린 내용은 대부분의 최신 주류 비모바일 컴퓨터 플랫폼에 적용됩니다. 이제 그 중 일부인 Linux 서버 커뮤니티에 초점을 맞추고자 합니다. Linux는 다른 운영 체제와는 다르게 진화해 왔습니다. 리눅스는 취미로 시작하여 MINIX를 기반으로 구축되었습니다. 대부분 비상업적인 커뮤니티의 노력을 통해 성장했습니다. 라이브 Linux 플랫폼의 수가 증가함에 따라 해커 커뮤니티에 대한 매력도 커졌습니다. 또 다른 매력은 저렴하고 유연한 호스팅 플랫폼으로서 Linux의 인기였습니다. 해커들은 이를 좋아합니다: 단일 서버에서 수백 개의 웹사이트를 호스팅하는 경우가 많고, 해킹된 사이트 하나가 같은 서버의 다른 사이트로 연결되는 게이트웨이가 될 수 있기 때문입니다.
Linux는 오픈 소스 커뮤니티 개발의 장점인 무료 소프트웨어와 잘 지원되는 소프트웨어가 풍부하고 활발한 배포판이 많이 있습니다. 단점은 다음과 같은 현상으로 인해 기능이 느리게 발전한다는 것입니다. 위원회별 디자인대부분의 기여 개발자가 무보수로 일하기 때문일 수도 있습니다.
예를 들어, Linux에는 아직 완전히 통합된 자동 자체 업데이트 소프트웨어 관리 도구가 없지만, 이를 수행할 수 있는 몇 가지 방법이 있으며 그 중 일부는 나중에 살펴볼 것입니다. 이러한 도구가 있더라도 재부팅하지 않고는 핵심 시스템 커널을 자동으로 업데이트할 수 없습니다.
시스템이 쉽게 구식이 되는 또 다른 이유는 다운타임을 피하고 싶은 충동 때문입니다. 서버 관리자는 활성 사용자와 중요한 애플리케이션을 우선시하고 시스템 재부팅이 필요한 패치 설치를 미루기로 결정할 수 있습니다.
편집증 환자의 속삭임
하지만 시스템 관리자가 큰 소리로 말하지 않는 이유 중 하나가 있습니다. 서버가 다시 시작되지 않거나 패치가 무언가를 망가뜨릴지도 모른다는 두려움입니다. 편집증에 가깝고 증명할 수 없기 때문에 항상 인정되는 것은 아닙니다.
저는 이것이 정당한 걱정이라고 생각합니다. 커널 패치는 결국 핵심 운영 체제를 변경하는 것이기 때문입니다. 잘못 작성된 패치가 존재하며 패치가 시스템을 망가뜨리거나 미묘하게 변경하는 경우도 드물지 않습니다. 성능이나 기능에 대한 변경이든, 라이브 시스템을 관리하는 대부분의 관리자에게는 둘 다 허용되지 않습니다.
Linux 보안 허점 닫기
Linux 업데이트를 자동화하면 보안이 향상됩니다.
다음과 같은 스케줄링 프로그램을 결합하여 Linux 애플리케이션 및 커널을 직접 자동으로 업데이트할 수 있습니다. cron와 같은 플랫폼의 패키지 관리자에게 문의하세요. yum, apt또는 dnf. 일부 Linux 공급업체는 다음과 같은 기능을 수행하는 패키지를 만들어 이를 수행했습니다. 무인 업데이트 를 제공합니다. 그리고 Linux의 모든 것이 그렇듯이 각 버전은 다르게 작동합니다.
- Debian 그리고 Ubuntu 를 사용하여
unattended-upgrades패키지입니다. - Fedora에는 자동 업데이트를 위한 dnf-automatic이 있습니다.
- Red Hat은 yum-cron을 제공합니다(보조 채널을 통해서만 사용 가능, 즉 유료로 제공).
그러나 설정을 재구성하지 않고 사용하면 누구나 언젠가는 이와 같은 충격을 받을 수 있습니다:
The computer needs to restart to finish installing updates.
애플리케이션과 달리 무인 업데이트는 재부팅 없이 커널 업데이트를 설치할 수 있는 것이 아니기 때문입니다.
그리고 보안 허점도 있습니다. 아무도 사용 중인 서버를 임의로 재부팅하고 싶어하지 않습니다. 그렇기 때문에 무인 업데이트 구성에서 커널은 일반적으로 제외됩니다. 그러나 오래된 커널은 취약한 커널이며, 취약한 커널은 악용되기 쉽습니다.
관련 게시물: 커널을 업데이트해야 하는 5가지 나쁜 이유
누락된 링크와 허점
이 딜레마에 대한 해답은 라이브 패칭입니다. 이는 시스템을 재시작하거나 다운타임을 감수할 필요 없이 커널을 최신 보안 패치로 업데이트하는 방법입니다. 이는 Linux 시스템 업데이트 전략의 완전 자동화에서 빠진 연결 고리입니다.
무인 업데이트와 마찬가지로 Linux 공급업체마다 라이브 패치를 수행하는 방식이 다릅니다. 또한 라이브 패치를 무료로 제공하는 것도 쉽지 않아서 상용화를 피하기에는 라이브 패치가 너무 유용해졌습니다.
우분투의 경우 캐노니컬 라이브패치 서비스는 재부팅 없이 Linux 커널 보안 패치를 설치합니다. Red Hat은 Kpatch를, SUSE는 Kgraft를 출시했는데, 둘 다 같은 목적으로 출시되었지만 두 공급업체는 오라클이 Ksplice를 인수했을 때만 박차를 가하다가 결국 자체 버전 외에는 지원을 철회했습니다. 2014년 모든 주요 공급업체와 2.6.18 이전 커널을 지원하는 KernelCare가 시장에 등장하면서 예상치 못한 구세주가 등장했습니다.
결론
편의성이 아닌 보안을 위해 Linux 업데이트를 자동화하세요.
Linux는 개발 방식에 따라 이점을 누리기도 하고 어려움을 겪기도 합니다. 사이버 보안에 대해 아무리 신경을 써도 패치되지 않은 취약점 문제를 해결할 수는 없습니다.
애플리케이션 자동 업데이트를 위한 솔루션이 있지만 커널은 여전히 취약한 부분으로, 커널을 업데이트하려면 거의 항상 재부팅을 해야 합니다.
라이브 패치는 자동 업데이트 전략의 공백을 메워줍니다. 단순한 편의성이 아니라 Linux 서버 보안 전략의 필수적인 부분으로 간주해야 합니다.