약간의 서버 관리를 배우기 위해 개인 웹 사이트를 실행하는 간단한 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
?
답변
업데이트 된 내용에 따라 간단한 대답은 없습니다. 커널에 심각한 보안 문제가 있으면 가능한 빨리 다시 시작하는 것이 좋습니다. 커널에 사소한 수정 사항 만있는 경우 재시작이 연기 될 수 있습니다.
99.9 % 이상의 가용성을 보장하는 경우 거의 항상 서비스를 중단하지 않고 노드를 하나씩 재부팅 할 수있는 클러스터형 시스템이 있습니다.
따라서 첫 번째 시스템을 재부팅하고 클러스터에 다시 연결하십시오. 그런 다음 두 번째 등등. 그러면 서비스를 사용할 수 없게됩니다.
답변
주제 솔루션을위한 애드온
zabbix 모니터링 시스템의 ‘재부팅 요구 사항’에 대해 유사한 검사를 수행합니다.
‘Topic’솔루션에 2 가지 문제가 있습니다.
- 적성은 대개 스크립트에서 제대로 작동하지 않습니다. 나는 몇 시간을 죽 였지만 여전히 zabbix와 작동하지 않았습니다.
- 1 개의 변경 로그에 긴급 업데이트가 포함 된 경우 수표에 항상 긍정적 인 결과가 표시됩니다
내 논리는 :
- 시스템 재부팅이 필요한 모든 패키지에 대해 changelog에서만 마지막 변경 사항 확인
- 출력이 가장 높은 우선 순위 업데이트 만 표시
데비안 문서를 사용하여 ‘긴급’에 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’을 반환
누군가가 시간을 절약하는 데 도움이되기를 바랍니다.)
답변
그래도 궁금한 점은 99.9999etc %의 웹 서버에서 어떻게 작동합니까? 보안 업데이트가 설치되지 않아서 보안이 다시 시작되지 않고 보안이 침해 될 위험이 있습니까? 아니면 다운 타임을 당연한 것으로 생각합니까?
보안상의 이유로 * 시스템을 다시 시작해야합니다 * 가 나타나면 큰 웹 서버가 다시 시작됩니다 .
그러나 이것은 사용자에게 투명하며 큰 서버는 종종 동일한 파일을 저장하고 동일한 사이트를 표시하는 두세 개의 서버를 실행하기 때문에 사이트가 다운되지 않습니다. 첫 번째 서버는 주 서버이고 다른 두 서버는 보조 서버이며 주 서버가 다운 된 경우에만 사용됩니다.