내 리눅스 서버가 해킹당했습니다. 어떻게 그리고 언제 완료되었는지 어떻게 알 수 있습니까?


11

데스크탑 우분투 배포판을 실행하는 홈 서버가 있습니다. 내 crontab에서 이것을 찾았습니다.

* * * * * /home/username/ /.access.log/y2kupdate >/dev/null 2>&1

그리고 그 디렉토리 (사용자 이름 / 뒤에 공백은 디렉토리 이름)를 볼 때 분명히해서는 안되는 일을하는 많은 스크립트를 발견했습니다.

컴퓨터를 지우고 다시 설치하기 전에 보안 위반의 원인과 수행시기를 확인하고 싶습니다. 그래서 나는 같은 구멍을 다시 열지 않습니다.

어떤 로그 파일을보아야합니까? 내가 알고있는 유일한 서버는 sshd와 lighttpd입니다.

이와 같은 일이 다시 발생하는지 감지하려면 어떻게해야합니까?


@SU로 이동하기로 투표 한 사람 : 바이러스 / 해킹 법의학이 서버 오류보다 수퍼 유저와 관련이 있다고 생각하십니까?
Chris S

3
계획은 컴퓨터를 닦고 물건을 다시 설치하는 것입니다. 그것은 당신이 무엇을 발견하든간에 옳은 일입니다. 왜냐하면 당신이 찾지 못한 것이 더 나쁠 가능성이 항상 있기 때문 입니다.
mattdm

그러나 실제로 SU 또는 Serverfault가 아닌 IT Security ( security.stackexchange.com ) 로 전환하기 위해 투표해야합니다 !
Rory Alsop

답변:


4

먼저 컴퓨터와 네트워크의 연결이 끊어 졌는지 확인하십시오.
둘째, 해킹 된 OS를 다시 부팅하기 전에 드라이브에서 중요한 데이터를 가져와야합니다.

문제의 파일에서 타임 스탬프를 확인하십시오. 종종 그들은 정확합니다.
httpd 로그와 인증 로그가 지워지지 않은 경우 상호 참조하십시오. 다른 하나가 지워졌다면, 당신은 이것이 진입 수단 일 수 있습니다. 그들이 여전히 전술이라면, 그들이 로그에서 어떻게 들어 왔는지에 대한 더 많은 정보를 얻을 수있을 것입니다.

모두 지워지면, 당신은 꽤 망했다. 가치보다 발생한 일을 파악하는 데 시간이 더 걸릴 것입니다.

이 두 서비스가 실행 중이라고 언급했는데 다른 모든 것에 액세스하지 못하도록하는 훌륭한 방화벽이 있습니까? 포트 22에서 SSH를 허용 했습니까? 귀하의 로그인은 합리적으로 추측하기 쉽습니다. 비밀번호 로그인을 허용 했습니까? 비밀번호 로그인에 대한 실제 속도 제한이 있습니까? lighttpd와 함께 추가 소프트웨어가 설치되어 있습니까? 펄; PHP; cgi; CMS 또는 유사한? 모든 소프트웨어의 업데이트 버전을 실행 중입니다. 실행중인 모든 소프트웨어에 대한 보안 알림에 가입하고 모든 알림을 신중하게 평가하여 사용자가 실행 / 노출하는 소프트웨어에 적용되는지 확인합니까?


설치는 표준 Ubuntu Desktop Edition 10.x였으며 보안을 위해 특별히 수행 된 것은 없습니다. 기본적으로 충분한 방화벽이 있다고 가정했습니다. 맞지 않습니까? 포트 22에서 비밀번호 로그인을 허용했지만 비밀번호는 임의의 8 자 문자열입니다. 충분해야합니까?
Jonatan Kallus

기본 방화벽은 "Wide Open-No Firewall"이라고 생각합니다. 신중하게 구성하지 않으면 아무것도하지 않습니다.
Chris S

문제는 어떤 방화벽보다 어떤 서비스를 실행 하느냐입니다. 방화벽이 액세스를 위해 특정 IP를 구성하도록 설정되어 있지 않으면 가장 좋은 방화벽은 먼저 불필요한 서비스를 실행하지 않는 것입니다. 그리고 네트워크 설정은 무엇입니까? 인터넷에 열려 있습니까? 개인 네트워크 내부? 내부 네트워크가 인터넷에 들어가거나 DMZ에 서버가있는 시점에 방화벽이 없었습니까?
Bart Silverstrim

서버가 인터넷에 직접 연결되었습니다. 라우터로도 사용했습니다. 기본 방화벽이 활짝 열려 있다면, 나는이 일이 일어날 수 있는지에 대한 충분한 explaination 것 같아요 ..
요나탄 Kallus에게

4

이것은 그 자체로 일종의 주제입니다. 자세한 정보는 리눅스 포렌식을 위해 구글을 사용할 수 있습니다. 기본적으로 오프라인 분석을 위해 드라이브 이미지를 먼저 만든 다음 컴퓨터를 닦고 깨끗한 슬레이트에서 설치해야합니다.

그리고 모든 부수적 인 것을 기억하십시오. 컴퓨터를 사용하는 사람은 누구나 암호를 손상했을 수 있습니다. "깨끗한 방"(격리 된 VM)에 들어갈 때까지 암호를 변경하고 오프라인으로 유지하십시오.

그렇지 않으면 로그 (위조 될 수 있음)를 확인하고 응용 프로그램 (php 스크립트? 데이터베이스? 최신 수정 사항으로 업데이트 했습니까? 다른 사용자가 암호를 제공합니까?)을 확인하는 것입니다.

서버에서 법 의학적 작업을 수행하고 구멍을 확인해야하기 때문에 말 그대로 질문에 쉽게 대답 할 수있는 방법은 없습니다. 자동화 된 도구를 사용할 수 있지만 공격자가 루트 권한을 가지고 있다면 더 이상 시스템 바이너리를 신뢰할 수없고 로그를 신뢰할 수 없다는 점을 명심하십시오.

향후 공격의 경우 보안 수준에 따라 로그를 시스템 로그 저장에 사용 된 시스템으로 리디렉션하여 시작할 수 있습니다. 공격 공간을 줄이기 위해 다른 액세스 권한이 없습니다.

Tripwire와 같은 시스템에서 체크섬 소프트웨어를 실행하여 파일의 무결성을 검사 할 수도 있습니다.

물론 업데이트를 최신 상태로 유지하고 루트킷을 검사하는 스캔 소프트웨어를 실행하십시오.

다시 한번, 보안은 문제가되지 않습니다. 그것은 그 자체로도 전문이 될 수 있습니다. 계층화 된 보안은 네트워크에 속하지 않은 호스트 / IP를 확인하고 시스템에 대한 모든 액세스를 암호화하며 시스템에서 발견 된 매일의 변경 로그를 사용자에게 보내고 네트워크에 허니팟을 설정하는 것만 큼 엄격해질 수 있습니다. 이상한 활동을 찾습니다 (내 서버가 허니팟 컴퓨터의 포트 25에 연결하려고하는 이유는 무엇입니까?)

가장 먼저 활동을 확인하려면 디스크 이미지를 가져 와서 서버 소프트웨어를 다시 설치하십시오. 기스로부터. 서버 바이너리는 더 이상 신뢰할 수 없습니다.

편집-SSH를 실행 한 이후에 발생하는 다른 일-denyhosts를 설치하십시오. XD 시도 후 SSHD에서 시스템에 대한 자동 공격이 잠기도록 구성 할 수 있습니다. 또한 자동화 된 공격을 최소화하기 위해 잠긴 IP를 공유하기 위해 "클라우드"의 다른 거부 서버에서 업데이트하도록 구성 할 수도 있습니다. 수신중인 포트를 이동할 수도 있습니다. 많은 사람들은 그것이 모호함을 통한 보안에 불과하다고 지적하지만 봇의 수를 스캔하면 무작위로 침입하려는 시도가 크게 줄어 듭니다.


감사! 당신은 정말로 각각의 질문의 절반에 답했습니다. 나는 두 가지 모두를 정답으로 표시 할 수 있기를 바랍니다.
Jonatan Kallus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.