서버가 실제로 무엇을하는지 어떻게 알 수 있습니까? [닫은]


42

나는 3 개의 리눅스 박스를 받았고, 1 개의 아파치가 앞면을 향하고, 다른 2 개의 상자는 내가 아는 한, 끔찍한 일을하지 않는다. 모두 Redhat에서 실행됩니다.

질문은 간단합니다. 서버가 실제로 무엇을하고 있는지 어떻게 알 수 있습니까? 제작자가 제공하는 문서가 없습니다.


7
프로세스 목록, 네트워크 리스너 (
초기

5
제길! 분명히 누군가 자신이 무엇을 알고 있는지 알고 있습니까? 그래서 그들은 당신이 그들을 지원하기를 원하지만 그들이 무엇을 몰라?!
Digital Lightcraft

11
전원을 끄십시오. 누군가가 즉시 작동하지 않는 것을 알려줄 것입니다.
jscott

58
전원을 끄지 마십시오. 비명 테스트를하려면 이더넷 케이블을 분리하십시오. 가동 시간이 2 년인 상자가없는 경우 재부팅이 실패하는 경우가 있습니다. 이것은 믹스에 좌절감을 더할 때가 아닙니다.
Aaron Copley

7
다른 사람들이 말한 것뿐만 아니라 nmap을 실행하십시오.
캐서린 빌라 드

답변:


42

이더넷 케이블을 뽑고 누가 화를 내는지보십시오.

진지하게, 이와 같은 미스터리 머신은 팀에게 많은 정신적 오버 헤드를 발생시키고 종종 비즈니스 가치를 전혀 제공하지 않습니다. 아무도 자신이하는 일을 아는 사람이 없다면 그 상사와 대화하십시오.


43
전원을 끄지 마십시오. 비명 테스트를하려면 이더넷 케이블을 분리하십시오. 가동 시간이 2 년인 상자가없는 경우 재부팅이 실패하는 경우가 있습니다. 이것은 믹스에 좌절감을 더할 때가 아닙니다. (이 글을 읽어야하므로 여기에 복사하십시오.)
Aaron Copley

3
당신은 100 % 맞습니다, 나는 그것을 반영하기 위해 게시물을 편집했습니다. 나는 조금 뻔뻔했지만 ​​재앙을 조장하지 않고는 여전히 뻔뻔 할 수 있습니다.
Josh Rumbut

8
네트워크를 분리하기 전에 실행중인 프로세스 목록과 각 서버에서 열린 소켓 목록을 저장하는 것이 좋습니다. 첫 번째 단계에서 단계를 여는 데 필요한 단계를 자동화합니다. (예를 들어 누군가가 일시적으로 ssh 포트 포워딩을 필요로
했는데

4
이러지 마 어리석은 조언. 어리석은 생각이없는 IT 직원은 시간과 일이 너무 많이 들었습니다. 먼저 물어보십시오. 누구에게 물어보아야할지 모른다면 모두 에게 물어보십시오 .
Monica와의 가벼움 경주

4
누군가가 비명을 지르기에 충분한 시간을 남겨 두십시오-서버 룸 랙에 먼지가 있거나 데스크탑 컴퓨터로 이것을 한 번 한 번-아무도 그것이 무엇을했는지 몰랐습니다. . 서버가 없으면 급여 시스템의 일부인 것으로 나타났습니다. 회계에서 월별 급여를 생성 할 수 없습니다. 아무도주의를 기울이지 않고 최소 3 년 동안 무인으로 실행되어 왔기 때문에 "비명 테스트"는 성공이었습니다. 그렇지 않은 경우 서버는 결국 자체적으로 죽었을 것입니다. 우리는 그것을 vmware 클러스터에 p2v'ing했습니다.
Johnny

30

이것은 Serverfault 형식에 대한 매우 광범위한 질문이지만 여기서 시작하는 것이 좋습니다.

  • 실행중인 프로세스 및 시스템 시작시 실행되도록 예약 된 프로세스를 확인하십시오.
    • 각각의 실행 구성을 검토하십시오.
    • 정의 된 데이터 디렉토리를 살펴보십시오. (어쩌면 누군가 MySQL을 설치하고 켰지 만 데이터베이스가 없습니다.)
  • 예약 된 작업을 확인하십시오.
  • 로그를 확인하십시오.
    • 최근에 로그인 한 사람 (및 질문)
    • 무엇이 실행되고 있는지에 대한 아이디어를 얻습니다.

당신은 그 버전을 언급하지 않았기 때문에 구체적인 내용은 생략했습니다.


8
시스템을 부팅 할 때 어떤 서비스가 시작되도록 구성되어 있는지보다 더 중요한 것이 있습니다. 현재 어떤 서비스가 실행되고 있습니까? 서비스를 시작하고 부팅시 시작되도록 구성하는 것을 잊어 버리는 것은 어려운 실수가 아닙니다. 관련 사항에 대해서는 마운트 지점, 라우팅 테이블, iptables 규칙과 같은 다른 시스템 상태를 보는 것이 좋습니다. 이 모든 것은 부팅 중에 사용되는 구성 파일을 업데이트하지 않고 시스템이 실행되는 동안 쉽게 변경할 수있는 것입니다.
kasperd 2016 년

또한 포트 스캐너를 사용하여 열려있는 포트를 확인한 다음 일반적인 도구를 사용하여 포트에 연결해보십시오. 포트 443이 열려있는 경우 (간단한) 예를 들어 웹 브라우저를 사용하여 연결할 수 있습니다. 나는 겉보기에 버려진 서버를 자주 탐색해야했고 / etc 및 다른 곳의 구성 파일을 빠르게 탐색하는 가장 좋아하는 도구 중 하나는 원하는 경우 "lynx"또는 "links"를 사용하는 것입니다. 이것들은 편리한 커서 키 탐색으로 파일 브라우저뿐만 아니라 충분한 작업을 수행하는 문자 기반 웹 브라우저입니다.
aseq

1
@kasperd 지속적 서비스와 영구 서비스의 공정한 경쟁. 그러나 방화벽 규칙, 탑재 지점 등을 생각했습니다. 기존의 글 머리 기호 중 하나에 이미 연결되어있는 보조 구성 요소로 보였습니다. YMMV.
Aaron Copley

추가-활성 네트워크 연결을 확인하고 서비스 이름과 포트 번호를 적어 두십시오. 이를 수행하는 가장 좋은 방법은 운영 체제에 따라 다릅니다. EG 순 통계. 또한 컴퓨터에 어떤 종류의 추적을 두어 하루 종일 수행하는 작업을 볼 수 있습니다. 서버에서 실행되는 것들이 악의적 일 수있는 시나리오에 대한 고려를 추가 할 수도 있습니다.
IceMage

19

시스템에서 실행중인 작업을 확인하고 확인하기 위해 수행 할 수있는 몇 가지 작업이 있습니다.

서버가 수신 대기중인 포트를 확인하여 서버에 무엇이 있는지 알 수 있습니다. 사용하기 좋은 명령은 다음과 같습니다.

 [root@server ~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             Stat    e       PID/Program name
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LIST    EN      1880/smbd
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LIST    EN      1911/nrpe
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LIST    EN      1759/sshd

위의 예제 출력에서 ​​볼 수 있듯이 프로토콜 버전 (tcp 또는 udp), 수신중인 주소, 열려있는 포트 및 수신중인 프로그램이 표시됩니다.

위의 잘린 예 (서버 시스템)에서 tcp 포트 139, 5666 및 22가 수신중인 것을 볼 수 있습니다. 이들은 각각 samba, nrpe (Nagios 에이전트) 및 ssh로 확인되며 해당 포트에서 청취중인 프로그램을 확인할 때 확인됩니다.

또한 부팅 할 때 시작되도록 구성된 데몬 목록을 확인하려면 다음을 실행하십시오. chkconfig --list | grep "3:on"

예:

[root@server ~]# chkconfig --list | grep "3:on"
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off
webmin          0:off   1:off   2:on    3:on    4:off   5:on    6:off
x2gocleansessions       0:off   1:off   2:on    3:on    4:on    5:on    6:off
.
.
.

또는 :

service --status-all


5
나는 찾을 netstat -plunt기억하기 쉽다.
abligh

2
또한 tcpdump실제로 각 서비스를 사용중인 사람을 확인하는 데 유용 할 수 있습니다.
abligh

18

다른 방법은 /etc디렉토리 를 확인 하고 수정 날짜를 확인하는 것입니다. 새로 설치 한 후이 디렉토리의 모든 파일은 대략 동일한 날짜 / 시간을 가져야합니다. 그리고 일반적으로 설치는 사람들이 일반적으로 사용하지 않는 많은 것을 설치하기 때문에 나중에 수정 날짜가있는 파일서버의 실제 목적을 반영합니다 . 이것이 ext4 인 경우 디렉토리의 생년월일을 추출 할 수 있어야하므로 작업이 매우 쉽습니다.

또 다른 방법은 .bash_history파일을 검사 하여 관리자의 상태를 확인하는 것입니다. 이 파일은 풍부한 지식을 제공 할 수 있습니다.


7

방화벽 규칙을 확인하십시오. 운이 좋으면 기본 거부로 구성됩니다. 즉, 허용되는 각 서비스마다 명시적인 규칙이 있습니다.

netstat야간 백업을 위해 열려있는 포트도 표시 할 수 있기 때문에이 방법 이 더 좋습니다 .


6

아직 보지 못한 대답 하나 : 가장 최근에 수정 된 파일을 확인하십시오. 로그, 데이터베이스 파일, 기타 출력 파일 등이 여전히 기록되어 단서를 제공 할 수 있습니다.

find . -mtime -3 

현재 디렉토리에서 수정 된 파일을 찾을 수 있으며 최근 3 일 동안 변경되었습니다. 조사 할 수있는 결과를 얻을 때까지 숫자 3을 교육 된 추측으로 늘리십시오.

상자가 웹 서비스 호출을 처리하고 아무 것도 쓰지 않고 일부 데이터를 반환 할 수 있기 때문에 바보가 아닙니다. 그러나 위에서 언급 한 큰 혼합에 추가하면 단서가 생길 수 있습니다.

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