VPS の SSH 設定をデフォルトのまま放置しておくとログから不正なアクセスがあることを確認できます。SSH ログの場所は OS によって異なります。今回の OS は CentOS 6.5 です。
- Linux共通: /var/log/syslog
- CentOS: /var/log/secure
- Ubuntu: /var/log/auth.log
- OSX: /var/log/system.log
Failed / invalid の件数を確認します。
$ grep -c Failed /var/log/secure
4889
$ grep -c invalid /var/log/secure
760
以下のように, システムに存在するユーザに対してパスワード認証でログインを試みているのがわかります。
Failed password for root from 222.186.15.86 port 3409 ssh2
...
Disconnecting: Too many authentication failures for root
放置しておくと知らないうちにマルウェアを仕込まれ, 攻撃者の Bot-Net に追加されてしまう可能性があります。一般的な専用 VPS サーバは共用サーバと異なりセキュリティは自己責任となりますので, 最低限のセキュリティ対策は実施しておく方が良さそうです。
SSHの設定変更
手軽な SSH のセキュリティ対策として以下が挙げられます。
- パスワード認証をOFFにする
- デフォルトの port 22 から変更する
- SSHクライアントのIPアドレスに制限をかける
iptablesで不必要なポートは閉じている事を確認してから, SSH を公開鍵認証に切り替えてパスワード認証を OFF にします。
今回はリモートホスト上で秘密鍵を作成します。
$ mkdir .ssh
$ chmod 700 .ssh
$ ssh-keygen
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
秘密鍵をリモートホストから転送します。
$ scp -r xxx@xxx.sakura.ne.jp:~/.ssh/id_rsa ~/.ssh/sakura/
sshd の設定変更を行い再起動します。また root での login も禁止, AllowUsers でユーザを制限します。
$ vim /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
AllowUsers git xUser
$ service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
Ubuntu の場合は sudo /etc/init.d/ssh restart で再起動します。
公開鍵認証でログインできるか確認してみます。
$ ssh -i ~/.ssh/sakura/id_rsa xxx@xxx.sakura.ne.jp
ClamAV
OSS のアンチウィルスソフト ClamAV をインストールします。
$ yum -y install clamd
$ freshclam
$ /etc/rc.d/init.d/clamd start
Starting Clam AntiVirus Daemon: [ OK ]
$ /etc/rc.d/init.d/clamd status
clamd (pid 14718) を実行中...
$ chkconfig clamd on
Ubuntu14.04 の場合は以下です。 log の場所は /var/log/clamav/freshclam.log です。ウィルスチェックはデフォルトだと SelfCheck 3600 となっており 1h ごとのようです。
# Ubuntu 14.04
$ sudo apt-get install clamav-base clamav-daemon
$ sudo vim /etc/clamav/clamd.conf
...
SelfCheck 21600
...
$ sudo /etc/init.d/clamav-freshclam start
$ sudo /etc/init.d/clamav-freshclam status
* freshclam is running
話は変わりますが, SSH でログインする時にネットワーク帯域幅・転送速度は正常なのに pledge: network で止まり, ログイン処理に非常に時間がかかっているようでした。調べてみると [3] が見つかり, systemctl restart systemd-logind で解決できました。
$ ssh -vvv xxx@xxx.sakura.ne.jp
...
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting no-more-sessions@openssh.com
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: network
[1] Ubuntu14.04LTSで出来るだけSecureなサーバを構築する
[2] そこそこセキュアなlinuxサーバーを作る
[3] ssh connection takes forever to initiate, stuck at “pledge: network”