IPアドレスを管理しているところ*

27.08.10 / DNSって何? / Author: aico / Comments: (19)

すべてのIPアドレスはICANNによって管理されています。

ICANNは1998年にアメリカで設立された民間の非営利法人です。

アメリカ政府の委任によってドメイン名やIPアドレスなどのインターネット上のアドレス資源の管理、割り当てを行っています。

※ICANNの委員会の一つとして存在しているIANAが担当しているようです。

IPアドレスの分配はインターネットレジストリと呼ばれる組織によって管理・分配が行われています。

日本のIPアドレスはアジア太平洋地域におけるアドレス管理を行っているAPNICの管理下にある国別インターネットレジストリであるJPNICによって管理されています。

インターネットの普及に伴い、IPアドレスの枯渇問題という問題が生まれました。

JPNICでは、「2011年ないし2012年にすべての地域インターネットレジストリにおいて未分配IPv4アドレスの在庫がなくなってしまうと予測されています。」と伝えています。

そこで、IPv6というあたらしいインターネットプロトコルが生まれました。

IPv4が32ビットであったのに対し、IPv6は128ビットで約340澗(340兆の1兆倍の1兆倍!)ものアドレスが使えるようになります。

しかし、逆引きが困難なことやIPv4との互換性がないことなどデメリットも多く、普及が遅れています。

つづきます!

IPアドレスとは?

27.08.10 / DNSって何? / Author: aico / Comments: (4)

IPアドレスとは、ネットワーク上につながれたコンピュータ一台一台に割りふられる番号で、IPによって定義されている、コンピュータの住所のようなものです。

ネットワーク上につながれたコンピュータのIPアドレスはかぶることはありません。

コンピュータは画面上に写真や絵や文字を表示したり、音楽を流すこともできます。

しかし!このコンピュータ、実は0と1しかわからないのです。

コンピュータの情報はONを1、OFFを0としてその0と1を組み合わせて表現しています。

この0と1の2つの数字だけをつかって数値を表す方法を2進数といいます。

IPアドレスは、この2進数を普段わたしたちがつかっている10進数に直した数値でつくられています。

IPアドレスの形を小悪魔ブログのIPアドレスを参考に見てみましょう。

IPアドレスは32ビットの列で8ビットごとに4つに区切った10進数の形で表記されています。

ビットとは、コンピュータが扱う情報の最小単位で、binary digit(2進数数字)の略です。

つまり、コンピュータのつかう0と1、ONとOFFのことで、いわば電球1こということですね。

1ビットで0か1かの2通り、8ビットになると256通りの表現ができます。

そのため、IPアドレスは0.0.0.0から255.255.255.255まであって約43億個存在しています。

また、このかたちは、TCP/IPの基本機能であるIPv4というプロトコルに基づいています。

つづきます!

TCP/IPとはなんだ?

27.08.10 / DNSって何? / Author: aico / Comments: (3)

こんにちは!

小悪魔の夏があけたのでこれから更新がんばります!

今日はIPアドレスとMACアドレスについて勉強しました:)

そのまえにまずTCP/IPについてです*

通信プロトコルとは、ネットワーク上でデータの通信をするための手順や約束ごとの集まりのことです。

たとえば郵便物をだすとしても、その郵便物に切手を貼って、郵便番号書いて、宛先も書いて…なんて郵便屋さんに届けてもらうためにやらなければならない決まりごとがたくさんありますよね。

同じようにコンピュータの世界でも、データの通信をするためにやらなくてはならない決まり事があるのです。

それが通信プロトコルです。

しかし、このプロトコルにもたくさんの種類があります。

たとえば、フランス語を話すマダムウサと日本語をはなすうさ美さんは話をすることができません。

だけどもし、2人が英語を話すことができたなら、共通言語である英語を使えばはなすことができますよね。

同じようにコンピュータの世界でも通信用の共通言語が必要です。

それが、TCP/IPです!

TCP/IPはTCPとIPの組み合わせでできています。

送られるデータはパケットという小さな小包にわけられて送られます。

小さく分けられたパケットはひとつずつ番号がつけられていて、順番通りに戻す必要があります。

その役目をしてくれるのがTCPです。

TCPは送られてきた荷物が全部届いているか、壊れてないか…を確認して、正しく送られてたら、データのやりとりのチェックを終わらせましたよと連絡してくれたりします。

つまり、TCPはデータのやり取りの保証のためのプロトコルなのです。

郵便物を送る時、ドコに届けてほしいか宛先をかく必要がありますよね。

同じようにコンピュータの世界でもデータの通信のための宛先をかく必要があります。

その、宛先をかきなさいということを定めているのがIPというプロトコルで、

宛先である、コンピュータの住所がIPアドレスです。

つづきます!

小悪魔から夏休みのお知らせ:)

06.08.10 / こあくまちゃんのこと / Author: aico / Comments: (4)

こあくまは明日から夏休みに入らせていただきます。

次回更新は8月25日以降になると思います。

夏休み終わったらまた更新がんばりますので、

これからも小悪魔女子大生のサーバーエンジニア日記をよろしくお願いします!

会社の名刺をつくってもらっちゃいました*

うすいピンクで見づらいけど…little devil server engineerなのです笑

小悪魔仕様なのは自分でデザインさせてもらいましたー

どうですかー?

けっこう気に入ってるんですけど:)*

実際に設定してみよう!

05.08.10 / SSHって何? / Author: aico / Comments: (2)

まず秘密鍵と公開鍵をつくりましょう!

$ ssh-keygen -t rsa

すると、このように言われます。

Generating public/private rsa key pair.

Enter file in which to save the key (/home/usako/.ssh/id_rsa):

鍵の保存場所を聞かれているので、そのままENTERを押します。

つぎに、パスフレーズをつくります。

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

パスフレーズは秘密鍵を使うためのパスワードのようなものでしたよね。

公開鍵方式では復号化のためには秘密鍵を持っていること&パスフレーズを知っていることを必要とします。

Your identification has been saved in /home/usako/.ssh/id_rsa.

Your public key has been saved in /home/usako/.ssh/id_rsa.pub.

The key fingerprint is:

c3:09:db:b2:6f:f2:c7:52:e7:65:ca:c6:39:d4:a0:8d usako@usako-usagi.local

このようにでれば、公開鍵と秘密鍵の作成はクリアです!

本当にできているのか確認しましょう。

$ ls -la ~/.sshと入力して、

-rw——-   1 usako  usagi  1743  8  4 14:38 id_rsa

-rw-r–r–   1 usako  usagi  405  8  4 14:38 id_rsa.pub

と出ればOKです!

サーバーに入る前に、つくった公開鍵をサーバーにコピーしましょう。

$ scp id-rsa.pub [サーバー名] : /home/usako/

つぎに、ssh [サーバー名]とパスワード認証でサーバー内に入り、つくった公開鍵をサーバ側に登録しましょう!

公開鍵はサーバ側の~/.ssh/authorized_keysファイルへ登録します。

~/.ssh/authorized_keysは、ユーザーの公開鍵を登録するための設定ファイルです。

まず、サーバー側のホームディレクトリに.sshディレクトリをつくります。

$ mkdir ~/.ssh

$ ls -laをすると、.sshができていることがわかります。

drwxr-xr-x   2 usako wheel  4096 Aug  5 12:20 .ssh

こんな風にでます。

つぎに.sshのパーミッションを変更します。

.sshのパーミッションをユーザーのみ読み書き実行できるにしたいので、

$ chmod 700 ~./sshと入力します。

$ cd .sshで.sshに入り、コピーしておいた公開鍵id_rsa.pubを ~/.ssh/authorized_keysに登録します。

$ cat ../ id_rsa.pubとすると、公開鍵のファイルの中身が見ることができます。

これを~/.ssh/authorized_keysに登録します。

$ cat ../id_rsa.pub >> authorized_keys

そのあと、$ cat authorized_keys と入力すると、$ cat ../id_rsa.pubと同じものがでるはずです。

authorized_keysのパーミッションも変更しましょう!

こんどはユーザーのみ読み書きOKとします。

$ chmod 600 authorized_keys

これでサーバー側に公開鍵が登録できました!

次はユーザー認証の方法をパスワード認証から公開鍵暗号方式に変更します!と言いましょう!

$ cd /etc/ssh/で設定ファイルのある/etc/sshに移動します。

sshdの設定ファイルはsshd_configです。なのでこのファイルを編集しましょう。

$ vi sshd_config

#PubkeyAuthentication yesをPubkeyAuthentication yesに変更(#を削除)

#PasswordAuthentication yesをPasswordAuthentication noに変更(#を削除してyesをnoに)

再起動しましょう!

$ /etc/init.d/sshd restart

Stopping sshd:                                             [  OK  ]

Starting sshd:                                             [  OK  ]

とでればOKです!

もうひとつターミナルをひらいて$ ssh [サーバー名]でサーバーに入ってみましょう!

パスフレーズを聞かれたら設定できている証拠です!

$ ssh-keygen -t rsaで鍵作成

Enter file in which to save the key (/home/usako/.ssh/id_rsa):はそのままenterを押す

Enter passphrase (empty for no passphrase):パスフレーズ入力

Enter same passphrase again:もう一度入力

$ ls -la ~/.sshで鍵ができているか確認

$ scp id-rsa.pub [サーバー名] : /home/usako/でサーバーに公開鍵をコピーする

ここまでで鍵作成完了

ssh [サーバー名]とパスワード認証でサーバー内に入る。

$ mkdir ~/.sshで.sshディレクトリを作成

$ chmod 700 ~./sshで.sshのパーミッションを変更

$ cd .sshで.sshディレクトリに入る

$ cat ../id_rsa.pub >> authorized_keysで公開鍵をauthorized_keysファイルに登録する。

$ chmod 600 authorized_keysでauthorized_keysのパーミッション変更

ここまででサーバー側に公開鍵を登録完了

$ cd /etc/ssh/で/etc/ssh/に移動

$ vi sshd_configでsshdの設定ファイルを編集

#PubkeyAuthentication yesをPubkeyAuthentication yesに変更(#を削除)

#PasswordAuthentication yesを#PasswordAuthentication noに変更(yesをnoに)

PasswordAuthentication yesを削除

ここまでで、ユーザー認証の方法をパスワード認証から公開鍵認証に変更

$ /etc/init.d/sshd restartで再起動

もうひとつターミナルを開いて$ ssh [サーバー名]でパスフレーズを聞かれたらOK

公開鍵暗号方式によるユーザー認証のしくみ

05.08.10 / SSHって何? / Author: aico / Comments: (1)

KEY認証でも同じようにホスト認証が行われますが、パスワードではなく、鍵を使ってユーザー認証を行います。

最初にクライアントはつくった公開鍵をホストのファイルに登録しておく必要があります。

次に、$ ssh [サーバー名]と入れてホストに通信要求すると、ホスト認証が始まります。

ホスト認証によって正しいホストであると認証されると、ユーザー認証が始まります。

サーバはランダムな値をつくり、authorized.keysに登録してあるクライアントの公開鍵によって暗号化してクライアントに送ります。

↓パスフレーズってこんなかんじ?らしい↓

ホストから暗号を受け取ったクライアントは自分の秘密鍵でその暗号を復号化をします。

しかし、この秘密鍵を使うためにはパスフレーズが必要です。。

パスフレーズは秘密鍵を使うために必要なパスワードのようなものです。

パスフレーズを正しく入力できないと、そのクライアントは正しい秘密鍵の持ち主ではないとされてしまいます。

正しくパスフレーズを入力できたら、クライアントはその秘密鍵でホストから送られてきた暗号を復号化して、その結果をホスト認証の時つくった共通鍵で暗号化して送ります。

サーバは返送されたデータと暗号化前のデータを比較して正しければ本物のクライアントであると認証します。

ホスト認証のしくみ

05.08.10 / SSHって何? / Author: aico / Comments: (0)

前回、通信要求をしてきたIPアドレスは登録されているものなのかを確認することでアクセス制限を行いましたが、今回は、鍵を持っているのか?を確認することによるアクセス制限、KEY認証を勉強しました。

KEY認証が適用されていない状態で通信要求をすると、ホスト認証とパスワード入力が行われます。

この時、公開鍵暗号が使われ、ホストはクライアントに公開鍵を送信します。

初めて通信要求を行った時

Are you sure you want to continue connecting (yes/no)? と聞かれ、yesと答えます。

これは、送られてきた公開鍵を登録するかを聞かれているのです。

また、すでに登録されている場合は、データとの照合が行われます。

クライアントは通信に使う共通鍵を作成し、ホストから送られてきた公開鍵で暗号化してホストに送信します。

ホストは受け取ったデータを秘密鍵で復号化して共通鍵を得ます。

復号化をできる=秘密鍵を持っている=本物と認められます。

その後、クライアントはユーザーは本物なのか?とパスワードを尋ねられ、クライアントは共通鍵で暗号化したパスワードをホストに送ります。

しかし、公開鍵は誰でも得ることができるため、ログイン画面までは誰でも行くことができます。

そのため、この方法だと前々回勉強したようなアタックの危険があります。

そこで登場するのがKEY認証です!

共通鍵方式と公開鍵方式

05.08.10 / SSHって何? / Author: aico / Comments: (0)

今日は小悪魔ブログ怒濤の更新です!

SSHでは、共通鍵方式と公開鍵方式のふたつのKEY認証の方式があり、それぞれの弱点を補いながら通信データの暗号化をしています。

共通鍵方式は、クライアントとサーバがお互い同じ鍵を使用して暗号化と復号化を行います。

共通鍵方式では、お互いに同じ共通鍵を持っていなければ解読することはできません。

また、共通鍵はCPUパワーをあまり使わずに強い暗号強度を得ることができます。

しかし、共通鍵方式は、1つの鍵で暗号化と復号化を行うため、ネットワークにそのまま流してしまうと、鍵が第3者にわたって通信データを盗聴されてしまう危険があります。

公開鍵方式は、暗号化をする公開鍵と復号化をする秘密鍵の2つの鍵を使います。

暗号化に使う公開鍵はネットワークに流しますが、復号化を行う秘密鍵を流すことはないのでかなり安全に通信を行うことができます。

しかし、公開鍵方式は、効率が悪く、CPUパワーをたくさん使ってしまいます。

そこで、SSHでは、共通鍵を渡す時にのみ公開鍵方式をつかって暗号化・復号化を行い、共通鍵を渡した後は共通鍵を使って通信を行うようになりました。

また、共通鍵を送受信のセッション毎に使い捨てで使用することで、通信データはより強固なものとなりました。

インターン募集のお知らせ*

04.08.10 / ディレクターズのこと / Author: aico / Comments: (3)

株式会社ディレクターズでは、大学3年生のインターンを募集しています*

ディレクターズのホームページはこちら→https://www.directorz.co.jp/

期間は1週間〜10日間で、

仕事内容はディレクターズの事業のお手伝いで、主にディレクターズの上場企業情報サイトkmonosのお手伝いです。

kmonosはこちら→https://kmonos.jp/

会社の場所は渋谷のマークシティのちかくです!

大学3年生で、サーバに興味のある男子も!サーバよくわかんなーいな女子も!どこかインターン参加してみよっかなーって考える人も!

kmonosファンな就活生も!小悪魔ブログファンなあなたも!ディレクターズどんな会社なの?って知りたい人も!

とっても楽しい会社なのでぜひインターン応募してください♪

くわしく知りたーい!参加したーい!な人はこちらのお問い合わせホームへ→https://www.directorz.co.jp/agree.html

IP制限をしてみよう!

02.08.10 / SSHって何? / Author: aico / Comments: (7)

前回見たアタックを回避するための方法の1つとして、IPアドレスの制限というものがあります。

SSHのIP制限では、/etc/hosts.allowと/etc/hosts.denyの2つのファイルに設定することで、特定のIPを拒否したり、自分以外のIPすべてを拒否したりします。

今回は、私が利用しているIPアドレス以外のIPアドレスを拒否する設定をしました。

$ ssh [サーバー名]でサーバに入り

パスワードを入力

$ suでroot権限に

# vi /etc/hosts.denyで/etc/hosts.denyの編集

iで編集モードにしてsshd : ALLと一番下に書き、

escで編集を終わらせ、:wqで保存して終了。

この状態にするとすべてのIPアドレスが拒否されます。

ターミナルをもう一つ開いて

$ ssh [サーバー名]と入れてもログインできなければ設定ができています。

次に/etc/hosts.allowの設定をしましょう。

# vi /etc/hosts.allow で/etc/hosts.allowの編集

iで編集モードにしてsshd : [許可するIPアドレス(ここでは自分の)]と書き、escで編集を終わらせて :wqで保存して終了します。

すると今度は自分のIPアドレス(許可されたIPアドレス)でのみ入ることができます。

/etc/hosts.denyで設定されていても、 /etc/hosts.allowで許可されていれば、そのIPアドレスから入ることが可能です。

もうひとつ開いていたターミナルで

$ ssh [サーバー名]と入れパスワードを入れてログインできたので設定できています。

$ ssh [サーバー名]

パスワード入力

$ su

パスワード入力

# vi /etc/hosts.deny

sshd : ALL

# vi /etc/hosts.allow

sshd : [許可するIPアドレス]

今回 /etc/hosts.denyと /etc/hosts.allowでIP制限の設定ができたのは、sshdがTCPwrapperのライブラリを利用しているからです。

もともとTCP Wrapperとは、スーパーサーバーinetdで利用されるアクセス制限のプログラムです

inetdとは、複数のサービスを監視し、要望があればそのデーモンを起動するためのスーバーサーバーです。スーパーサーバーを使うといつでもクライアントの要求を受けるために複数のサーバを起動しつづけてCPUやメモリの消費を抑えることができます。

また、TCP Wrapperとinetd(+α)の機能をもったxinetdが最近では使われています。

しかし、スーパーサーバを経由すると通信速度は遅くなるため、httpなどよく使われているデーモンではスーパーサーバーを経由することはありません。

今回、/etc/hosts.denyや/etc/hosts.allowを編集することでsshでIP制限ができたのは、/etc/hosts.denyと/etc/hosts.allowがTCP Wrapperの設定ファイルで、sshがTCP Wrapperのライブラリを使用しているからなのです。

TCP Wrapperは、スーパーサーバーであるinetdでのみ使用されていたプログラムですが、SSHでもTCP Wrapperライブラリを利用することによってアクセス制限ができるようになっているのです。