GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでポートを開く

Linuxでポートを開く方法を学ぶ前に、ネットワークポートとは何かを理解しましょう。 ポート 通信エンドポイントです。オペレーティングシステム内で、ポートはデータパケット固有のプロセスまたはネットワークサービスを許可します。

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

最初の1024 ポート(ポート 0-1023 )は既知のポート番号と呼ばれ、SSH(ポート22)、HTTPおよびHTTPS(ポート80および443)などの最も一般的に使用されるサービス用に予約されています。1024を超えるポート番号はエフェメラルと呼ばれます。ポート

エフェメラルポートの中で、ポート番号 1024-49151 登録済み/ユーザーと呼ばれます ポート。残りのポート、 49152-65535 ダイナミック/プライベートと呼ばれます ポート。

このチュートリアルでは、最も一般的なサービスが既知のポートを使用するため、Linuxでエフェメラルポートを開く方法を示します。

開いているすべてのポートを一覧表示する

Linuxでポートを開く前に、まず開いているすべてのポートのリストを確認し、そのリストから開くエフェメラルポートを選択しましょう。

netstatを使用できます TCP のポートを含む、開いているすべてのポートを一覧表示するコマンド UDP 、これはネットワーク層でのパケット送信の最も一般的なプロトコルです。

:ディストリビューションに netstatがない場合 、問題ありません。 ssを使用できます リスニングソケットを介して開いているポートを表示するコマンド。

netstat -lntu

これにより、すべてのリスニングが出力されます ソケット( -l <​​/ code> )ポート番号と一緒に ( -n )、 TCP ポート( -t )および UDP ポート( -u )出力にもリストされています。

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

ss -lntu

これにより、 netstatとほぼ同じオープンポートが提供されます。 、だから私たちは行ってもいいです!

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

閉じたポートを開いて、 TCPをリッスンさせましょう この例のための接続。

ポート4000以降 システムで使用されていないので、ポート 4000を開くことにしました 。そのポートがシステムで開いていない場合は、別の閉じたポートを自由に選択してください。 1023よりも大きいことを確認してください !

繰り返しになりますが、念のため、 netstat を使用して、ポート4000が使用されていないことを確認しましょう。 またはss コマンド。

netstat -na | grep :4000
ss -na | grep :4000

出力は空白のままにして、現在使用されていないことを確認する必要があります。これにより、ポートルールをsystemiptablesファイアウォールに手動で追加できます。 。

Ubuntuユーザーおよびufwファイアウォールベースのシステムの場合

Ubuntuにはufwというファイアウォールがあります 、古い iptables の代わりに、ポートと接続のこれらのルールを処理します ファイアウォール。 Ubuntuユーザーの場合は、 ufwを使用してポートを直接開くことができます

sudo ufw allow 4000

次のいくつかの手順をスキップして、新しく開いたポートを直接テストできます!

CentOSおよびfirewalldベースのシステムの場合

これらのタイプのシステムの場合、 firewalldがある場合 プライマリファイアウォールとして、 Firewall-cmdを使用することをお勧めします 古いiptablesの代わりに、ファイアウォールルールを更新します ファイアウォール。

firewall-cmd --add-port=4000/tcp

注:これにより、 firewalldがリセットされます 再起動時にデフォルトになるルール。この設定を永続的に変更する場合は、-permanentを追加します。 コマンドにフラグを立てます。

firewall-cmd --add-port=4000/tcp --permanent

次のいくつかの手順をスキップして、新しく開いたポートを直接テストできます!

その他のLinuxディストリビューションの場合

それでは、 iptables を使用して、この新しいポートをシステムのiptablesルールに追加しましょう。 コマンド。

このコマンドがまだインストールされていない場合は、パッケージマネージャーを使用して取得してください。

iptables -A INPUT -p tcp --dport 4000 -j ACCEPT

これにより、ファイアウォールが追加に設定されます (-A )プロトコル( -p )を介して入力パケットを受け入れる新しいルール ) TCP ここで、宛先ポート-dport )は 4000 、およびターゲットのジャンプを指定します ( -j ACCEPTとしてルール 。

ファイアウォールルールを更新するには、 iptablesを再起動します サービス。

sudo service iptables restart

または systemctlを使用する お持ちの場合。

sudo systemctl restart iptables

TCP接続用に新しく開いたポートをテストします

これで、新しい TCPを正常に開くことができました。 ポート(私の場合はポート4000)、テストしてみましょう。

まず、netcat( nc )を起動します ) ls の出力を送信しながら、ポート4000でリッスンします 接続されているクライアントに。したがって、クライアントがポート4000でTCP接続を開いた後、クライアントは lsの出力を受け取ります。 。

ls | nc -l -p 4000

これにより、netcatはポート4000でリッスンします。このセッションは今のところそのままにしておきます。

同じマシンで別のターミナルセッションを開きます。

TCPポートを開いたので、 telnetを使用します TCP接続を確認します。コマンドが存在しない場合は、パッケージマネージャーを使用してインストールしてください。

telnetのフォーマット :

telnet [hostname/IP address] [port number]

したがって、サーバーのIPとポート番号( 4000 )を入力します 私の場合、このコマンドを実行します。

telnet localhost 4000

これにより、 localhostでTCP接続を開こうとします ポート4000で。

これに似た出力が表示され、リスニングプログラム( nc との接続が確立されたことを示します。 。

ご覧のとおり、 lsの出力 ( while.sh 私の場合)もクライアントに送信され、TCP接続が成功したことを示しています!

ポートが実際に開いていることを示すために、 nmapを使用できます。 これを確認します。

nmap localhost -p 4000

確かに、私たちの港が開かれました! Linuxシステムで新しいポートを正常にオープンしました!

nmap 現在リッスンしているアプリケーションがある開いているポートのみを一覧表示します。 netcatなどのリスニングアプリケーションを使用していない場合、現在そのポートでリッスンしているアプリケーションがないため、ポート4000は閉じていると表示されます。同様に、telnetも、バインドするリスニングアプリケーションが必要なため、機能しません。これがncの理由です とても便利なツールです。これは、このような環境を簡単なコマンドでシミュレートします。

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

再起動するたびにルールを更新する必要があります

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

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

ufw ルールはない 再起動時にリセットするので、Ubuntuユーザーの場合は、この部分について心配する必要はありません!

これは、ブートプロセスに統合されており、カーネルが ufwを使用してファイアウォールルールを保存するためです。 、適切な構成ファイルを介して。

firewalldの場合

前述のように、 firewalld 同じ問題もありますが、-permanantを追加することで回避できます。 ポートを開くとき、または他のルールを設定するときに、最初のコマンドにフラグを立てます。

たとえば、TCPポート 4000を開くことができます 以下のコマンドを永続的に使用します:

firewall-cmd --zone=public --add-port=400/tcp --permanent

iptablesの場合

iptablesの場合 ファイアウォール。この不便さは避けられませんが、煩わしさを最小限に抑えることができます。

iptablesを保存できます /etc/iptables.confなどの構成ファイルへのルール 。

sudo iptables-save | sudo tee -a /etc/iptables.conf

次に、次のコマンドを使用して、再起動後に構成ファイルから取得できます。

sudo iptables-restore < /etc/iptables.conf

さて、 iptables ルールが更新され、ポートが再び開かれました!

結論

このチュートリアルでは、Linuxで新しいポートを開き、着信接続用にセットアップする方法を示しました。


Linux
  1. Linux でポートが開いているかどうかを効率的にテストしますか?

  2. Linuxでポートを開く方法

  3. Linux で開いているポートのリストを取得する

  1. Linux – Raspberrypiシリアルポート?

  2. 宛先ポートを定義する Linux SCP

  3. Linux ネットワーク ポートの枯渇

  1. Linuxでポートを閉じる方法は?

  2. Linuxでのポートの使用を確認する

  3. Linux の特定のポートで netstat を使用する方法