📜  如何阻止 IP 地址 - Python (1)

📅  最后修改于: 2023-12-03 15:09:17.955000             🧑  作者: Mango

如何阻止 IP 地址 - Python

在网络安全中,有时需要阻止某些 IP 地址的访问。Python 提供了一些库和方法来实现这个目的。

使用 iptables 阻止 IP 地址

在 Linux 中,可以使用 iptables 命令来控制网络连接。Python 的 subprocess 模块可以用来执行 shell 命令。所以,我们可以使用 Python 来执行 iptables 命令,以阻止指定的 IP 地址。

import subprocess

# 阻止指定 IP 地址访问服务器,例如:1.2.3.4
ip_address = '1.2.3.4'
command = f'sudo iptables -A INPUT -s {ip_address} -j DROP'
output = subprocess.check_output(command, shell=True)
print(f'IP 地址 {ip_address} 已被阻止')

上述代码中,使用了 sudo 命令来以管理员权限执行 iptables 命令。如果当前用户没有管理员权限,则会提示输入密码。也可以使用其他的执行命令方法。

使用 Flask 阻止 IP 地址

如果你在使用 Flask 框架开发 Web 应用,可以使用 Flask 内置的装饰器来实现阻止指定 IP 地址的访问。

from flask import Flask, request, abort

app = Flask(__name__)

blocked_ips = ['1.2.3.4', '5.6.7.8']

@app.before_request
def block_ip():
    ip_address = request.remote_addr
    if ip_address in blocked_ips:
        abort(403)

@app.route('/')
def index():
    return 'Hello, world!'

在上述代码中,使用了 before_request 装饰器来指定在每个请求之前要执行的函数。函数名称可以任意命名。在函数内,使用 request.remote_addr 获取客户端的 IP 地址,并判断是否在阻止名单中。如果是,则返回 403 错误码。

小结

本文介绍了使用 iptables 和 Flask 框架来阻止 IP 地址的方法。在实际应用中,还需要考虑如何管理 IP 地址名单,以及如何监控并及时解除阻止。