分类目录归档:代码集

新 VPS 到手后如何进行优化?

第一步:DD成Debian11系统

bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 11 -v 64 -p "密码" -port "ssh端口"

如果要D成ubuntu 20.04的就把 -d 11修改为 -u 20.04

第二步: 更新apt包及安装必要软件

apt update && apt upgrade -y && apt dist-upgrade -y && apt full-upgrade -y && apt autoremove -y && apt install vim git curl screen htop vnstat net-tools dnsutils sudo

第三步:更换软件源(一般是给国内机换)

bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)

第四步:禁止密码登录SSH,只允许密钥登录

bash <(curl -fsSL git.io/key.sh) -og AAAAA -p 77777 -d

其中AAAAA是你的Github用户名,自己去GitHub设置里的SSH Keys上传你密钥的公钥就行了,77777是你想要的ssh端口

第五步:开启BBR(debian11默认开启了,可以不执行)

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr

第六步:修改系统时区

timedatectl set-timezone Asia/Shanghai

第七步:安装docker

wget -qO- get.docker.com | bash

第八步:安装python(根据个人需要安装)

sudo apt-get update && sudo apt-get install python3.6 && sudo apt-get install python3-pip

常用的多合一脚本

科技lion的

curl -sS -O https://raw.githubusercontent.com/kejilion/sh/main/kejilion.sh && chmod +x kejilion.sh && ./kejilion.sh

Ednovas的

sudo wget -P /root -N https://cdn.jsdelivr.net/gh/ednovas/vpstoolbox@main/ednovastool.sh && sudo chmod +x /root/ednovastool.sh && /root/ednovastool.sh

Linux 服务器如何修改 DNS 服务器?

由于系统的 DNS 服务器问题,造成机器访问网络卡顿或异常,这里介绍Linux系统如何修改DNS服务器的方法。


1.终端里执行命令  vim /etc/resolv.confVPS
2.注释掉原来的nameserver
3. 粘贴如下内容,保存并退出,即完成了DNS服务器的修改
nameserver 8.8.8.8
nameserver 8.8.4.4

另,除了使用上述的DNS服务器,还可以使用cloudfare的DNS服务器,分别是1.1.1.1 和 1.0.0.1

Debian系统执行apt-update报错: changed its 'Suite' value from 'stable' to 'oldstable'?

如果 Debian 系统执行apt update时出现:

E: Repository 'http://security.debian.org/debian-security buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
N: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from '10.1' to '10.10'
E: Repository 'http://deb.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://deb.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

输入以下命令,然后重新执行 apt update就可以了:

apt-get update --allow-releaseinfo-change

一键修改 Linux VPS 服务器默认SSH端口

现在几乎所有的 VPS 云服务器默认 SSH 端口都是 22,很容易出现安全问题,建议改为其它高位数端口如 10086,可以手动修改,不过一键脚本更方便,这里分享 Rat's 大佬提取自 OneinStack 的一键修改 SSH 端口脚本。

支持系统:Debian、Ubuntu、CentOS,直接运行以下命令:

wget https://www.moerats.com/usr/down/sshport.sh && bash sshport.sh

或者:

wget https://raw.githubusercontent.com/sshadowrocket/useful_scripts/main/sshport.sh && bash sshport.sh

输入新的 SSH 端口确认,再打开防火墙端口:

#如果防火墙使用的 iptables(Centos 6),修改端口为 10086
iptables -I INPUT -p tcp --dport 10086 -j ACCEPT
service iptables save
service iptables restart

#如果使用的是 firewall(CentOS 7)
firewall-cmd --zone=public --add-port=10086/tcp --permanent
firewall-cmd --reload

#Debian 11 等可以使用 ufw
sudo ufw allow 10086/tcp # SSH 在 10086 端口
sudo ufw enable #启用 UFW

最后重启 ssh 生效:

#CentOS 系统
service sshd restart
#Debian/Ubuntu 系统
service ssh restart

如无意外就可以使用新端口 SSH 登录。下面是一键脚本源码备份:

# Use default SSH port 22. If you use another SSH port on your server
if [ -e "/etc/ssh/sshd_config" ];then
    [ -z "`grep ^Port /etc/ssh/sshd_config`" ] && ssh_port=22 || ssh_port=`grep ^Port /etc/ssh/sshd_config | awk '{print $2}'`
    while :; do echo
        read -p "Please input SSH port(Default: $ssh_port): " SSH_PORT
        [ -z "$SSH_PORT" ] && SSH_PORT=$ssh_port
        if [ $SSH_PORT -eq 22 >/dev/null 2>&1 -o $SSH_PORT -gt 1024 >/dev/null 2>&1 -a $SSH_PORT -lt 65535 >/dev/null 2>&1 ];then
            break
        else
            echo "${CWARNING}input error! Input range: 22,1025~65534${CEND}"
        fi
    done

    if [ -z "`grep ^Port /etc/ssh/sshd_config`" -a "$SSH_PORT" != '22' ];then
        sed -i "s@^#Port.*@&\nPort $SSH_PORT@" /etc/ssh/sshd_config
    elif [ -n "`grep ^Port /etc/ssh/sshd_config`" ];then
        sed -i "s@^Port.*@Port $SSH_PORT@" /etc/ssh/sshd_config
    fi
fi

sharktech全新中文官网,四款高配 Gold 6148 CPU 高防服务器促销,10Gbps@不限制流量/最高16TB硬盘

sharktech 机房也叫美国鲨鱼机房或SK机房,上线全新中文官网https://zh.sharktech.net/,方便中国用户访问。商家有四款服务器促销,全部是高配CPU,金牌 6148,2T超大容量,最高可以挂载8快,可达16TB,配置免费60Gbps高防御,$399.00/月。不过发现个bug,妈的,sharktech 英文官网这四款服务器的价格竟然是 $349.00/月,同样的配置,不一样的价格,可能商家标错了。

不限制流量,最高可加8个硬盘位。

机房 处理器 内存 NVMe 带宽 价格
洛杉矶 Dual Xeon Gold 6148 128GB 2TB  10Gbps $349.00/月
阿姆斯特丹 Dual Xeon Gold 6148 128GB 2TB  10Gbps $349.00/月
芝加哥 Dual Xeon Gold 6148 128GB 2TB  10Gbps $349.00/月
丹佛 Dual Xeon Gold 6148 128GB 2TB  10Gbps $349.00/月

Backtrace脚本,一键测试VPS云服务器回程路由

今天看到一个一键测试VPS云服务器回程路由的脚本,Backtrace,go语言写的,GitHub 地址:https://github.com/zhanghanyun/backtrace

Backtrace 使用很简单,直接复制粘贴到 SSH 中,一键测试回程路由跟踪结果。这个项目用的是icmp协议, 有时候不准确,部分商家卖的线路只优化 ICMP,TCP 不是优化线路,测试起来是CN2GIA / 9929, 实际用起来不是,实际上我们正常使用大部分都是 TCP,不过这些脚本一般都做个参考,做个评测用,实际用起来还是要看商家实际描述和实际使用体验。

Backtrace 直接输入下面命令即可:

curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh

如何给 iptables 编译加载 connlimit 模块?

默认的iptables模块中不包含connlimit功能,如果你想使用connlimit模块提供的连接数限制功能,你需要单独编译并加载该模块。

iptables是一个非常灵活的工具,它由多个模块组成,每个模块提供一些特定的功能。connlimit模块用于限制连接数,但并不是默认情况下加载的。这意味着如果你想使用connlimit功能,你需要自己编译并加载这个模块。

要实现这个功能,请按照以下步骤进行操作:

  1. 检查你的系统是否已经安装了iptables工具以及相关的开发包。如果没有,请安装相应的软件包。
  2. 下载iptables的源代码,解压缩源代码到一个目录。
  3. 在源代码目录中转到extensions目录。
  4. 编辑extensions目录下的Makefile.am文件,将-enable-connlimit行的注释符号(#)去除。
  5. 返回到源代码的根目录,执行./autogen.sh命令以生成编译配置脚本。
  6. 执行./configure命令以生成Makefile。
  7. 执行make命令以编译iptables和connlimit模块。
  8. 执行sudo make install命令以安装编译后的iptables工具和connlimit模块。

完成上述步骤后,你应该能够在系统中加载connlimit模块,并使用相应的规则实现连接数限制的功能。

如何通过 iptables 设置来缓解 DDoS 攻击和 CC 攻击?

今年 DDOS 攻击特别多,特别是 CC,DDOS 攻击造成服务器崩溃,导致用户无法访问。对于站长只能被动防御,使用高防 CDN 或者高防服务器,成本相当高,VaiCDN 商家的高防 CDN 最便宜也要500元一个月。普通站长当网站遭受到DDoS 和 CC 攻击时,可以通过 iptables 设置来缓解。

防范DDOS攻击脚本

#防止SYN攻击 轻量级预防

iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT

#防止DOS太多连接进来,可以允许外网网卡每个IP最多15个初始连接,超过的丢弃

iptables -A INPUT -i eth0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

#用 Iptables 抵御 DDOS (参数与上相同)

iptables -A INPUT -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

防范 CC 攻击设置

1、系统要求

LINUX 内核版本:2.6.9-42ELsmp或2.6.9-55ELsmp(其它内核版本需要重新编译内核,比较麻烦,但是也是可以实现的)。

iptables版本:1.3.7

2、配置相应的 iptables 规则

示例如下:

(1)控制单个IP的最大并发连接数

iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT #允许单个IP的最大连接数为 30 。

#默认iptables模块不包含connlimit,需要自己单独编译加载

(2)控制单个IP在一定的时间(比如60秒)内允许新建立的连接数

iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT

#单个IP在60秒内只允许最多新建30个连接。

通过上述iptables设置,可以在网站服务器遭到CC攻击时,自动屏蔽IP地址,缓解CC攻击对服务器造成的影响。