Ubuntuサーバーを運用していると、セキュリティ上の懸念から不正アクセスの有無を確認したい場合があります。ここでは、不正アクセスの痕跡を調べるための具体的な方法をステップバイステップで解説します。
目次:
- ログイン履歴の確認
- 認証ログ(auth.log)の確認
- 不審なプロセスの確認
- ネットワークの監視
- 不正アクセス発見時の対応
- まとめ
ステップ1: ログイン履歴の確認
lastlogとlastコマンドを使ってログイン履歴をチェックしよう
- コマンド「lastlog」で全ユーザーの最終ログイン日時を確認します。
$ lastlog Username Port From Latest root pts/0 192.168.1.100 Tue Apr 25 15:30:02 +0900 2023 user1 pts/1 192.168.1.101 Mon Apr 24 10:15:23 +0900 2023 user2 **Never logged in**
未知のユーザーや、想定外の時間帯のログインがないか確認します。
- 特定ユーザーの最終ログインは以下のコマンドで確認できます。
$ lastlog -u user1 Username Port From Latest user1 pts/1 192.168.1.101 Mon Apr 24 10:15:23 +0900 2023
- コマンド「last」で直近のログイン履歴を確認します。
$ last user1 pts/1 192.168.1.101 Mon Apr 24 10:15 still logged in root pts/0 192.168.1.100 Mon Apr 24 09:30 - 10:15 (00:45) reboot system boot 5.4.0-1104-gcp Mon Apr 24 09:28 still running
直近n回分を確認するには
last -n [n]
を使用します。 - コマンド「who」で現在ログイン中のユーザーを確認します。
$ who user1 pts/1 2023-04-24 10:15 (192.168.1.101)
who -q
でログイン中ユーザー数も確認できます。$ who -q user1 # users=1
ステップ2: 認証ログ(auth.log)の確認
auth.logを確認して不審なログイン試行を見つけよう
Ubuntuでは、認証に関するログは「/var/log/auth.log」に記録されます。
- ログイン失敗の記録を確認するには以下のコマンドを実行します。
$ grep "sshd.*Failed" /var/log/auth.log Apr 23 15:20:12 ubuntu sshd[1234]: Failed password for root from 192.168.1.200 port 12345 ssh2 Apr 23 18:45:01 ubuntu sshd[5678]: Failed password for invalid user test from 192.168.1.201 port 54321 ssh2
- ログイン成功の記録は以下のコマンドで確認できます。
$ grep "sshd.*Accepted" /var/log/auth.log Apr 24 09:30:15 ubuntu sshd[1234]: Accepted password for root from 192.168.1.100 port 12345 ssh2 Apr 24 10:15:23 ubuntu sshd[5678]: Accepted password for user1 from 192.168.1.101 port 54321 ssh2
知らないIPアドレスからrootなどの権限でログイン成功している形跡がある場合、不正アクセスの可能性が高いです。
ステップ3: 不審なプロセスの確認
psとtopコマンドで不審なプロセスをチェックしよう
- psコマンドで現在実行中のプロセス一覧を表示します。
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 225704 9416 ? Ss Apr24 0:03 /sbin/init root 2 0.0 0.0 0 0 ? S Apr24 0:00 [kthreadd] ...
覚えのないプロセスがないか確認します。
- topコマンドでリアルタイムにプロセスを監視することもできます。
$ top top - 16:20:30 up 6 days, 22:50, 1 user, load average: 0.08, 0.02, 0.01 Tasks: 109 total, 1 running, 108 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 3937.0 total, 3298.0 free, 243.0 used, 396.0 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 3506.0 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 225704 9416 7752 S 0.0 0.2 0:03.53 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd ...
CPU使用率やメモリ使用量が異常に高いプロセスがあれば、調査が必要です。
ステップ4: ネットワークの監視
netstatとtcpdumpでネットワーク接続状況を確認しよう
- netstatコマンドでネットワーク接続状況を確認します。
$ netstat -tupn Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.1.10:22 192.168.1.101:54321 ESTABLISHED 1234/sshd: user1 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5678/master ...
不審なポートの開放や、知らない通信先への接続がないか確認します。
- tcpdumpなどのパケットキャプチャツールを用いて、通信内容を詳しく調査することもできます。
$ tcpdump -i eth0 -n tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 16:25:20.123456 IP 192.168.1.101.54321 > 192.168.1.10.22: Flags [P.], seq 1234567890:1234568000, ack 9876543210, win 65535, length 110 16:25:20.123457 IP 192.168.1.10.22 > 192.168.1.101.54321: Flags [.], ack 110, win 65535, length 0 ...
ステップ5: 不正アクセス発見時の対応
不正アクセスが見つかったら速やかに対策を講じよう
万が一不正アクセスの形跡が見つかった場合は、以下のような対策を速やかに講じましょう。
- パスワードの変更
- 不要なアカウントの削除
- 脆弱性の修正
- 状況によっては新しいサーバーへの移行
- 定期的なバックアップの取得
まとめ
Ubuntuサーバーの不正アクセスチェックのポイント
以上のステップを実行することで、Ubuntuサーバーへの不正アクセスの有無をある程度把握できます。ログの定期的なチェックに加え、ファイル改ざん検知ツールの導入なども検討し、多角的にサーバーの安全性を確保していくことが重要です。
セキュリティはシステム運用における重要な課題です。定期的な監視と適切な対策を継続して行うことで、安全で信頼できるサーバー環境を維持していきましょう。