GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOSのIptablesでHttpポート(80)を開く方法

Iptablesファイアウォール

私は最近、nginxとphpを使用してcentosにWebサーバーをセットアップしていました。 nginxのインストールは問題ありませんでしたが、システムのhttpポートに外部からアクセスできませんでした。

これは、centOSがデフォルトでいくつかのiptablesファイアウォールルールを有効にしているためです。 sshポート(22)のみがアクセス可能であり、リモートシェルが機能していました。したがって、nginxなどのWebサーバーが機能するには、ポート80を開く必要があります。

Iptables は、さまざまな種類のパケットレベルのルールセットに基づいてネットワークトラフィックを受け入れるか拒否するように構成できるLinux上のファイアウォールです。したがって、ネットワークポートでの接続を有効にするようにこのファイアウォールを構成する必要があります。

Iptablesルールを確認する

ポート80を開くようにiptablesを設定する方法は2つあります。1つはiptablesコマンドを使用する方法で、もう1つは設定ファイルを作成する方法です。まず、有効な既存のiptablesルールを確認します。コマンドは非常に簡単です。これが出力例です。

[[email protected] ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[[email protected] ~]#

出力に見られるように、最後にINPUTチェーンにREJECT行があり、すべてを拒否します。ただし、前の行ではssh接続を受け入れることができるため、sshは機能しています。 Lオプションと一緒にvオプションとnオプションを使用すると、もう少し詳細で数値のリストを見ることができます

[[email protected] ~]# iptables --line -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      273 22516 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5      271 36456 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 172 packets, 24494 bytes)
num   pkts bytes target     prot opt in     out     source               destination
[[email protected] ~]#

Iptablesでポート80を開きます

http接続を受け入れるには、行番号5にルールを追加し、下のREJECT行をプッシュする必要があります。これを行うためのコマンドは次のとおりです。

# iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

上記のコマンドは、ファイアウォールがポート80で着信接続を受け入れる必要があることを示すルールを5行目に追加します。iptablesルールをもう一度確認してください。

[[email protected] ~]# iptables --line -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      291 23868 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5        0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 state NEW,ESTABLISHED
6      286 38524 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 4 packets, 608 bytes)
num   pkts bytes target     prot opt in     out     source               destination
[[email protected] ~]#

これで、5行目に新しいtcpポート80ルールが追加され、外部ネットワークからhttpポートにアクセスできるようになりました。

iptablesルールを保存する

新しいルールでポート80が開いていますが、この変更は一時的なものであり、サーバーを再起動するとiptablesは以前のルールに戻ります。

永続的にするには、iptablessaveコマンドを発行します。

[[email protected] ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

新しいルールはファイル/etc / sysconfig / iptablesに保存されます 。

ファイルの外観は次のとおりです。

# Generated by iptables-save v1.4.7 on Fri Oct 25 10:33:46 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [39:6956]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Oct 25 10:33:46 2013

現在、変更は永続的です。

または、iptables構成ファイルを直接編集してiptablesを再起動すると、同じ変更が有効になります。

[[email protected] ~]# service iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]
[[email protected] ~]#

結論

これは、iptablesで特定のポートを開いてアクセス可能にする方法の簡単な例でした。 iptablesの詳細については、ターミナルで「man iptables」コマンドを実行してマニュアルページを確認するか、ここからオンラインで確認してください。

https://linux.die.net/man/8/iptables
Cent OS
  1. LinuxサーバーでIptablesのポートを開く方法

  2. LinuxサーバーでIptablesのポートを開く方法

  3. CentOSでポートを開くためのガイド

  1. UbuntuとCentOSでiptablesを使用してファイアウォールを設定する方法

  2. CentOS / RHEL 7 :firewall-cmd を使用してファイアウォールでポートを開く方法は?

  3. CentOS / RHEL 7 でポートを開く方法

  1. CentOSでポートを開くためのガイド

  2. CentOS / RHEL でポートを開くように IPtables を構成する方法

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