공유할 수 있는 실제 서버 세부 정보와 구성은 매우 제한되어 있지만 문제와 내가 하려는 작업을 설명하기 위해 최선을 다하겠습니다.
내가 직면한 문제는 다음과 같습니다. Centos 7을 실행하는 SFTP 서버가 있고 SFTP용 기본 sshd 서비스를 사용하고 있으며 모두 하드웨어 방화벽 뒤에 있습니다. 서버는 2년 넘게 잘 작동했지만 최근 연결이 끊겼습니다. . 나는 이러한 문제가 서버와 전혀 직접적인 관련이 없다고 생각하지만 이를 팀에 증명하거나 적어도 내 믿음이 사실인지 확인해야 합니다.
이러한 물방울이 어떻게 나타나는지에 대한 예는 다음과 같습니다. 클라이언트는 3개의 별도 연결을 만들고 첫 번째 연결이 성공하여 파일을 업로드하는 동안 나머지 2개의 연결은 실패합니다. 하드웨어 방화벽의 로깅에는 3개의 연결이 모두 열렸다가 닫힌 것으로 표시되지만 마지막 2개의 연결에는 서버가 연결을 재설정했다는 메시지가 표시됩니다. 서버를 보면/var/로그/보안그리고/var/log/메시지로그 파일에서 첫 번째 연결 성공 기록을 찾았지만 두 번째 연결 실패 기록은 전혀 찾을 수 없습니다.
서버에 Fail2ban이 있고 저도 확인해 봤는데 아무 것도 차단되지 않았습니다. 사실 문제는 여러 IP 주소에서 발생하며 그 중 일부는 Fail2ban에 의해 완전히 무시되도록 설정되어 있습니다.
서버에는 SELinux가 활성화되어 있고 auditd가 활성화되어 있지만 로그는 읽기 어렵고 매우 시끄럽습니다(이러한 로그를 볼 수 있는 깔끔한 방법이 있는 경우 알려주십시오).
문제가 한 시간 내에 여러 번 산발적으로 발생하다가 2~3시간 동안 전혀 문제가 발생하지 않습니다.
나는 다양한 클라이언트를 위해 꽤 많은 서버를 설정했고 과거에 이러한 유형의 문제가 발생했을 때 내가 해야 했던 일은 해당 로그를 보는 것뿐이었지만 이번에는 2개의 별도 시스템(방화벽과 서버)이 있어 충돌하는 진술을 얻었습니다. 이제 어떻게 진행해야 할지 모르겠습니다.
네트워크 트래픽을 모니터링하고 실패한 트래픽이 내 서버에 도달하는지 확인하기 위해 보거나 설치할 수 있는 추가 로깅이 있습니까?
답변
tshark를 사용하여 네트워크 트래픽을 모니터링하는 것이 잘 작동합니다.
아래 명령을 사용하여 문제가 있는 것으로 알고 있는 호스트의 트래픽을 필터링하고 캡처를 저장했습니다.
tshark -i eth0 -f "host x.x.x.x" -w "capture.pcap" -F pcap
문제가 다시 발생한다는 보고를 받으면 캡처를 중지하고 결과 파일을 데스크톱으로 전송하여 Wireshark에서 엽니다. 캡처는 서버가 연결을 재설정하고 있음을 보여줍니다. 아래 예제 캡처에서 볼 수 있듯이 서버는 [RST,ACK](재설정, 승인)를 발행합니다.
2467 4501.231127 <CLEINT_IP> <SERVER_IP> TCP 66 58274 → 22 [SYN, ECE, CWR] Seq=0 Win=65535 Len=0 MSS=1460 WS=128
2468 4501.231178 <SERVER_IP> <CLEINT_IP> TCP 62 22 → 58274 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 WS=128
2469 4501.231646 <CLEINT_IP> <SERVER_IP> TCP 60 58274 → 22 [ACK] Seq=1 Ack=1 Win=4194304 Len=0
2470 4501.231737 <CLEINT_IP> <SERVER_IP> SSHv2 85 Client: Protocol (SSH-2.0-WinSCP_release_5.15.3)
2471 4501.231750 <SERVER_IP> <CLEINT_IP> TCP 54 22 → 58274 [ACK] Seq=1 Ack=32 Win=29312 Len=0
2472 4501.232298 <SERVER_IP> <CLEINT_IP> TCP 54 22 → 58274 [RST, ACK] Seq=1 Ack=32 Win=29312 Len=0
답변1
조사해야 할 한 가지 문제는 방화벽이 클라이언트에 대한 SSH 서버 끝점 역할을 하는지, 아니면 트래픽을 실제 서버에 투명하게 전달하는지 여부입니다.
서버 tshark
(또는 그래프)에서 실행하고 특히 실패한 세션을 참조하여 클라이언트 및/또는 방화벽에서 시작된 연결을 찾습니다.wireshark
실패한 세션에 대한 인바운드 트래픽이 표시되지 않으면 방화벽이 해당 세션을 통과시키지 못하는 것이며 이것이 실패 지점입니다. 그렇다면 서버에 문제가 있는 것일 수 있습니다.