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