Compnet

仕事とか遊びとか、日々折々

2019-05-09(木)

ついでに FTPs (明示的な TLS) 化

Posted by Nakane, R. in technical   

前の記事で今更事に FTP サーバーを構築しました。 そのついでといってはなんですが、TLS 化を施しました。

TLS 化には「明示的 TLS」と「暗黙的 TLS」の二通りがあり、たいていの場合はその両方を実現するのが普通です。 「明示的 TLS」は平文で通信を開始してその通信の中でアプリケーションのコマンド (たいていは STARTTLS コマンド、FTP では AUTH TLS コマンド) を実行することで TLS を使った暗号通信に切り替える方法です。 「明示的 TLS」では暗号化されていない平文で通信を開始することもあり、アプリケーションが使う通信ポートは TLS 化していない通信と同じものが使えます。 TLS 化していない通信ポート (FTP では TCP の 21 番ポート) で通信を開始して、切り替えるコマンドが実行されればそれ以降を TLS で暗号化し、切り替えるコマンドが実行されない限りはずっと平文のままで通信を続けます。

これに対して「暗示的 TLS」では最初から TLS を使った暗号通信を行います。 ただしこの場合は平文と同じ通信ポートが使えません。 FTP の「暗示的 TLS」では通常 TCP の 990 番ポートを使います。

今回使用した Pure-FTPd では「明示的 TLS」だけしか実現できません。 Pure-FPTd の TLS 対応はプログラムをコンパイルするときのスイッチで切り替わり、Debian の標準リポジトリで提供されている Pure-FTPd では TLS に関して --with-tls スイッチだけが指定されています。 これによって Pure-FTPd で「明示的 TLS」が使用可能になりますが、このスイッチだけでは「暗示的 TLS」は使えるようにはなりません。 「暗示的 TLS」を使用可能にするには --with-implicittls スイッチを付けてコンパイルする必要がありますが、Debian の標準リポジトリで提供されている Pure-FTPd はそのようにはなっていません。

どうしてもというのであれば、Debian の標準リポジトリからインストールした Pure-FTPd とは別に --with-implicittls スイッチを付けてソース コードから Pure-FTPd をコンパイルして、これら二つのプロセスを起動すれば、何とかできるでしょう。 ここまでして TLS 化をするつもりにはなれないので、ここでは「明示的 TLS」だけが使えるようにします。

Read more...


2019-05-03(金)

今さらだけど FTP サーバーを立てた

Posted by Nakane, R. in technical   

今更感が半端ないですが FTP サーバーを欲しいとの要望があったので、自身の記録がてら構築手順をここにまとめます。 ベースの OS は Debian 8 jessie です。 いつもの Ubuntu でなかったり、現状最新の stretch でなかったりする点については、詳しくは語れない大人の事情をお察しください。

FTP サーバー アプリケーションには Pure-FTPd を使います。 これの選定にあたっては、以下の条件を満たすように考慮しました。

  • FTP でログインするユーザーはシステム ユーザーとは別に管理する (仮想ユーザーだけにログインさせる)。
  • FTP でログインしたユーザー毎にホーム ディレクトリを指定し、そのディレクトリの親ディレクトリを参照させない (ホーム ディレクトリに chroot する)。
  • 設定手順を再現しやすい。

Pure-FTPd 以外にも ProFTPDvsftpd といった FTP サーバー アプリケーションがあり、それぞれ日本語での情報を散見しますが、設定変更をスクリプト化しにくかったり仮想ユーザーの登録・管理が面倒だったりで見送りました。

Read more...


2016-12-02(金)

root でログインできないときにも root 権限で rsync

Posted by Nakane, R. in technical   

先の記事では pelican-quickstart コマンドで作られた Makefile ファイルを修正して、Pelican で生成した Web サイトを make rsync_upload コマンドで Web サーバーにアップロードできるようにしました。 しかしながら、筆者の環境では Web サーバーの HTML のルート ディレクトリへの書き込みが root 以外のユーザーではできないようにしてある上に、root でのログインもできないようにしてあります。 このため、先の記事の Mailefile ファイルを使う make rsync_upload コマンドでは、Web サーバーへのアップロードがエラーになってしまいます。

そこで、筆者の環境に合うように Makefile ファイルを更に修正します。 これに加えて、修正した Web サーバーの設定も調整して、make rsync_upload コマンドで Web サーバーにアップロードできるようします。

Read more...


2016-04-30(土)

クライアント認証でログインできるようにしたら Zabbix API がエラーになるので無理矢理回避しました

Posted by Nakane, R. in technical   

備考

この記事は旧ブログから移行した記事です。 元記事は ここ にあります。

Zabbix には、外部プログラムから Zabbix が管理する情報を取り扱うための仕組みとして、Zabbix API が存在します。

Locked Zabbix

Zabbix API を使えば、Web UI を使わずにプログラムなどから Zabbix の各種情報、例えば登録されているホストの一覧や収集したホスト情報などを取得したり、新たな監視対象を登録したりできます。 筆者も Zabbix API を Python スクリプトから利用して、登録されている監視対象のホスト情報を取得して hogehoge して便利に活用しています。

さて、先の記事で Zabbix の Web UI にクライアント認証だけでログインできるようにしました。 これによって、Zabbix に対する不正アクセスを極端に減らせると喜んだのですが。 何というか、Zabbix API を使ったプログラムが軒並み動かなくなってしまいました。

Read more...


2016-04-26(火)

Zabbix 3.0 にクライアント認証だけでログインする

Posted by Nakane, R. in technical   

備考

この記事は旧ブログから移行した記事です。 元記事は ここ にあります。

先の記事で Zabbix 3.0 のフロントエンドにクライアント認証を追加しました。 しかし先の記事にも書いたとおり、これだけでは StartSSL でクライアント証明書を発行した人 (StartSSL の利用ユーザーなど) 全員を承認してしまいます。

Locked Zabbix

そこで、クライアント証明書に記述されている情報を使って、特定の証明書の所有者だけを承認するようにします。 さらに、せっかくクライアント認証で個人を特定するのですから、その情報を使って Zabbix にログインまでできるようにもしましょう。

Read more...