Skip to content

TCPWrapperでアクセス制御

Posted in CentOS7

CentOSにはTCPWrapperというフィルタリング機構があります。
アプリケーションレベルでの実装なので、ApacheやPostfix等対応していないソフトもあるのですが、接続元のネットワークによって、サービスの利用の可否を定義し、よりセキュアな環境を構築することができます。

/etc/hosts.allow(接続許可用の定義)
/etc/hosts.deny(接続拒否用の定義)
のふたつのファイルを編集します。

例えば以下のような内容で作成したとします。

hosts.deny

hosts.allow

どちらも、[サービス]:[対象のソース]という具合で定義していきます。
hosts.denyで拒否されていない場合はすべて許可される扱いになってしまうので、
hosts.denyでは、ALL: ALLして全接続を拒否
hosts.allowでは、許可するネットワークを個別に定義
というのが定石です。
この場合すべてのサービスを127.0.0.1を接続可能で、xxx.panda-world.ne.jpのネットワークからの接続に関してはsshdとvsftpdが利用可能。
それ以外の人間は接続できない。という内容になります。

こうしておけばpanda-world.ne.jp以外の名前のネットワークからsshやftpに接続されることはなくなるので、だいぶセキュアになりますね。
固定IPを持っている方は、自身のIPでカチカチに縛ってしまえばそのIPからしか接続できないので更にGood!なことになります。

繰り返しになりますがTCPWrapperはアプリケーションレベルでの実装です。
通信がアプリケーションまで通過してしまうので、より低いレイヤーでパケットを破棄できるfirewalldや物理的なFWで制御するほうがベターです。
そしてApacheやPostfixなどはそもそもTCPWrapperに対応していません。
よって設定の重要度としてはfirewalld > TCPWrapperとお考えください。

とはいえうっかりfirewalldの設定を誤ってしまう、なんてこともありますよね。
そんな時であってもsshdやvsftpdといった重要なサービスへの不正アクセスを絶対に許さないためにも、サーバを構築したら必ず設定しておいてください。

Comments are closed.