アカウント名:
パスワード:
最低限の権限で動かせば、仮にセキュリティホールがあっても被害が最小限で済むのにいまのWindowsには、サンドボックス的な機能が標準装備されてるんだからそれ使えばいいのに
Linux だって、1024 番未満のポートは “privileged port” と呼ばれてですね、root が無いと bind できないんですよ。逆に root 以外が bind できてしまったら、root より先にそのポートを bind して偽のサーバを動かすといった攻撃ができちゃうでしょ。
DNS System の port は何番だか知ってますか?答えは53番です。つまり、これを bind するには Administrators の権限がいるのは当然のことです。
最近じゃあ、*nixでは起動時だけroot権限どころか、むしろrootだと起動できないサービスの方が多い。さらに外部とやりとりするようなサービスでは、昔からchrootやjailなどで囲って起動するなど当たり前だし。qmailやpostfix、dovecotなどに代表されるように、用途に応じて多数のプロセスとユーザを使いわけ、キュー管理やロギングなどの権限が必要となるプロセスにだけroot権限を付与するやり方。POSIX Capabilityによる、単純にそのまま使うには強力すぎるroot権限の分離、seccompによるサンドボックス化などなど、root権限ひとつ使うにしてもそのまま使うことの方
そもそも今時権限分割もサンドボックス化もできないOSなんてWindowsくらいのものだろ。
PrivilegeというCapabilityみたいな仕組みだけは一応ある。Privilege自体は昔からあって、Windows Vista/Server 2008からサービスごとに必要なPrivilegeを指定できるようになった。
Windows Server 2019でDNSサーバーをインストールして、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSを見たら、RequiredPrivilegesでこの指定を行っている。なので、DNSのプロセスは、本来のSYSTEM (LocalSystem)アカウントよりは少ない特権で動いている。
とは言え、LocalSystemあったら、大抵のファイル・レジストリ・各種オブジェクトは読み書き自由。さらに、他の完全なLocalSystemアカウントなプロセスを探し、それを元にCreateProcessAsUserで完全なLocalSystemアカウントで動くプロセスを作れそうな気がする(ここ少し自信ない)。
やはり、せめてLocalSystemではなく他のユーザーアカウントで動かすようにしないとダメでしょと思う。実際、だんだんLocalSystemで動くサービスは減ってきているので、DNSが今でもLocalSystemで動いているのは意外だった。
あと、プロセスに対するサンドボックスの仕組みがいろいろあるのは、Unix系(Linuxを少しかじったことあるだけだけど)が優れているとこだと思う。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stay hungry, Stay foolish. -- Steven Paul Jobs
なんでDNSサーバをシステム権限で動かすんだ? (スコア:0)
最低限の権限で動かせば、仮にセキュリティホールがあっても被害が最小限で済むのに
いまのWindowsには、サンドボックス的な機能が標準装備されてるんだからそれ使えばいいのに
Linux だってそうでしょう (スコア:0)
Linux だって、1024 番未満のポートは “privileged port” と呼ばれてですね、root が無いと bind できないんですよ。
逆に root 以外が bind できてしまったら、root より先にそのポートを bind して偽のサーバを動かすといった攻撃ができちゃうでしょ。
DNS System の port は何番だか知ってますか?
答えは53番です。
つまり、これを bind するには Administrators の権限がいるのは当然のことです。
Re: (スコア:-1)
最近じゃあ、*nixでは起動時だけroot権限どころか、むしろrootだと起動できないサービスの方が多い。
さらに外部とやりとりするようなサービスでは、昔からchrootやjailなどで囲って起動するなど当たり前だし。
qmailやpostfix、dovecotなどに代表されるように、用途に応じて多数のプロセスとユーザを使いわけ、キュー管理やロギングなどの権限が必要となるプロセスにだけroot権限を付与するやり方。
POSIX Capabilityによる、単純にそのまま使うには強力すぎるroot権限の分離、seccompによるサンドボックス化などなど、root権限ひとつ使うにしてもそのまま使うことの方
Re:Linux だってそうでしょう (スコア:0)
そもそも今時権限分割もサンドボックス化もできないOSなんてWindowsくらいのものだろ。
PrivilegeというCapabilityみたいな仕組みだけは一応ある。Privilege自体は昔からあって、Windows Vista/Server 2008からサービスごとに必要なPrivilegeを指定できるようになった。
Windows Server 2019でDNSサーバーをインストールして、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSを見たら、RequiredPrivilegesでこの指定を行っている。なので、DNSのプロセスは、本来のSYSTEM (LocalSystem)アカウントよりは少ない特権で動いている。
とは言え、LocalSystemあったら、大抵のファイル・レジストリ・各種オブジェクトは読み書き自由。さらに、他の完全なLocalSystemアカウントなプロセスを探し、それを元にCreateProcessAsUserで完全なLocalSystemアカウントで動くプロセスを作れそうな気がする(ここ少し自信ない)。
やはり、せめてLocalSystemではなく他のユーザーアカウントで動かすようにしないとダメでしょと思う。実際、だんだんLocalSystemで動くサービスは減ってきているので、DNSが今でもLocalSystemで動いているのは意外だった。
あと、プロセスに対するサンドボックスの仕組みがいろいろあるのは、Unix系(Linuxを少しかじったことあるだけだけど)が優れているとこだと思う。