04.08.10 / ディレクターズのこと / Author: aico / Comments: (5)
株式会社ディレクターズでは、大学3年生のインターンを募集しています*
ディレクターズのホームページはこちら→https://www.directorz.co.jp/
期間は1週間〜10日間で、
仕事内容はディレクターズの事業のお手伝いで、主にディレクターズの上場企業情報サイトkmonosのお手伝いです。
kmonosはこちら→https://kmonos.jp/
会社の場所は渋谷のマークシティのちかくです!
大学3年生で、サーバに興味のある男子も!サーバよくわかんなーいな女子も!どこかインターン参加してみよっかなーって考える人も!
kmonosファンな就活生も!小悪魔ブログファンなあなたも!ディレクターズどんな会社なの?って知りたい人も!
とっても楽しい会社なのでぜひインターン応募してください♪
くわしく知りたーい!参加したーい!な人はこちらのお問い合わせホームへ→https://www.directorz.co.jp/agree.html
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ライブラリを利用することによってアクセス制限ができるようになっているのです。
30.07.10 / SSHって何? / Author: aico / Comments: (7)
今日は、アクセス制限に入る前に、ログからアタックのすごさを見てみることにしました。
アタックとは、悪意をもって他のコンピュータのデータやプログラムを盗み見ようとしたり、改ざんしようとしたりする攻撃のことです。
今回は会社の方にログを頂いてアタックのすごさを見てみました!
Mar 29 12:22:21 ecosign sshd[32760]: Invalid user matsuno from 209.9.188.68
Mar 29 12:22:25 ecosign sshd[32766]: Invalid user tokutake from 209.9.188.68
Mar 29 12:22:28 ecosign sshd[1333]: Invalid user yamaguci from 209.9.188.68
Mar 29 12:22:31 ecosign sshd[1339]: Invalid user okawara from 209.9.188.68
Mar 29 12:22:35 ecosign sshd[1345]: Invalid user sakuma from 209.9.188.68
Mar 29 12:22:38 ecosign sshd[1352]: Invalid user iwa from 209.9.188.68
Mar 29 12:22:42 ecosign sshd[1358]: Invalid user jackie from 209.9.188.68
これはそのほんの一部です。
秒単位でアタックがきています。
前回、「暗号化されていないとAとBの間にわるうさぎさんが入り込めれば(簡単には入り込めないですけどね。)…」と書きましたが、わるうささんはこんなかんじで悪いことをしようとがんばってたりします。
このログを見ると、userの右隣がアタックしている人が試しているアカウント名です。yamaguci、sakumaなど、ユーザー名をよくある名字や名前を入れてコンピュータに侵入しようとしているのがわかります。一番したのjackieなんて面白いですね:)
このように秒単位で何度も何度も違うユーザー名を考えながらアタックを繰り返すのはとても大変ですが、万が一そのアタックが成功してしまってはこちらも困ってしまうわけです。
そのため、アタックによって危険がおよばないようにするためにアクセス制限というものがあります!
つづきます!
29.07.10 / SSHって何? / Author: aico / Comments: (1)
前回のおさらいです*
それでは今回のお題は…
このツールを使えば、SSHで暗号化されていない情報がもしかしたら見れてしまう(盗聴できる)かも?
ということで、今回は生データの危険性をtsharkを使って検証してみました!
今回はIPアドレス○○○.○○○.○○○.○○○(以下Aとします)から●●●.●●●.●●●.●●●(以下Bとします)にsshやtelnetをし、検証しました。
ターミナルを2つひらき、
片方にはssh [アカウント名]@[AのIPアドレス]と入れAにログインします。
もう片方にはssh [アカウント名]@[BのIPアドレス]と入れ、Bにログインします。
今回は、AからBにsshやtelnetをする(AからBにログインする)ので、
Bのターミナルに、パケット内容を表示させるために
tshark -x -i eth1 host [AのIPアドレス] and port 23と入力しておきます。
Aの方のターミナルには、
telnet [BのIPアドレス]と入力します。
すると、
Trying [BのIPアドレス]…とでるので、
login :に、アカウント名、password :にパスワードを入力します。
すると、Bの方のターミナルに、Aのターミナルからtelnetで送られているパケットが表示されます。
たとえば、Aのターミナルに ls -laと入力すると、Bのターミナルでls -laで見られる内容がB -> A TELNET Telnet Data …のなかで見れてしまったりします。
ls -laを入力するとAのターミナルにこのようにでました。下から2番目にusakumaとあるのがわかります。
するとBのターミナルにはこのように表示されます。真ん中の数字が16進数、右がASCLLダンプです。
ASCLLダンプの下から5、6行にかけてusakumaと表示されちゃってますよね。他にもls -laでAにでてきた文字が見れてしまっています。
こんなかんじでパスワードなどの大事な情報もそのままの状態で流れてしまったり…。
今度はBのターミナルに、
shark -x -i eth1 host [AのIPアドレス] and port 22と入力します。
さっきはport 23でしたが、今度はport 22です。これはSSHのポート番号です。
Aの方のターミナルには、
ssh [AのIPアドレス]と入力します。
すると、今度はBのターミナルには、Aのターミナルからsshで送られているパケットは何がかいてあるかわからない状態で表示されます。
ほとんど…になっていて読めなくなっています。
これは、SSHが通信を暗号化しているからです。
本当は上のイラストでわるうさぎさんが盗聴をしているような、通信をするAとBの間で盗聴は行われます。今回は環境がなかったのでBの場所で行いました。
暗号化されていないとAとBの間にわるうさぎさんが入り込めれば(簡単には入り込めないですけどね。)盗聴できてしまいます。
AとBへのログイン権限を持っていなくてもモニタリングできてしまうことはとても問題です。
28.07.10 / SSHって何? / Author: aico / Comments: (10)
前回、SSHでは、ユーザーがローカルホストに入力したコマンドをsshクライアントがうけ、ネットワークをとおしてsshサーバへ送り、リモートホストであるサーバコンピュータにコマンドを実行させているということがわかりました。
しかし、この間にはさむネットワークはとても危険な空間です。
システム管理作業では、時に管理者のパスワードや、セキュリティ設定情報をやりとりします。もしインターネットを通じてシステム管理をすると、こういった機密度の高い情報がそのままの形でインターネットを流れてゆくことになります。途中で誰かが盗み見たり(盗聴)、通信内容を偽造(改ざん)する可能性はゼロではありません。
SSHと似たしくみを持ったものに、telnetやrloginなどがありますが、パスワードをそのままネットワークに流してしまうなど、セキュリティに問題点が多くあります
そこで、SSHで行われるのは通信経路全体の暗号化です。
SSHでは、SSHクライアントとSSHサーバの間での通信を暗号化しています。
そのため、もし途中で誰かが盗み見ようとしても、通信内容を知ることはとてもむずかしく、危険なネットワークを安全に通すことができるのです。
28.07.10 / SSHって何? / Author: aico / Comments: (3)
DNSはしばらくお休みして今日はSSHについて勉強しました!
このブログでも何回かでてきている「SSH」
よくわからないまま書いてるけどsshって何だろう?
…ということで今日はsshについてのお勉強です*
SSHとはSecure SHell (セキュア シェル)の略です。
小悪魔ブログ内のSSHの文字を探すと、sshでサーバーに入り設定ファイルを編集しています。
sshとはサーバコンピュータが目的どおり動くよう設定を編集、プログラムの開始や停止をするために、サーバコンピュータの中に入るための、サーバ管理の必須ツールなのです!
小悪魔ブログ内のSSHの文字を探すと、sshコマンドでサーバに入って、コマンドによってファイルを作成したり編集したり削除したり…コマンドを理解できなくてブログの記事がかけなくてよくこんな状態になってました。
例えば、ファイルの削除なんてファイルのアイコンをゴミ箱に入れたら終わりジャン!コマンドなんて必要ないジャン!って思うけれど、そのコンピュータから離れた場所から管理作業をするとしましょう。
マウスとアイコンを使った方法(GUI)では、デスクトップ画面すべての情報を送らないといけません。しかし文字だけで管理する方法(CUI)なら、やりとりするのは文字情報だけ送れば十分です。文字で管理する方法の方が、送るべきデータの量が圧倒的に少なくて済むのです。
SSHを使えばネットワークを介して、離れた場所のサーバコンピュータにログインすることができるので、離れた場所からCUIでコマンドを実行することができるのです。
ユーザーがローカルホストに入力したコマンドをsshクライアントがうけ、ネットワークをとおしてsshサーバへ送り、リモートホストであるサーバコンピュータにコマンドを実行させます。
つづきます!
27.07.10 / こあくまちゃんのこと / Author: aico / Comments: (6)
「小悪魔女子大生のサーバエンジニア日記」をご覧いただき、ありがとうございます。
昨日から、ブログ(Google検索)やはてなブックマーク、Twitter、Togetterなどで話題になり
現在非常にたくさんのアクセスをいただいております。
あらためて自己紹介*
ただいま大学3年生です。
株式会社ディレクターズでバイトをさせてもらってます。
ここでは小悪魔名乗ってますが大学ではポニョ扱いされてます 笑
サーバのことを会社の人に教えてもらいながら勉強中!
今後とも「小悪魔女子大生のサーバエンジニア日記」をよろしくお願いします!
27.05.10 / DNSって何? / Author: aico / Comments: (13)
前回、ルートサーバは世界に13個あり、日本では、その1つをWIDEプロジェクトが管理しているということがわかりました。
ルートサーバは名前空間の最も上に位置するサーバです。
なので、もし13台すべてのルートサーバがアクセスできない状態になると、インターネットは使えなくなってしまいます。
2002年、DDoS攻撃というルートサーバへの攻撃によって13台のうち9台のルートサーバが影響をうけ、内7台は一時的にサービスが不能になった事件が起きました。
DNSではプロトコル上の制限によりルートサーバーとして指定可能なサーバーが最大13台までに制限されているため、通常の方法ではそれを超える数のサーバーを配置することはできません。
そこで、IP Anycastという、IPアドレスを複数のサーバで共有する技術によって、同じIPアドレスをもつDNSサーバーが世界各地に設置されました。IP Anycastでは、ユーザーはそのうち最も効率よくすばやく情報をおくってくれるサーバーに接続するようになっています。
なので、日本にもM.ROOT-SERVERS.NETの他に4つの海外の企業が管理するルートサーバと同じIPアドレスを持ったサーバが設置されています。
つまり、13台というのは、ルートサーバの数ではなく、サーバを仕切るホストコンピュータの数なのです。
ルートサーバの管理するルートドメインはふだんドメイン名(FQDN)にかかれることはありません。しかし、このように管理されながら、インターネットの世界で重要な役割をはたしているのです!
27.05.10 / DNSって何? / Author: aico / Comments: (2)
今日は、DNSの途中ですが、DNSやインターネットにとってとっても重要な役割をはたしているルートサーバについて勉強しました!
ルートサーバはDNSのドメイン名前空間の頂点のサーバです。
下の絵は「サブドメインとルートドメインってなんだろう?」のときにでてきたイラストです。
このルートドメインの空間を管理しているのがルートサーバで、世界に13個存在しています。
ルートサーバ13台のうちそのほとんどがアメリカで管理されています。日本で管理しているのは、13台目でWIDEプロジェクトによって管理されています。
ルートサーバーは基本的に全てが同じデータを持っています。
ルートサーバーはドメインのトップレベルドメインを管理するDNSサーバーの一覧です。日本にあるサーバだから
日本を管理しているわけではなく、ルートサーバーはcomもnetもjpもtoもcnも全てのトップレベルドメインのDNSサーバーのIPアドレスを持っています。
すべてのルートサーバはa.root-servers.netからm.root-servers.netの正式名称を持っています。
日本のルートサーバは、WIDEプロジェクトが管理しているルートサーバのM.ROOT-SERVERS.NETで、
WIDEプロジェクトが管理しています。
WIDEプロジェクトは、慶応義塾大学の村井純教授らが中心になって1988年に設立された、インターネットに関する研究プロジェクトです。日本におけるインターネットの先駆け的存在の一つとなったことで知られています。
つづきます!
19.05.10 / DNSって何? / Author: aico / Comments: (3)
今日は、レコードの勉強のため、BINDというフリーのDNSサーバソフトウェアを設定しました!
BINDを設定することで、IPアドレスとドメイン名の名前解決ができるようになります。
BINDとは、ソースコードが無料で公開されているフリーのソフトウェアで、世界でもっとも普及しているDNSサーバーです。
今回は、新しく作ったcoakuma.netというドメイン名を、小悪魔ブログのIPアドレスに対応付けして、http://coakuma.net/blog/でもこのブログが見れるようにしました。
今回はcoakuma.netというドメインを「お名前.com」さんで取得してもらい、BINDを設定する上で必要なインストールはできている状態なので、設定からスタートです*
まず、$ ssh [サーバー名] 、パスワード入力でサーバーに入り、
$ sudo bashでroot権限を得ます。
設定ファイル/etc/name.confを設定して、coakuma.netのサーバーのゾーンを設定します。
$ vi /etc/named.confで編集画面にします。
named.confにzoneステートメントをかきます。
include”/etc/rndc.key”;のまえに、
zone “coakuma.net” IN {
type master ;
file “coakuma.net.zone” ;
};
とかきます!
ここまで、まちがいがないかチェックしましょう!
$ /usr/sbin/named-checkconf /etc/named.conf と入力して、なにもでてこなければOKです!
$ ssh [サーバー名] でサーバーに
パスワード入力
$ sudo bashでroot権限に
$ vi /etc/named.confで設定ファイル編集
iで編集モードに
zone “[ゾーン名]” IN {
type master ;
file “[ゾーンファイル名]” ;
};
escで編集終了
$ /usr/sbin/named-checkconf /etc/named.conf で間違いがないか確認
つぎにゾーンファイルをつくりましょう!
ゾーンファイルは/var/named/chroot/var/named内につくります!
ところで、chrootとはなんでしょう?
chrootはファイルシステム内の特定のサブディレクトリを、仮想的なルートディレクトリとして見せかける機能です。/etcディレクトリと/var/namedディレクトリ以下にあるBINDの設定ファイルを、/var/named/chroot以下の/etcディレクトリと/var/namedディレクトリ以下に置くことによって、権限をとられた場合でも、その被害をchrootしたファイルシステム内にとどめることができる、セキュリティ維持の仕組みです。
まず、
$ cd /var/named/ でvar/namedに移動して、
$ ls -laで/var/named/の中身を確認します。
chrootディレクトリがないので、
$ mkdir -p chroot/var/namedで、/var/named/chroot/var/namedを作成します。
$ cd chroot/var/named/で /var/named/chroot/var/namedに移動して、ゾーンファイルcoakuma.net.zoneを作成します。
$ vi coakuma.net.zoneとして編集画面に入ります。
$TTL 10800
coakuma.net. 1D IN SOA co-akuma.directorz.jp. usako.usausa.usagi.jp (
2010051301 ; serial
43200 ; refresh
5400 ; retry
3600000 ; expiry
10800 ) ; minimum
coakuma.net. 1D IN NS co-akuma.directorz.jp.
coakuma.net. 1D IN A 125.6.176.32
…と記入します。
:wqで保存し、編集を終えます。
$ cd /var/named/ でvar/namedに移動
$ mkdir -p chroot/var/namedで、/var/named/chroot/var/namedを作成
$ cd chroot/var/named/で /var/named/chroot/var/namedに移動
$ vi coakuma.net.zoneとして編集画面に
$TTL 10800
[ドメイン名]. 1D IN SOA [サーバー名]. [メールアドレス] (
[年月日]01 ; serial
43200 ; refresh
5400 ; retry
3600000 ; expiry
10800 ) ; minimum
[ドメイン名]. 1D IN NS [サーバー名]
[ドメイン名]. 1D IN A [IPアドレス]
$ usr/sbin/named-checkzone coakuma.net /var/named/coakuma.net.zoneでまちがいがないかチェックします。
ファイルを作成したらシンボリックリンクをはります。
$ ln -s /var/named/chroot/var/named/coakuma.net.zone /var/named/
これで、/var/named/chroot/var/named/coakuma.net.zoneを/var/named/にリンクされます。
/var/named/内にcoakuma.net.zoneがあるような状態になったので、これで、起動スクリプト/etc/init.d/named/ でも呼び出すことができるのです。
設定が終わったのでBINDを起動させましょう!
$/etc/init.d/named/ start
これで、coakuma.netで小悪魔ブログがみれるようになりました!
$ ssh [サーバー名] でサーバーに
パスワード入力
$ sudo bashでroot権限に
$ vi /etc/named.confで設定ファイル編集
iで編集モードに
zone “[ゾーン名]” IN {
type master ;
file “[ゾーンファイル名]” ;
};
escで編集終了
$ /usr/sbin/named-checkconf /etc/named.conf で間違いがないか確認
$ cd /var/named/ でvar/namedに移動
$ mkdir -p chroot/var/namedで、/var/named/chroot/var/namedを作成
$ cd chroot/var/named/で /var/named/chroot/var/namedに移動
$ vi coakuma.net.zoneとして編集画面に
$TTL 10800
[ドメイン名]. 1D IN SOA [サーバー名]. [メールアドレス] (
[年月日]01 ; serial
43200 ; refresh
5400 ; retry
3600000 ; expiry
10800 ) ; minimum
[ドメイン名]. 1D IN NS [サーバー名]
[ドメイン名]. 1D IN A [IPアドレス]
$ usr/sbin/named-checkzone coakuma.net /var/named/coakuma.net.zoneでまちがいがないかチェックします。
$ ln -s /var/named/chroot/var/named/coakuma.net.zone /var/named/
$/etc/init.d/named/ start