ネット上のアクセスボリュームをUPさせ効率の良い集客をご提案します。

カテゴリー「テクニカル」の記事

SELinuxを有効のままでWEBデフォルトフォルダ以外のデータ更新を許可

 / Linux Tips, Security Tips, セキュリティ日記, テクニカル, ノウハウ


まっさらのLinuxに新規の場所へWEBのドキュメントルートを作りApacheを起動させると、よくエラーが生じることがあると思います。あるいはWORDPRESSのバージョンアップが出来ないとかフレームワークの更新ができないとか似たようなエラーを体験された方は多いのではないでしょうか。これは概ねお察しの通りSELinuxが有効になっているため起きているのですが、よくある処置はSElinuxをOFFにすることを勧めているケースが殆どです。しかし、SELinuxはセキュリティを高めるための仕組みですから有効のままで使いたいですよね!ということで、そのような場合の設定方法をご紹介いたします。

Apache HTTP Server が使うフォルダーを新規で設定する場合

デフォルトでは/var/www/htmlのみWEBフォルダーとして許可されているので任意の場所にドキュメントルートを設置するなら下記のように指定を行ってください。その後にApacheサーバを再起動すると動作する可能性が高いと思います。

特定のフォルダファイル(画像、文書)をHTML経由で許可、直接ダウンロードは禁止。

 / Linux Tips, テクニカル, トピックス, ノウハウ


例えば、特定サイトのHTMLからリンクされているPDFやWORD,EXCELファイルはブラウザで開けるが、直接URLダイレクトや検索結果のPDFリンクは開けないようにしたいという要望はよくあると思います。通常HTMLやプログラミング言語はサイトの入口を制御しているフレームワーク等のコントローラーでページ制御するため細かいアクセス制限をかけられるのですが、画像やその他の文書ファイルになってくるとどちらかといえばWEBサーバ側の制御配下であるため思ったようにファイルを隠蔽できないという悩みを抱えているエンジニアも多いと思います。今回はちょとした設定でできる制御方法について説明したいと思います。


Apacheの設定でリファラーチェックを入れHTMLからクリックで表示、直接URL指定、検索結果PDFリンクは非表示に!

直接ブラウザでファイルオープンをさせないための上位フォルダーをDirectoryディレクティブで指定しフィルターします。

これでApacheを再起動すれば適用です。.htaccessでやるなら再起動も不要でしょう。

細かくファイルの拡張子まで指定してやりたければFilesディレクティブでパターンマッチさせれば良いと思います。

Apacheのディレクティブで表示結果に出さないよう抑え込む場合

ApacheにおけるSSL設定品質の肝。SSLCipherSuite及びSSLProtocol (POODLE対策)

 / Linux Tips, Security Tips, セキュリティ日記, テクニカル


今はGoogleのオールSSL化の推進によりかなりサイトがSSL接続仕様に変わってきた。しかし、実際のところそれで安心してはならない。SSLの設定のさじ加減というか塩梅によってはダメダメなケースもあるのです。その中でも一番肝と思うディレクティブ設定に以下のパラメータ設定がある。


暗号化通信の方式と暗号化アルゴリズムの選択

下記の設定はタイトルを表す通りの設定を行うApacheのディレクティブです。

  • SSLProtocol
  • SSLCipherSuite

脆弱性のある通信方式

SSLの通信方式には2014年10月に判明したSSL3.0およびTLS 1.0 / TLS 1.1の脆弱性があります。これを「POODLE」という名前で呼んでいます。 もともと、Googleの研究チームがSSLの解析を行い、2014年10月14日に、SSL3.0に関する脆弱性について重大なレポートを行ったのがきっかけです。POODLEは「POODLE(Padding Oracle On Downgraded Legacy Encryption)」の略称でSSL 3.0を有効にしているサーバに問題があると報告していましたが、その後TLS 1.0 / TLS 1.1の一部も問題ありと追加で報告されました。故にApacheでSSLを設定する際にデフォルトで設定していると脆弱性のある通信方式を許容するためセキュリティホールができてしまうのです。つまり、この対策は危険なプロトコルスィートを抑え込む設定が必要となります。

Apacheで行うべき設定

下記は、デフォルトではコメントアウトか、設定がないかもしれません。SSLのコンフィグ設定で追記して登録してください。危険ということで完全な抑え込みの設定をしてしまうと古いブラウザが対応できない場合があるためSSLProtocolの「-TLSV1」を入れるか、入れないかは正にさじ加減かなと思います。

設定後にテストを行う

設定ができたら評価をおこなってください。評価でA+取れるようにがんばってください。今はSNS等も評価がBレベルだとデベロッパーサイトでAPI登録を受け付けてくれないようになってきています。またGoogleもある一定期間の後にSSLの設定レベルの判別を明確にしてゆく話もありますので暗号化スィートの設定は非常に大事です。SEO的に大きな影響をもたらすので今後はApache要の設定となるでしょう。

SSLの設定レベルの品質評価

Python3 Bottleフレームワーク入門(その12)- ReverseProxy方式 Bottle連携SSL Apache起動

 / Linux Tips, Python Bottle Framework, テクニカル, トピックス, ノウハウ


前回の章ではWSGI方式で行ったが今回はRverseProxy方式のApache連携を紹介する。ReverseProxy方式は透過型のProxyで内部で動作しているhttp方式のWEBサーバをお手軽に安全にラッピングしてくれる方式である。内部サーバのコンテンツ作りに不安があるならこの方式が良いと思います。また、内部のシステムが簡単にhttpsに置き換えられないなら、この方法で強引に変更できれば簡単にすみますね!非常に便利なリバースプロキシーです


転送先内部サーバー

いつものごとくありがちなサンプルコード。127.0.0.1で設定しておくと更に安全な接続になります。ローカルホストは外部から接続できませんので。

Apacheのリバースプロキシー設定

ほんのすこしだけ手を加えればリバースプロキシーになります。ProxyPassとProxyPassReverseの箇所だけです。Proxy先のpythonサーバ&プログラムはスレッドセーフになっていることが前提です。

リバースプロキシー起動

サイトにアクセスする例

/hello/の後に任意の文字列を入れてください。ページボディに表示されます。

尚、予めテストサーバにIPアドレスを割り当て名前をWindowsのHostsに登録しておけば下記のように名前ベースのホスト名で実験ができます。



Python Bottle Framework入門 全12回
1.基礎編サーバ起動
2.リクエストメソッド
3.ORM Peewee (MySQL)
4.ORM Peewee CRUD
5.Cookie And Session
6.Abort and Redirect
7.マルチスレッドWEBサーバ
8.デーモン化
9.Json
10.WSGI on SSL
11.Apache連携起動(外部WSGI) SSL接続
12.Apache連携起動(ReverseProxy)SSL接続

合わせて読みたいPython MySQL操作関連

Let’s EncryptでSSL無料証明書を使ってみる

 / Linux Tips, Security Tips, テクニカル, トピックス, ノウハウ


世の中では7月24日のChrome68の驚異に向かってSSL化へ着実にサイトを切り替えるところが多くなっています。でもサイトを沢山持っているところはかなりのお金の負担になりますね。どうするんだろう?と思ってたらLet’s EncryptでSSL無料証明書が作れるんだね。でも3ヶ月更新のようです。

色々と今後このまま続くと思えないが当座は目下SSL化を目論んでいるGoogleにしてもこの証明書は短期的に見ればまともなサイトの救済策になるのであったほうが良い。長期的には排除か順位評価を低くするというシナリオは見えてくる。個人的には、テストサイトでは十分利用価値があるとは思っています。特に今はドメインのワイルドカード証明書も作れるようだからプロトタイプサイトでホスト名だけ変更して、テストドメインは同じで使えば作業工数が減りますね。

使わないであれこれ言うよりは、まずは使ってみるというのは大事だね。ということで使ってみましたので、その備忘録を残したいと思います。


Let’s Encryptシステムのインストール方法

ドメインはtest.serve.netと仮定してやってみました。必ずそのサイトが稼働しているサイトで作業を行う必然性があります。作業する際にそのドメインのドキュメントルート配下にもコマンド実行時に細工が入るらしいので必ず稼働しているドメインである必要があるのです。インストールする場所はどこでも良いのだけど外部ツールの導入は大体が/usr/localもしくは/optなので今回は/optで行ってみたいと思います。

ドキュメントルートに処理と認証を行い、対象ドメイン用の証明書群を作る。

certbot-autoコマンドは-wでドキュメントルートを指定し、-d で対象ホスト名(fqdn)、–emailで更新通知メルアドを指定します。

証明書は/etc/letsencrypt/live/test.serve.netのフォルダーに作成されます。

※通常はcert.pem,chain.pem,privkey.pemがあれば十分。

WEBサーバの再起動を行う

以下を実施すればhttpsでアクセスが行なえます。

使ってみた感想

Let’s EncryptはPCだけではなくてスマホから使っても全く問題はなかった。短期的にはオールhttps化の回避策にはなるだろうと思うが、これはネットワーク機器用や実験用に使うべきと思います。恒久的に使ってはいけません。理由は認証が自動で所有者の正当な認証がされないSSL発行は危険だし、実際事件が起きているようなのでGoogleが恒久的には到底許すと思えない。ある程度の猶予期間や混沌とする検索エンジン世界の次のどうあるべきかが見えてきた段階で消滅するか限定的な使い方に変化するだろうと予測する。

ライセンス更新処理

放おって置くと3ヶ月でライセンスが止まるため、更新処理が定期的に必要です。更新が成功したらWEBサーバを再起動してください。

TOPへ戻る

AGA 成長因子