venv 環境の Python responder アプリケーションを Apache 経由で動作させる
以前に Python + responder + gunicorn + systemd + Nginx で Web アプリを起動する というメモを書きました。 Apache2 + responder に置き換えた内容で改めてメモしておきます。 Python アプリケーションは venv 環境の中に作成します。
以前に Python + responder + gunicorn + systemd + Nginx で Web アプリを起動する というメモを書きました。 Apache2 + responder に置き換えた内容で改めてメモしておきます。 Python アプリケーションは venv 環境の中に作成します。
responder でアプリケーションを書いても AttributeError: module 'typesystem' has no attribute 'SchemaDefinitions' というエラーになる場合があります。 例えば以下のように pip で gunicorn や responder をインストールせずにインストールし、アプリケーションを実行した場合にエラーになるかも知れません。
Python で venv 環境を作成した際、該当ディレクトリに移動する毎に source venv/bin/activate する必要があります。 direnv を使うことでこれを自動化することが出来ます。 direnv は現時点で Release v2.31.0 が最新ですがバイナリが登録されていない為、今回は Release v2.30.3 を利用します。 尚、今回は Ubuntu 20.04LTS 上でテストしました。
batfish でルーティングや ACL のテストを実施する際、ルータやファイアウォールとは別にダミーのホストを利用したい場合があります。 こういった場合は .json ファイルを用意することで簡単にダミーホストを用意出来ます。 Modeling hosts に .json ファイルのフォーマットが書かれています。
Ubuntu でファイルシステムへの IO (Read/Write) を監視するには inotify を使います。 今回は Ubuntu 20.04LTS で検証を行いました。
Linux でパッケージのアップデート時、カーネルが自動更新されないように固定するにはディストリビューション毎に以下のようにします。
batfish を利用する際、「コンフィグは変更せずに特定インターフェイスをダウン状態とみなす」為には interface_blacklist というファイルを使います。 今回はこの interface_blacklist の使い方をメモしておきます。
batfish に同梱されているサンプルスクリプトや、インターネット上で見かけるスクリプト例は「スナップショットの有無に関わらず、スナップショットを生成する」ものが多いと思います ("例" なので、そういうものなのだと思います)。 仮に何度もスクリプトを実行し直す場合は、「コンフィグに変化が無いのであれば、毎回のスナップショット再作成は不要」という場合もあると思います。 そういった場合の実装例をメモしておきます。
例として Question には ipOwners を利用していますが、どの Question を利用してもスナップショット初期化部分の考え方は同じです。
OpenSSH はバージョン 7.8 からデフォルトの鍵フォーマットが PEM 形式から OPENSSH 形式へ変更されています。 バージョン 7.8 のリリースノート には下記の記載があります。
- ssh-keygen(1): write OpenSSH format private keys by default instead of using OpenSSL's PEM format. The OpenSSH format, supported in OpenSSH releases since 2014 and described in the PROTOCOL.key file in the source distribution, offers substantially better protection against offline password guessing and supports key comments in private keys. If necessary, it is possible to write old PEM-style keys by adding "-m PEM" to ssh-keygen's arguments when generating or updating a key.
Ubuntu 20.04LTS 上で実際に鍵ペアを作成して鍵フォーマットを確認してみたのでメモしておきます。 OpenSSH は下記の通り、バージョン 8.2 を利用しました。
Python でディレクトリを再帰検索し、ハッシュ値を取得するサンプルコードをメモしておきます。 ハッシュ値の計算には hashlib を使い、アルゴリズムには SHA1 を利用しています。