web-dev-qa-db-ja.com

サーバーをlocalhostからの接続のみにどのように制限しますか?

時々、あなたはあなたのサーバー上でのみサーバーとクライアントの関係を持ちたい、すなわち。 localhostのみ。

しかし、ポートを開いて聞くと、インターネットでも利用できるようです。したがって、root権限を持つサーバーへのパスワードを回避すると、サーバーはインターネット上のすべてのユーザーに対して開かれているように見えます。

サーバーをlocalhostからの接続のみにどのように制限するか、つまり、マシンがインターネットにアクセスできる場合でも内部でのみ通信できる内部ネットワークを持っていますか?

2
Zurechtweiser

アプリケーションは、アドレス127.0.0.1(localhost)でのみリッスンするように構成できます。これにより、外部から開いているとは見なされません。

たとえば、nginxがポート80ですべてのIPをリッスンし、Apacheがポート8080で127.0.0.1をリッスンしている場合:

# netstat  -ltnp (Redacted a little to make it clearer)
Local Address           State       Program name
0.0.0.0:80              LISTEN      nginx: master
127.0.0.1:8080          LISTEN      Apache

これらの2つのポート(nmapなど)の外側から確認すると、80が開いているだけで、8080が閉じていることがわかります。

# nmap $server -p 80,8080

PORT     STATE  SERVICE
80/tcp   open   http
8080/tcp closed http-proxy

8080に接続しようとすると、次のようになります。

# telnet $server 8080
Trying $ip...
telnet: Unable to connect to remote Host: Connection refused

しかし、80は機能します。

# telnet $server 80
Trying $ip...
Connected to .
Escape character is '^]'.

それが役に立てば幸い !

3
Paul