現在、奇妙な問題が発生しました。デュアルスタックホストがありますが、SSH経由で接続したいと思います。 IPv6経由で接続すると、すべてが期待どおりに機能します。
datenwolf@foo ~/ > ssh -6 bar.example.com
Password:
datenwolf@bar ~/ >
ただし、IPv4を介して同じ操作を実行すると失敗します。
datenwolf@foo ~/ > ssh -4 bar.example.com
Password:
Permission denied (publickey,keyboard-interactive).
datenwolf@foo ~/ >
/var/log/sshd
ログイン失敗からの抜粋
Apr 24 16:34:03 [sshd] SSH: Server;Ltype: Version;Remote: www.xxx.yyy.zzz-38427;Protocol: 2.0;Client: OpenSSH_5.9p1 Debian-5ubuntu1
Apr 24 16:34:03 [sshd] SSH: Server;Ltype: Kex;Remote: www.xxx.yyy.zzz-38427;Enc: aes128-ctr;MAC: hmac-md5;Comp: none [preauth]
Apr 24 16:34:04 [sshd] SSH: Server;Ltype: Authname;Remote: www.xxx.yyy.zzz-38427;Name: wolfgangd [preauth]
Apr 24 16:34:07 [sshd] pam_access(sshd:account): access denied for user `datenwolf' from `foo.example.com'
Apr 24 16:34:07 [sshd] error: PAM: User account has expired for datenwolf from foo.example.com
Apr 24 16:34:07 [sshd] Connection closed by www.xxx.yyy.zzz [preauth]
もちろん、アカウントは期限切れではなく、IPv6を介して完全にログインできます。 Googleを使用してログメッセージに関するさまざまなレポートを見つけましたが、それらのどれも私の問題と一致しません(Appが提案したソリューションが私の場合には適用されないという意味で)。
私はここでアイデアがほとんどなくなりました。
修正する
/var/log/sshd
IPv6に正常にログインしました。同じターゲットマシンで:
Apr 24 16:56:42 [sshd] SSH: Server;Ltype: Version;Remote: 2001:x:x:x:x:x:x:x-46025;Protocol: 2.0;Client: OpenSSH_5.9p1 Debian-5ubuntu1
Apr 24 16:56:42 [sshd] SSH: Server;Ltype: Kex;Remote: 2001:x:x:x:x:x:x:x-46025;Enc: aes128-ctr;MAC: hmac-md5;Comp: none [preauth]
Apr 24 16:56:43 [sshd] SSH: Server;Ltype: Authname;Remote: 2001:x:x:x:x:x:x:x-46025;Name: datenwolf [preauth]
Apr 24 16:56:47 [sshd] Accepted keyboard-interactive/pam for datenwolf from 2001:x:x:x:x:x:x:x port 46025 ssh2
Apr 24 16:56:47 [sshd] pam_unix(sshd:session): session opened for user datenwolf by (uid=0)
別のコンピュータからログインしようとしましたが、結果は同じでした。 IPv6は機能しますが、IPv4は機能しません。
アップデート2
参考として使用されるIPテーブルは次のとおりです。気づく実際の戦いでテストされた。言い換えれば、長年にわたって使用されており、最近は変更されていません。 IPv4によるリモートログインした彼らと一緒に働いてください。
IPv4 IPテーブル:
Chain INPUT (policy ACCEPT 2144 packets, 336K bytes)
pkts bytes target prot opt in out source destination
132 20762 fail2ban-SSH tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
12M 14G ACCEPT all -- ppp0 * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
3111 95984 ACCEPT icmp -- ppp0 * 0.0.0.0/0 0.0.0.0/0
18692 1123K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 112 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1194
4633 288K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpts:6880:6899
2826 154K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpts:6880:6899
4 160 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:123
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:123
44165 3069K REJECT all -- ppp0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 48032 packets, 44M bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:631 reject-with icmp-port-unreachable
0 0 REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:515 reject-with icmp-port-unreachable
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:631 reject-with icmp-port-unreachable
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:515 reject-with icmp-port-unreachable
0 0 REJECT all -- ppp0 ppp0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
133K 8347K TCPMSS tcp -- * ppp0 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
Chain OUTPUT (policy ACCEPT 14378 packets, 2172K bytes)
pkts bytes target prot opt in out source destination
Chain fail2ban-SSH (1 references)
pkts bytes target prot opt in out source destination
132 20762 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
IPv6 IP6テーブル
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all * * ::/0 ::/0 rt type:0 segsleft:0
484K 86M ACCEPT icmpv6 * * ::/0 ::/0
105K 7943K ACCEPT tcp * * ::/0 ::/0 tcp dpt:22
0 0 ACCEPT udp * * ::/0 ::/0 udp dpt:1194
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:1194
0 0 ACCEPT udp * * ::/0 ::/0 udp dpts:6880:6899
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpts:6880:6899
0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:123
0 0 ACCEPT udp * * ::/0 ::/0 udp dpt:123
0 0 ACCEPT all ppp0,sixxs * ::/0 ::/0 ctstate RELATED,ESTABLISHED
4164K 466M ACCEPT all !ppp0,sixxs * ::/0 ::/0
0 0 REJECT all * * ::/0 ::/0 reject-with icmp6-port-unreachable
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all * * ::/0 ::/0 rt type:0 segsleft:0
2864 311K ACCEPT icmpv6 * * ::/0 ::/0
0 0 REJECT tcp * * ::/0 ::/0 multiport ports 631 reject-with icmp6-port-unreachable
0 0 REJECT udp * * ::/0 ::/0 multiport ports 631 reject-with icmp6-port-unreachable
0 0 REJECT tcp * * ::/0 ::/0 multiport ports 515 reject-with icmp6-port-unreachable
0 0 REJECT udp * * ::/0 ::/0 multiport ports 515 reject-with icmp6-port-unreachable
0 0 REJECT all ppp0,sixxs ppp0,sixxs ::/0 ::/0 reject-with icmp6-port-unreachable
0 0 accept_with_pmtu_clamp tcp ppp0,sixxs * !2001:x:x::/48 2001:x:x::/48 tcp dpt:22
18M 14G accept_with_pmtu_clamp all * * ::/0 ::/0 ctstate RELATED,ESTABLISHED
65503 5289K accept_with_pmtu_clamp all !ppp0,sixxs * ::/0 ::/0
0 0 REJECT all * * ::/0 ::/0 reject-with icmp6-port-unreachable
Chain OUTPUT (policy ACCEPT 8099K packets, 11G bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all * * ::/0 ::/0 rt type:0 segsleft:0
Chain accept_with_pmtu_clamp (3 references)
pkts bytes target prot opt in out source destination
0 0 TCPMSS tcp * ppp0,sixxs ::/0 ::/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
18M 14G ACCEPT all * * ::/0 ::/0
アップデート3
/etc/sshd/sshd_config
すべての説明が削除された状態で接続するシステムは次のとおりです。
Port 22
ListenAddress 0.0.0.0
ListenAddress ::
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM yes
AllowAgentForwarding yes
AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
PrintMotd no
PrintLastLog no
UseDNS yes
Subsystem sftp /usr/lib64/misc/sftp-server
答え1
状況がますます奇妙になった後(私の質問のコメントスレッドを参照)、ついにそれを見つけました。最初にすべきこと:認証プロセスしたpam_access.soは失敗しますが、/etc/security/access.conf
提案されたいくつかの構成エラーのため失敗しません。
その理由を理解するには、このボックスの設定を具体的に調べる必要があります。このボックスはルーターとして機能し、IPv4(デフォルトではPPPリンク経由)とIPv6(6in4トンネル経由)に接続されます。このボックスはDNS再帰リゾルバとしても機能し、これが興味深い部分です。 IPv4 リバース ルックアップは IPv4 ルート サーバーで開始して再帰的に検証し、IPv6 リバース ルックアップは IPv6 ルート サーバーで開始して繰り返しチェックするようにリゾルバを設定しました。この設定は、最初にインストールしたときに実際に機能しました。
今私のISPが登場し、人々はDNS増幅攻撃がどのように機能するのか理解していません。簡単に言えば、私のISPは着信DNSパケットをランダムに扱うと確信しています。つまり、一部は現在独自のリゾルバによってしばらく解決されなければなりませんが、他のDNSアドレスは自分で再帰的に確認する必要があります。正式な理由はDNS増幅を軽減することです。攻撃しますが、彼らは間違っています^ 1。
設定を大幅に変更したくないので、ISPのDNSリゾルバをローカルDNSリゾルバの最後に非再帰的な転送として配置しました。したがって、再帰確認の試行がタイムアウトした場合、ISP の検証者を試みます。これまではこれがうまくいきます。しかし、構成するときに小さな間違いをしました。 ISPのDNSリゾルバーを入力して、ローカルスコープ(192.168.0.0/16など)のホストでのみ機能させるようにしましたが、ルーターのlocalhostを忘れました。私はSSHで接続したいホストであり、リゾルバーいいえISPの確認者を検討してください。
pam_access.so はピアアドレスのリバースルックアップを試みます。これでループが終了します。 IPv6リバースルックアップの場合、DNS IPv6ルートサーバーにアクセスされるため、パケットはISPの干渉なしに6in4トンネルを通過して応答を取得します。ただし、IPv4リバースルックアップはISPのリゾルバを介して直接実行されず、応答を受信せず、最終的にNXHOSTを報告します(またはタイムアウト)。それにもかかわらず、pam_access.soは気に入ったものを見ることができず、「合格できません」と言うだけです。
そのパーサー構成を変更した後、すべてが再び魅力のように機能します。しかし、今ISPに対処する必要があります...
どうやって解決したのか?さて、ログの冗長さを残酷に研究して、/var/log/everything
イベントが展開される順序を理解してください。私はパーサーがリバースルックアップの試みを記録するのを見て、何が起こっているのかを知りました。
1: DNS 増幅緩和の観点から見ると、これは完全に言えないことです。発信DNSパケットが正しく通過するかどうかをテストしたからです。ただし、これはフィルタリングする必要があるパケットです。実際、すべてのエンドカスタマーISPは、送信者アドレスが顧客のアドレスと一致しないすべてのUDPパケットを破棄する必要があります。
答え2
サーバーのsshd構成は、この種の問題が発生した場合に実行できる最も興味深い作業の1つです。一般的にあります/etc/ssh/sshd_config
。
構成ファイルに次のセクションがある可能性があります。
Match Address 10.*.*.*,192.168.0.*
PasswordAuthentication no
これらのサブネットに関連するいくつかの規則があります(Address
ファイルの規則は異なる可能性があります)。 IPv4アドレスが唯一の一致アドレスである場合(IPv6とは対照的に)、これらの規則はIPv4アドレスにのみ適用され、一致の規則は一致するIPアドレスにのみ適用されます。したがって、sshd には、IPv4 と IPv6 を介して接続するかどうかに応じて異なるルールがあります。
ですべてを設定することはできませんが、Match
違いを作成するのに十分です。
AllowAgentForwarding, AllowTcpForwarding, AuthorizedKeysFile,
AuthorizedPrincipalsFile, Banner, ChrootDirectory, ForceCommand,
GatewayPorts, GSSAPIAuthentication, HostbasedAuthentication,
HostbasedUsesNameFromPacketOnly, KbdInteractiveAuthentication,
KerberosAuthentication, MaxAuthTries, MaxSessions,
PasswordAuthentication, PermitEmptyPasswords, PermitOpen,
PermitRootLogin, PermitTunnel, PubkeyAuthentication,
RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,
X11Forwarding, X11UseLocalHost
答え3
私も同じ問題がありました。iptablesそしてIP6テーブル、その後、問題を解決しました。