CentOS7でサーバ構築入門 その2 sshサーバの構築

前回の続きです.

mcg.hateblo.jp

 

sshとは

パソコンをリモート操作する仕組みのこと.

今は,VirtualBox上で作業を行っていますが,Macのターミナルなどから作業が行えるようになれば,コピペとかもできるようになって,とても楽です.

サーバ使うソフトウェア,「OpenSSH」は,CentOS7.0をインストールする時に自動でインストールされているはずです.

 

実践

それでは,まずは以下のコマンドを打つことによって,サーバをスタートさせましょう

sudo system-ctl start sshd

その次に,ファイアフォールの設定をしていきます.

ファイアウォールとは,日本語では防火壁と行って,信頼できないところからの接続を拒否する仕組みです.

詳しくはこちらを確認ください.

このfirewalldというシステムは,CentOS7から出てきたものみたいです.

5分で絶対に分かる:5分で絶対に分かるファイアウォール (1/7) - @IT

 

まず,このコマンドを打って,sshがファイアウォールによって弾かれないようにします.

--permanentオプションをつけておかないと,システムを再起動した時などに元に戻ってしまいます.

sudo firewall-cmd --add-service=ssh --zone=public --permanent

それができたら,以下のコマンドを打って,ファイアウォールをリロードします.

sudo firewall-cmd --reload

では,以下のコマンドでファイアウォールのリストを見てみましょう.

sudo firewall-cmd --list-service

f:id:McG:20151127082402p:plain

このように,sshが追加されていたら成功です.

/etc/firewalld/zones/ の中に,zoneごとに設定ファイルがあります.今回は,--zoneでpublicを指定したので,public.xmlに記載されています.

catコマンドで確認してみましょう.

f:id:McG:20151127110118p:plain

 

はい,このように,sshがサービスとして登録されているのがわかります.

では,次にポートフォワーディングの設定をしていきます.

VirtualBoxの,設定を立ち上げます.

f:id:McG:20151127110542p:plain

そしたら,こんな感じの画面が開くので,ネットワークをクリックします.

 

f:id:McG:20151127110836p:plain

 

 

下の方に,ポートフォワーディングとあるので,そちらをクリックします.

 

f:id:McG:20151127110742p:plain

 

で,右上のこのプラスボタンを選択.

そして,今回,ホストがリモート接続に使用するマシンで,ゲストが仮想マシンです.

f:id:McG:20151127110951p:plain

こんな感じで設定しておけばいいと思います.

 

では,Macのターミナルを開いて,ssh ユーザ名@localhost -p ゲストポートとコマンドをうち,出てくるものにyesとか書いておけば,sshで仮想マシンに入れます.

f:id:McG:20151127111330p:plain

 

windowsユーザはこちらを参考にしてください.

 

ただし,これだけでは不十分です.sshができるようになるってことは,パスワードさえばれれば全世界のユーザが自分のマシンにアクセスできてしまうということです.

それでは問題があるので,セキュリティを強化していきたいと思います.

 

sshでrootに入れないようにする

 現在の設定だと,rootにも入れてしまいます.

f:id:McG:20151127120428p:plain

ね,ただ,rootは,このマシンの神のようなもので,rootで入られると大変危険です.

 

ということで,まずはrootで入れないようにしましょう.

sshの設定ファイルは, /etc/ssh/sshd_config ですので,こちらに書き込んでいきます.初期設定だと中身はこんな感じ.

f:id:McG:20151127120840p:plain

 

これを,vimとかnanoとかemacsで編集していきます.

vimの使い方はこちらを参照.

 

 

この設定ファイルに,PermitRootLogin noを記述します.

雛形は用意されていて,初期設定では#PermitRootLogin yesのように,コメントアウトされているので,コメントを外して書き換えます.

sudo systemctl restart sshdと打つと,sshサーバが再起動され,この設定ファイルに書いたことが反映されます.

exitで一旦sshを抜けて,再びrootでログインを試みてみましょう.

f:id:McG:20151127122101p:plain

このように,入れなくなっていれば成功です.

 

sshd_configをいじっていく

http://www14.plala.or.jp/campus-note/vine_linux/server_ssh/sshd_config.html

こちらを参考にして,sshd_configをいじっていきます.

 

ソーシャルエンジニアリングの防止として,時間制限をかけます. 以下の設定を書いておくと,10秒以内にパスワードを入力しないといけなくなるので,パスワードを見られる可能性が減ります.

LoginGraceTime 10s

そして,以下のように書いておけば,総当たり攻撃を回避できます.

MaxAuthTries 5

 

ポート番号の変更

sshは,デフォルトでは22番ポートを使用するようになっています.

つまり,悪意を持った人たちは,22番ポートに攻撃を仕掛けてきているわけです.

ってことで,ポート番号を変えましょう.

参考記事

 

まずは,先ほどのsshd_configのファイルの「Port」のところを,指定したいポート番号に変更します.デフォルトでは22番になっています.

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml

このコマンドを打ち込んで,設定ファイルをコピーしてきます.

直接 /usr/lib/firewalld/services/ssh.xmlをいじってミスをしてしまうと,戻すのが大変なので,コピーをとっていじっていくわけです.そうすれば,ミスれば消しちゃえば終わりです.

 

で,中身を見てみると,

f:id:McG:20151127133353p:plain

と,こういう感じになっているので,portのところを,「1234」と言った感じに書き換えます.

このコマンドで,sshサーバとファイアウォールをリスタートします.

sudo systemctl restart sshd

sudo systemctl restart firewalld

 

このコマンドを入力し,しっかりポートが空いているかを確認しましょう.

ss -t -l -n

その後,一旦ssh接続を切って,先ほどのポート番号にアクセスしてみましょう.

すると,ログインできなくなっているのがわかります. 

f:id:McG:20151127134031p:plain

 

virtualBox上のポートフォワーディングの設定をいじります.

先ほど設定したポート番号に,ゲストポートを変えます.

現在,22番になっているので,さっき変えたポート番号に変更します. 

f:id:McG:20151127140442p:plain

 

こうすることで,変更したポート番号でsshできるようになっているはずです.

 

sshの公開鍵設定

公開鍵という仕組みがあります.鍵を持っていないと,sshのアクセスを拒否することができます.

鍵さえ持っていれば,パスワードを入力する必要もなく,楽,かつパスワード入力がないので安全です.

鍵を共有しておけば,安全にログインができます.

まず,mac側で以下のコマンドを入力します.すると,2048bitの公開鍵が生成されます.

ssh-keygen -t rsa -b 2048 

いろいろ聞かれますが,空でエンターを押せば大丈夫です. 

 \~/.ssh/ 以下に,id_rsaと,id_rsa.pubが生成されます.id_rsaが秘密鍵,id_rsa.pubが公開鍵になります.

公開鍵をリモート側に送ってあげれば,秘密鍵を持っている自分はパスワードなしで入れるようになるという仕組みです.

秘密鍵,公開鍵の設定に関してはこちらをご覧ください.

 

では,鍵を送ってあげます.mac側で,以下のコマンドを入力します

scp -P ポート番号 ~/.ssh/id_rsa.pub マシン名:パス

-Pでは,ログインの時に指定している ポート番号を入力してください.

 僕の場合は,こんな感じです.

f:id:McG:20151127150800p:plain

送信できたら,確認してみます.CentOS側で,lsコマンドを打つと,id_rsa.pubがあるのが確認できます.

f:id:McG:20151127151250p:plain

 

では,.sshのディレクトリを作成し,権限を変更します.

mkdir .ssh

chmod 700 .ssh

そして,先ほどのid_rsa.pubの内容を,authorized_keysというファイルに書き込みます.

cat ../id_rsa.pub authorized_keys

で,authorized_keysの権限を変更します.

chmod 600 authorized_keys

そして,先ほどからいじっている,sshの設定ファイル,/etc/ssh/sshd_configを開き,PasswordAuthentication noを設定します.

こうすることによって,パスワード認証は不要になり,鍵を持っていない人はアクセスできなくなります.

最後に,以下のコマンドでsshサーバを再起動します.

sudo systemctl restart sshd

 

では,ログアウトして再度sshをしてみましょう.

パスワードなしでログインができるようになっているのではないでしょうか.

f:id:McG:20151127153118p:plain

はい,このようにパスワードを聞かれることなく自分のサーバに入ることができました.

 

お疲れ様でした.以上でsshサーバのセットアップを終わります.

次回はnginxを用いたwebサーバの構築と,wordpressの設定を行います.

© 2016 Yuki Sako.