2017-03-16 3 views
-1

私のLinuxサーバーでは、IPtablesを使用して特定のポートに24時間アクセスするIPを禁止したいと考えています。このために、私は次のiptablesのルールを使用します。ログでiptablesはx時間のIPをブロックしていませんか?

# Check if IP is on banlist, if yes then drop 
-A INPUT -m state --state NEW -j bancheck 
-A bancheck -m recent --name blacklist --rcheck --reap --seconds 86400  -j LOG --log-prefix "IPT blacklist_ban: " 
-A bancheck -m recent --name blacklist --rcheck --reap --seconds 86400  -j DROP 

# PUT IPs on banlist 
-A banlist -m recent --set --name blacklist -j LOG --log-prefix "IPT add_IP_to_blacklist: " 
-A banlist -j DROP 

# Ban access to these ports 
-A INPUT -p tcp -m multiport --dports 23,25,445,1433,2323,3389,4899,5900 -j LOG --log-prefix "IPT syn_naughty_ports: " 
-A INPUT -p tcp -m multiport --dports 23,25,445,1433,2323,3389,4899,5900 -j banlist 

を、私はこれが機能するかどうかを確認することができます

Mar 13 02:12:23 kernel: [39534099.648488] IPT syn_naughty_ports: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=29768 DF PROTO=TCP SPT=65315 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 02:12:23 kernel: [39534099.648519] IPT add_IP_to_blacklist: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=...4 LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=29768 DF PROTO=TCP SPT=65315 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 02:12:26 kernel: [39534102.664136] IPT blacklist_ban: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=4724 DF PROTO=TCP SPT=65315 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 

しかし、その後のログは、そのわずか2時間後に表示され、同じIPは私のシステムに再びアクセスします。チェーン "bancheck"を通して最初からブロックされているのではなく、IPはポートにアクセスすることができます。その結果、再びbanlistに置かれます(どちらの場合も宛先ポートは同じポート25でした)。私は右のiptablesのルールを理解していれば

Mar 13 04:35:59 kernel: [39542718.875859] IPT syn_naughty_ports: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=4533 DF PROTO=TCP SPT=57719 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 04:35:59 kernel: [39542718.875890] IPT add_IP_to_blacklist: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=4533 DF PROTO=TCP SPT=57719 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 04:36:02 kernel: [39542721.880524] IPT blacklist_ban: IN=eth0 OUT= MAC=... DST=... LEN=52 TOS=0x00 PREC=0x00 TTL=113 ID=12505 DF PROTO=TCP SPT=57719 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 
Mar 13 04:36:08 kernel: [39542727.882973] IPT blacklist_ban: IN=eth0 OUT= MAC=... SRC=218.189.140.2 DST=... LEN=48 TOS=0x00 PREC=0x00 TTL=113 ID=29092 DF PROTO=TCP SPT=57719 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 

はしかし、それは24時間以内である限り、最初の数行の中にブロックされた、と降りることができないすべきことであるが、はるかにiptablesのルールセットでそこでは再びポートルールに違反することが判明し、再び「禁止リスト」を置く。

私は間違ったことをしていますか、ルールの仕組みを誤解していますか?

+0

ルールが実際に動作しているかどうか試しましたか?リモートサーバーや場所からサーバーにアクセスしようとしている自分自身をブロックしてみてください。ブロックがアクティブな間にあなたはまだサーバーにアクセスできます。 –

+0

はい、私はそれを行い、ブロックされ、上記のようにIPがログに表示されます。 – anz21

答えて

0

私のサーバーからのsshのための一例をワーキング

iptables -X black 
iptables -N black 
iptables -A black -m recent --set --name blacklist -j DROP 

iptables -X ssh 
iptables -N ssh 
iptables -I ssh 1 -m recent --update --name blacklist --reap --seconds 86400 -j DROP 
iptables -A INPUT -p TCP --dport ssh -m state --state NEW -j ssh 

iptablesの

あなたの設定とこれを比較し-Nとiptablesのチェーンを作成し、任意の顕著な違いがあるかどうかを確認することを忘れないでください。

よりエレガントな解決策は、iptablesのと合わせipset使用することであろう。

タイムアウトをすべてのセットタイプのセットを作成し、エントリを追加するときに、オプションのタイムアウトパラメータをサポートします。 createコマンドのtimeoutパラメータの値は、新しいエントリのデフォルトのタイムアウト値(秒単位)を意味します。タイムアウトをサポートするセットが作成された場合、同じtimeoutオプションを使用して、エントリを追加するときにデフォルト以外のタイムアウト値を指定することができます。ゼロタイムアウト値は、エントリが永久にセットに追加されたことを意味します。すでに追加された要素のタイムアウト値は、-existオプションを使用して要素を読み取ることによって変更できます。 例:

ipset create test hash:ip timeout 300 
ipset add test 192.168.0.1 timeout 60 
ipset -exist add test 192.168.0.1 timeout 600 
+0

ありがとうございますこれを試してみてください。 – anz21

+0

あなたの投稿には、IPがチェーン "黒"に送信された場所と方法は表示されません。ポートSSHにアクセスしようとするIPがチェーン「ssh」に送信されていることを正しく理解していますか?禁止されていますか?禁止のためのそれ以上の基準は明らかでないか?だから、あなたのポートSSHにアクセスしようとするIPは24時間禁止されますか? – anz21

関連する問題