1. rootパスワードを設定し、SUコマンドを利用
$ passwd root password for <user名> ← 現在のユーザのパスワード Enter new UNIX password: ← 設定するrootパスワードを入力 Retype new UNIX password: ← 設定するrootパスワードを再入力 passwd: password updated successfully |
2. SSHの初期設定
$ su – パスワード : # cd /etc/ssh # vi sshd_config PermitRootLogin no ← #rootでログイン不可にする |
3. SSH鍵認証の設定
#一般ユーザーになり、RSA でキーペアを作成します $ ssh-keygen -t rsa Enter file in which to save the key (/home/masa/.ssh/id_rsa): #保存先 変更なければそのままEnter Created directory ‘/home/<user>/.ssh’.Enter passphrase (empty for no passphrase):#パスワード設定(そのままEnterでパスワードなし) Enter same passphrase again: $ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys |
この後、WINSCPなどを用いて id_rsa ファイルをWindowsの適当なところにコピー
#パスワード認証をできないようにするために設定ファイルを書き換える。 $ su – # vi /etc/ssh/sshd_config #56行目 パスワード認証不可にする PasswordAuthentication no → PubkeyAuthentication yes #SSHサービス再起動 |
4. UFWによるファイアウォール
#まずは以下のコマンドを打ってufwの設定状態を見てみます。 # sudo ufw status Status: inactive #inactiveと表示されているように、最初はufwの設定が無効になっているはずです。 #そのためufwを一度有効化させるために以下のコマンドを打ちます。 # sudo ufw enable #上記のコマンドを打つと、人によっては以下のような表示が出る可能性があります。 Command may disrupt existing ssh connections. Proceed with operation (y|n)? #「現在のssh接続を中断させる可能性があります。操作を続けますか?」という意味で、ssh接続などでサー#バーに繋いでいるユーザーには出るそうです。 #自分の環境ではy(yes)を入力してもsshが切断されるなんてことは無かったため、yを入れても問題ないと思#います。 # ufw status Status: active #(activeと表示されているため有効) #この状態で以下のコマンドを打つとiptablesにいろんな設定が書き込まれているはずです。 # iptables -nL #ちなみにufwを無効化したくなった場合は以下のコマンドを打ちます。 # ufw disable |
#まずは以下のコマンドを打って、一度全ての通信を無効化します。 # ufw default DENY Default incoming policy changed to ‘deny’ (be sure to update your rules accordingly) #これにより、外からの通信は全て遮断されます。(現状繋いでいるままのssh接続に関しては途中で切れるこ #一度全ての通信を遮断し、ここからそれ以外の何の通信は許可するかを決めていきます。 #ちなみにこの設定を行っても、無効化した通信はあくまで「外→内」に向かって来る通信であり、 実際に設定を行う #ufwの設定で「ポート番号◯◯に来る通信を許可」としたい場合は以下のようにコマンドを打ちます。 # ufw allow [ポート番号] #逆に「ポート番号◯◯に来る通信を許可しない」としたい場合は以下のようにコマンドを打ちます。 # ufw deny [ポート番号] ssh接続を許可 #まずは今後もリモートから接続できるように、ssh接続を許可します。 #ssh接続を許可するには、以下のコマンドを打ちます。sshポートを5001番に設定と仮定 # ufw allow 5001 #ssh接続は5001番ポートに変更のため、5001番への通信を許可します。 #5001番ポートに対して適当なパスワードを打ち込み、偶然一致を試みてログイン出来るように連続でアクセ#スを試みてきます。これをブルートフォース攻撃とも言います。 #これの対策として、「連続してアクセスしてくるIPアドレスの接続を許可しない」設定を施しましょう。以下のコマンドを打ちます。 # ufw limit 5001 #これにより「30秒間の間に6回以上接続を試みた IP アドレスを許可しない」ルールが設定されます。 #一度これで設定を確認します。以下のように表示されるはずです # ufw status Status: active To Action From — —— —- 5001 LIMIT Anywhere 5001 (v6) 1 LIMIT Anywhere (v6) #IPv4とIPv6の5001番ポートに対してLIMIT(接続制限)が設定されています。 |
特定のネットワークからのssh接続のみ許可 #上記の設定を施したとしても外部のインターネットにsshのポートを晒していることに変わりはありません。#接続の回数に制限を設けたとしても、何らかの方法でパスワードを推測されて接続をされてしまったり、 #そのため、sshの接続を許可するのは内部からのネットワークのみにして、外部からのssh接続は全て許可し#ない設定にします。 #ローカルエリアネットワーク内には「192.168.11.10」のIPアドレスが振られたホストがあります。このホ#ストからのみssh接続を許可する。又はこのネットワーク(192.168.11.0/24)からのみssh接続を許可するよ#うに設定するには以下のようなコマンドを打ちます。 #(192.168.11.0/24からのssh接続を許可) # ufw allow from 192.168.11.0/24 to any port 5001 Rule added #(192.168.11.10からのssh接続を許可) # ufw allow from 192.168.11.10 to any port 5001 Rule added #設定を確認してみると、以下のようになっているはずです。 #(192.168.11.0/24からのssh接続を許可した場合の結果) # ufw status Status: active To Action From — —— —- 5001 LIMIT Anywhere 5001 ALLOW 192.168.11.0/24 5001 (v6) LIMIT Anywhere (v6) #ただし、この状態でも外部からの接続回数制限付きのssh接続を許可してしまいます。 #そのため、LIMITをつけているルールを削除します。 #以下のコマンドでルール番号を表示して設定を確認します。 # ufw status numbered Status: active To Action From — —— —- [ 1] 5001 LIMIT IN Anywhere [ 2] 5001 ALLOW IN 192.168.11.0/24 [ 3] 5001 (v6) LIMIT IN Anywhere (v6) #上記の用に表示された場合、1と3のルールが不要なため、番号を指定してルールを削除してしまいます # ufw delete 1 Deleting: limit 5000 Proceed with operation (y|n)? y Rule deleted #これで1番のルールが削除されました。3番も上記同様にルールを削除します。
WEBへのアクセスを許可する #WEBサーバーのファイアウォールを設定するのが今回の目的なので、80(HTTP)と443(HTTPS)への接続を #ポート番号を指定して接続を許可するのもいいですが、アプリケーションを指定しての設定も行えます。 #以下のコマンドでアプリケーションの一覧が見れます。 # vi /etc/services #以下のコマンドでHTTP(80),HTTPS(443)の接続を許可します。 # ufw allow http Rule added Rule added (v6) # ufw allow https Rule added Rule added (v6) #設定を確認すると以下のようになっているはずです。 # ufw status Status: active To Action From — —— —- 5001 ALLOW 192.168.11.0/24 80 ALLOW Anywhere 443 ALLOW Anywhere 80 (v6) ALLOW Anywhere 443 (v6) ALLOW Anywhere (v6) #これで外部から80,443(WEB)へのアクセスが行えるようになりました。 ipv6のufwを無効 # vi /etc/default/ufw IPV6=yes → IPV6=no #全ての作業後 # systemctl restart ufw |