Computer >> 컴퓨터 >  >> 체계 >> Linux

Ubuntu Livepatch로 서버 재부팅을 피하는 방법

Ubuntu Livepatch로 서버 재부팅을 피하는 방법

자신의 서버를 관리하는 경우 조만간 이 문제에 직면하게 됩니다. 운영 체제를 재부팅해야 하지만 시스템은 중단할 수 없는 중요한 서비스를 제공합니다.

그러나 처음에는 왜 재부팅합니까? apt-get upgrade 후 모든 것이 잘 작동하는 것 같습니다. 명령. 그러나 상황이 항상 보이는 대로 되지는 않습니다. 시스템은 Windows처럼 강제로 재부팅하지 않고 업그레이드할 때마다 계속 실행되지만 여전히 필요할 수 있습니다.

예를 들어, 시스템 코어(커널)의 취약점이 발견되면 패치가 적용되고 새 패키지로 서버에 푸시됩니다. 패치된 커널을 설치한 후 일부 파일은 디스크에 기록되지만 메모리(RAM)에 로드된 커널이기 때문에 여전히 프로그램을 실행하는 이전 커널입니다.

이것은 귀하의 서버가 이전에 발견된 보안 허점에 여전히 취약하다는 것을 의미합니다. 다른 프로세스, 데몬 및 서비스는 운영 체제를 다시 시작하지 않고 다시 로드할 수 있습니다. 그러나 커널은 시스템의 중심에 있으며 다음 부팅 시에만 다시 로드할 수 있습니다.

Ubuntu Livepatch는 다시 시작하지 않고 커널 보안 허점을 닫을 수 있도록 하여 이 문제를 해결합니다. 이렇게 하면 보안을 손상시키지 않고 몇 주 또는 몇 달 동안 재부팅을 방지하거나 지연할 수 있습니다.

라이브 패치의 핵심 아이디어는 간단합니다. 함수가 취약할 때 다시 작성하고 결함을 제거하고 메모리의 어딘가에 새 함수를 로드하는 것입니다. 함수가 호출되면 커널에서 코드를 실행하는 대신 재작성된 코드를 사용하도록 호출을 리디렉션합니다.

Ubuntu Livepatch로 서버 재부팅을 피하는 방법

그러나 간단하게 작동하는 것처럼 보이는 대부분의 것들이 그렇듯이 구현 및 기술적인 세부 사항은 그렇게 간단하지 않습니다.

Ubuntu에서 Livepatch를 설정하는 방법

이 페이지로 이동하여 Ubuntu One 계정을 만드십시오. (또는 이미 계정이 있는 경우 로그인하십시오.) 이메일을 확인하고 나중에 계정 확인 링크를 클릭하십시오. 다음으로 Canonical Livepatch 서비스 페이지를 방문하십시오. "Ubuntu 사용자"임을 선택하고 버튼을 클릭하여 토큰을 생성하십시오. 다음 페이지에서는 서버에 입력해야 하는 정확한 명령을 보여줍니다. 첫 번째 명령 뒤에 다음을 입력하십시오.

sudo snap install canonical-livepatch

스냅 패키지가 완전히 설치될 때까지 몇 초 동안 기다리십시오. 완료되면 다음 그림과 유사한 결과를 얻을 수 있습니다.

Ubuntu Livepatch로 서버 재부팅을 피하는 방법

마지막으로 Canonical 페이지의 마지막 명령으로

sudo canonical-livepatch enable #PASTE_YOUR_TOKEN_HERE

서비스가 활성화되고 사용자가 입력할 필요 없이 필요할 때마다 커널에 보안 패치를 자동으로 적용합니다.

필요한 경우 스냅 데몬 설치

드문 경우지만 이전 섹션의 첫 번째 명령이 실패하고 다음 오류 메시지가 표시될 수 있습니다. -bash: /usr/bin/snap: No such file or directory . 이 경우 서버 공급자가 기본적으로 스냅 데몬 서비스를 포함하지 않는 Ubuntu 운영 체제 이미지를 가지고 있음을 의미합니다. 다음을 사용하여 설치하십시오.

sudo apt update && sudo apt install snapd

이제 이전 섹션의 두 명령을 다시 실행하십시오.

서버 업데이트 유지

Livepatch는 필요한 모든 보안 업데이트를 커널에 적용합니다. 그러나 다음과 같은 명령을 사용하여 나머지 시스템을 정기적으로 업그레이드해야 합니다.

sudo apt update && sudo apt upgrade

매주 또는 가능하면 더 자주 해야 합니다. 중요한 시스템 패키지는 최신 보안 수정 사항을 적용하기 위해 다시 시작해야 한다는 메시지를 표시할 수 있습니다.

Ubuntu Livepatch로 서버 재부팅을 피하는 방법

이는 일반적으로 정상적인 재시작이며, 이는 프로세스에서 서비스를 방해하지 않음을 의미합니다. 예를 들어 이 경우 SSH 데몬은 활성 SSH 세션을 중단하지 않고 다시 시작되었습니다.

다른 상황에서는 서비스를 직접 다시 시작하여 패치된 새 코드가 다시 로드되고 보안 수정 사항이 적용되었는지 확인할 수 있습니다. 예를 들어, nginx 패키지가 업그레이드된 것을 발견했다면 다음을 실행할 수 있습니다.

systemctl restart nginx.service

nginx 데몬을 메모리에 다시 로드합니다. 그렇지 않으면 패키지가 업그레이드되더라도 오래되고 취약한 코드로 계속 실행되어 서버가 알려진 공격의 위험에 노출될 수 있습니다. 일부 패키지 업그레이드는 이 작업을 수행하지만 다른 패키지는 그렇지 않습니다. 그렇기 때문에 "적절한 업그레이드"가 하는 일에 주의를 기울이고 필요한 경우 일부 서비스를 다시 시작하는 것이 좋은 습관입니다. 로그에서 자동으로 수행되었는지 확인할 수도 있습니다.

결론

보시다시피 Canonical은 서버에서 이것을 구현하는 것을 다소 쉽게 만들었습니다. 커널에 관한 한 유지 관리 작업이 필요하지 않습니다. 당신이 할 수 있는 유일한 것은 실행

canonical-livepatch status

수시로 확인합니다.