VPS脚本屏蔽IP访问怎么做?_三种方法实现IP屏蔽与防护
如何使用VPS脚本屏蔽IP访问?
| 方法类型 | 适用场景 | 工具/技术 | 操作复杂度 |
|---|---|---|---|
| iptables防火墙 | Linux系统基础防护 | iptables命令 | 中等 |
| fail2ban自动封禁 | 防止暴力破解 | fail2ban工具 | 较高 |
| 脚本自动化 | 批量处理IP | bash/python脚本 | 灵活 |
| 云服务商控制台 | 简单快速屏蔽 | 云平台防火墙 | 简单 |
什么VPS服务器好用?2024年主流VPS服务器推荐与选购指南
# VPS脚本屏蔽IP访问的完整指南
在VPS管理过程中,屏蔽恶意IP地址是保护服务器安全的重要措施之一。通过脚本实现IP屏蔽可以大大提高效率和自动化程度。
## 主要屏蔽方法对比
| 方法名称 | 实现原理 | 适用系统 | 持久性 |
|---|---|---|---|
| iptables命令 | 内核级防火墙规则 | Linux | 重启后失效 |
| fail2ban工具 | 监控日志自动封禁 | Linux | 配置持久化 |
| 云平台防火墙 | 服务商提供的防护 | 各云平台 | 永久生效 |
| 自定义脚本 | 灵活处理特定需求 | 跨平台 | 依赖脚本设计 |
## 详细操作步骤
### 方法一:使用iptables命令屏蔽IP
**操作说明**:通过Linux系统的iptables防火墙直接添加屏蔽规则
**使用工具提示**:需要root权限执行
```bash
# 屏蔽单个IP地址
iptables -A INPUT -s 192.168.1.100 -j DROP
# 屏蔽IP段
iptables -A INPUT -s 192.168.1.0/24 -j DROP
# 查看当前规则
iptables -L -n
# 保存规则(CentOS/RHEL)
service iptables save
# 保存规则(Ubuntu/Debian)
iptables-save > /etc/iptables/rules.v4
```
### 方法二:使用fail2ban自动封禁
**操作说明**:配置fail2ban监控系统日志,自动封禁恶意IP
**使用工具提示**:需要安装fail2ban软件包
```bash
# 安装fail2ban(Ubuntu/Debian)
apt-get update
apt-get install fail2ban
# 基本配置
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# 编辑配置文件
nano /etc/fail2ban/jail.local
```
配置文件示例:
```ini
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
```
### 方法三:编写自定义屏蔽脚本
**操作说明**:创建bash脚本实现批量IP屏蔽功能
**使用工具提示**:脚本需要执行权限
```bash
#!/bin/bash
# ip_block.sh - IP批量屏蔽脚本
BLOCK_LIST="/root/blocked_ips.txt"
LOG_FILE="/var/log/ip_block.log"
block_ip() {
local ip=$1
if iptables -C INPUT -s $ip -j DROP 2>/dev/null; then
echo "$(date): IP $ip 已在屏蔽列表中" >> $LOG_FILE
else
iptables -A INPUT -s $ip -j DROP
echo "$(date): 成功屏蔽IP $ip" >> $LOG_FILE
fi
}
# 从文件读取IP列表并屏蔽
if [ -f "$BLOCK_LIST" ]; then
while IFS= read -r ip; do
[[ -z "$ip" ]] && continue
block_ip "$ip"
done "$BACKUP_DIR/iptables_$timestamp.rules"
}
add_ip() {
local ip=$1
if ! grep -q "^$ip$" $IP_LIST 2>/dev/null; then
echo "$ip" >> $IP_LIST
iptables -A INPUT -s $ip -j DROP
echo "已添加IP $ip 到屏蔽列表"
else
echo "IP $ip 已在屏蔽列表中"
fi
}
remove_ip() {
local ip=$1
if grep -q "^$ip$" $IP_LIST 2>/dev/null; then
sed -i "/^$ip$/d" $IP_LIST
iptables -D INPUT -s $ip -j DROP 2>/dev/null
echo "已从屏蔽列表移除IP $ip"
else
echo "IP $ip 不在屏蔽列表中"
fi
}
list_ips() {
echo "当前屏蔽的IP列表:"
cat $IP_LIST 2>/dev/null || echo "列表为空"
}
case "$1" in
add)
add_ip "$2"
;;
remove)
remove_ip "$2"
;;
list)
list_ips
;;
backup)
backup_rules
;;
*)
echo "用法: $0 {add|remove|list|backup} [IP地址]"
;;
esac
```
通过上述方法和脚本,您可以有效地管理和屏蔽VPS上的恶意IP访问,提升服务器安全性。建议根据实际需求选择合适的方案,并定期审查和更新屏蔽规则。
发表评论