Linuxでポートを開く方法

0 株式
0
0
0
0

導入

ポートとは通信のエンドポイントです。オペレーティングシステムでは、特定のプロセスまたはネットワークサービスのデータパケットに対してポートが開かれたり閉じられたりします。.

通常、ポートは割り当てられた特定のネットワークサービスを識別します。サービスを手動で別のポートを使用するように設定することで変更できますが、通常はデフォルト設定を使用できます。.

最初の1024個のポート(ポート番号0~1023)はウェルノウンポートと呼ばれ、最も一般的なサービスのために予約されています。これにはSSH(ポート22)、HTTP(ポート80)、HTTPS(ポート443)が含まれます。.

1024 を超えるポート番号は、エフェメラル ポートと呼ばれます。.

  • ポート 1024 から 49151 は登録ポート/ユーザー ポートと呼ばれます。.
  • ポート 49152 から 65535 は、ダイナミック ポート/プライベート ポートと呼ばれます。.

このチュートリアルでは、ほとんどの一般的なサービスがよく知られているポートを使用するため、Linux で一時ポートを開きます。.

前提条件
  • 端末の使い方に慣れている

開いているすべてのポートのリスト

Linux でポートを開く前に、開いているすべてのポートのリストを確認し、そのリストにない一時ポートを選択して開く必要があります。.

netstat コマンドを使用して、ネットワーク層でのパケット転送に最もよく使用されるプロトコルである TCP および UDP を含む、開いているポートをすべて一覧表示します。.

netstat -lntu

次のように印刷されます:

  • すべてのリスニングソケット (-l)
  • ポート番号 (-n)
  • TCPポート (-t)
  • UDPポート (-u)
Output
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 ::1:5432 :::* LISTEN
tcp6 0 0 ::1:6379 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN

ss コマンドを使用して、開いているポートを持つリスニング ソケットを一覧表示し、一貫した出力が得られることを確認します。

ss -lntu

次のように印刷されます:

Output
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:6379 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::1]:5432 0.0.0.0:*
tcp LISTEN 0 128 [::1]:6379 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 0.0.0.0:*

これにより、netstat とほぼ同じオープンポートが提供されます。.

Linuxでポートを開いてTCP接続を許可する

次に、閉じたポートを開き、TCP 接続をリッスンするようにします。.

このチュートリアルでは、ポート4000を開きます。ただし、システムでこのポートが開いていない場合は、別の閉じたポートを選択しても構いません。ただし、1023より大きいポート番号を指定してください。.

netstat コマンドを使用して、ポート 4000 が使用されていないことを確認します。

netstat -na | grep :4000

または ss コマンド:

ss -na | grep :4000

出力は空白のままにしておく必要があるため、現在使用されていないことを確認して、iptables システム ファイアウォールにポート ルールを手動で追加できるようにします。.

Ubuntuユーザーとufwベースのシステム向け

手間のかからないファイアウォールを実現するコマンドライン クライアントである ufw を使用します。.

コマンドは次のようになります:

sudo ufw allow 4000
CentOSおよびファイアウォールベースのシステムの場合

firewalld デーモンのコマンドライン クライアントである firewall-cmd を使用します。.

コマンドは次のようになります:

firewall-cmd --add-port=4000/tcp
他のLinuxディストリビューションの場合

iptables を使用して、システムの IPv4 パケット フィルタリング ルールを変更します。.

iptables -A INPUT -p tcp --dport 4000 -j ACCEPT
新しく開いたポートをTCP接続用にテストする

新しい TCP ポートを正常に開いたので、次はそれをテストします。.

まず、netcat (nc) を起動し、ポート (-p) 4000 で listen (-l) しながら、接続された各クライアントに ls の出力を送信します。

ls | nc -l -p 4000

クライアントがポート4000でTCP接続を開くと、lsの出力が返されます。このセッションは一旦そのままにしておいてください。.

同じデバイスで別のターミナルセッションを開きます。.

TCPポートを開いたので、telnetを使ってTCP接続を確認してください。コマンドが見つからない場合は、パッケージマネージャーを使ってインストールしてください。.

サーバーの IP とポート番号 (この例では 4000) を入力し、次のコマンドを実行します。

telnet localhost 4000

このコマンドは、ポート 4000 の localhost で TCP 接続を開こうとします。.

次のような出力が表示され、リスニング プログラム (nc) との接続が確立されたことが示されます。

Output
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
while.sh

ls (この例では while.sh) の出力もクライアントに送信され、TCP 接続が成功したことが示されます。.

nmap を使用してポートが開いているかどうかを確認します (-p):

nmap localhost -p 4000

このコマンドは開いているポートをチェックします。

Output
Starting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
4000/tcp open remoteanything
Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

ポートが開かれました。Linuxシステムで新しいポートが正常に開かれました。.

ただし、システムを再起動するたびに変更はリセットされるため、これは一時的なものになります。.

持続可能なルール

この記事で紹介した方法は、システムがシャットダウンまたは再起動されるまでの間、ファイアウォールルールを一時的に更新するだけです。そのため、再起動後に同じポートを再度開くには、同じ手順を繰り返す必要があります。.

ufwファイアウォールの場合

ufwルールは再起動してもリセットされません。これは、ufwがブートプロセスに統合されており、カーネルが適切な設定ファイルを適用することでufwを使用したファイアウォールルールを保存するためです。.

ファイアウォールの場合

ポートを永続的なファイアウォール構成に追加し、変更をすぐに適用する場合は、--permanent および --reload フラグを使用できます。

sudo firewall-cmd --permanent --add-port=4000/tcp 
sudo firewall-cmd --reload
iptablesの場合

設定ルールを保存し、iptables-persistent コマンドを使用する必要があります。.

結果

このチュートリアルでは、Linuxで新しいポートを開き、着信接続用に設定する方法を学習しました。また、netstat、ss、telnet、nc、nmapも使用しました。.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あなたも気に入るかもしれない