apacheでリバースプロキシを立てる

前提

クライアント → リバースプロキシ(今回設定する箇所) → 裏にあるサーバ

としたい。

設定

リバースプロキシとするサーバに、以下を入れて、systemctl restart httpdする。

# tail -n 10 /etc/httpd/conf/httpd.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Listen 8888
<VirtualHost *:8888>
        ProxyPreserveHost On

        ProxyPass / http://back-server:8888/
        ProxyPassReverse / http://back-server:8888/
</VirtualHost>

動作

リバースプロキシは、

  • 8888でリクエストが来ると(典型的には、クライアントからhttp://[リバプロのホスト名]:8888/hoge/fuga でリクエストが送られてくると)
  • 裏にあるサーバ(back-server)へ、http://back-server:8888/hoge/fuga でアクセスし、
  • 結果をクライアントに返す。

ProxyPassの設定は・・・

  • ProxyPass /AAA BBBと設定すると、http://[リバプロのホスト名]:8888/AAABBBと読み替える動きをする
  • 仮にProxyPass /hoge http://back-server:8888/ とした場合、http://back-server:8888/fugaに読み替えて裏のサーバにアクセスする。

ProxyPassReverse の設定はProxyPassの設定と同じに

参考

rainbow-engine.com

Typora 有料化

シンプルさが売りのmrakdownエディタとして広く使われているTyporaですが、2021/11/23の正式リリースに伴いライセンスが有料になったそうです。

私も以前から愛用していたのですが、新しいPCにインストールしようとしたところ、purchaseのボタンを見て慌てふためいてしまいました。

typora.io

調べたところ、古いバージョンのものはそのまま公開されていたので、 引き続き無料で使いたい方は以下からDLするとよいでしょう。(私はこちらを使いました)

typora.io

DHCPスヌーピング

スヌーピー!?おかわわわわ!?と思って概要を調べた。

ネットワークを全く知らない人にどうやったらスヌーピーのことを伝えられるか、と思って歩きながら考えたポエム。

全編たとえ話なので、正しいかどうかは全く保証しません。

DHCPスヌーピングの立ち位置としては、「1.DHCPプロトコルの穴を突いて2.不正にネットワークに潜り込もうとする人に対する3.防御策」なので、順を追って説明することにします。(番号が対応します)

  1. DHCPプロトコル とは
  2. DHCPスプーフィング(なりすまし)
  3. DHCPスヌーピング

DHCP (Dynamic Host Configuration Protocol)

DHCPとは、ネットワーク内のIPアドレスの分配を簡便に管理するプロトコルである。 ネットワークに新しいデバイスが接続されると、DHCPサーバーが空いているIPアドレスを自動で割り振ってくれる。家庭内ではルータがこの役割を果たすことが多い。

ざっくり以下のような感じ。 あなた(新規デバイス)は新しい街に越してきて、各種手続きのために市役所(ネットワーク)に訪れたとする。

  1. 役所に来たら、まずあなたは「新しく越してきました!転入手続きをしたいですが窓口がわかりません!助けてください!」と叫ぶ (DHCP DISCOVER, ブロードキャスト)
  2. 受付の人がやってきて、「受付番号(貸出IP)を取ってきました。これでいいですか?」と話しかけてくれる (DHCP OFFER, ユニキャスト)
  3. あなたは、「この受付番号でOKです!」と叫ぶ(DHCP REQUEST, ブロードキャスト)
  4. 受付の人が、市役所のフロアマップ、窓口への行き方を教えてくれる (DHCP ACKNOWLEDGEMENT, ユニキャスト)

DHCP spoofing

DHCP spoofing (なりすまし)とは、ネットワーク内に存在する悪意のあるデバイスが、新規デバイスDHCP DISCOVERに対して偽の応答を返し、新規デバイスのIP通信のconfigを都合良く設定してしまう手法である。例えば新規デバイスデフォルトゲートウェイを悪意あるデバイスに設定することで、新規デバイスの通信は必ず悪意あるデバイスを一度経由することになり、通信が盗聴される、といったケースが考えられる。

上の例に倣うと、

  1. 役所に来たら、まずあなたは「助けてください!」と叫ぶ
  2. 正規の受付の人が来る前に不審者がやってきて、「君が行こうとしてる窓口はあっちだよ」と誘導する
  3. 誘導された窓口では市役所の人間ではない不審者が待ち構えている。

みたいな感じだろうか。

DHCP snooping

上記のDHCP spoofingを防ぐために、ルータには「DHCP通信を監視し、信頼できるポートからのDHCP応答のみルータの通過を許可する」機能がついている。これがDHCP snoopingと呼ばれる機能である。(snoopingは"嗅ぎまわる"という意味)

さらに上の例に倣うと、

  • 受付の近くでスヌーピーがうろうろしている
  • スヌーピーが認めた受付の人が新入りを案内することに対しては何も言わない
  • スヌーピーが認めていない人が新入りを案内しようとすると、案内をやめさせる

という感じ。

まとめ

無理に例えると余計わかりにくい。正しい説明はいつか書きます。

VBAことはじめ

Date型

バイトへの置き土産のついでにVBAを触ってみる.指定した月の日付を出して土日だけ灰色にする. Date型は結局値をどう保持してるのか謎だけど下みたいな無理やりな入れ方でも通る. 起動時に実行させるにはプロージャ名をSub workbook_open()とする.他にもいろいろ指定できるらしい(VBA基本(そのブックを開いた時に自動実行)).ブックへの指定となるため標準モジュールではなくThisWorkboookに記述しないといけないそうでちょっとハマった.

year,monthとかを変数宣言するとYear()とかMonth()とかが使えなくてそわそわする.配列も関数も引数の指定の仕方が同じなのがよくない.

Sub workbook_open()
    Set ws1 = Sheets("Sheet1")
    ws1.Range(Cells(1, 1), Cells(31, 4)).ClearContents
    ws1.Range(Cells(1, 1), Cells(31, 4)).Interior.ColorIndex = xlNone
    
    Dim ym As String
    ym = InputBox("2018/2の形で入力してください", "月の確認", "")
    Dim buff As Variant
    buff = Split(ym, "/")
    If UBound(buff) <> 1 Then
        MsgBox "入力が不正です"
        Exit Sub
    End If
    
    Dim y, m As Integer
    y = Int(buff(0))
    m = Int(buff(1))
    
    Dim ymd As Date
    ymd = DateAdd("d", 25, DateAdd("m", -1, ym + "/1"))
    
    Dim i As Integer
    For i = 1 To 31
        ws1.Cells(i, 1).Value = year(ymd)
        ws1.Cells(i, 2).Value = month(ymd)
        ws1.Cells(i, 3).Value = day(ymd)
        ws1.Cells(i, 4).Value = WeekdayName(Weekday(ymd), True)
        
        If Weekday(ymd) = 1 Or Weekday(ymd) = 7 Then
            ws1.Cells(i, 4).Interior.ColorIndex = 15
        End If
        
        ymd = DateAdd("d", 1, ymd)
        If day(ymd) >= 26 And month(ymd) = m Then
            Exit Sub
        End If
    Next
    
End Sub

出力.どうしても灰色にしたいらしい.

f:id:alphajinsei:20180101022954p:plain