(UNIX) 프로덕션 서버를 정상적으로 인수하는 팁


10

수개월의 방치, 전자 우편 화염 및 관리 전투에서 현재의 sysadmin이 해고되어 "서버 자격 증명"을 전달했습니다. 이러한 자격 증명은 루트 암호로 구성되며 절차, 설명서, 팁, 아무것도 없습니다.

내 질문은 : 그가 boobytrap을 남겨두고 있다고 가정하면 가능한 한 적은 가동 중지 시간으로 서버를 우아하게 인수하는 방법은 무엇입니까?

세부 사항은 다음과 같습니다.

  • 지하실의 서버 팜에 위치한 하나의 프로덕션 서버; 우분투 서버 9.x, 아마도 grsec 패치 (마지막으로 관리자에게 물었다는 소문)
  • 모든 내부 문서, 파일 저장소, 위키 등을 포함하는 하나의 내부 서버. 다시 말하지만, 몇 년 된 우분투 서버.

두 서버가 모두 패치되어 최신 상태라고 가정하면, 정당한 이유가없는 한 (즉, 상위 관리 부서에 설명 할 수있는 경우가 아니라면) 해킹하려고하지 않습니다.

프로덕션 서버에는 호스팅되는 몇 개의 웹 사이트 (표준 apache-php-mysql), LDAP 서버, ZIMBRA 전자 메일 제품군 / 서버가 있으며 몇 개의 vmware 워크 스테이션이 실행 중인지 알 수 있습니다. 거기에서 무슨 일이 일어나고 있는지 전혀 모른다. 아마도 하나는 LDAP 마스터 일 것입니다.

내부 서버에는 내부 wiki / cms, 프로덕션 서버에서 자격 증명을 복제하는 LDAP 슬레이브, 몇 개의 vmware 워크 스테이션 및 실행중인 백업이 있습니다.

서버 팜의 관리자에게 가서 서버를 가리키고 ' sudo서버를 종료하십시오' 라고 말하고 단일 사용자 모드로 로그인하여 사용하십시오. 내부 서버와 동일합니다. 그래도 다운 타임, 관리 상실, 오래된 시스템 관리자가 저에게 '발? 당신은 내 일과 다른 성가신 일을 할 수 없으며, 가장 중요한 것은 잠재적으로 몇주의 무급 시간을 잃어야 할 것입니다.

스펙트럼의 다른 쪽 끝에서 서버에 루트 및 인치로 로그인하여 무슨 일이 일어나고 있는지 이해할 수 있습니다. 놀라움을 유발할 수있는 모든 위험이 남아 있습니다.

나는 중간에 해결책을 찾고 있습니다. 무슨 일이 일어나고 있는지, 어떻게되는지 이해하면서 가장 중요한 것은 뒤에있는 부비 트랩을 트리거하지 않도록하십시오 .

당신의 제안은 무엇입니까?

지금까지 내부 서버로 '연습', 네트워크 연결 끊기, 라이브 CD로 재부팅, 루트 파일 시스템을 USB 드라이브에 덤프 및 연결이 끊어진 분리 된 가상 머신에로드하여 이전의 sysadmin 방법을 이해했습니다. 생각 (일명 '적을 알아라'). 프로덕션 서버와 동일한 기능을 수행 할 수 있지만 전체 덤프는 누군가에게 통지합니다. 아마도 루트로 로그인하고 crontab을 확인하고 .profile에서 실행 된 명령이 있는지 확인하고 마지막 로그를 덤프하는 등의 작업을 수행 할 수 있습니다.

그게 내가 여기있는 이유입니다. 아무리 작은 힌트라도 대단히 감사하겠습니다.

시간도 문제입니다. 몇 시간 또는 몇 주 내에 트리거가 발생할 수 있습니다. 나쁜 할리우드 영화 중 하나 인 것 같지 않습니까?


5
왜 sysadmin이 해고 되었습니까? 이것은 승리가없는 상황처럼 보입니다. 수행 할 작업과 서버에서 정확히 수행 할 작업이 확실하지 않은 경우이 작업이 제대로 완료되지 않습니다.
cstamas

@cstamas sysadmin은 우리가 한 모든 요청에 ​​대해 (즉, 메일 목록에 사용자를 추가하거나 전자 메일 별칭을 만드는 등) t = 1 일에서 t = 2 개월 사이의 임의 변수 ()로 인해 해고되었습니다. 포함한). 그리고 그는 그것을 인정하지 않았습니다. 또한 여기서 자세히 설명하지 않는 다른 나쁜 행동들도 있습니다.
lorenzog 2016 년

@lorenzog는 이제 의미가 있습니다. 쉬운 일이 아닌 것 같습니다. 이미 큰 답변이 있습니다. 행운을 빕니다!
cstamas 2016 년

1
@serverhorror : 아니요, 그들은이 회사에 합류하기 전에 단순히 그를 고용했고, 이제 그는 충분하지 않은 것으로 판명되었습니다. 나는 '그를 다루는'임무를 수행하기 전에 그를 알고 있었기 때문에. 가정에주의하십시오.
lorenzog 2016 년

1
@lorenzog : 이것은 당신에 관한 것이 아닙니다. 악의가 단지 관찰 (주관적인 관찰 부여) : 내가 말했듯이 - 요점은 실제로 매니저 장애 (입니다 누구든지) 문서화되지 않은 기반 시설의 상황도 일어날 수 있다는 점이다
마틴 M.

답변:


12

다른 사람들이 말했듯이 느슨한 느슨한 상황처럼 보입니다.

(끝에서 시작)

  • 완전히 새로운 배포

물론 서버를 중단하고 설치 관리자가 마술처럼 할 수는 없습니다.

일반 프로세스

  • 백업 서버 예산 확보 (데이터 스토리지에서와 같이 백업)
  • 데이터의 스냅 샷을 생성하기 전에 그 존재를 배치 아무것도
  • 경영진이 승인 한 것입니다!
  • 요구 사항 목록을 수집하십시오 (VMWare 인스턴스를 사용하는 위키 필요, ...).
    • 관리 에서
    • 사용자로부터
  • 경영진이 승인 한 것입니다!
  • 목록에없는 서비스를 일주일 동안 종료하십시오 (한 번에 하나의 서비스 -외부 서비스를 종료하려고하지만 동일한 호스트의 응용 프로그램에서 여전히 사용될 수 있다고 의심되는 경우 iptables가 친구가 될 수 있습니다)
    • 반응이 없습니까? -> 최종 백업, 서버에서 제거
    • 반응? -> 서비스 사용자와 대화
    • 경영진이 서명 한 새로운 요구 사항 Geet을 수집하십시오 !
  • 한 달 동안 비공개 서비스를 모두 다운하고 반응이 없습니까? -> rm -rf $service(말소리가 들리지만 서비스를 해체하는 것입니다)
  • 예비 서버 예산을 확보하십시오
  • 한 번에 하나의 서비스를 스페어로 마이그레이션
  • 경영진에 의해 서명을 받으십시오!
  • 마이그레이션 된 서버 종료 (전원 끄기)
  • 더 많은 사람들이 당신에게 비명을 지르는 것을 발견하십시오-> 예, 당신은 남은 음식을 발견했습니다.
  • 새로운 요구 사항을 모으다
  • 다시 시작하고 서비스를 마이그레이션
  • 한 달 동안 사람이 오지 않을 때까지 마지막 4 단계를 반복하십시오.
  • 서버를 재배치하십시오 (그리고 경영진에 의해 사인 오프되도록하십시오!)
  • 전체 과정을 헹구고 반복하십시오.
    • 재배치 된 서버는 새로운 예비입니다

무엇을 얻었습니까?

  • 모든 서비스의 인벤토리 (귀하와 관리)
  • 문서화 (관리를 위해 무엇인가를 적어 놓아야하는 이유는 무엇입니까?

그렇게 했으므로 전혀 재미가 없습니다 :(

경영진서명 한 이유는 무엇 입니까?

  • 문제를 가시화
  • 해고되지 않도록하십시오
  • 위험을 설명 할 기회
    • 그들이 당신을 원하지 않는다면 괜찮지 만, 결국 투자 가치가 있는지 판단하기에 충분한 정보를 얻은 후에 결정을 내립니다.

아, 그리고 시작하기 전에 전체 계획을 제시하십시오 . 최악의 상황과 최상의 경우에 어떤 일이 일어날 지 예상하십시오.

그것은 것입니다 당신이 문서가없는 경우에 상관없이 재배치의 많은 시간을 요했다. 백도어를 생각할 필요가 없습니다. IMHO 문서를 가지고 있지 않은 경우 롤링 마이그레이션은 회사에 가치를 제공 할 제정신 상태에 도달하는 유일한 방법입니다.


그것은 아주 좋은 관점입니다. 감사합니다. 나는 당신의 조언을 확실히 따를 것입니다 : 관리에서 로그 오프하고 서버를 천천히 재배치하십시오. 상처를 입을 수는 있지만 가장 합리적인 조치 과정처럼 들립니다.
lorenzog 2016 년

: 적절한 문서에 의해 나는이 제안 serverfault.com/questions/25404/...를 (또한 일반적인 주제를 참조) 잘 (적어도 나를 위해) 작동
마틴 M.

4

이전 관리자가 문제가 있다고 생각할만한 이유가 있습니까? 아니면 많은 영화를 보십니까?

나는 간절히 요구하지 않고, 당신이 어떤 종류의 위협이 있다고 생각하는지 그리고 그것이 얼마나 가능한지 생각하려고 노력하고 있습니다. 어떤 종류의 심각한 파괴적 문제가 실제로 존재할 가능성이 매우 높다고 생각 한다면, 성공적인 네트워크 침입 인 것처럼 취급하는 것이 좋습니다 .

어쨌든, 상사는이 문제를 처리하는 동안 다운 타임 중단을 원하지 않습니다. 시스템에 결함이있는 경우 계획된 다운 타임과 계획되지 않은 다운 타임에 대한 태도는 무엇입니까 (실제 결함 또는 불량 관리자) 및 자신의 태도가 현실적이라면 여기에 실제로 문제가 생길 확률에 대한 귀하의 평가.

무엇을 하든지 다음을 고려하십시오.

지금 바로 시스템 이미지를 촬영하십시오 . 다른 일을하기 전에 실제로, 둘을 가져 가서 한쪽을 치우고 시스템에서 어떤 일이 발생하는지 알 때까지 다시 만지지 마십시오. 시스템을 인수했을 때의 시스템 기록입니다.

"두 번째"이미지 세트를 일부 가상 머신으로 복원하고이를 사용하여 상황을 조사하십시오. 특정 날짜 이후에 트리거되는 것이 걱정되는 경우 가상 머신에서 날짜를 1 년 정도 앞으로 설정하십시오.


나는 우리가 최선의 조건에 참여하지 않았기 때문에 숨어있는 무언가가 있다고 생각할 이유가 있습니다. 이전의 sysadmin은 좋은 친구 였고, 우리는 대학 시절 룸메이트였으며 나중에 소프트웨어 개발 및 프로젝트 관리의 길을 갔을 때 그가 sysadmin이되기 위해 사용했던 많은 트릭을 "가르쳤습니다". 개인적 감정이 관련되어 있기 때문에 (그가 나를 해고했다고 비난했다) 나는 합리적인 행동을 기대할 수 없다. 아들이 아버지에게 선하다는 것을 어느 정도 입증하고 싶은 아버지 / 아들 관계로 받아들이십시오.
lorenzog

4

우선, 만약 당신이 이것에 여분의 시간을 투자한다면 실제로 그에 대한 대가받는 것이 좋습니다. 당신은 당신의 말로 판단 할 때, 당신이 지불하지 않은 초과 근무를 사실로 받아 들인 것 같습니다-그것은 내 의견으로는 그런 식으로해서는 안되며, 특히 다른 사람의 잘못 때문에 그러한 핀치에 빠지면 안됩니다 (관리, 이전 sysadmin 또는 둘 다의 조합 일 수 있습니다.

서버를 종료하고 단일 사용자 모드 (init = / bin / sh 또는 grub에서 1)로 부팅하여 루트 로그인시 실행되는 명령을 확인하십시오. 여기서 가동 중지 시간이 필요합니다. 데이터를 유지할 수있게하려면 가동 중지 시간 외에 일부 가동 중지 시간이 있다는 것을 경영진에게 분명히하십시오.

그런 다음 모든 cronjob을 합법적으로 보더라도 살펴보십시오. 다운 타임을 의미하더라도 가능한 한 빨리 전체 백업을 수행하십시오. 원하는 경우 전체 백업을 실행중인 VM으로 전환 할 수 있습니다.

그런 다음 새로운 서버 나 유능한 VM을 사용할 수 있다면 실제로 서비스를 새롭고 깨끗한 환경으로 하나씩 마이그레이션 할 것입니다. 감지 된 다운 타임을 최소화하기 위해 여러 단계로이를 수행 할 수 있습니다. 기본 시스템에 대한 자신감을 회복하면서 서비스에 대한 심도있는 지식을 많이 얻을 수 있습니다.

그 동안 도구를 chkrootkit 로 사용하여 루트킷을 확인할 수 있습니다 . 서버에서 nessus 를 실행 하여 이전 관리자가 사용할 수있는 보안 허점을 찾으십시오.

편집 : 나는 당신의 질문의 "우아한"부분과 내가 할 수있는 문제를 다루지 않았다고 생각합니다. 첫 번째 단계 (로그인 트랩을 확인하기 위해 단일 사용자 모드로 이동)는 아마도 건너 뛸 수 있습니다. 이전 sysadmin은 루트 암호를 제공하고 로그인을 설정하여 rm -rf /모든 파일을 직접 삭제하는 것과 거의 동일합니다. 아마 그 일에 아무 의미가 없습니다. 백업 부분에 따라 : rsync대부분의 초기 백업을 온라인으로 수행하고 가동 중지 시간을 최소화 할 수 있도록 기반 솔루션을 사용해보십시오 .


0

해당 서버에서 실행되는 앱을 배우는 데 시간을 투자 할 것입니다. 언제 무엇을 알고 있는지 새 서버를 설치할 수 있습니다. 백도어라고 생각되는 경우 단일 모드로 부팅하거나 서버와 외부 네트워크 사이에 방화벽을 설치하는 것이 좋습니다.


0

보안에 대한 편집증을 얻고 있습니다. 편집증을 가질 필요가 없습니다. (부코 트랩에 대해 이야기하십시오.) 설치된 소프트웨어 목록을 살펴보십시오. 실행중인 서비스 (netstat, ps 등)를 확인하고 cron 작업을 참조하십시오. 계정을 삭제하지 않고 이전 sys admin 사용자 계정을 비활성화합니다 (쉘을 nologin으로 지정하여 쉽게 수행). 로그 파일을 참조하십시오. 나는이 단계들과 당신이 서버의 사용을 추측 할 수있는 회사의 필요에 대한 당신의 지식으로부터 생각합니다, 나는 당신이 어떤 큰 구도없이 그것들을 유지할 수 있어야한다고 생각합니다.


1
나는 그것이 보안에 관한 것이 아니라는 데 동의합니다 (그렇지 않으면 이전 관리자를 전혀 고용하지 않아야합니다). 그러나 그것은 얼마나 많은 가치를 더할 수 있는지에 관한 것입니다. 나는 모든 나머지에 대해 완전히 동의하지 않습니다. 사물을 관리하기위한 인벤토리가 없으면 건전한 방법은 없습니다. 당신이 들어 본 적이없는 무언가가 작동을 멈 췄기 때문에 일정 시간이 지나면 사용자가 찾아올 것입니다. 결국 모든 사용자가 볼 수있는 서비스 뒤에는 약간의 인프라가 있습니다. 그리고 그 서비스들에 대한 문서조차 없습니다.
Martin M.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.