Cách sử dụng lệnh last trong Linux

Muốn biết ai, thời gian và sử dụng thiết bị nào truy cập vào máy tính Linux của bạn? Hãy đọc bài viết sau đây nhé.

File wtmp

Linux và các hệ điều hành tương tự Unix khác như MacOS quản lý rất tốt trong việc đăng nhập. Trên hệ thống, bạn có thể tìm thấy một bản ghi tất cả mọi thứ liên quan đến đăng nhập, đăng xuất trên máy tính. File nhật ký này được gọi là wtmp. W viết tắt của When (khi nào) hoặc who (ai). Phần tmp có thể là viết tắt của temporary (tạm thời) nhưng cũng có thể viết tắt của timestamp (dấu thời gian).

Chúng ta chỉ cần biết wtmp là nhật ký ghi lại mọi sự kiện đăng nhập và đăng xuất trên máy tính. Xem dữ liệu trong nhật ký wtmp là bước cơ bản trong bảo mật. Đối với một máy tính gia đình thông thường, bảo mật không phải là vấn đề quá quan trọng nhưng cũng thú vị khi xem lại việc sử dụng máy tính của mình.

Không giống như các file nhật ký dựa trên văn bản khác trong Linux, wtmp là file nhị phân. Để truy cập dữ liệu trong file này, bạn cần sử dụng lệnh last.

Lệnh last

Lệnh last đọc dữ liệu từ bản ghi wtmp và hiển thị nó trong cửa sổ terminal. Nếu gõ last và nhấn Enter, nó sẽ hiển thị tất cả các bản ghi từ file nhật ký.

last

Lệnh last

Mỗi bản ghi từ wtmp được hiển thị trong cửa sổ terminal.

Từ trái sang phải, mỗi dòng chứa:

  • Tên người dùng đăng nhập.
  • Thiết bị họ đăng nhập. Mục thiết bị :0 có nghĩa là đăng nhập trên chính máy tính Linux.
  • Địa chỉ IP của máy đăng nhập.
  • Thời gian đăng nhập và dấu ngày tháng.
  • Thời gian của phiên làm việc

Liệt kê bản ghi từ wtmp

Dòng cuối cùng cho chúng ta biết ngày và thời gian của phiên được ghi sớm nhất trong nhật ký.

Mục đăng nhập cho người dùng hư cấu "khởi động lại" được nhập vào nhật ký mỗi khi máy tính được khởi động. Trường thiết bị được thay thế bằng phiên bản kernel. Thời lượng của phiên đăng nhập cho các mục này thể hiện thời gian hoạt động của máy tính.

Hiển thị một số dòng cụ thể

Chỉ sử dụng nguyên lệnh last sẽ hiển thị tất cả các thông tin trên. Nếu muốn thông tin cụ thể, bạn có thể yêu cầu last cung cấp số dòng cụ thể của đầu ra. Ví dụ, nếu muốn xem 5 dòng, bạn cần gõ -5 cùng với lệnh last.

last -5

Lệnh last với tùy chọn -5

Lệnh trên sẽ đưa ra năm dòng đầu tiên của nhật ký, đây là dữ liệu gần đây nhất.

Hiển thị 5 dòng nhật ký gần đây nhất

Hiển thị tên mạng cho người dùng từ xa

Tùy chọn -d (Domain Name System) yêu cầu last phân giải địa chỉ IP của người dùng từ xa thành tên máy hoặc tên mạng.

last -d

Lệnh last -d

Tuy nhiên không phải lúc nào last cũng có thể chuyển địa chỉ IP thành tên mạng, nhưng lệnh sẽ thực hiện khi có thể.

Chuyển địa chỉ IP thành tên

Ẩn địa chỉ IP và tên mạng

Nếu không quan tâm đến địa chỉ IP hoặc tên mạng, hãy sử dụng tùy chọn -R (không có tên máy chủ) để chặn trường này.

Sử dụng tùy chọn -R

Tùy chọn này sẽ cung cấp cho bạn một đầu ra gọn gàng hơn, do đó nó sẽ được sử dụng trong các ví dụ dưới đây. Nếu sử dụng last để xác định hoạt động bất thường, bạn không nên chặn trường này.

Ẩn địa chỉ IP và mạng

Chọn bản ghi theo ngày

Bạn có thể sử dụng tùy chọn -s (kể từ) để hạn chế đầu ra chỉ hiển thị các sự kiện đăng nhập diễn ra kể từ một ngày cụ thể. 

Nếu chỉ muốn xem các sự kiện đăng nhập diễn ra từ ngày 26/5/2019, bạn sẽ sử dụng lệnh sau:

Tùy chọn -s

Đầu ra hiển thị bản ghi với các sự kiện đăng nhập diễn ra từ thời gian 00:00 giờ vào ngày được chỉ định đến bản ghi mới nhất trên file nhật ký.

Hiển thị bản ghi với ngày cụ thể

Tìm kiếm trong khoảng thời gian cụ thể

Bạn có thể sử dụng -t (cho đến khi) để chỉ định ngày kết thúc. Điều này cho phép bạn chọn một bộ hồ sơ đăng nhập diễn ra trong khoảng thời gian cụ thể. 

Tùy chọn -t

Lệnh này yêu cầu last truy xuất và hiển thị bản ghi đăng nhập từ 00:00 giờ (rạng sáng) ngày 26 đến 00:00 giờ (rạng sáng) ngày 27. Nó giới hạn phiên đăng nhập chỉ diễn ra trong ngày 26.

Hiển thị phiên đăn nhập diễn ra trong khoảng thời gian cụ thể

Định dạng thời gian và ngày

Bạn có thể sử dụng thời gian cũng như ngày với các tùy chọn -s-t. Định dạng thời gian khác nhau có thể được sử dụng với các tùy chọn last cho ngày và giờ: 

  • YYYYMMDDhhmmss
  • YYYY-MM-DD hh:mm:ss
  • YYYY-MM-DD hh:mm – Giây được đặt là 00
  • YYYY-MM-DD – Thời gian được đặt là 00:00:00
  • hh:mm:ss – Ngày được đặt là ngày hôm nay 
  • hh:mm – Ngày được đặt là hôm nay, giây được đặt là 00
  • now
  • yesterday – Thời gian được đặt là 00:00:00
  • today – Thời gian được đặt là 00:00:00
  • tomorrow – Thời gian được đặt là 00:00:00
  • +5min
  • -5days

Những lệnh này được thử nghiệm trên các bản phân phối Ubuntu, Fedora và Manjaro. Đây là các dẫn xuất của bản phân phối Debian, RedHat và Arch tương ứng. 

last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00

Định dạng thời gian và ngày

Như bạn có thể thấy lệnh trên không trả lại bất kỳ bản ghi nào. Sử dụng định dạng ngày và giờ thứ nhất từ danh sách như lệnh trước đó sẽ trả về các bản ghi:

last -R -s 20190526110000 -t 20190527130000

Sử dụng định dạng thứ nhất trong danh sách

Tìm kiếm theo đơn vị tương đối

Bạn cũng chỉ định khoảng thời gian được tính bằng phút hoặc ngày, liên quan đến ngày và giờ hiện tại. Lệnh dưới đây chúng ta yêu cầu bản ghi từ 2 ngày trước cho đến một ngày trước.

last -R -s -2days -t -1days

Tìm kiếm theo đơn vị tương đối

Hôm qua, hôm nay và bây giờ

Bạn có thể sử dụng yesterday và tomorrow viết tắt cho yesterday’s date và today’s date.

last -R -s yesterday -t today

Sử dụng yesterday

Lệnh yêu cầu các bản ghi từ ngày bắt đầu cho đến ngày kết thúc. Nó không bao gồm các hồ sơ trong ngày kết thúc.

Lệnh yêu cầu các bản ghi từ ngày bắt đầu cho đến ngày kết thúc

Tùy chọn now là viết tắt cho “today at the current time”. Để xem sự kiện đăng nhập diễn ra từ 00:00 giờ (rạng sáng) cho đến thời gian khi bạn sử dụng lệnh này:

last -R -s today -t now

Tùy chọn now

Lệnh trên sẽ hiển thị tất cả các sự kiện đăng nhập ngay thời điểm hiện tại, bao gồm cả những sự kiện vẫn đang đăng nhập.

Liệt kê sự kiện ngay thời điểm hiện tại

Tùy chọn -p

Tùy chọn -p (hiện tại) cho phép bạn tìm ra ai đã đăng nhập tại một điểm trong thời gian cụ thể. Nếu ai đó đăng nhập vào máy tính tại thời điểm bạn chỉ định, họ sẽ được liệt kê trong danh sách.

Nếu bạn chỉ định thời gian mà không có ngày, lệnh last sẽ mặc định bạn chọn ngày hôm nay (tức ngày sử dụng lệnh này).

last -R -p 09:30

Tùy chọn -p

Những người vẫn đăng nhập không có thời gian đăng xuất; họ được mô tả là still logged in. Nếu máy tính chưa được khởi động lại kể từ thời điểm bạn chỉ định, nó sẽ được liệt kê dưới dạng still running.

Liệt kê phiên làm việc hiện tại

Nếu sử dụng now với tùy chọn -p, bạn có thể phát hiện ai đang đăng nhập tại thời điểm bạn sử dụng lệnh.

last -R -p now

Sử dụng -p và now

Đây là một cách hơi dài hơn khi sử dụng lệnh who.

Tìm người đã đăng nhập vào thời điểm sử dụng lệnh

Lệnh Lastb

Lệnh lastb đọc dữ liệu từ bản ghi được gọi là btmp. Lastb liệt kê các lần đăng nhập không thành công. Bạn cũng có thể sử dụng các tùy chọn của last với lệnh này. Bởi vì đăng nhập không thành công, nên thời gian sẽ là 00:00.

Bạn phải sử dụng sudo với lastb.

Lệnh lastb

Biết ai đã đăng nhập vào máy tính Linux của bạn rất hữu ích và kết hợp với các thông tin về những lần đăng nhập không thành công sẽ giúp bạn thực hiện các bước đầu tiên trong việc điều tra hành vi xâm nhập vào máy tính đáng ngờ. 

Thứ Bảy, 22/06/2019 08:12
54 👨 109