MENU

【CentOS】VPSにTomcatを導入したいので、Linuxの初期設定をやってみた。

こんにちは。くまごろーです。
JavaアプリをWeb上にデプロイしたくて、さくらのVPSをレンタルして色々やってるのですが、中々うまくきません。
ApacheTomcatajp連携がうまくいかなくて、ついにteratailへの質問デビューも果たしてしまいました(-_-)
 
ここ10日間くらいで集中的にlinuxについて勉強してきたのですが、結局そもそもの問題(VPSApacheTomcatを連携させる)は解決できてないにしても、初めてLinuxを触った時と比べると、「何をしているのか」がわかってきました。
ここでは、CentOSJDK,Apache,Tomcatを導入する前の段階、CentOSの初期設定についてまとめることにします。

 
■ 環境
 ・さくらのVPS
 ・OS:CentOS Linux release 7.8.2003

 
■ 手順(CentOSをインストールしてから)

 
1 rootユーザーでログインする
 CentOSインストール直後は、rootユーザー以外にユーザーがいない状態なので、とりあえずrootユーザーでログインします。

 
2 OSをアップデートする

 #yum update

 初期状態ではインストールされていないパッケージもあるので、最初にこのコマンドでアップデートをやってしまう。

 
3 ログインユーザーを変更してセキュリティを強化する
 サーバーは初期状態だと、rootユーザーしかいないが、rootユーザーは権限が非常に強い。rootユーザーのパスワード等を他人に知られてしまうと、サーバーを乗っ取られてしまう恐れがある。そのため、他にユーザーを作成し、rootユーザーではログインできないようにする。

 ●一般ユーザーを作成する

  #adduser 任意のユーザー名

 
 ●さっき作ったユーザーのパスワードを設定する

  # passwd 先ほど打ち込んだユーザー名

 ※ パスワードは2回入力を求められる
 
 ● 一般ユーザーでログインできるか確かめるために、rootからログアウトする 

  # exit

 
 ●先ほど作成したユーザー名でログインできればOK
 
 ● sshサーバーの設定を変更して、権限の強いrootでアクセスできないようにする

  #cd /etc/ssh   //cd:カレントディレクトリの遷移
  #cp sshd_config sshd config_copy  //cp:ファイルバックアップ
  #vim sshd_config  //vim:ファイル編集

 ※ 上記のコマンドを実行すると、ファイル編集画面に遷移する。遷移直後はファイルへの入力を受け付けない状態。(コマンド入力モード)
  入力を受け付けるモードに切り替えるには、[a]または[i]を入力する。反対に、コマンド入力に戻るには[esc]キーを押下する。
  ファイルを保存して終了するには、コマンド入力モード中に「:wq」を、保存しないで終了する場合は「:q」を入力。
 
 ● 上記ファイルを編集する。
  38行目あたりにある以下の部分を変更して、rootユーザーのログインを禁止する。

  #PermitRootLogin yes 
    → PermitRootLogin no

 
 ● sshサーバーを再起動する。
  設定変更が終了したら、以下のコマンドを実行してサーバーを再起動する。

  # systemctl restart sshd.service

 
 ● rootユーザーでログインしてみて、ログインできないことを確認
 「Access denied」と表示されるはず。

 
 
ssh接続を鍵認証で行う
 ssh接続はデフォルトだと、パスワード認証されるよう設定されている。この状態だと、「パスワードを知っていて」「サーバーにアクセスできる」と、だれでもサーバーにアクセスできてしまう。それを防ぐために、鍵認証でssh接続できるよう設定変更する。

 ● 鍵を保存するためのフォルダを用意

  $ mkdir ~/.ssh //mkdir:ディレクトリ作成(鍵を保管するフォルダを作る)
  $ cd ~/.ssh  //.sshフォルダに遷移する

 
 ● 公開鍵と秘密鍵を生成する

  $ ssh-keygen -t rsa  //id_rsaという秘密鍵と、id_rsa.pubという公開鍵が生成される

 
 ● SSHサーバに公開鍵を登録する

  $ scp -P 22 ~/.ssh/id_rsa.pub ユーザー名@IPアドレス:~/.ssh/authorized_keys 

 ※ サーバー側の.ssh/authorized_keysに、公開鍵id_rsa.pubを渡す。
 
 ● パーミッションを変更する。

  $ chmod 700 ~/.ssh  //クライアント側
  $ chmod 600 ~/.ssh/authorized_keys  //サーバー側

 ※ 700とか600とかは、ユーザー毎のアクセス権を数値で表したものです。このサイトを参考にしました。
  アクセス権(パーミッション)の記号表記と数値表記
 
 ● 接続を確認する。

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

 ※ 鍵のパスフレーズを求められればOK

 
 
5 ポート番号を変更する。
  SSHサーバーは初期設定だと22番ポートを利用している。このポート番号は広く知られているので、侵入のリスクが高まる。
 
 ● 一般ユーザーでログインする
 
 ● su コマンドでrootユーザーに変更する。
 ※ 「su」コマンドを入力し、rootユーザーのパスワードを入力すると、一時的にrootユーザーとして操作できる。
 
 ● SSH設定ファイルを編集して、Port番号を変更する

  # vim /etc/ssh/sshd_config  //sshd_configファイルを編集

   「#Port 22」 → 「Port 任意の番号」に変更する。
 
 ● 構文チェックを行い、問題なければssh設定を反映させる。

  #sshd -t //構文チェック
  # service sshd restart //リスタート

 
 ● 新たに設定したポートでログインしてみる

 $ ssh -p ポート番号 ユーザー名@IPアドレス

 
まとめてみるとなかなか長いですね(-"-)
これでもまだだめなところあるんだろうなあ・・・
手を出してみてすごいわかりましたが、サーバーって本当難しいですね。
言語の勉強やってる時の方がまだ気楽だなと感じました。
Javaだったらコンパイルエラー吐いている行を見つけて、検索するなりすれば大体解決できますが、Linuxいじっているときは本当に気を使います。
一度うまくいかなくなりだしたら、迷路に迷い込んだ人みたいになってしまう。
触っているうちに慣れてくるのかなあ