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

IptablesブロックIP

今日は、iptablesを使用してIPアドレスをブロックする方法を紹介します。次の記事では、ファイアウォールスクリプトにブラックリストを追加します。これにより、 Debian内の不正なIPアドレスまたはIPの範囲をブロックできます。 またはUbuntu ベースの仮想サーバー。 Iptablesは、システム管理者がLinuxカーネルファイアウォール(さまざまなNetfilterモジュールとして実装)によって提供されるテーブルを構成できるようにするユーザースペースアプリケーションプログラムです。 )およびそれが格納するチェーンとルール。 iptablesを使用してIPアドレスをブロックするのは非常に簡単な作業であり、5分以内で完了します。

先に進む前に、Linuxvpsでファイアウォールを保護/設計する方法に関するチュートリアルを必ずお読みください。これには以下が含まれます:

  • 古いファイアウォールルールのフラッシュ
  • サービスポートの決定
  • デフォルトポリシーの設定
  • ファイアウォールルールの設定
  • ファイアウォールルールの保存

iptablesを使用してIPをブロックする

一部の不正なIPアドレスまたはIPの範囲をブロックするには、次のiptablesを使用できます。 ルール:

## iptables -I INPUT -s 1.2.3.4 -j DROP
## iptables -I INPUT -s 1.2.0.0/16 -j DROP

iptablesでのブラックリストの作成

読みやすさとメンテナンスを向上させるために、すべての不正使用IPを1つの特定のファイル(たとえば、/etc/blacklist.ips)に含めることをお勧めします。 。このようにして、このファイルにIPアドレスまたはサブネットを追加できます(回線ごとに1つのIPまたはサブネット )そしてfwall-rulesを使用します このファイルにリストされているものをすべてブロックするには、以下のスクリプトを使用してください。

したがって、/usr/local/bin/fwall-rulesを作成または編集します 次のようにします:

#!/bin/bash
#
# iptables firewall script
# https://www.rosehosting.com
#

IPTABLES=/sbin/iptables
BLACKLIST=/etc/blacklist.ips

echo " * flushing old rules"
${IPTABLES} --flush
${IPTABLES} --delete-chain
${IPTABLES} --table nat --flush
${IPTABLES} --table nat --delete-chain

echo " * setting default policies"
${IPTABLES} -P INPUT DROP
${IPTABLES} -P FORWARD DROP
${IPTABLES} -P OUTPUT ACCEPT

echo " * allowing loopback devices"
${IPTABLES} -A INPUT -i lo -j ACCEPT
${IPTABLES} -A OUTPUT -o lo -j ACCEPT

${IPTABLES} -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
${IPTABLES} -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

## BLOCK ABUSING IPs HERE ##
#echo " * BLACKLIST"
#${IPTABLES} -A INPUT -s _ABUSIVE_IP_ -j DROP
#${IPTABLES} -A INPUT -s _ABUSIVE_IP2_ -j DROP

echo " * allowing ssh on port 5622"
${IPTABLES} -A INPUT -p tcp --dport 5622  -m state --state NEW -j ACCEPT

echo " * allowing ftp on port 21"
${IPTABLES} -A INPUT -p tcp --dport 21  -m state --state NEW -j ACCEPT

echo " * allowing dns on port 53 udp"
${IPTABLES} -A INPUT -p udp -m udp --dport 53 -j ACCEPT

echo " * allowing dns on port 53 tcp"
${IPTABLES} -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT

echo " * allowing http on port 80"
${IPTABLES} -A INPUT -p tcp --dport 80  -m state --state NEW -j ACCEPT

echo " * allowing https on port 443"
${IPTABLES} -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT

echo " * allowing smtp on port 25"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT

echo " * allowing submission on port 587"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT

echo " * allowing imaps on port 993"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT

echo " * allowing pop3s on port 995"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT

echo " * allowing imap on port 143"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 143 -j ACCEPT

echo " * allowing pop3 on port 110"
${IPTABLES} -A INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT

echo " * allowing ping responses"
${IPTABLES} -A INPUT -p ICMP --icmp-type 8 -j ACCEPT

# DROP everything else and Log it
${IPTABLES} -A INPUT -j LOG
${IPTABLES} -A INPUT -j DROP

#
# Block abusing IPs 
# from ${BLACKLIST}
#
if [[ -f "${BLACKLIST}" ]] && [[ -s "${BLACKLIST}" ]]; then
    echo " * BLOCKING ABUSIVE IPs"
    while read IP; do
        ${IPTABLES} -I INPUT -s "${IP}" -j DROP
    done < <(cat "${BLACKLIST}")
fi

#
# Save settings
#
echo " * SAVING RULES"

if [[ -d /etc/network/if-pre-up.d ]]; then
    if [[ ! -f /etc/network/if-pre-up.d/iptables ]]; then
        echo -e "#!/bin/bash" > /etc/network/if-pre-up.d/iptables
        echo -e "test -e /etc/iptables.rules && iptables-restore -c /etc/iptables.rules" >> /etc/network/if-pre-up.d/iptables
        chmod +x /etc/network/if-pre-up.d/iptables
    fi
fi

iptables-save > /etc/fwall.rules
iptables-restore -c /etc/fwall.rules

スクリプトに「x」ビットを追加して、スクリプトが実行可能であることを確認します。

## chmod +x /usr/local/bin/fwall-rules

ルールの適用

ファイアウォールルールを適用して悪用者をブロックするには、fwall-rulesを実行するだけです。 スクリプトとそれだけです。

## fwall-rules
 * flushing old rules
 * setting default policies
 * allowing loopback devices
 * allowing ssh on port 5622
 * allowing ftp on port 21
 * allowing dns on port 53 udp
 * allowing dns on port 53 tcp
 * allowing http on port 80
 * allowing https on port 443
 * allowing smtp on port 25
 * allowing submission on port 587
 * allowing imaps on port 993
 * allowing pop3s on port 995
 * allowing imap on port 143
 * allowing pop3 on port 110
 * allowing ping responses
 * BLOCKING ABUSIVE IPs
 * SAVING RULES

もちろん、Linux VPSホスティングサービスの1つを使用している場合は、iptablesを使用してIPアドレスをブロックする必要はありません。その場合は、専門のLinux管理者にIPアドレスをブロックするように依頼するだけです。 24時間年中無休でご利用いただけます。リクエストはすぐに処理されます。

PS。 iptablesを使用してIPアドレスをブロックする方法に関するこの投稿が気に入った場合は、左側のボタンを使用してソーシャルネットワーク上の友達と共有するか、下に返信を残してください。ありがとうございます。


Panels
  1. LinuxサーバーでIPアドレスをブロックする方法

  2. GeoIPとiptablesがある国からのIP範囲をブロックする

  3. Fail2Ban Howto:Fail2ban と IPTables を使用して IP アドレスをブロックする

  1. CentOS / RHEL :iptables を使用して受信ポートと送信ポートをブロックする方法

  2. Linux OS サービス「iptables」

  3. 攻撃から防御するための安全な iptables 設定のヒント。 (クライアント側!)

  1. Linuxファイアウォールを使用してローカルのなりすましアドレスをブロックする方法

  2. ネットワーク接続が拒否されるのはなぜですか?

  3. Linux IPTables を使用して、トレントまたは P2P プロトコルをブロックする方法は?