
数日前から私は自分のデータセキュリティについて非常に気にするようになり、次のようなことをnmap
自分に言い聞かせるようになりました。nmap 127.0.0.1
驚いたことに、localhost をリッスンするアクティブなサービスが多数あります。
$ nmap 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2013-05-05 00:19 WEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00025s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
私が唯一かもしれない使用方法はssh
(おそらく適切に構成されていないため、この問題は別の質問として残しておきます)。
私の知る限り、ipp
CUPS はプリンターを共有するためにプロトコルを使用しますが、プリンターを共有する必要はなく、サーバーからプリンターにアクセスするだけです。
netstat -lntup
これは、ローカルホスト アドレスを削除した、ルート ユーザーによる出力です。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 497/sshd
tcp 0 0 0.0.0.0:17500 0.0.0.0:* LISTEN 2217/dropbox
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 892/smbd
tcp 0 0 0.0.0.0:50022 0.0.0.0:* LISTEN 1021/rpc.statd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 892/smbd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 906/rpcbind
tcp6 0 0 :::22 :::* LISTEN 497/sshd
tcp6 0 0 :::42712 :::* LISTEN 1021/rpc.statd
tcp6 0 0 :::445 :::* LISTEN 892/smbd
tcp6 0 0 :::139 :::* LISTEN 892/smbd
tcp6 0 0 :::111 :::* LISTEN 906/rpcbind
udp 0 0 0.0.0.0:51566 0.0.0.0:* 615/avahi-daemon: r
udp 0 0 0.0.0.0:68 0.0.0.0:* 7362/dhclient
udp 0 0 0.0.0.0:111 0.0.0.0:* 906/rpcbind
udp 0 0 192.168.1.255:137 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.67:137 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.255:138 0.0.0.0:* 1782/nmbd
udp 0 0 192.168.1.67:138 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 1782/nmbd
udp 0 0 0.0.0.0:655 0.0.0.0:* 906/rpcbind
udp 0 0 0.0.0.0:17500 0.0.0.0:* 2217/dropbox
udp 0 0 0.0.0.0:5353 0.0.0.0:* 615/avahi-daemon: r
udp 0 0 0.0.0.0:34805 0.0.0.0:* 1021/rpc.statd
udp6 0 0 :::40192 :::* 1021/rpc.statd
udp6 0 0 :::111 :::* 906/rpcbind
udp6 0 0 :::655 :::* 906/rpcbind
udp6 0 0 :::5353 :::* 615/avahi-daemon: r
udp6 0 0 :::42629 :::* 615/avahi-daemon: r
実際に使用しているときだけ外部の世界をリッスンするようにこれらのサービスを構成するにはどうすればよいですか?
答え1
露出度を決定する
コマンドからの出力を見るとnetstat
、多くのサービスのように見えますが、実際には非常に短いリストです。
$ netstat -lntup | awk '{print $6 $7}'|sed 's/LISTEN//'| cut -d"/" -f2|sort|uniq|grep -v Foreign
avahi-daemon:r
dhclient
dropbox
nmbd
rpcbind
rpc.statd
smbd
sshd
地形を把握する
このリストを見ると、そのままにしておくべきサービスがいくつかあります。
- dhクライアント
- IP アドレスを取得する責任を負う DHCP サーバー デーモン。これは必須です。
- ドロップボックス
- Dropboxは必須です
削減を開始する - Sambaを無効にする
おそらく、すぐに Samba を無効にできます。これは、上記のサービスのうち 2 つを占めており、nmbd
ですsmbd
。ローカルホスト上であろうと、ネットワークに面した IP 上であろうと、ラップトップで Samba を実行する必要があるかどうかは疑問です。
実行中かどうかを確認するには、次のコマンドを使用しますstatus
。
$ status nmbd
nmbd start/running, process 19457
$ status smbd
smbd start/running, process 19423
upstart、/etc/rc.d、ビジネスで起こっているすべての変化により、サービスをオフにすることは混乱を招く可能性があり、どのサービスがどのテクノロジーの下にあるかを把握することが難しい場合があります。Samba の場合は、次のservice
コマンドを使用できます。
$ sudo service nmbd stop
nmbd stop/waiting
$ sudo service smbd stop
smbd stop/waiting
さあ出発です:
$ status nmbd
nmbd stop/waiting
$ status smbd
smbd stop/waiting
永久にオフにしておく
これらをオフにしておくために、私はこのツール を使ってsysv-rc-conf
コンソールからサービスを管理してきました。これは他のほとんどのツールよりもうまく機能します。実行するサービスと、どのランレベルで開始/停止するかを確認できます。
$ sudo apt-get install sysv-rc-conf
必要のない残りのものを無効にする
Samba がオフになったので、次の状態になります。
- avahiデーモン
- zeroconf(プラグアンドプレイ)の一部なので、オフにする
- rpcbind
- NFSに必要なのでオフにする
- rpc.statd
- NFSに必要なのでオフにする
残りの 3 つについても、Samba の場合と同じ操作を行ってオフにすることができます。
カップ?
ちなみに、CUPS をオフにするには、実際には必要ありませんが、サービスをオフにしてから起動を無効にするという同じ手順に従うことができます。印刷できるようにするには、システム上の各プリンターを個別に設定する必要があります。これは GUI から行うことができますsystem-config-printer
。
これらのサービスをオンデマンドで提供しますか?
これはまさにあなたの質問の核心ですが、これらのサービスを「スマート」にして、常にではなく、使用されているときに実行されるようにするための特効薬は実際には存在しません。
#1 - systemd と upstartその一部は、現在の分裂であるシステムそして成り上がり者2つの競合する技術の概要がよくわかるここ。
両方のテクノロジーは、機能セットを考慮すると、少し異なることをしようとしていると私は考えています。systemd はサーバー向けであるのに対し、upstart はデスクトップ向けであるように思われます。時間が経てば、これは自然に解決され、両方のサービスが安定し、機能が豊富になるでしょう。
最終的には、両方のサービスとも、管理するすべてのサービスに対して、オンデマンドの開始と停止を全面的に提供する予定です。たとえば、などの機能はStopWhenUnneeded=yes
すでに存在しているためsystemd
、これらの機能が具体化されるのは時間の問題です。
一部のサービスは、停止/開始をまったくサポートしていません。このようなサービスは、sshd
特に頻繁に使用される場合、オンデマンドで実行してもあまり意味がないようです。また、Apache などの一部のサービスは、自分自身で管理する独自のリスナーを多かれ少なかれ起動するためのメカニズムを内部に提供しています。そのため、オンデマンドがこれらのタイプのサービスによってどのように提供されるか、またはsystemd
これらupstart
のサービスとどのように統合されるかは不明です。
これは本当に必要ですか?
これはやりすぎだ、あるいは絶対に必要なものだけをインストールするミニマリストのアプローチを取るべきだという意見が双方から聞かれるでしょうが、それは本当に個人的な選択です。これらのサービスが存在し、それが何をするのかを理解することが本当に重要です。結局のところ、コンピューターはツールであり、Unix システムを使用するということは、カーテンの裏側を覗いてコンピューターがどのように動くかを理解するつもりがあるということをすでに表明していることになります。
この種の疑問こそが、コンピューターや Unix 全般を扱うときに目指すべき心構えだと私は思います。
参考文献
答え2
127.0.0.1 は「外の世界」ではなく、家の中を見回しています。
ファイアウォールの設定 (現在の Linux では iptables) を確認してください。ほとんどのファイアウォールは外部からアクセスできないはずです。
必要のないサービスを実行しないでください。不要なソフトウェアはすべてアンインストールしてください。
変化パスワードより強力に。システムの使用状況を確認し、興味のあるウェブサイトを無作為に追いかけないようにしてください。ブラウザのフィッシング対策、スクリプト対策などの設定を確認してください。SSH と su/sudo の使用を見直してください。
しかし、何よりも過度の妄想は逆効果です。テクノロジーの輝き。
答え3
個々のサービスを「シャットダウン」することもできますが、ファイアウォールをセットアップする方が簡単かもしれません。ほぼすべての一般的なディストリビューション (Ubuntu、Debian、Centos など) には、iptables のサポートが組み込まれています。
開始するためのシンプルなルール セット: (コマンド プロンプトでこれらを入力するだけです。永続的にするには、スタートアップ スクリプトに追加するか、使用しているディストリビューションをお知らせください。たとえば Centos の場合、system-config-firewall は iptables ルールを構成するための優れた UI です)
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
基本的には、SSH の受信を許可し、その他はすべてドロップします。
INPUT チェーンは次のようになります。
- 'ssh'のパケットがコンピュータに入ってきたら、許可する
- パケットが以前のルールのいずれにも一致しなかった場合は、単に破棄します。
その後、後日、「samba」(Windowsファイル共有)を許可したいとします。次のように実行します。
iptables -I INPUT-p tcp --dport 465 -j ACCEPT
は-I
リストの先頭にルールを追加し、 はリストの末尾に-A
ルールを追加します。したがって、チェーンは次のようになります。
- 'samba'のパケットがコンピュータに入ってきたら、許可する
- 'ssh'のパケットがコンピュータに入ってきたら、許可する
- パケットが以前のルールのいずれにも一致しなかった場合は、単に破棄します。
チェーンINPUT
は、システム宛てのパケットを指します。その他のチェーンは、OUTPUT
コンピュータからインターネットに送信されるパケットと、FORWARD
コンピュータを経由してルーティングされるパケット (つまり、空港のトランジット エリアのようにコンピュータを「通過する」パケット -INPUT
コンピュータに入っていないため通過しないもの) 用です。
最後に、127.0.0.1 を nmap するのはあまり役に立ちません。多くのサービスは 127.0.0.1 からしかアクセスできず、他のアドレスからはアクセスできません。nmap を実行できる別のマシンがない場合は、Gibson Research の Shields UP! ( を使用してください。https://www.grc.com/shieldsup) - 無料のオンライン nmap-lite です。または、IP/メール アドレスをコメントに追加していただければ、私が nmap します :)