使用海外虚拟专用服务器(VPS)可以有效防止国内IP地址进行SSH登录 - 汇站网

使用海外虚拟专用服务器(VPS)可以有效防止国内IP地址进行SSH登录

2023-12-26 0 393

正文:

我需要一个海外的 vps,只想使用代理进行 ssh 登录。在论坛上找到了一位大佬分享的代码,我根据自己的需求进行了修改,并希望能够将其设置为定时任务,定时执行。

#!/bin/bash
# Block traffic from a specific country
# written by huizhanii.com
# modify by www.huizhanii.com
#set -x
 
# carontab:0 0 1 * * ~/docker/denycn.sh
 
# 设置要阻止的国家代码
COUNTRY="cn"
# 设置要允许的服务
DENY_SERVICES="22"  # SSH 端口
 
# 定义 iptables、egrep 命令的路径
IPTABLES=$(which iptables)
EGREP=$(which egrep)
IPSET=$(which ipset)
 
# 定义 IP 集群名称
IPSET_NAME="blocked_ips"
 
if [ "$1" = "del" ]; then
    # 删除 iptables 规则
    $IPTABLES -D INPUT -p tcp --dport $DENY_SERVICES -m set --match-set $IPSET_NAME src -j DROP
    $IPSET destroy $IPSET_NAME
    echo "规则已删除"
    exit 0
fi
 
# 覆盖下载中国 IP 地址列表
wget -O cn.zone https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt
 
# 检查脚本是否以 root 用户身份运行
if [ "$(id -u)" != "0" ]; then
    echo "you must be root" 1>&2
    exit 1
fi
 
# 定义函数 resetrules,用于清空 iptables 规则
resetrules() {
    $IPTABLES -F        # 清空过滤表中的规则
    $IPTABLES -t nat -F  # 清空网络地址转换表中的规则
    $IPTABLES -t mangle -F   # 清空修改数据包的规则
    $IPTABLES -X        # 删除用户自定义的链
}
 
# 创建 IP 集群,需要使用 hash:net,而不是 hash:ip
if $IPSET list $IPSET_NAME &>/dev/null; then
    $IPSET flush $IPSET_NAME
else
    $IPSET create $IPSET_NAME hash:net maxelem 100000
fi
 
# 遍历每个国家代码
for c in $COUNTRY
do
    country_file=$c.zone   # 根据国家代码构造文件名
    IPS=$($EGREP -v "^#|^$" $country_file)  # 从文件中读取非注释和非空白行的 IP 地址列表
 
    # 将 IP 添加到 IP 集群
    for ip in $IPS
    do
        $IPSET add $IPSET_NAME $ip
    done
done
 
# 设置 iptables 规则
if $IPTABLES -C INPUT -p tcp --dport $DENY_SERVICES -m set --match-set $IPSET_NAME src -j DROP > /dev/null 2>&1; then
    echo "ipset 规则已存在..."
else
    $IPTABLES -I INPUT 1 -p tcp --dport $DENY_SERVICES -m set --match-set $IPSET_NAME src -j DROP
    echo "ipset 规则已添加!"
 
fi
 
# 防止自身登录
myip=$(curl https://ipinfo.io/ip)
if $IPTABLES -C INPUT -p tcp --dport $DENY_SERVICES -s $myip -j DROP > /dev/null 2>&1; then
    echo "防止本机登录规则已存在..."
else
    sudo $IPTABLES -I INPUT 2 -p tcp --dport $DENY_SERVICES -s $myip -j DROP
    echo "防止本机登录规则已添加!"
fi
 
# 指定定时任务的命令和时间
cron_command="/bin/bash /root/docker/denycn.sh"
cron_schedule="0 0 1 * *"
# 检查定时任务是否已存在
existing_cron=$(crontab -l 2>/dev/null)
if [[ $existing_cron == *"$cron_command"* && $existing_cron == *"$cron_schedule"* ]]; then
  echo "定时任务已存在..."
else
  (crontab -l 2>/dev/null; echo "$cron_schedule $cron_command") | crontab -
  echo "定时任务已添加!"
fi
 
exit 0

转载请注明:汇站网 » 使用海外虚拟专用服务器(VPS)可以有效防止国内 IP 地址进行 SSH 登录

收藏 (0)

微信扫一扫

支付宝扫一扫

点赞 (0)

感谢您的来访,获取更多精彩资源请收藏本站。

本站声明

本资源仅用于个人学习和研究使用,禁止用于任何商业环境!

 1.  本网站名称:汇站网
 2.  本站永久网址:https://www.huizhanii.com/
 3.  本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
 4.  未经原版权作者许可,禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
 5.  为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
 6.  若资源侵犯了您的合法权益, 请持您的版权证书和相关原作品信息来信通知我们请来信     通知我们我们会及时删除,给您带来的不便,我们深表歉意!
 7.  如下载链接失效、广告或者压缩包问题请联系站长处理!
 8.  如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
 9.  本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
 10.  因源码具有可复制性,一经赞助 ,不得以任何形式退款。
 11.  更多详情请点击查看

汇站网 Linux 使用海外虚拟专用服务器(VPS)可以有效防止国内IP地址进行SSH登录 https://www.huizhanii.com/34151.html

汇站

站长资源下载中心-找源码上汇站

常见问题
  • 如果付款后没有弹出下载页面,多刷新几下,有问题联系客服!
查看详情
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情

相关文章

发表评论
暂无评论
  随机评论 表情开关按钮图片
表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情
登录后评论
联系官方客服

为您解决烦忧 - 24小时在线 专业服务

(汇站网)一个专注站长资源的平台网站,提供最新的网站模板和整站源码,内容包含各类精品网页模板,企业网站模板,网站模板,DIV+CSS模板,织梦模板,帝国cms模板,discuz模板,wordpress模板,个人博客论坛模板,上千种免费网页模板下载尽在汇站网.找源码上汇站.huizhanii.com