Linux 박스에 침투했는지 어떻게 알 수 있습니까?


11

최근에 악성 SSH 로그인 시도 분석에 대한 기사 를 읽었습니다 . 이것은 내 데비안 상자의 SSH 사용자 이름, 비밀번호 조합이 드문 것이라고 생각하게했습니다. 내가 무차별 사전 공격의 대상이 되었습니까? /var/log/auth.log.0을 살펴 보자 .

Sep 23 07:42:04 SLUG sshd[8303]: Invalid user tyjuan from 210.168.200.190
Sep 23 07:42:09 SLUG sshd[8305]: Invalid user tykeedra from 210.168.200.190
Sep 23 07:42:14 SLUG sshd[8307]: Invalid user tykeem from 210.168.200.190
Sep 23 07:42:19 SLUG sshd[8309]: Invalid user tykeshia from 210.168.200.190
Sep 23 07:42:25 SLUG sshd[8311]: Invalid user tyla from 210.168.200.190
Sep 23 07:42:30 SLUG sshd[8313]: Invalid user tylan from 210.168.200.190
Sep 23 07:42:35 SLUG sshd[8315]: Invalid user tylar from 210.168.200.190
Sep 23 07:42:40 SLUG sshd[8317]: Invalid user tyler from 210.168.200.190
Sep 23 07:42:45 SLUG sshd[8319]: Invalid user tylerfrank from 210.168.200.190
Sep 23 07:42:50 SLUG sshd[8321]: Invalid user tyliah from 210.168.200.190
Sep 23 07:42:55 SLUG sshd[8323]: Invalid user tylor from 210.168.200.190

그래서 그것은 좋지 않습니다. 공격의 대상이되었고 일부 사용자 이름, 비밀번호 조합이 약하다는 것을 알았으므로 어떻게 할 수 있는지 알고 싶습니다.

  • ... 내 Linux 박스에 침투했는지 확인합니까?
  • ... 가해자들이 남긴 피해를 취소합니까?
  • ... 미래에 이런 일이 발생하지 않도록 하시겠습니까?

최신 정보

가해자가 남긴 피해취소하는 데 대한 조언이 있습니까?


그 로그는 당신이 타협되었다고 제안하지 않습니다. 당신이 걱정하는 것 이상의 추가 정보가 있습니까?

답변:


15

많은 사람들이 DenyHosts를 제안하는 것처럼 보이지만 내 시스템 에서 Fail2Ban 을 사용하여 많은 성공을 거두었 습니다. (구성 가능한) 실패 횟수를 감시 한 다음 서버에서 조치를 수행합니다.이 조치는 iptables를 사용하여 호스트에서 모든 트래픽을 삭제하는 것입니다. 10 번의 로그인 실패 후, 그들은 금지되어 끝났습니다.

Logcheck과 함께 사용하여 서버에서 무슨 일이 일어나고 있는지 항상 알 수 있습니다.

누군가 실제로 시스템에 침입했다는 증거가있는 경우 (게시 한 로그가 이에 대한 증거가 아님) 유일한 해결책은 보관, 컴퓨터 정리, 재설치 및 복원에 필요한 모든 데이터를 백업하는 것입니다. 백업에서. 그렇지 않으면 확신 할 수있는 방법이 없습니다.


1
logcheck 및 fail2ban도 사용합니다. 아주 좋은 조합.

나는 fail2ban의 사용을 두 번째로 사용합니다.
Malfist

fail2ban 모니터 더 많은 서비스 (메일, 웹, FTP, ...) 그리고 더 구성 할 수 있기 때문에 나는 또한 denyhosts에서 fail2ban로 전환
Jure1873

10

유효한 로그인 시도도 로그인되어 있으므로 무차별 대입 시도가 성공한 것으로 보이면 잘못된 것이 발생했음을 나타내는 좋은 증거입니다.

DenyHosts 를 사용 하여 의심스러운 SSH 트래픽에 대한 로그를 모니터링하고 특정 지점에서 호스트를 자동으로 방화벽 해제하도록 구성했습니다.

로드 패턴, 로그인 활동, 주기적 트래픽 스니핑, 실행중인 프로세스 및 열린 포트 모니터링, 트립 와이어와 같은 도구를 사용하여 파일 무결성을 보장하는 등 시스템이 손상된 지 확인하기 위해 다양한 다른 방법이 있습니다.

하나만 수행하려는 경우 시스템로드 모니터링은 손상을 감지하는 매우 효과적인 방법입니다. 손상 될 때 대부분의 컴퓨터는 대량의 스팸을 보내거나 다른 방법으로 많은 트래픽을받는 등의 작업을 수행하기 때문에 사용됩니다. 귀중한 대상이고 사람들이 호스트를 좀비로 바꾸는 것 외에 다른 이유로 귀중하게 침입하려는 경우 유용하지 않을 수 있지만 그럼에도 불구하고 귀중합니다. 또한 프로파일 링 및 더 많은 하드웨어 또는 더 나은 소프트웨어에 투자해야 할시기를 파악하려면 모니터링 부하가 필요합니다.

또한 auth.log 및 기타 예상치 못한 사항을보고 포괄적 인 로그 분석을 수행해야합니다. 로그 파일 분석은 경쟁이 치열한 시장이며 문제는 아직 해결되지 않았지만 매일 요약을 보내도록 구성 할 수있는 logwatch와 같은 무료 도구가 있습니다.

레이어를 통한 보안!


1
물론 침입자는 침입 증거를 제거하기 위해 로그를 수정할 수 있으므로, 로그에 증거가 없다고해서 반드시 모든 것이 괜찮다는 것은 아닙니다.

사실입니다. 증거의 부족은 기본적으로 결코 타협이 없다는 증거는 아닙니다. 원격 서버에 로깅하면 로그의 신뢰성이 향상 될 수 있습니다. 이 목적으로 syslog-ng 및 ssh 터널을 사용합니다.

서버를 해킹하려는 시도가 엄청나게 많았습니다. DenyHosts를 설치했으며 10 분 후에 이미 몇 개의 IP를 추가했습니다. 감사!
Aaron Brown

4

매우 비싼 Tripwire는 잊어 버리십시오. 대신 AIDE를 사용하십시오. 무료이며 쉽게 설정할 수 있습니다 (제외 할 임시 디렉토리를 결정하고 구성하는 데 약간의 시간이 걸리지 만).

당신이 그것을 실행하면 모든 파일의 데이터베이스를 작성합니다. 다시 실행하면 어떤 파일이 변경되었는지 알려줍니다.

또 다른 방법은 거부 호스트 유형 차단 기능이있는 CSF를 설치하는 것입니다. 사람들이 반복적으로 로그인하지 못하면 방화벽 규칙에 추가됩니다. 공개 키를 가지려면 SSH 로그인을 요구할 수도 있습니다. 스크립트 키디는 원하는만큼 로그인을 시도 할 수 있습니다.


Tripwire의 오픈 소스 (무료) 버전이 있습니다.
Dan Andreatta를 방문

4
"* ... determine if my Linux box has been infiltrated?"
  • 이상한 과정의 징후를 찾으십시오. 나는 일반적으로 chkrootkit ( http://www.chkrootkit.org ) 과 함께 제공되는 도구를 사용합니다
  • 다른 시스템에서 nmap을 사용하여 포트 스캔을 수행하십시오. 상자가 손상되면 공격자가 백도어를 설치했을 가능성이 있습니다

"* ... 가해자들이 남긴 피해를 취소 하시겠습니까?"

공격이 있었다면 잊어 버리십시오. 가장 좋은 방법은 처음부터 다시 설치하는 것입니다 (새 설치에 구멍을 뚫어야합니다). 백도어 또는 스텔스 프로세스를 눈치 채지 못하는 것은 매우 쉬운 일이므로 다시 설치하는 것이 좋습니다.

"* ... 향후에 이런 일이 발생하지 않습니까?"

  • 보안 업데이트

  • 단단한 방화벽

  • 강력한 비밀번호

  • 불필요한 서비스를 끄다


3

logcheck , portsentrytripwire 와 같은 도구를 살펴보십시오 . 임의의 사전 SSH 시도에는 매우 일반적이므로 그렇게 걱정하지 않아도됩니다. 임의의 난독 처리를 위해 포트를 변경하고 싶을 때도 있지만 가끔씩 임의의 시도가 계속 표시됩니다. 인터넷에 컴퓨터가있는 것입니다.


3

이러한 공격을 막기 위해 서버에서 사용하는 한 가지는 DenyHosts 입니다. DenyHosts는 악의적 인 사용자가 로그인을 시도하지 못하게합니다. 설치 후 내 로그 파일에는 로그인 시도 항목이 훨씬 적었습니다.


3

공개 / 개인 키 쌍을 추가 인증으로 사용하는 것이 좋습니다. 그렇게하면 사용자는 올바른 키없이 SSH를 통해 로그인 할 수 없습니다. 무차별 대입을 추측하는 것은 불가능합니다. 이것에 대한 좋은 기사는 여기 에서 찾을 수 있습니다 .

비밀번호 문구가있는 이것만으로도 SSH 인증에 매우 견고합니다. 그러나 더 많은 취약점이 있습니다! 열린 포트를 사용하는 모든 응용 프로그램을주의하십시오. 버그가 포함 된 경우 공격자가 시스템을 능가 할 수 있습니다. 좋은 예는 현재 사용중인 webstats 소프트웨어의 버그로 인해 서버에 설치된 스팸 봇입니다.


2

Fail2ban은 액세스 로그 실시간 분석기입니다. 여러 번의 로그인 시도 실패로 IP를 차단하도록 구성 할 수 있습니다. 이렇게하면 ssh 포트를 이동하지 않고도 사전 공격을 피할 수 있습니다. chkrootkit 및 rootkithunter는 침입을 확인하기위한 유용한 유틸리티입니다. 침입이 성공한 경우 시스템을 깨끗하게 유지하는 것이 정말 어렵 기 때문에 데이터를 복사하고 (실행 파일이 아닌 데이터 만), 닦은 후 다시 설치하는 것이 가장 좋습니다.


2

상자가 손상되었다는 제안은 없습니다. 암호가 매우 약한 경우에도 각 사용자 이름에 한 번만 로그인을 시도하는 사전 공격은 성공할 가능성이 거의 없습니다.

그러나 암호가 약하다는 것을 알고 있다면 강화하십시오! 나는 개인적으로 pwgen (데비안 패키지)을 좋아 한다. 각 실행에서, 그것은 yodieCh1, Tai2daci 또는 Chohcah9와 같이 (적어도 나에게는) 기억하기 쉬운 다수의 강력하지만 상대적으로 발음하기 쉬운 암호 후보를 생성합니다.

그러나 시스템이 손상되었다는 증거가 다른 경우에는 궤도에서 핵을가하십시오. 확실한 유일한 방법입니다.

실행 불가능한 데이터는 복구 가능할 수 있지만 실행 가능 콘텐츠 (MS Office 문서 및 일부 구성 파일과 같은 것을 포함 할 수 있음)가있는 모든 것은 사용자가 수동으로 데이터를 검사하지 않았는지 확인하지 않는 한 진행되어야합니다. 적대적으로 행동했거나 적대적 일 가능성이 있으므로 시스템을 손상 시키거나 나중에 다시 사용할 경우 나중에 다시 타협 할 수있는 방법을 제공하십시오.


2

내가 좋아하는 하나의 작은 추가 보호 기능은 들어오는 ssh 연결의 속도를 제한하여 사전 공격 또는 유사한 속도를 늦추는 것입니다. 이 기능만으로 사용자를 보호 할 수는 없지만 암호 인증 비활성화를 포함한 다른 답변의 제안 사항 외에도이 기능을 사용하십시오.

iptables 사용하기 :

$ iptables        -A INPUT      -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -j DROP

2

이 스레드에는 다음과 같은 좋지 않은 조언이 있습니다.

  • ssh에 비표준 포트 사용 (잘못된)
  • 타사 보안 도구 사용 (불필요한 종속성 / 복잡성 추가)
  • 방화벽을 차단 또는 허용하도록 구성 (유지 관리 두통)

/etc/ssh/sshd_config보안을 향상시키기 위해 대신 간단하게 조정하십시오 .

  • PermitRootLogin no
  • ssh 계정이있는 시스템의 사용자에 대해서만 AllowUsers 구성
  • 'PasswordAuthentication no'가있는 실제 키만 사용하십시오

상자에 침투 한 경우. 박스를 다시 조립하십시오.


(-1) 방화벽에 규칙을 구성하거나 침입 방지 시스템을 사용해야하는 경우가 있습니다. 왜 좋은 아이디어가 아닌지에 대한 추가 토론없이 가난한 조언을 부르는 것은별로 도움이되지 않습니다.
Zoredache

1

ssh를 사용하면 항상 발생합니다. 높은 포트로 옮기십시오.

"Tripwire"라는 프로그램이 있습니다. 침입 탐지에는 우수하지만 설치가 매우 어렵습니다. 다른 것이 없다면 문제를 이해하도록 문서를 읽어야합니다.


1

기기를 인터넷에 연결하기 전에 침입 탐지를 설치해야합니다.

그리고 전 세계가 그런 일을 시도조차 할 수 없도록 SSH 연결을 화이트리스트에 추가하는 것이 좋습니다.


또한 SSH를 통해 로그인 할 수있는 화이트리스트 사용자를 추가하고 가능한 경우 비밀번호 기반 인증을 비활성화합니다.

1

Linux 박스에 침투했는지 어떻게 알 수 있습니까?

읽기 전용 미디어 (livecd)를 부팅하고 파일을 백업 또는 원본 미디어와 비교하십시오.

이상한 행동을 찾으십시오. 물론 이것은 '정상적인'것에 대한 좋은 느낌을 얻기 위해 해킹하기 전에 시간을 보내는 경우 가장 쉽습니다.

게시 한 오류는 타협을 나타내지 않습니다. 누군가가 노력하고 있습니다.

가해자가 남긴 피해를 어떻게 취소 할 수 있습니까?

시스템이 손상되기 전에 백업에서 다시 설치하고 복원하십시오.

보다:

앞으로 이런 일이 발생하지 않도록하려면 어떻게해야합니까?

보다:




0

rkhunter 또는 chkrootkit 또는 둘 다를 사용하십시오. 상자를 외부에서 스캔하여 열린 포트를 확인하십시오.

어쨌든 당신이 가진 모든 것이 유효하지 않은 사용자라면 걱정할 필요가 없습니다. :)


0

매우 다른 점 : IP 주소에서 Google 을 사용해보십시오 ! 터키에서 자신을 STARTURK 라고 부르는 해커가 사이트를 해킹하려고 시도했을 수 있습니다.

시스템에 대한 무차별 대입 공격처럼 보이지만이 해커는 한 번 시도한 후 다른 사이트로 이동했을 수 있습니다.


0

많은 사람들이 언급했듯이 Tripwire / AIDE는 시스템 변경을 찾는 가장 좋은 방법입니다. 불행히도, 암소는 잘 알려진 시스템에서 구성해야하기 때문에 그 헛간에서 헛간을 벗어났습니다.

최소한 시작하는 데 도움이되는 한 가지 방법은 RPM 데이터베이스를 사용하여 파일의 md5sum을 확인하는 것입니다. 기본 요점은 다음과 같습니다.

rpm -qa | xargs rpm -V

이것은 여러 가지 이유로 완벽하지 않습니다. 먼저 로컬 RPM 데이터베이스가 이론적으로 변경되었을 수 있습니다. 둘째, 대부분의 배포판은 사전 연결을 사용하며 RPM은 사전 연결을 인식하지 않습니다. MD5가 합법적 인 프로세스에서 변경된 것처럼 보일 수 있습니다.

가장 좋은 조언은 이것입니다. 만약 당신이 타협을했는지 확실치 않다면, 실제로 재 구축 할 시간입니다.


0

향후 보안 문제를 방지하기 위해 OSSEC를 살펴볼 수 있습니다. 서버에서 파일 무결성 검사 및 로그 모니터링을 수행하는 데 사용됩니다. 매우 완벽하고 구성하기 쉽습니다. 그것은 메일 알림을 보낼 수 있습니다, 당신은 명령 줄이나 웹 인터페이스를 통해 경고를 확인할 수 있습니다 ...

http://www.ossec.net/

웹 사이트에서 가져온 :

"OSSEC은 오픈 소스 호스트 기반 침입 탐지 시스템입니다. 로그 분석, 파일 무결성 검사, 정책 모니터링, 루트킷 탐지, 실시간 경고 및 능동적 인 응답을 수행합니다."

  • 로그 분석 서버에서 로그 파일을 확인하고 규칙을 통해 경고합니다 (사전 정의되어 있으며 사용자가 직접 추가 할 수 있음)

  • 파일 무결성 트립 와이어 / 함수와 같은 기능으로 서버에서 파일이 수정되었는지 확인할 수 있습니다.

  • 정책 모니터링 : "모범 사례"보안 규칙 확인

  • 루트킷 탐지 : rkhunter, chkrootkit과 같은 기능

  • 실시간 경보 및 활성 응답 : 경보에 자동으로 반응하도록 ossec을 구성 할 수 있습니다 (이것을 사용하지 않지만 너무 많은 연결 시도가 실패한 호스트에 대한 ssh 액세스를 차단하는 데 사용할 수 있음)

정말 좋은 제품이며 매우 활동적입니다.

상자를 강화하기 위해 lynis 또는 bastille을 사용할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.