• Ubuntu 设置只允许国内的 IP 访问


    Introduction 介绍

    今年九月份,我自己的服务器让国外的黑客给勒索了,两块硬盘的全部数据都没了。因为这个服务器只是让身处国内的我使用,因此不需要国外的 IP 访问。我需要将国外的 IP 都给屏蔽掉,这里需要使用到 ipset ,这是 iptable 的扩展,允许创建一个IP地址集合的规则,能快速屏蔽某个 IP 段。

    Step 1 安装 ipset

    sudo apt-get update
    
    • 1
    sudo apt-get -y install ipset
    
    • 1

    Step 2 获取国内的 IP 网段

    运行下面的命令以获取国内的 IP 网段,保存在 /root/china_ssr.txt

    wget -q --timeout=60 -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /root/china_ssr.txt
    
    • 1

    Step 3 设置脚本

    Step 3.1 新建脚本

    cd root/
    sudo vim allcn.sh
    
    • 1
    • 2

    将下面的脚本完整地保存在 /root/allcn.sh 中。

    mmode=$1
    
    #下面语句可以单独执行,不需要每次执行都获取网段表
    #wget -q --timeout=60 -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /root/china_ssr.txt
    
    CNIP="/root/china_ssr.txt"
    
    
    gen_iplist() {
            cat <<-EOF
                    $(cat ${CNIP:=/dev/null} 2>/dev/null)
    EOF
    }
    
    flush_r() {
    iptables  -F ALLCNRULE 2>/dev/null
    iptables -D INPUT -p tcp -j ALLCNRULE 2>/dev/null
    iptables  -X ALLCNRULE 2>/dev/null
    ipset -X allcn 2>/dev/null
    }
    
    mstart() {
    ipset create allcn hash:net 2>/dev/null
    ipset -! -R <<-EOF
    $(gen_iplist | sed -e "s/^/add allcn /")
    EOF
    
    iptables -N ALLCNRULE
    iptables -I INPUT -p tcp -j ALLCNRULE
    iptables -A ALLCNRULE -s 127.0.0.0/8 -j RETURN
    iptables -A ALLCNRULE -s 169.254.0.0/16 -j RETURN
    iptables -A ALLCNRULE -s 224.0.0.0/4 -j RETURN
    iptables -A ALLCNRULE -s 255.255.255.255 -j RETURN
    #可在此增加你的公网网段,避免调试ipset时出现自己无法访问的情况
    
    iptables -A ALLCNRULE -m set --match-set allcn  src -j RETURN
    iptables -A ALLCNRULE -p tcp -j DROP
    
    
    }
    
    if [ "$mmode" == "stop" ] ;then
    flush_r
    exit 0
    fi
    
    flush_r
    sleep 1
    mstart
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    Step 3.2 设置执行权限

    chmod a+x /root/allcn.sh
    
    • 1

    Step 4 运行

    回到根目录,运行下面的指令

    /root/allcn.sh
    
    • 1

    运行之后,国外的 IP 就没有法访问了。

    若想恢复国外 IP 的访问,输入下面的指令:

    /root/allcn.sh stop
    
    • 1
  • 相关阅读:
    华为高斯数据库配置环境变量(DWS,高斯数据库,libra) 报错:sh: gsql: command not found
    【CSS】css变量
    java基础知识一
    【C/C++动态内存 or 柔性数组】——对动态内存分配以及柔性数组的概念进行详细解读(张三 or 李四)
    058:mapboxGL监听键盘事件,通过panBy控制前后左右移动
    第2-2-2章 常见组件与中台化-常用组件服务介绍-通用权限系统
    天天基金股票数据爬取
    理解ASP.NET Core - 授权(Authorization)
    <Linux>(极简关键、省时省力)《Linux操作系统原理分析之进程管理2》(4)
    CSS 笔记
  • 原文地址:https://blog.csdn.net/qq_17790209/article/details/128026987