同じウェブホスティング会社内の新しいマシンに最近移行されたCentos6VPSがあります。 WHM/cPanelを実行しており、csf/lfdがインストールされています。 csfは、主にVanilla構成でセットアップされます。私はiptablesの専門家ではありません、csfは以前に私を失望させませんでした。ポートがTCP_INリストにない場合は、ファイアウォールでiptablesによってブロックする必要があります。
私の問題は、外部ホストからポート3306にtelnetで接続できることですが、csfのルールにより、iptablesは3306をブロックする必要があると思います。この開いているポートが原因で、セキュリティチェックに失敗しています。 (この出力は、無実の人を保護するために難読化されています。www.ourhost.comはファイアウォールの問題があるホストです)
[root@nickfenwick log]# telnet www.ourhost.com 3306
Trying 158.255.45.107...
Connected to www.ourhost.com.
Escape character is '^]'.
HHost 'nickfenwick.com' is not allowed to connect to this MySQL serverConnection closed by foreign Host.
そのため、接続が確立され、MySQLはその構成のために接続を拒否します。 MySQLに到達する前に、ファイアウォールレベルでネットワーク接続を拒否する必要があります。
WHMのcsfWeb UIを使用すると、「ファイアウォール構成」にかなり賢明なTCP_IN行が含まれていることがわかります。
TCP_IN: 20,21,22,25,53,80,110,143,222,443,465,587,993,995,2077,2078,2082,2083,2086,2087,2095,2096,8080
(今のところそれを少しトリミングできることを無視しましょう。私の懸念は、3306がnotそのリストにリストされていることです)
Csfを再起動すると、iptablesルールを設定するときに、通常の大量の出力がログに記録されます。たとえば、すべてのトラフィックをブロックし、22でSSHなどの特定のポートを許可するように見えます。
[cut]
DROP all opt -- in * out * 0.0.0.0/0 -> 0.0.0.0/0
[cut]
ACCEPT tcp opt -- in !lo out * 0.0.0.0/0 -> 0.0.0.0/0 state NEW tcp dpt:22
[cut]
Iptablesが実行されていることがわかります。service iptables status
はファイアウォールルールの長いリストを返します。
これがChain INPUT
のservice iptables status
セクションです。ファイアウォールがどのように構成されているかを示すには、これで十分です。
Table: filter
Chain INPUT (policy DROP)
num target prot opt source destination
1 acctboth all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT tcp -- 217.112.88.10 0.0.0.0/0 tcp dpt:53
3 ACCEPT udp -- 217.112.88.10 0.0.0.0/0 udp dpt:53
4 ACCEPT tcp -- 217.112.88.10 0.0.0.0/0 tcp spt:53
5 ACCEPT udp -- 217.112.88.10 0.0.0.0/0 udp spt:53
6 ACCEPT tcp -- 8.8.4.4 0.0.0.0/0 tcp dpt:53
7 ACCEPT udp -- 8.8.4.4 0.0.0.0/0 udp dpt:53
8 ACCEPT tcp -- 8.8.4.4 0.0.0.0/0 tcp spt:53
9 ACCEPT udp -- 8.8.4.4 0.0.0.0/0 udp spt:53
10 ACCEPT tcp -- 8.8.8.8 0.0.0.0/0 tcp dpt:53
11 ACCEPT udp -- 8.8.8.8 0.0.0.0/0 udp dpt:53
12 ACCEPT tcp -- 8.8.8.8 0.0.0.0/0 tcp spt:53
13 ACCEPT udp -- 8.8.8.8 0.0.0.0/0 udp spt:53
14 LOCALINPUT all -- 0.0.0.0/0 0.0.0.0/0
15 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
16 INVALID tcp -- 0.0.0.0/0 0.0.0.0/0
17 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
18 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:20
19 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21
20 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
21 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53
23 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
24 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:110
25 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:143
26 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:222
27 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
28 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:465
29 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:587
30 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:993
31 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:995
32 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2077
33 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2078
34 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2082
35 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2083
36 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2086
37 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2087
38 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2095
39 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2096
40 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080
41 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:20
42 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:21
43 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:53
44 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:222
45 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:8080
46 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
47 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 0
48 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 11
49 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 3
50 LOGDROPIN all -- 0.0.0.0/0 0.0.0.0/0
次に確認することは何ですか?
LOGDROPINまたはacctbothが何を定義しているのかわかりませんが、これが私がそれをどのように行うかです。
リモート接続を受け入れるためにMySQLが必要ない場合は、最初にMySQL構成を変更して、0.0.0.0またはIPアドレスではなく127.0.0.1にバインドします。これにより、ローカルホストへのすべてのmysqlアクセスが制限され、新しいMySQLインストールのデフォルトであると思います。 (これはIPTABLESの質問には答えませんが、とにかく行う必要があります。)
IPTABLESの問題を追跡するには、どのルールがトラバースされているかを正確に示すIPTABLESTRACE機能を使用することをお勧めします。気の利いた パケットフロー図 があります。これから、rawテーブルにOUTPUTチェーンとPREROUTINGチェーンが組み込まれていることがわかります。これは、2.6.23を超えるカーネルを使用しているか、適切なオプションを使用して独自のカーネルをコンパイルしていることも前提としています。
次のようなものを追加します。
iptables -t raw -A OUTPUT -p tcp --dport 3306 -j TRACE
iptables -t raw -A PREROUTING -p --dport 3306 tcp -j TRACE
カーネルにmysql接続をトレースさせる。パケットが通過した特定のルールをログで確認できるはずです。このボックスにすでにこのポートを通過するトラフィックがある場合は、上記のルールでIPアドレスをフィルタリングして、ノイズを少なくすることもできます。
また、ここに tracing iptables に関する優れた投稿があります。
お役に立てれば!