私の大学Ubuntu 22.04コンピュータが他のコンピュータに提供する必要があるサービスが何であるかを見つけようとしています。私はこのマシンに定期的にssh
接続し、NFS
私の研究室の他のコンピュータ間のサーバーとして使用します。しかし、このマシンが提供する他の何も考えることはできません。それで、不要なサービスをオフにしてコンピュータを頑丈にしようとしました。残念ながら、私はLinuxサービスとポートについて知っているので、何が必要で何が不要なのかわかりません。
走れば$ netstat -A inet --listening
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:37725 0.0.0.0:* LISTEN
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:nfs 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8787 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:42757 0.0.0.0:* LISTEN
tcp 0 0 localhost:51144 0.0.0.0:* LISTEN
tcp 0 0 localhost:17603 0.0.0.0:* LISTEN
tcp 0 0 localhost:17600 0.0.0.0:* LISTEN
tcp 0 0 localhost:12546 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:56703 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:56607 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:db-lsp 0.0.0.0:* LISTEN
tcp 0 0 localhost:44911 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:58017 0.0.0.0:* LISTEN
tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN
tcp 0 0 localhost:32997 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:17500 0.0.0.0:*
udp 0 0 0.0.0.0:53815 0.0.0.0:*
udp 0 0 0.0.0.0:55047 0.0.0.0:*
udp 0 0 0.0.0.0:57529 0.0.0.0:*
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 0.0.0.0:sunrpc 0.0.0.0:*
udp 0 0 localhost:864 0.0.0.0:*
udp 0 0 0.0.0.0:33798 0.0.0.0:*
udp 0 0 0.0.0.0:35842 0.0.0.0:*
udp 0 0 0.0.0.0:36165 0.0.0.0:*
udp 0 0 0.0.0.0:mdns 0.0.0.0:*
udp 0 0 0.0.0.0:40000 0.0.0.0:*
udp 0 0 0.0.0.0:43526 0.0.0.0:*
最近、DNS攻撃を増幅するために使用されたため、sunrpcサービスは一時的に中断されました。私の理解は、NFSの一部としてサービスが必要であるということです(しかし、私の理解は簡単に間違っているかもしれません)。
必要に応じて他のコンピュータにどのようなサービスを提供する必要がありますか?
私が提供する必要のあるもののうち、
ssh
接続のためのFail2banに加えて、私のコンピュータを強化するためにどのような手順を実行する必要がありますか?
これは、過度に広範囲または無邪気な質問かもしれません。それでは洞察力を高く評価いたします。
答え1
ファイアウォールとの最初のステップは、どの物理サービスがどのポートでリッスンしているかを見つけることです。それからそれに基づいて決定を下します。netstat -p
提供する、ポート番号ではありません。
たとえば、サーバーでDropbox Syncを実行する必要がありますか?ファイアウォールルールは単に「ポート8787を許可」ではなく「8787を許可」にする必要があります。なぜなら私たちはこのポートにバインドされたXYZサービスをホストしています。」
localhost
または、にバインドされているすべてのソケットを無視できます127.0.0.1
。とにかく外部からアクセスできないため、内部プロセス通信に使用できます。
(また、出力をinet
次に制限しないでください。〜するもしそうなら、IPv6を忘れてください。 IPv4ルールが厳密にロックされていると思っても、それを開いたままにします。 )
提供する必要があるものの中で、SSH接続用のFail2banに加えてシステムを強化するためにどのような手順を実行する必要がありますか?
少なくとも、各サービスが「世界に開放」であるか、「大学に開放」であるか、「研究室に開放」であるかを決定し、それに応じてファイアウォールルールを設定します。
たとえば、SSHが最初にインターネット接続を許可しない場合、SSHのfall2banの必要性が減ります。 (自宅で管理していても、大学でこの目的のためにVPNサービスを提供できます。)
同様に、UIDベースの認証を使用するNFSは、できるだけ少ない数の「信頼できる」システムにオープンする必要があります。確かに公開されていません。一方、Kerberos認証を使用するNFSはほぼインターネット接続が可能です(おそらく賢明ではないかもしれませんが、プロトコルは十分に強力です)。
一部のサービスを独自のマシン(コンテナ、仮想マシン、または物理)に分割するのが良いことがよくあります。
最近DNS攻撃の増幅に慣れて、sunrpcサービスを一時的に中断しました。私が理解しているのは、このサービスがNFSの一部として必要であるということです(しかし、私が理解したことは簡単にエラーが発生しやすい)ことです。
「sunrpc」は、クライアントが動的ポート番号を見つけるために使用するportmapperサービスです。以前のNFSv3バージョンは、いくつかのプロトコル(NFS自体、MOUNTプロトコル、STATDプロトコル)で構成されていたためです。これは、WindowsのMS-RPCポート135に似ています。
PortmapperはNFSv2 / NFSv3にのみ必要です。 NFSv4を排他的に使用する場合は、単一のTCP(UDPではない)ポート2049のみが必要です。
NFSv3が必要な場合は、「動的」部分を覚えておいてください。ファイアウォールを使用している場合は、再起動するたびに変更されないように、関連する各RPCサービスに対していくつかの静的ポート番号を手動で選択する必要があります。最近では、すべての/etc/nfs.conf
汎用ファイルを介して設定することができます。