지난 1.9편에서는 해커가 시스템의 출입문인 패스워드를 어떻게 뚫고 들어오는지 알아보았습니다.
시스템에 누군가 침입하려고 시도했거나 실제로 침입했다면, 그 과정은 반드시 발자국을 남깁니다.
우리는 이 발자국을
로그
(Log)라고 부릅니다.
리눅스 시스템은 사용자들의 모든 접속 기록과 시스템 내부에서 일어나는 상태 변화를 꼼꼼하게 기록합니다.
보안 담당자는 이 기록들을 분석하여 언제, 누가, 어디서 접근했는지 추적할 수 있어야 합니다.
오늘은 리눅스 접속 로그의 종류와 시스템 로그 설정 방법에 대해 상세히 알아보겠습니다.
# 출력 결과 예시
# 계정명 접속장치 접속IP(또는 상태) 접속시간 머문시간
root pts/0 192.168.0.10 Sat Mar 14 10:00 still logged in
user1 pts/1 10.0.0.5 Sat Mar 14 09:30 - 09:45 (00:15)
reboot system boot 0.0.0.0 Fri Mar 13 18:00 (16:20)
위 결과를 통해
root
계정은 현재 접속 중이며,
user1
계정은 15분 동안 머물다 나갔음을 알 수 있습니다.
또한 시스템이 언제 재부팅되었는지도 확인할 수 있습니다.
파일을 읽어옵니다.
비밀번호를 틀렸거나 존재하지 않는 계정으로 로그인을 시도한 흔적입니다.
보안상 매우 중요한 파일이므로
root
권한으로만 실행할 수 있습니다.
Terminal
# 실패한 접속 기록 중 최근 3개를 출력합니다.sudo lastb -n 3
# 출력 결과 예시
# 계정명 접속장치 공격자IP 시도시간
root ssh:notty 203.0.113.50 Sat Mar 14 02:15 - 02:15 (00:00)
root ssh:notty 203.0.113.50 Sat Mar 14 02:14 - 02:14 (00:00)
admin ssh:notty 203.0.113.50 Sat Mar 14 02:14 - 02:14 (00:00)
로그를 보면 특정 IP(203.0.113.50)에서 새벽 2시경
root
와
admin
계정으로 짧은 시간에 여러 번 로그인을 시도한 것을 볼 수 있습니다.
이는 전형적인 사전 대입 공격이나 무차별 대입 공격의 흔적입니다.
이 IP를 방화벽에서 차단하는 조치가 필요합니다.
기존에 확인했던 last 및 journalctl 로그와 결합해 보면, 상황을 아주 명확하게 유추할 수 있습니다.
부팅 직후의 단순 오타
오늘 아침
06:59에 시스템을 재부팅
한 직후, 모니터 화면(tty1)에서 로그인을 시도하였습니다.
이때 아이디를 잘못 입력해 UNKNOWN이 찍혔고, 이어서 prome 계정의 비밀번호를 잘못 입력해 실패 기록이 남은 것으로 보입니다.
Root 접속 방어
07:00에 pts/0에서 root 로그인이 실패한 것은, su 명령어나 SSH를 통해 root 권한을 얻으려다 비밀번호를 틀렸거나 Ubuntu의 기본 보안 정책(root 직접 로그인 차단)에 의해 막힌 것입니다.
실제로 저는 오늘 아침에 시스템을 재부팅한 후, 로그인 과정에서 아이디와 비밀번호를 각각 한 번씩 오타 낸 적이 있습니다.
또한 root 계정으로 로그인하려다 비밀번호를 틀린 적도 있습니다.
따라서 이 기록들은 모두 제가 직접 로그인하는 과정에서 발생한 기록이며 잘 기록되어있는 것을 확인할 수 있습니다.
# 기본 문법: Facility.Priority Action # 1. 커널(kern)에서 발생하는 모든(*) 로그를 커널 콘솔 파일에 저장합니다.kern.* /dev/console # 2. 인증(authpriv) 관련 메시지는 제외(none)하고, # 정보(info) 수준 이상의 모든 로그를 messages 파일에 저장합니다.*.info;authpriv.none /var/log/messages # 3. 메일(mail) 시스템에서 발생하는 모든 로그를 제외(-)하고 버퍼링 없이 즉시 저장합니다.mail.* -/var/log/maillog