
私は Linux システム管理者で、ローカル ネットワークのすべてのシステムにログインします。who コマンドで自分の IP が表示されないようにしたいのです。たとえば、誰かが次のように入力するとします。
$ who
IP が公開されてしまいます。Linux の who コマンドから IP を隠す方法はありますか?
[編集:chrips]
これは、個人のユーティリティ サーバーがハッキングされることを心配している人にとって重要です。当然、攻撃者があなたへのベクトルを見つけないように、現在の自宅の IP を攻撃者から隠したいはずです。
答え1
最も簡単な方法は、utmpログファイルを誰でも読めるようにすることです。これはutmp マニュアルページ:
他のさまざまなシステムとは異なり、utmpログはファイルを削除することで無効にできますが、utmpは常に存在する必要があるLinuxではwho(1)を無効にしたい場合はないutmpワールドを作る読める。
このような:
sudo chmod go-r /var/log/wtmp /var/run/utmp
who # shows nothing, not even an error!
sudo who # still works for root
rudi :0 2017-04-18 19:08 (console)
したがって、who
IP アドレスをスキップするだけでなく、完全に無効になります。
別のアイデア(ちょっと馬鹿げているかもしれませんが) IP だけを隠すには、SSH サーバーを別のポート (1234) で、ローカルホストのみで listen するようにします。次に、「プロキシ」(socat、netcat) を実行して、public_ip:22 から localhost:1234 に転送します。
ssh サーバの設定 /etc/ssh/sshd_config を変更します。
ポート 1234
SSH サーバー マシンでプロキシを実行します。
socat TCP-LISTEN:22、フォークTCP:localhost:1234
これで、すべての utmp ログ ( who
、last
) に同じ役に立たない localhost IP が表示されます。
注記おそらく、ユーザーは 経由で実際の接続を見ることができるでしょうnetstat
。ユーザー空間プロキシ ( socat
)の代わりにiptables
、着信 ssh トラフィックに対して NAT および MASQUERADING ルールを設定することもできます。または、常に同じ IP からログインするために、追加の「ssh ホップ」を使用することもできます。これは読者の演習として残しておきます。 ;)
答え2
このwho
ユーティリティは、データベース内のデータを解析します/var/run/utmp
。このデータベースは、login
システムにログインすると によって更新され (他の多くのユーティリティによっても更新されます。 を参照man utmp
)、そのファイルが存在する場合は、データが に永続的に記録されます/var/log/wtmp
。
これらの記録は、システムがクラッシュしたり、誤動作し始めた理由と時期を追跡するのに役立ちますが、変更しないでください。
したがって、答えは次のようになります。 または および に書き込むプログラムの動作を変更するか、これらの (バイナリ) ファイルを自分で変更しない限り、 は実行できません。who
また、これを行うと、システムが 1) 安全でなくなり、2) 故障が発生した場合に診断が困難になる可能性があるため、これを行うべきではありません。/var/run/utmp
/var/log/wtmp