02_SSH.md

2021/5/18

SSH
概要Linuxへの遠隔ログインを⾏う上で，デファクトスタンダードとなってるSSHについて，説明する．
仮想マシンに対してSSHを⾏い，コマンド操作を⾏える環境を作成する．
また，SSH以前から使⽤され続けるTelnetについても併記する．

⽬次
1. SSH2. 使⽤⽅法
3. 注意点
4. Telnet

SSH
Linuxを始めとしたUnix系や近年ではWindowsにおいて，遠隔ログインに SSH (Secure SHell)が多く使われる．
遠隔サーバにログインでき，仮想端末を⽤いてコマンドを⼊⼒し，結果を受け取ることができる．
シェルスクリプトによる⾃動化を⽤いることで，サーバ間での処理の⾃動化ができる．
本演習では，別紙で作成した仮想マシン(仮想サーバ)に対し，下図のように遠隔ログインする．

SSHは，Telnetやrloginといった旧来のセキュリティに⽋ける遠隔ログインのプロトコルを置き換える．
上記のプロトコルは，暗号化されておらず，パスワードやコマンドを含むデータを覗き⾒できるという問題点があった．
SSHは，通信を暗号化するため，これらの⼼配をなくす．
基本的に多くのUnix系にサーバプログラムが搭載されている．
使⽤時には，デーモンの起動やFirewallの許可が必要である．
また，Unix系に限らない多くのシステムにクライアントが搭載されている．

1/7

02_SSH.md

2021/5/18

Windowsでも近年搭載されているが，⻑い期間の間搭載されていなかったため，サードパーティのクライアントである Tera Term を使うことが多い．
ユーザの認証⽅式には，パスワード認証と鍵認証の2つがある．
パスワード認証はユーザ名とパスワードで認証を⾏い，鍵認証は公開鍵と秘密鍵で認証を⾏う．
本資料では，パスワード認証を⽤いる．
SSHを応⽤することでファイル転送を⾏う， SCP や SFTP がある．
これらは，遠隔サーバとのファイル転送や取得によく使われる．
本演習で作成した仮想マシン上のファイルも， WinSCP などを使うことで，ホストマシンと相互に転送できる．
また，SSHのポートフォーワード機能を⽤いることで，SSHを介してVPNのように様々な通信を転送できる．
例えば，外部にSSHの鍵認証のみを許可しているSSHサーバを中継し，WindowsやLinuxのリモートデスクトップや，Sambaファイルサーバへのファイル転送ができる．
このようにして，リモートワーク体制を整えている研究室もある．

使⽤⽅法
1. VirtualBoxのポートフォーワード設定を⾏う．
VirtualBoxの画⾯から仮想マシンを選択して， 設定 を開く．

設定の⼤項⽬の ネットワーク を選択する．

2/7

02_SSH.md

2021/5/18

⾼度 から ポートフォワーディング を開く．

以下の最終⾏のように設定する．
名前: sshプロトコル: TCP
ホストポート: 40022
ゲストポート: 22

3/7

02_SSH.md

2021/5/18

2. Tera TermなどのSSHクライアントを⽤いて接続する．
ホスト:localhost
TCPポート: 40022
サービス: SSH
ユーザ: itakehara
パスワード: ユーザに対応するパスワード
3. ログインできれば，このような画⾯が表⽰される．

注意点
⼀般的にサーバがインターネットからの遠隔ログインを受け付けるには，セキュリティが重要である． ここでは，セキュリティを⾼める上で必須である，ログインの認証⽅法について述べる．
パスワード認証は，ユーザ名とパスワードが⼀致すると，ログインできるため，総当り攻撃の対象になりやすい．
特に，ユーザ名はシステムユーザや多く使われる⽤語である程度絞られる．
4/7

02_SSH.md

2021/5/18

パスワードは，総当り攻撃(Brute-force attack)などが試みられる．
亜種として類推攻撃や辞書攻撃が⽤いられる．
これを防ぐには， 鍵認証 を有効化し，パスワード認証を無効化する．
また，已むを得ずパスワード認証を⽤いる場合は，最低限，以下のような対策を⾏い，セキュリティを向上することが望ましい．
(1). rootユーザによるログインの禁⽌
そもそも，rootユーザを使うべきでないことは，User-Manage章で述べた．
rootユーザは，多くのLinuxシステムに存在するユーザであり，かつ強⼒な権限を持つため，パスワード総当り攻撃の対象になりやすい．
(2). 空パスワードにログインの禁⽌
以下は，ユーザのパスワードのハッシュ値を記録するファイルの⼀部である．
: で区切られた第2フィールドがパスワードのハッシュ値である．
bin や apache などのシステムユーザには，パスワードが設定されていないことがわかる．
これらのユーザを⽤いて空パスワードでログインを試みられる可能性がある．
なお，システムユーザは，/etc/passwd にて，nologin シェルなどを⽤いてログインを弾いていることが多い．

root:$6$Gqkj$ineQdmecDZmoHTIVdMujC2xc68xQ3MpYMts:15500:0:99999:7:::
bin:*:15204:0:99999:7:::
apache:*:15500::::::
user1:$6$BTGO$QLWMfhH10k1nNpEOtYSRVbjEV4csksqrs0:16636:0:90:7:::(3). 接続元IPアドレスの制限
不特定多数からの接続を防ぐために，接続元のIPアドレスを特定のネットワークアドレス内に制限する．
================================================================================
余談であるが，以下は，最所研究室の公開サーバへ，パスワード認証で不正にログインを試み，失敗した⼀部である．
本サーバは，鍵認証のログインのみを許可しているが，もしパスワード認証ならは突破されていてもおかしくない．

admin
pi
pi
ubuntuapachemysql
apachessh:notty
ssh:notty
ssh:notty
ssh:notty
ssh:notty
ssh:notty
ssh:notty

87.241.1.186
183.103.44.215
183.103.44.215
218.92.0.213
157.230.85.8
157.230.85.8
69.158.207.141

Tue Nov 17 20:44 - 20:44
Tue Nov 17 17:42 - 17:42
Tue Nov 17 17:42 - 17:42
Tue Nov 17 10:26 - 10:26
Sun Nov 15 17:33 - 17:33
Sun Nov 15 20:20 - 20:20
Fri Nov 13 00:52 - 00:52(00:00)(00:00)(00:00)(00:00)(00:00)(00:00)(00:00)

⾹川⼤学では，外部にSSHサーバを公開する際は，パスワード認証を無効化し，鍵認証を導⼊することが義務付けられている．
================================================================================

Telnet5/7

02_SSH.md

2021/5/18

古くから存在する遠隔ログインのプロトコルである．
通信を暗号化しないため，ユーザ名，パスワード，コマンドとその結果が，全て平⽂でネットワークに流れる．
その結果，悪意のあるものがパケットを盗み⾒ることができた．
近年では，上記のSSHが遠隔ログインには使われるが，多くのシステムに内蔵している点や，暗号化をしない故に⾼速な点で，サービスの通信の確認に使われることが多い．
Tera Termでは，Telnetもサポートしている．
例えば，hoge.eng.kagawa-u.ac.jpにHTTPポート(80番)に，接続すると，以下の結果が帰ってくる．

$ telnet hoge.eng.kagawa-u.ac.jp 80
Trying 192.168.1.2...
Connected to hoge.eng.kagawa-u.ac.jp.
Escape character is '^]'.

ここで，以下のリクエストを⼊⼒する．

GET /index.html HTTP/1.1
Host: hoge.eng.kagawa-u.ac.jp(空⾏)

このようにヘッダを含む，応答が表⽰される．

HTTP/1.1 200 OK
Date: Wed, 18 Nov 2020 23:15:12 GMT
Server: Apache
Last-Modified: Sat, 01 Feb 2020 04:54:19 GMT
ETag: "4f-59d7c7ba47f55"
Accept-Ranges: bytes
Content-Length: 79
Content-Type: text/html<html><body>
HTTPによるアクセステストです。(gin)</body></html>

また，SSHポート(22番)に接続を試みると，以下のように帰ってくる．

Trying 192.168.1.2...
Connected to hoge.eng.kagawa-u.ac.jp.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

6/7

02_SSH.md

2021/5/18

このようにTelnetを⽤いることで，そのポートに対する通信の可否を判別することができる．

奥付Name⽵原 ⼀駿 ( Ichitoshi TAKEHARA ), 後藤 祥仁 (Yoshihito GOTO)
所属
⾹川⼤学⼤学院 ⼯学研究科 信頼性情報システム⼯学専攻 最所研究室 M1
メールアドレス itakehara@fw.ipsj.or.jp-------------------------------------------------------------------------------2020/12/03 初版
2021/04/10 2版
2021/05/18 3版--------------------------------------------------------------------------------

7/7