ブログやホームページのセキュリティを強化する方法(プロキシ)
こんにちは、タケルです。
今回は、ブログやホームページ等のネットワーク(以下NW)に公開しているコンテンツの
セキュリティを強化する方法(または既に実装されている技術)について解説してみようと思います。
概要
知っている方向けに言うと、「プロキシ」、「リバースプロキシ」についての解説です。
まず「プロキシ」とは、自分のNW内部に立て、セキュリティを強化する仕組みです。
皆さんがNWを介してホームページにアクセスする時は、簡単に言うと以下のような仕組みで
接続されています。。
ホームページアクセスの流れ
PC→(外の)インターネット→Webサーバ→ホームページ
プロキシサーバは上記の流れのうち、PCとインターネットの間に構築し、
PCがアクセス内容に制限をかけることができます。
(有害サイト等を事前に登録し、アクセスが検知された瞬間に接続断する。)
すると以下のような流れになります。
プロキシサーバ構築後のホームページアクセスの流れ
PC→プロキシサーバ→(外の)インターネット→Webサーバー→ホームページ
プロキシサーバを構築することで、自宅NWや社内NWのセキュリティ強化が可能です。
続いてリバースプロキシについて解説します。
繰り返しになりますが、一般的なホームページアクセスの流れは以下の通りです。
ホームページアクセスの流れ
PC→(外の)インターネット→Webサーバ→ホームページ
リバースプロキシを立てると、以下のようにアクセスの流れが変わります。
リバースプロキシ構築後のホームページアクセスの流れ
PC→(外の)インターネット→リバースプロキシサーバ→Webサーバ→ホームページ
お分かりでしょうか。
リバースプロキシはホームページ構築側のセキュリティ強化に使われるものです。
具体的な効果としては、以下のようなものがあります。
・特定のIPのアクセスを制限する。
・逆に特定のIPのアクセスのみを許可する。
・パスワード認証を付与する。
・アクセスログを収集する。(どこ経由でアクセスしてきたのか。)
レンタルサーバ等を使っている時点で、セキュリティは十分かもしれませんが、、、
自分で利用する以上、こういった仕組みくらいは知っておいて損はないと思います。
それではまた。
また1週間がんばりましょう。
プログラミング言語の種類について解説(初学者向け)
こんにちは、タケルです。
本日は、世の中に様々あるプログラミング言語の種類について
解説していきます。
この記事は、あくまで初学者向けに書いたものです。
プログラミングに興味あるけど、何から勉強してみようかなーっと悩んでいる方向けです。
また既に複数言語を使いこなしている方、実務でプログラミングに精通している方も、
今後の世の中、複数言語を使いこなす技術は必須ですので、ぜひご一読ください。
以下2つの観点で解説していきます。
・記述法
・使い道
■オブジェクト指向言語
1つ目はやはりこれ、オブジェクト指向言語です。
代表的なものには、以下のようなものがあります。(ほんの一例です。)
・Java
・JavaScript
・Ruby
・PHP
・Python
・C++
オブジェクト指向言語とは、所謂オブジェクト(モノ)に着目して記述される
プログラミング言語です。
例)
銀行のシステムを構築する時は、
・金額の計算を行うロジック
・金額を入力を受け付けるロジック
・金額を出力するロジック
、、、といったモノや動作に着目して、一つ一つのプログラムを作り、
最終的にそれを結合させて一つのシステムを構築します。
使い道としては、銀行や工場など、大規模なシステム開発に使われています。
(SIerがよく使う言語ですね。)
■関数型言語
2つ目は関数型言語です。
代表的なものには、以下のようなものがあります。
・Scala
・Haskell
・Erlang
関数型言語とは、その名の通り、対象を関数の組み合わせで記述するプログラミング言語です。
オブジェクト指向言語と異なり、変数の初期化や代入処理がなかったりと大きく実装方針が異なります。
(オブジェクト指向言語をやっている方からすれば、違和感しかないはず。)
使い道としては、ずばりTwitterです。
Twitterのような大規模Webサービスの開発には、関数型言語が使われているようです。
■スクリプト言語
3つ目はスクリプト言語です。
代表的なものには、以下のようなものがあります。
・JavaScript
・Python
・Ruby
・PHP
気づきましたでしょうか。JavaScrit、Python、Ruby、PHPはオブジェクト指向言語であり、
スクリプト言語なのです。
(JavaやC++はコンパイル言語と呼ばれます。)
スクリプト言語とは、コンパイルが不要で、少ない記述量で実装できるなど、
開発工数が簡略化されたプログラミング言語の総称です。
代表的な使い道としては、主にWebページ制作に使われています。(HTML、CSSと併用して使います。)
先ほど挙げたTwitterや、クックパッド、楽天市場、食べログ等です。
以上のように、プログラミング言語には、括り方や使い道によって、
様々に分類分けされ、その種類は千差万別です。
フリーランスになりたいから、とりあえずまずはHTMLかな、とかよく聞くJavaかな、ではなく、
まずはそれぞれのプログラミング言語を少し調べて理解した上で、勉強してみるのもありかなと思います。
それではまた。アプリは程々にして、次回はインフラ周りについて解説してみようかと思います。
考えることができる人におすすめの本(お金持ちになる方法)
こんにちは、タケルです。
また1週間が始まりましたね。
今日は久しぶりに本を買ったので、それを紹介したいと思います。
これです。
以下にAmazonのリンクも貼っておきます。
まだ少ししか読んでいないのですが、どんな本かといいますと、
「人生の利益の最大化」とその方法
について書かれた本になります。
そういったことを世の中の流れ(マイナンバー制度、社会保険の加入義務の厳格化、日本国外で保有される資産を捕捉する取り組みの強化)をしっかり捉えながら、丁寧に書かれています。
やはり本はいいですね。
単位時間当たりに得られる情報量が圧倒的に多く、活字中毒の私からすると、
とてもわくわくします。
(私は子どもの頃から、お菓子やジュースのラベルの成分表や説明をぼーっと読んだり、とにかく字を読んで情報を取り入れるのが好きでした。)
忙しいことを言い訳に、読書を怠っていましたが、
今一度、毎日読書する時間を確保したいと思います。
それではまた。
1週間がんばりましょう。
インフラ管理者に向けて(基礎編)
こんにちは、タケルです。
今回は企業、個人のインフラ管理者の方や、世の中のシステムに興味のある方へ
向けて、一つ知識を共有させていただきたいと思います。
先に結論をまとめておきます。
-----------------------------------------------------------------------------------------------------
■結論
・ネットワークレベル認証(NLA)が出来ないことにより、リモートデスクトップ接続できない事象が発生した。
・上記事象の原因について
・ADサーバーとは
・サーバーの使用状況の可視化の有効性について
-----------------------------------------------------------------------------------------------------
先日あるVDIにリモートデスクトップ接続しようとした時、
以下のようなメッセージが表示されました。
「接続しようとしているリモートコンピューターには、ネットワークレベル認証(NLA)が必要ですが、
お使いのWindowsのドメインコントローラーに接続してNLAを実行することができません。、、、、、」
以下のようなメッセージです。
このメッセージだけで、原因がわかる方はいますでしょうか。
最初は接続元や、接続先のセキュリティレベルの設定を変えれば治ると私は思ってしまったのですが、、、、
原因は、接続先が使用しているADサーバーのサービスが停止してしまっていたために、
接続元の認証ができなかったため、でした。
もう少し解説します。
まずAD(Active Directory)サーバーとは。
WindowsSeverの機能である、「あなたは誰?」を確認する機能です。
企業のクライアントPCや、サーバーは基本的にはドメインNW(一つのグループのようなもの)に所属しています。
そういったクライアントPCやサーバーに、外部から何の認証もなく接続できたら嫌ですよね。
そのためにADサーバーがあります。
今回のリモートデスクトップ接続のように、外部からアクセスする際は、
必ずADサーバーを経由するようになっています。
■接続の流れ
クライアントPC
↓
ADサーバー (ここでNLAを実施。NWレベル認証です。同じドメインNWに所属しているか確認。)
↓
接続先サーバー (ここでパスワード認証等の通常の認証を実施。)
企業のNWなんてものは、ありとあらゆる技術を駆使して強固に守られているものです。
(ここで紹介したのはほんの一例です。)
今回はこの認証を行うための、ADサーバーのサービスが停止していたために、接続ができない、という事象でした。
ADサーバーが停止した時に、そこをすっとばすのではなく、そもそも一切接続できないようになっているのは、
極めて重要ですよね。
こういうのは「フェールセーフ」っていうんでしたっけ。
確か情報処理試験で出てきたはず。
ちなみに、ADサーバーが落ちた原因ですが、ADを搭載しているサーバーがADだけでなく、
DNSやらWSUSやら複数の機能を同時に無理やり実装していたために、Cドライブが圧迫して
サービスが停止したのではないか、という状態です。
ドライブを整理したことで稼働が安定したために、おそらくこれかな、という認識です。
以前サーバーのディスク使用率を可視化しようという話があったのですが、
本格的に検討しても良さそうです。
スクリプトとOSSを活用すれば、案外1週間くらいでできそう。
(使用技術としては、Windowsバッチ、シェルスクリプト、Perlくらいですかね。
CやJava等の高級言語を用いた実務経験がある人ならば、楽勝かと思います。)
こんなところですかね。
普段アプリ開発をメインにやっているものですが、こういったインフラの知見も面白いです。
ビジネスの幅が広がりますよね。
それではまた。
最近やっている勉強(データベーススペシャリスト)
こんにちは、タケルです。
色々あって、久々の更新となってしまいました。
2月も中頃ですが、皆さん自己学習はしていますでしょうか。
私は限られた時間の中、黙々と地道にやってます。
やっている内容はこれです。
難しいです。非常に。
基本情報と、応用情報は、比較的さっくり取れた気がしましたが、(もちろん最初は大変だった)
これはまた一層レベルが違う。
以下の定番の参考書を使って、学習しています。
https://www.amazon.co.jp/情報処理教科書-データベーススペシャリスト-2019年版-三好-康之/dp/4798157945/ref=sr_1_1?ie=UTF8&qid=1550069204&sr=8-1&keywords=%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%B9%E3%83%9A%E3%82%B7%E3%83%A3%E3%83%AA%E3%82%B9%E3%83%88
また今後、学習内容について、この場でアウトプットさせて頂ければ、と思います。
それではまた。
技術者の心得
こんにちは、タケルです。
エンジニアとして過ごしてはや2年がたとうとしておりますが、
いつも自分に叩き込んでいる教訓があるので、
それを紹介しようと思います。
それは、「常に物事に対しての疑問、そして好奇心を持つこと」です。
極論ですが、人から言われたことを何でも鵜呑みにしたり、人から言われたことだけをやったり、
所謂「作業者」的な生き方は、人間として生まれた意味がない、とまでも思います。
少々言葉が乱暴かもしれませんが、人間としてこの世に生を受けた以上、
常に考えて、考えて、新しいことを学び、成長する人生を最後まで全うしたいと思います。
明日は金曜日、サラリーマンの皆さん、がんばりましょう。
オーバーワークをやるべき時と、やらざるべき時
こんにちは、タケルです。
今日は会社で残業をやるべき時と、やらざるべき時、その違いについて書きます。
ずばり、自分の成長に繋がっているか、どうかですね。
毎日自分の成長を振り返って、今日は成長できたかな、って考えるようにしています。
成長できていないって思うのであれば、
それは早く帰って自己学習に時間を割いた方がいいですよね。
まぁそうもいかないのがサラリーマンなんですが。
自分のことを考えて生きましょう笑
サラリーマンの皆さん、そうでない皆さんも、
明日を全力でがんばりましょう。