さくらVPSにUbuntu16.04を入れました。設定をしていきます。
参考:Ubuntuインストール
アップデート
$ sudo apt-get update $ sudo apt-get upgrade
SSH関連の設定
.sshディレクトリの作成
とりあえず.sshディレクトリを作成します。
$ mkdir ~/.ssh
公開鍵・秘密鍵を作成して公開鍵をサーバに転送する
次にローカルで秘密鍵を作成します。今windows10を使っていますが、gitをインストールしたらssh-kegenが入っているのでそれを使えるようです。あるいは、Tera Termでも簡単に作れます。作成した公開鍵をサーバに転送します。scpの場合下記のようになります。
$ cd .ssh
$ scp hoge.pub hoge@hogehogehoge.sakura.ne.jp:~/.ssh/.
サーバでauthorized_keysを作成する
サーバで、転送した公開鍵を./ssh/authorized_kesyに追加します。
$ cd $ cat hoge.pub >> ~/.ssh/authorized_keys $ rm hoge.pub
SSHログインチェック
ローカルで下記のようにやってみます。windowsの場合、TeraTermを使ったりします。下記のhoge_rsaは秘密鍵です。
$ cd .ssh $ ssh -i hoge_rsa hoge@hogehogehoge.sakura.ne.jp
パスワード聞かれずにログインできたら成功です。
パスワードログインを禁止にする
$ sudo vi /etc/ssh/sshd_config
- Portを1万台にする
- ルートログインを禁止する
PermitRootLogin no - パスワードログインを禁止する
PasswordAuthentication no - 指定したユーザーだけログイン可能にする(最下段に追加)
AllowUsers ユーザー名
$ sudo vi /etc/services
ファイル内のポート番号22を上記で変更した値にすべて変える
$ sudo sshd -t
何も起こらなければ成功
sshサーバの再起動
$ sudo service ssh restart
TeraTermのマクロ作成
私はwindows10を使うときに、Teratermのマクロを使っていますので、それを作成します。
username = 'hoge' hostname = 'hogehogehoge.sakura.ne.jp' keyfile = 'C:\Users\hoge\.ssh\hoge_rsa' msg = hostname strconcat msg ':11223 /ssh /auth=publickey /user=' strconcat msg username strconcat msg ' /keyfile=' strconcat msg keyfile connect msg
ファイヤーウォールの設定
ufwというコマンドで設定します。
全部拒否にする $ sudo ufw default deny 先程変更したSSH用ポートを開放する $ sudo ufw allow 12233 アクセス回数制限をかける $ sudo ufw limit 12233 $ sudo ufw limit 22 ファイヤーウォールを有効にする $ sudo ufw enable ファイヤーウォールの状態確認 $ sudo ufw status
VimとGitも入れておく
$ sudo apt-get -y install vim git
fail2banを入れる
下記を参考にやってみた。まず、/etc/fail2banに移動して、jail.localというファイルをつくって、そこに設定を書くといいらしい。
参考:Fail2ban fails to run after upgrade to Ubuntu 16.04 参考:How To Protect SSH With Fail2Ban on CentOS 7 参考:How To Protect SSH with Fail2Ban on Ubuntu 14.04
$ sudo apt-get -y install fail2ban $ cd /etc/fail2ban $ sudo vim jail.local
jail.local
[DEFAULT] # Ban hosts for one hour: bantime = 3600 destemail = hoge@hoge.com action = %(action_mwl)s # Override /etc/fail2ban/jail.d/00-firewalld.conf: banaction = iptables-multiport [sshd] enabled = true
fial2banを再起動する。enableは自動起動設定らしい。
$ sudo systemctl enable fail2ban $ sudo systemctl restart fail2ban
下記で状態をチェックできる。statusの次にjail_nameをつけると、その詳細が表示される。
$ sudo fail2ban-client status $ sudo fail2ban-client status sshd
間違ったrootログインをしたら、fail2ban-client status sshdが更新された。しっかり動いている。でもメールの設定とかはまだ不十分かもしれない。
ログの場所のメモ
fail2banのログ
$ tail -n 100 /var/log/fail2ban.log
認証関連のログ
$ tail -n 100 /var/log/auth.log
つかれた。残りは今度やる。セキュリティ対策は沢山やることあるなー。 参考: Ubuntu 12.04 LTSサーバーを安全にする