보안을 위해 *** 시스템을 다시 시작해야합니까?


56

약간의 서버 관리를 배우기 위해 개인 웹 사이트를 실행하는 간단한 Ubuntu 14.04 서버를 설정했습니다. 보안 업데이트를 자동으로 설치하도록 설정했지만 다른 업데이트는 제외합니다. 이것은 꽤 잘 작동하는 것 같습니다. 때때로 서버에 로그인 할 때 (ssh로) 메시지가 나타납니다.

*** System restart required ***

이 일이 발생했을 때 우분투를 간단하게 재부팅했는데 모두 괜찮 았습니다. 간단한 개인 웹 사이트이기 때문에 괜찮습니다. 그래도 궁금한 점은 99.9999etc %의 웹 서버에서 어떻게 작동합니까? 보안 업데이트가 설치되지 않아서 보안이 다시 시작되지 않고 보안이 침해 될 위험이 있습니까? 아니면 다운 타임을 당연한 것으로 생각합니까?

이것이 매우 중요한 프로덕션 서버 인 경우이 문제를 어떻게 처리해야합니까? 모든 팁을 환영합니다!

[편집] cat /var/run/reboot-required.pkgs재부팅을 일으키는 패키지를 나열 할 수 있다는 것을 알고 있습니다 . 이 명령은 현재 다음을 생성합니다.

linux-image-3.13.0-36-generic
linux-base
dbus
linux-image-extra-3.13.0-36-generic
linux-base

하지만 업데이트를 다시 시작하지 않으면 심각한 보안 취약점이 있는지 여부를 어떻게 알 수 있습니까?

[EDIT2] 자, 이제 내가 찾은 명령을 하나로 결합했습니다.

xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high

이것이 출력되지 않으면 긴급 성이 높은 보안 문제가없는 것 같습니다.

마지막 질문 불구하고 : 있습니다 low, medium그리고 high유일한 긴급 가능성, 또는 더 이상 예를 들어 같은있다 critical거나 extremelyimportant?


질문을 이해하지 못합니다. 트래픽이 많은 웹 사이트는 트래픽이 적은 기간 동안이 다운 타임을 예약합니다. 얼마나 긴급한지 정확히 업데이트되는 내용에 따라 다릅니다.
Ramhound

14
나는 그들이 "핫 네트워크 질문"목록에서 질문을 보았고, 비속어가 무엇인지 궁금하기 때문에 많은 사람들이 여기에 온 궁금해 ... * 제기 손 *
데이비드 Richerby

6
@Ramhound : 흠, 그들은 유지 보수 기간 동안 보조 서버로 투명하게 전환합니다.
Monica와의 가벼움 경주

1
마지막 질문 다시 : 을 걸러 내고 다른 모든 / 알 수없는 레벨을 긴급하게 고려할 것을 명심하고 있습니다. | grep 'urgency=' | egrep -v '=(low|medium)'
KajMagnus

답변:


45

업데이트 된 내용에 따라 간단한 대답은 없습니다. 커널에 심각한 보안 문제가 있으면 가능한 빨리 다시 시작하는 것이 좋습니다. 커널에 사소한 수정 사항 만있는 경우 재시작이 연기 될 수 있습니다.

99.9 % 이상의 가용성을 보장하는 경우 거의 항상 서비스를 중단하지 않고 노드를 하나씩 재부팅 할 수있는 클러스터형 시스템이 있습니다.

따라서 첫 번째 시스템을 재부팅하고 클러스터에 다시 연결하십시오. 그런 다음 두 번째 등등. 그러면 서비스를 사용할 수 없게됩니다.


2
답변 주셔서 감사합니다. 나는 나의 초기 질문에 작은 조각을 추가했다; cat /var/run/reboot-required.pkgs재부팅이 필요한 패키지를 얻는 방법 을 알고 있습니다 . 그러나 이것이 사소한 수정인지 아니면 심각한 보안 취약점인지 어떻게 알 수 있습니까?
kramer65

2
@ kramer65 각 패키지에는 변경 로그가 있습니다. 예를 들어 커널의 changlog는 여기 에서 찾을 수 있습니다 .
Uwe Plonus

2
그렇다면 변경 사항이 중요한지 여부를 결정하는 것은 sysadmin의 책임입니다 (예 :이 경우 본인). 나는 다른 모든 패키지를 제외하고 Linux 커널에 대해 이것을 결정할 지식이 너무 적습니다. 보안에 업데이트가 절대적으로 필요한지 여부를 확인할 수있는 중앙 위치가 없습니까?
kramer65

8
@ kramer65 Run aptitude changelog <package>, 여기에 예제 출력이 있습니다. paste.ubuntu.com/8410798 (이것은 데비안 시스템에 있지만 우분투에서도 마찬가지입니다.)
nyuszika7h

5
모든 도움을 주셔서 감사합니다. 마지막으로 내가 배운 모든 것을 하나의 명령으로 결합 xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high했습니다 . (초기 질문에도 추가했습니다) 어떤 패키지에 패치가 긴급한지에 대한 결과가 나옵니다. 그 후 개별 패키지를 검사 할 수 있습니다. 모든 답변과 아이디어에 대해 백만 감사합니다!
kramer65

3

주제 솔루션을위한 애드온

zabbix 모니터링 시스템의 '재부팅 요구 사항'에 대해 유사한 검사를 수행합니다.

'Topic'솔루션에 2 가지 문제가 있습니다.

  1. 적성은 대개 스크립트에서 제대로 작동하지 않습니다. 나는 몇 시간을 죽 였지만 여전히 zabbix와 작동하지 않았습니다.
  2. 1 개의 변경 로그에 긴급 업데이트가 포함 된 경우 수표에 항상 긍정적 인 결과가 표시됩니다

내 논리는 :

  1. 시스템 재부팅이 필요한 모든 패키지에 대해 changelog에서만 마지막 변경 사항 확인
  2. 출력이 가장 높은 우선 순위 업데이트 만 표시

데비안 문서를 사용하여 '긴급'에 5 가지 가능한 값을 발견했으며 그 뒤에 equal ( "=") 또는 semicolon ( ":") 문자가 올 수 있다는 사실을 발견했습니다. 또한 대문자와 소문자가있을 수 있습니다

그래서 나는 다음과 같이 끝냈습니다 :

#!/bin/bash
##################################
# Zabbix monitoring script
#
# Checking urgency in changelog 
# for updates which require system restart
#
##################################
# Contact:
#  anton.lugovoi@yandex.ru
##################################
# ChangeLog:
#  20151205    initial creation
#  20151208    check uniq packages only 
##################################

case "$1" in

status)
    if [ -f /var/run/reboot-required ]; then
      echo 1
    else
      echo 0
    fi 
    ;;

urgency)
    if [ -f /var/run/reboot-required.pkgs ]; then
      while read pkg; do
        tmp=`/usr/bin/apt-get changelog $pkg | \
             /bin/grep -m1 -ioP '(?<=[Uu]rgency[=:])(low|medium|high|emergency|critical)' | \
             tr '[:upper:]' '[:lower:]'`
        if [ -n $tmp ]; then
          if   [ "$tmp" == "low" ] && \
               [ "$urgency" != "medium" ] && \
               [ "$urgency" != "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=low
          elif [ "$tmp" == "medium" ] && \
               [ "$urgency" != "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=medium
          elif [ "$tmp" == "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=high
          elif [ "$tmp" == "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=emergency
          elif [ "$tmp" == "critical" ]; then 
            urgency=critical
            break
          fi
        fi 
      done < <(sort -u /run/reboot-required.pkgs)
    else
      urgency=none
    fi

    case "$urgency" in
        none)      urgency=0 ;;
        low)       urgency=1 ;;
        medium)    urgency=2 ;;
        high)      urgency=3 ;;
        emergency) urgency=4 ;;
        critical)  urgency=5 ;;
        *)         urgency=42 ;;
    esac

    echo $urgency
    ;;
esac
exit 0

결과적으로 :

  • reboot_required_check.sh status 재부팅이 필요한 경우 1을, 필요하지 않은 경우 0을 반환
  • reboot_required_check.sh urgency 가장 높은 '긴급'수준을 반환하거나 재부팅이 필요하지 않은 경우 '0'을 반환

누군가가 시간을 절약하는 데 도움이되기를 바랍니다.)


0

그래도 궁금한 점은 99.9999etc %의 웹 서버에서 어떻게 작동합니까? 보안 업데이트가 설치되지 않아서 보안이 다시 시작되지 않고 보안이 침해 될 위험이 있습니까? 아니면 다운 타임을 당연한 것으로 생각합니까?

보안상의 이유로 * 시스템을 다시 시작해야합니다 * 가 나타나면 큰 웹 서버가 다시 시작됩니다 .

그러나 이것은 사용자에게 투명하며 큰 서버는 종종 동일한 파일을 저장하고 동일한 사이트를 표시하는 두세 개의 서버를 실행하기 때문에 사이트가 다운되지 않습니다. 첫 번째 서버는 주 서버이고 다른 두 서버는 보조 서버이며 주 서버가 다운 된 경우에만 사용됩니다.


1
이론적으로는 맞지만 Big web serversLinux의 사용자 정의 버전을 실행 하십시오 . System restart required대화를 보지 못하고 보안 유지에 필요한 사항을 업데이트합니다. 대부분의 경우 시스템이 실행되는 동안 모든 업데이트가 가능하지는 않지만 대부분의 경우 업데이트를 수행 할 수 있습니다 (재부팅없이 실행중인 시스템에서 Linux 커널을 업데이트하는 것이 가능하다고 생각합니다).
joeeey

흥미 롭군 Amazon에 서버가 있고이 메시지로 인해 종종 서버를 다시 시작합니다. 내 서버에서 Ubuntu를 실행하고 있습니다. 매번 재부팅하지 않아도되도록 사용자 정의하는 방법은 무엇입니까?
rom

Amazon 서버에 대한 경험이 없습니다. Big web servers전용 서버 및 VPS에서 실행됩니다. 이로 인해 시스템 관리자는 소프트웨어를보다 강력하게 제어 할 수 있습니다. Amazon은 서버에 루트 셸 액세스를 제공합니까?
joeeey

예, 루트 액세스가 가능합니다.
rom

그런 다음 패키지를 수동으로 업데이트 한 다음 영향을받는 서비스를 다시 시작 하고 커널 업데이트에 Ksplice 와 같은 것을 사용하는 것이 한 가지 방법입니다. Ksplice freezes execution of a computer so it is the only program running는 패치를 적용 할 때 웹 서버 프로세스가 '동결'되어 있기 때문에 약간의 다운 타임이있을 수 있습니다. 이것은 @Uwe Plonus의 답변이 나오는 곳입니다.
joeeey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.