sshでセキュアネットワーク構築
宗近龍一郎(ハンドル名:まいパパ)
株式会社デジタルデザイン
Project BLUE
2000/12/15
おもな内容
|
sshとは sshの入手とインストール Linuxクライアントからのログイン Windowsクライアントからのログイン sshを利用するツール One-Timeパスワードでより安全に |
昨今は家庭でもインターネットに常時接続できる環境が整ってきました。職場や学校から自宅のサーバへリモートでログインしておられる方も多いのではないでしょうか。そのような場合皆さんはどういった方法でログインされていますか? Windowsマシンからtelnetコマンドを使ってログインしていませんか?
ちょっと待ってください。現実社会と同じように、ネットワーク社会にも悪者はたくさんいます。彼らはあなたのログインアカウントやパスワード、特にrootのパスワードを虎視眈々と狙っています。そして、入手したアカウントであなたの大事な情報を盗んだり、はたまたあなたのサーバを踏み台にして別のサーバに悪戯をしようとたくらんでいます。そうならないためにも、安全な方法を使ってログインしなくてはなりません。その安全なログイン方法こそ、これから紹介するsshなのです。
ssh(Secure SHell)とはネットワークを介してインターネット上に置かれているサーバにログインしたり、 コマンドを実行したり、ほかのマシンへファイルを移動 (コピー) したりするためのプログラムです。パスワードやデータを暗号化して通信内容の漏洩を防ぐほか、データを圧縮するので送受信を効率化できます。そのため、安全性が保障されない経路上(たとえばインターネット)でも安全な通信が行えるというわけです。具体的には、rsh(リモートシェル)やrlogin(リモートログイン)、rcp(リモートファイルコピー)などのr系コマンドに代わるものとして作られており、それぞれssh、slogin、scpといったコマンドが用意されています。
sshにはssh-1.x系とssh-2.x系の2種類があります。1.xと2.xには、暗号化を行うプロトコルや使用ライセンスに違いがあります。1.x系は個人的な非商用の使用については無償であるという緩やかなライセンス形態をとっているのですが、2.x系はおおむね有償となっています。ただし、1.x系も全ての用途について無償というわけではないので、さらに緩やかなライセンス形態を持つフリーな実装であるOpenSSHも出てきています。
TurboLinux Serverなど、比較的新しいディストリビューションには、あらかじめOpenSSHがインストールされています。OpenSSHがインストールされていない場合は、RPMパッケージで導入することができます。ただし、OpenSSHを導入するにはあらかじめOpenSSLがインストールされている必要があります。
OpenSSHは面倒だと思われる方で、個人的に非商用で使用するのであればssh-1.xをコンパイルしてインストールするのがよいと思います。その場合、ssh-1.2.26以下のバージョンについてはセキュリティ的に問題があるので、それ以降のバージョンを使ってください。ここではssh-1.2.30を前提に話を進めることにします。
2000年12月3日現在、ssh-1.2.30.tar.gzのパッケージは以下のFTPサイトなどに登録されてます。
ftp://ftp.cs.hut.fi/pub/ssh/(一次配布サイト)
ftp://ftp.kyoto.wide.ad.jp/pub/security/ssh/
ftp://ftp.riken.go.jp/pub/security/ssh/
コンパイルは非常に簡単です。以下のように、ssh-1.2.30.tar.gzを/usr/local/srcなどのディレクトリにコピーして(GNU)tarで展開、configure、makeを行ったあとにsuでrootになり、インストールを実行します。
$ cp ssh-1.2.30.tar.gz /usr/local/src |
インストールが終了したら、sshのデーモン(sshd)を起動します。標準では、sshdは/usr/sbinディレクトリにインストールされるので、
# /usr/sbin/sshd |
で実行します。
sshは安全なログインを行うために、ログインしてくる経路を制限します。関連するファイルは/etc/hosts.allowおよび/etc/hosts.denyの2つです。viなどのエディタで2つのファイルを編集します。
# |
リスト1 /etc/hosts.deny |
経路の制限はまず/etc/hosts.denyを優先しますので、「ALL: ALL」の1行が有効かどうかを確認してください。
# |
リスト2 /etc/hosts.allow |
/etc/hosts.allowには、実際にログインする可能性のあるマシンおよびネットワークのアドレスを列挙します。
(1)はローカルホストの指定。必ず指定しておくこと
(2)はログインを許可するマシンを特定する場合(IPアドレスで指定)
(3)はログインを許可するネットワークの指定方法。リスト2の例では、192.168.0.1〜192.168.0.254のマシンがログインできる
(4)はログインを許可するマシンを特定する場合(ホスト名で指定)
(5)はログインを許可するネットワークの指定方法。例ではhogehoge.netに属するホストがログインできる
そのマシンを管理する管理者のみがログインできるように、経路をなるべく制限するようにしましょう。
Linuxからログインする場合、ssh(/usr/bin/ssh)コマンドを使用します。
[munetika@donald munetika]$ ssh host1.hogehoge.com |
sshで最初にログインした場合、ログインするサーバの鍵をクライアントに作成します。“yes”と答えてログインを継続します。
Warning: Permanently added 'host1.hogehoge.com,211.x.yyy.zzz'
to the list of known hosts. |
パスワードを聞いてきたら、通常のログインと同様にパスワードを入力します。
Last login: Sun Dec 3 10:11:04 2000 from 210.x.yyy.zzz |
プロンプトが出たらログインは成功です。
Windowsクライアントから、sshでLinuxサーバにログインするにはTera Term ProとTTSSH(Teraterm SSH Extension)を使用するのが一番簡単です。
・Tera Term Pro(http://hp.vector.co.jp/authors/VA002416/)
・TTSSH(http://www.zipworld.com.au/~roca/ttssh.html)
Tera Term ProとTTSSHのインストール/使用方法については、よくまとまったドキュメントが以下のURLにありますので参考にしてください。
http://stingray.sfc.keio.ac.jp/security/ssh/ttssh.html
TTSSHを起動し、“Host:”欄に接続先ホスト名、“Passphrase:”欄にパスワードを入力すると、Telnetと同様にログインできます。
scpコマンドはファイルのコピーを安全に行うことができます。cpコマンドと同様の手順で使えるので、筆者には欠かせないツールになっています(笑)。
scpコマンドの使用方法は
scp [-r] [コピー元サーバ]:[コピーするファイル/ディレクトリ] [コピー先サーバ]:[コピー先ファイル/ディレクトリ] |
-r:指定ディレクトリ以下を再帰的にコピーする場合に付加する例)
scp /home/munetika/aaa.txt 192.168.1.2:/home/munetika |
となります。
また、2つのサーバ間を同期させるコマンドrsyncについても、sshを使用すれば安全に同期できます。たとえば手元のマシンからリモートのマシンhost2に~/public_html以下を同期させるには
rsync -auvvzb -e ssh --exclude '*~' ~/public_html host2: |
とします。ここで引数の意味は
-a archive (ファイルの更新情報を保つ)
-u update (コピー先のファイルが新しければ更新しない)
-v verbose (-vv more verbose)
-z compress (圧縮する)
-b backup (古いファイルを~の付いた名前で保存)
です。なお、“-e ssh”はsshを使用する指定です。
安全にログインする方法としてsshを紹介しましたが、それでもまだ心配だという方はOne-Timeパスワードと併用することをお勧めします。
http://www.feedmania.org/~yasu/linux/ssh/lj.html
を参考にしてください(編注)。
編注:2004年6月現在、上記URLはリンク切れになっている。 |
自分のマシンをクラックされることは、自分自身の被害以上に、それが踏み台になってほかのマシンにまで迷惑をかけることに留意すべきです。セキュリティの確保はインターネット全体に対する義務であるという自覚が必要でしょう。
それでは、安全なインターネットライフをお過ごしください。
Linux Square全記事インデックス |
Linux Squareフォーラム セキュリティ関連記事 |
連載:習うより慣れろ! iptablesテンプレート集(全4回) 初心者にとって、iptablesは難しい。そこで、学習の第1歩としてテンプレートを自分の環境に適応させることから始めよう |
|
連載:ゼロから始めるLinuxセキュリティ(全11回) 奥が深いセキュリティ対策の世界をゼロから解説。ホストレベルのセキュリティからファイアウォール、IDSの構築、ログ管理方法まで、システム管理者必見 |
|
特集:WebDAV時代のセキュリティ対策[前編] WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる |
|
特集:FreeS/WANによるIPSecの導入と運用[前編] LinuxでIPSecを利用するには、「FreeS/WAN」というIPSecスタックを用いることになる。まず、これをインストールすることから始めよう |
|
特集:Linux以外のIPSecスタックとの相互接続[前編] 別のOSや異なるIPSecスタックとの相互接続が可能なら、その用途は大幅に広がる。前編では、FreeBSDのKAMEと相互接続を試みる |
|
特集:sshでセキュアネットワーク サーバにリモートログインする場合は、暗号化して転送するsshを使おう。sshをサーバとクライアントにインストールすれば、インターネット上でも安全な通信が可能になる |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|