전화 또는 랩톱과 같은 원격 시스템에서 명령을 실행하고 연결하기 위해 openssh를 사용하여 우분투 서버를 구성했습니다. 문제는 … 난 아마 유일한 사람이 아니에요.
서버에 대한 모든 로그인 시도를 알 수있는 방법이 있습니까?
답변
Ubuntu 서버에서 파일에 언제 (그리고 어디에서) 로그인 한 사람을 찾을 수 있습니다 /var/log/auth.log
. 거기에 다음과 같은 항목이 있습니다.
May 1 16:17:02 owl CRON[9019]: pam_unix(cron:session): session closed for user root
May 1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May 1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)
답변
Fedora / CentOS / RHEL과 같은 Red Hat 기반 배포판에서 파일 내부에 로그인 한 사용자를 확인할 수 있습니다 /var/log/secure
.
자세한 정보가 필요하면이 수퍼 유저 Q & A ( SSH 액세스 시도를 기록하고 서버에서 수행중인 SSH 사용자를 추적하는 방법) 라는 제목을 읽으십시오 . .
답변
Ubuntu에서 SSH를 통해 로그인하고 Linux tail 명령을 사용하여 /var/log/auth.log
파일 의 마지막 x 줄 수를 표시 할 수 있습니다. SSH를 통해 로그인 한 경우 다음 명령을 사용하여 SSH 로그의 마지막 100 줄을보십시오.
tail /var/log/auth.log -n 100
또는 심지어 클리너
tail -100 /var/log/auth.log | grep 'sshd'
답변
Ubuntu의 기본 구성은 ssh 로그인을 /var/log/auth
파일에 기록하지 않는 것 입니다. 이것은 INFO
로깅 수준입니다.
로그 파일에 로그인 시도를 포함 시키려면 /etc/ssh/sshd_config
파일을 루트로 또는 sudo로 편집 하고 LogLevel
에서 INFO
를로 변경해야 합니다 VERBOSE
.
그런 다음 sshd 데몬을 다시 시작하십시오.
sudo service rsyslog restart
그런 다음 ssh 로그인 시도가 /var/log/auth.log
파일에 로그인됩니다 .
답변
내 추천은 auditd 를 사용하는 것 입니다. 이것은 리눅스 커널의 감사 서브 시스템을 사용하여 로깅 하고 있으며 제 생각에는 진지한 경우 그것을 수행하는 올바른 방법입니다. 그리고 {security related} 질문의 특성상 PAM 도 사용해야합니다 . 감사 및 PAM을 설치 한 기본 수준에서는 audit.log 파일에 성공 및 실패한 모든 SSH 시도가 자동으로 기록됩니다. 따라서 실제로 아무것도 구성 할 필요가 없으며 감사 및 PAM 만 설치하면됩니다. 나는 SLES의 첫 손을 알고 있습니다. 그리고 RHEL과 다른 엔터프라이즈 버전의 Linux도 비슷하게 작동합니다.
http://manpages.ubuntu.com/manpages/precise/man8/auditd.8.html
에 의해 생성 된 원시 감사 로그에서 인 auditd 당신은 하나를 사용하고 뭔가를 사용하고자 할 수 있습니다 aureport
에 설명되어 그것을 필터링 인 auditd의 맨 페이지를 자신의 텍스트 파서를 작성하거나 VI를 사용하여 키워드를 검색합니다.
여기 /var/log/audit/audit.log
내 리눅스 서버에 ssh’ing 하는 내 파일을 제외하고 있습니다.
node=shark type=CRED_DISP msg=audit(1480622612.317:2211277): user pid=117768 uid=0 auid=23456 ses=2201 msg='op=PAM:setcred acct="ron" exe="/usr/sbin/sshd" (hostname=abc415.mycompany.us, addr=172.16.152.5, terminal=ssh res=success)'
- 위의 서버 이름은 shark 입니다.
- 이와 같은 많은 행이 audit.log에 있습니다. exe = “/ usr / sbin / sshd”를 기반으로합니다.
- ssh’d되는 계정의 uid는 auid의 값이며이 예에서는 23456입니다.
- auid와 연관된 사용자 계정 이름은 acct = “ron”으로 지정됩니다.
- 대부분의 경우 감사 시스템은 연결하려는 시스템의 DNS 호스트 이름을 기록하지만 항상 IP 주소를 갖습니다.
- 에포크 시간에있는 항목의 날짜이므로
date --date @1480622612.317
결과Thu Dec 1 15:03:32 EST 2016
를 내 서버에 넣을 때와 같은 것을 통해 변환해야 합니다.
시는 res=failed
이 사용자 이름을 시도한에서, 시스템이 연결을 시도했는지보고 해당 IP 주소 및 호스트 이름을 조사 할 때입니다. 그리고 성공적인 ssh는 시스템에서 일어나는 일을 이해하려고 시도합니다. 예를 들어 hostname = bobscomputer 및 ip address = 192.168.5.5; 예를 들어 어제 오전 2시 ip 주소 10.10.5.6의 사용자 이름으로 ssh 시도가 성공하면 bob과 대화하여 조사하는 것이 가장 좋습니다. 다른 사람이 해킹을 시도 할 수 있습니까? 그리고 얼마 후에 bob의 계정에서 감사 로그를 근절하려는 시도가 있습니까?
당신이 반복적 볼 때 res=failed
와 auid=0
및 acct=root
그 루트 계정으로 상자에 ssh를 시도하는 사람은, 그리고 당신이 수정할 때입니다 /etc/hosts.deny
SSHD에 대한 해당 IP 주소로.
답변
나는 이것이 오래되었다는 것을 알고 있지만 성공하고 실패한 ssh 연결 / 시도를 모니터링하기 위해 무언가를 썼습니다. sshguard를 사용하는 경우 금지 된 IP뿐만 아니라 이 소프트웨어는 Python으로 작성되었습니다. 누군가가 ssh를 통해 성공적으로 연결하거나 누군가가 ssh 비밀번호를 잘못 얻거나 시도가 실패하여 누군가가 금지 된 경우 이메일을 보내드립니다. 잘하면 이것은이 문제를 검색하고 내 코드를 찾는 미래의 누군가를 도울 것입니다!
https://github.com/amboxer21/SSHMonitor
파이썬 스크립트의 경우 프로세스를 모니터링하는 bash 스크립트를 작성했습니다. 루트 크론 작업을 통해 매분 실행되고 있는지 확인합니다. 실행 중이 아니면 다른 프로세스를 시작합니다. 이것은 매분마다 루트 크론 작업에 의해 호출됩니다 .
답변
SSH 명령 로깅에 대해 내가 본 가장 좋은 것은 rootsh입니다.이 도구를 사용하면 관리자가 광범위한 로깅 수준의 모든 세션에서 모든 명령을 얻을 수 있습니다.
우분투와 CentOS / RHEL에서 ROOTSH를 설치하고 구성하는 스크립트를 작성했습니다
github에서 다운로드하십시오 여기에 링크가 있습니다
https://gist.githubusercontent.com/mansurali901/e1e3acc7dca13aeca25b68a69571c60f/raw/b1b16f73ec9a974486e4c0c0d65a7d41f2eca718/setup_rootssh.sh
chmod +x setup_rootssh.sh ; sudo ./setup_rootssh.sh