LoginSignup
0
0

【入門】VPSで借りたubuntuをサクッとセキュリティ向上

Posted at

この記事について

本記事は自身の忘備録的な要素も強いですが、出来るだけ読み返し易いようにしたので、良ければ参考にしてください。

実例

以下からは、コマンドの実例を紹介していきます。基本的には順番通りに行うことができるように書きました。

大きくは以下の3つを行います。

・公開鍵認証のみをssh接続に利用するように変更
・sshのポート番号を変更
・ufw(ファイアウォール)の設定

sshログイン

ssh <ユーザー名>@<IPアドレス> 

基本的なVPSに接続するためのコマンド

userを追加

目的
rootユーザーを使うのは全ての権限を持ってることもあって危険だから、操作を行うためのユーザーを作成する。

sudo adduser <ユーザー名>

userをsudoグループに追加

目的
sudoグループに追加することで、追加したユーザーにファイル変更などの権限を与えることができる。

sudo gpasswd -a <new_user> sudo

-aは追加を表すオプション
-dで削除などがある

ssh鍵作成

目的
公開鍵認証を行うために作成する。

ssh-keygen -t rsa -b 4096 -C メールアドレス

-tで鍵のタイプ指定、-bでビット数指定する。
秘密鍵と.pubとついた公開鍵が作成される。
鍵の作成先を選べるけど、デフォルトなら~/.ssh以下に作成される。

サーバーにssh鍵を登録

ssh-copy-id -i 公開鍵のパス <new_user>@<your_vps_ip>

デフォルトだと~/.ssh以下に作成された公開鍵のパスを指定

パスワード認証の無効化

目的
パスワード認証は総当たりなどに弱くて安全性が低いから、作成した公開鍵認証のみでVPSに接続したい。

sudo nano /etc/ssh/sshd_config

でテキストエディタ開いて、以下に変更する

PasswordAuthentication no

sshサービスの再起動

目的
sshサービスの変更を更新するために行う。

sudo systemctl restart ssh.service

sshポート番号を変更

目的
sshはデフォルトでPort番号22が設定されてるが、攻撃の対象になりやすいから変更しておく。

cat /etc/services

に書かれていない1024~32767に書かれていないポート番号を適当に選ぶのが良い。

変更には、以下でテキストエディタを開いて

sudo nano /etc/ssh/sshd_config
#コメントアウト
#Port 22

<例: 10022に設定する場合>
Port 10022

のようにする。こうするとssh接続の際は以下のようになることを注意する。

ssh -p 10022 ユーザ名@IPアドレス

さくらVPSなどパケットフィルタが最初から存在する場合は、ポート番号がブロックされるから、パケットフィルタを外す必要がある。
外したら、自前でUFWといったファイアウォールをしっかりと設定する。

ufw(ファイアウォール)のステータス確認

sudo ufw status

デフォルトではinactiveになっており、起動していない。

ufwで外部からの接続を許可する方法

目的
デフォルトでは外部からの接続は拒否されているはずなので、必要な通信プロトコルを許可する必要がある。

sudo ufw allow 通信プロトコル

<例: ssh>
sudo ufw allow ssh

ポート番号を変えているなら、以下のようにポート番号も指定する
sudo ufw allow 10022/ssh

回数制限付きで外部からの接続を許可

目的
総当たりでパスワードを入力することや、大量のアクセスを行う攻撃に対応できる。

sudo ufw limit 通信プロトコル

<例: ssh>
sudo ufw limit ssh

ポート番号を変えているなら、以下のようにポート番号を指定する
sudo ufw limit 10022

limitによる許可は、30秒に6回までの接続を許可する。
sshは多くの接続を普通は行わないので、limitによる許可が好ましい。

ufwの起動

上記のssh接続の許可をしていないと、ssh接続が出来なくなるから注意する。
もしものために、ネットワークを経由しない、仮想コンソールなどのアクセス手段を確保する。

sudo ufw enable

おわりに

他にもsshコマンドでのログイン時に2段階認証をつける方法なども存在します。
ここに追加するかもしれませんが、興味がある方は調べてみてください。

個人的なメモ

特定のサービスの稼働状況を確認

sudo systemctl status サービス名

起動している全てのサービスのリストを確認

sudo systemctl list-units --type=service --state=running
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0