電子メールクライアントが1つのIMAPサーバー(imap.gmail.com)にのみ接続するように制限したいと思います。そして、次のようなiptablesルールを作成しました。
iptables -A OUTPUT -d imap.gmail.com -p tcp --dport imaps -j ACCEPT
私は電子メールクライアントを持っています:muttは時々このサーバーに接続します。時にはそうではありません。
ルールから「-d imap.gmail.com」を削除すると、毎回動作を開始します。
iptables -A OUTPUT -p tcp --dport imaps -j ACCEPT
おそらく、これはGmailに多くのIPがあり、muttが次に別のIPに接続しようとしているという事実に関連している可能性があります。ファイアウォールはブロックしますか?
この場合、許可されたホストをどのように指定する必要がありますか?
ベストアンサー1
imap.gmail.com
大容量の高可用性サービスでは、さまざまなIPアドレスを持つことは驚くべきことではありません。 DNSサーバーは明らかに2つのアドレスを返します(少なくとも私にとっては)、アドレスセットは時間の経過とともに変わります(キャッシュのために数分間同じままです)。
ルールを設定すると、DNS サーバーは A1 と A2 という 2 つのアドレスを返します。 iptablesプログラムはこれを検出し、2つのIPアドレスのそれぞれに対して1つずつ2つのルールを作成するのに十分スマートです。
数分後に電子メールクライアントを実行すると、DNS要求はA3とA4の2つのアドレスを返します。このアドレスはほとんどの場合A1とA2とは異なります。したがって、muttは最初のA3を使用し、そのアドレスはファイアウォールによってブロックされます。
ファイアウォールはIPパケットのみを見ることができます。電子メールクライアントがどのDNS名を使用しているかわかりません。実際、電子メールクライアントはIPアドレスを直接使用できます。 IP パケットは IP アドレスに送信され、ホスト名は含まれません。 IMAP接続内にホスト名がある可能性がありますが、IMAPSを使用しているため、接続は暗号化されており、ファイアウォールはトラフィックを監視できません。
サーバーはSSLハンドシェイク中に証明書のIDを送信するため、トラフィックを検査し、サーバー証明書が気に入らない場合は接続を中断できます。iptablesを使用してこれを行うことができます。、100%信頼できませんが(一致する文字列が単一のTCPパケット内にある場合にのみ機能すると思います)。このタスクを完全に確実に実行するには、内容に敏感なプロキシを設定する必要があります。