我的全过程,在考虑要不要让AI优化下,网上收集整合的 更新软件包和系统并清理"孤儿包" # Debian/Ubuntu 系统(apt) apt update && apt upgrade -y && apt dist-upgrade -y && apt full-upgrade -y && apt autoremove -y # CentOS/RHEL 8+(dnf) sudo dnf check-update && sudo dnf upgrade -y && sudo dnf distro-sync -y && sudo dnf autoremove -y # CentOS/RHEL 7及之前(yum) sudo yum check-update && sudo yum update -y && sudo yum upgrade -y && sudo yum autoremove -y # Fedora(dnf) sudo dnf check-update && sudo dnf upgrade -y && sudo dnf autoremove -y # Arch Linux(pacman) sudo pacman -Sy && sudo pacman -Syu --noconfirm && sudo pacman -Rns $(pacman -Qdtq) --noconfirm 系统参数优化 内核参数调整:例如,增加 TCP 缓冲区大小、修改系统队列长度等,这些改变有助于提高网络吞吐量和减少延迟。 性能优化:安装和配置 Tuned 和其他系统性能优化工具来自动调整和优化服务器的运行状态。 资源限制:例如,设置文件打开数量的限制,这可以防止某些类型的资源耗尽攻击。 # bash <(wget -qO- https://raw.githubusercontent.com/jerry048/Tune/main/tune.sh) -t 网络加速 # bbr 加速 # 法1 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 # TCP加速 一键安装管理脚本 94ish.me wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh # TCP加速 一键安装管理脚本 推荐 wget -O tcpx.sh "https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcpx.sh" && chmod +x tcpx.sh && ./tcpx.sh # 法4 bash <(wget -qO- https://raw.githubusercontent.com/jerry048/Tune/main/tune.sh) -x sudo reboot lsmod | grep bbr # 法5 wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh 安装swap bash <(wget -qO- https://fool.im/swap.sh) 修改时区 apt install -y locales echo "Asia/Shanghai" > /etc/timezone && \ dpkg-reconfigure -f noninteractive tzdata && \ sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ echo 'LANG="en_US.UTF-8"'>/etc/default/locale && \ dpkg-reconfigure --frontend=noninteractive locales && \ update-locale LANG=en_US.UTF-8 echo "Asia/Shanghai" > /etc/timezone #方法2 apt install sudo curl wget nano -y sudo timedatectl set-timezone Asia/Shanghai timedatectl 修改日志最大容量 # 修改日志最大容量 echo "SystemMaxUse=512M" >> /etc/systemd/journald.conf echo "SystemMaxFileSize=32M" >> /etc/systemd/journald.conf echo "RuntimeMaxUse=32M" >> /etc/systemd/journald.conf echo "RuntimeMaxFileSize=4M" >> /etc/systemd/journald.conf systemctl restart systemd-journald.service SSH # SSH sed -i 's/^Port.*$/Port 2233/' /etc/ssh/sshd_config # 设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。 sed -i 's/^#LoginGraceTime.*$/LoginGraceTime 30/' /etc/ssh/sshd_config # 最大尝试次数 sed -i 's/^#MaxAuthTries.*$/MaxAuthTries 3/' /etc/ssh/sshd_config # 开启 RSA sed -i 's/^#RSAAuthentication.*$/RSAAuthentication yes/' /etc/ssh/sshd_config # 是否使用公钥验证 sed -i 's/^#PubkeyAuthentication/PubkeyAuthentication/' /etc/ssh/sshd_config sed -i 's/^#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/sshd_config # 超时 sed -i 's/^#TCPKeepAlive/TCPKeepAlive/' /etc/ssh/sshd_config sed -i 's/^#ClientAliveInterval.*$/ClientAliveInterval 600/' /etc/ssh/sshd_config sed -i 's/^#ClientAliveCountMax.*$/ClientAliveCountMax 3/' /etc/ssh/sshd_config 防止爆破Fail2ban 安装Fail2ban apt install fail2ban rsyslog python3-systemd 配置Fail2Ban fail2ban 的配置文件通常位于 /etc/fail2ban/ 目录下,fail2ban 的.conf 配置文件都是可以被.local 覆盖,所以配置方式建议是添加.local 文件,不修改原来的配置文件 nano /etc/fail2ban/jail.local 配置文件如下 [DEFAULT] #忽略的IP列表,不受设置限制(白名单) ignoreip = 127.0.0.1/8 #允许ipv6 allowipv6 = auto #日志修改检测机制(gamin、polling和auto这三种) backend = systemd #针对各服务的检查配置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置 [sshd] #是否激活此项(true/false) enabled = true #过滤规则filter的名字,对应filter.d目录下的sshd.conf filter = sshd #ssh端口 port = ssh #动作的相关参数 action = iptables[name=SSH, port=ssh, protocol=tcp] #检测的系统的登陆日志文件 #debian:logpath = /var/log/auth.log #centos:logpath = /var/log/secure logpath = /var/log/auth.log #屏蔽时间,单位:秒 #配置 IP 封禁的持续时间(years/months/weeks/days/hours/minutes/seconds) bantime = 1w #是否开启增量禁止,可选 bantime.increment = true #如果上面为false则不生效,增量禁止的指数因子,这里设置为168的意思就是每次增加 168*(2^ban次数) (封禁时长类似这样 - 1小时 -> 7天 -> 14天 ...): bantime.factor = 2 #最大封禁时间,8w 表示8周,可选 bantime.maxtime = 8w #配置计算封禁 IP 的具体滑动窗口大小 #这个时间段内超过规定次数会被ban掉 findtime = 5m #最大尝试次数 maxretry = 3 #禁止 Nginx 目录扫描的规则 [nginx-dir-scan] #启用该规则 enabled = true #使用 nginx-dir-scan 过滤器来检测恶意扫描行为 filter = nginx-dir-scan #通过 iptables 阻止恶意 IP 地址访问端口 443(HTTPS) action = iptables[name=nginx-dir-scan, port="http,https", protocol=tcp] #指定 Nginx 访问日志的路径,注意替换为实际路径 logpath = /www/wwwlogs/*access.log #如果同一 IP 地址在 findtime 时间窗口内扫描超过 1 次,则触发封禁 maxretry = 1 #封禁 IP 9 天(单位:秒,1天=86400秒) bantime = 9d #查找恶意扫描行为的时间窗口为 5 分钟(300秒) findtime = 5m #防御 Nginx CC 攻击的规则 [nginx-cc] #启用该规则 enabled = true #监控 HTTP(端口 80)和 HTTPS(端口 443)端口 port = http,https #使用 nginx-cc 过滤器来检测可能的 CC 攻击 filter = nginx-cc #执行 Fail2ban 默认动作,包含邮件通知 action = %(action_mwl)s #如果同一 IP 在 60 秒内请求超过 20 次,则触发封禁 maxretry = 20 #设置请求计数的时间窗口为 60 秒 findtime = 60 #封禁 IP 9 天(单位:秒,1天=86400秒) bantime = 9d #指定 Nginx 访问日志路径,注意替换为实际路径 logpath = /www/wwwlogs/*access.log #检测HTTP身份验证失败的尝试 #Nginx配置文件http{内添加 limit_req_zone \$binary_remote_addr zone=example_zone:10m rate=1r/s; } [nginx-http-auth] enabled = true filter = nginx-http-auth mode = fallback port = http,https logpath = /www/wwwlogs/*error.log #新加 maxretry = 3 bantime = 3600 action = iptables[name=nginx-limit-req, port="http,https", protocol=tcp] #检测NGINX的请求限制 [nginx-limit-req] enabled = true filter = nginx-limit-req port = http,https logpath = /www/wwwlogs/*access.log #新加 action = iptables[name=nginx-limit-req, port="http,https", protocol=tcp] maxretry = 5 bantime = 3600 #检测潜在的恶意机器人搜索 [nginx-botsearch] enabled = true filter = nginx-botsearch port = http,https logpath = /www/wwwlogs/*access.log #新加 action = iptables[name=nginx-botsearch, port="http,https", protocol=tcp] maxretry = 5 bantime = 3600 #检测Nginx错误请求 [nginx-bad-request] enabled = true filter = nginx-bad-request port = http,https logpath = /www/wwwlogs/*access.log action = iptables[name=nginx-bad-request, port="http,https", protocol=tcp] maxretry = 5 bantime = 3600 #检测PHP中的URL打开尝试 [php-url-fopen] enabled = true filter = php-url-fopen port = http,https logpath = /www/wwwlogs/*access.log action = iptables[name=php-url-fopen, port="http,https", protocol=tcp] maxretry = 5 bantime = 3600 可选配置 # 防御 FTP 暴力破解攻击的规则 - 仅发出警告 [vsftpd-notification] # 启用该规则 enabled = true # 使用 vsftpd 过滤器来检测暴力破解攻击 filter = vsftpd # 发送警告邮件,并附带 WHOIS 信息 action = sendmail-whois[name=VSFTPD, [email protected]] # 指定 FTP 服务的日志路径 logpath = /var/log/vsftpd.log # 如果同一 IP 在 findtime 时间窗口内尝试登录超过 5 次,则触发警告 maxretry = 5 # 封禁 IP 9 天(单位:秒,1天=86400秒) bantime = 9d # 防御 FTP 暴力破解攻击的规则 - 封禁恶意 IP [vsftpd-iptables] # 启用该规则 enabled = true # 使用 vsftpd 过滤器来检测暴力破解攻击 filter = vsftpd # 通过 iptables 阻止攻击者的 IP 访问 FTP 端口(21) action = iptables[name=VSFTPD, port=ftp, protocol=tcp] # 发送警告邮件,并附带 WHOIS 信息 sendmail-whois[name=VSFTPD, [email protected]] # 指定 FTP 服务的日志路径 logpath = /var/log/vsftpd.log # 如果同一 IP 在 findtime 时间窗口内尝试登录超过 5 次,则触发封禁 maxretry = 5 # 封禁 IP 9 天(单位:秒,1天=86400秒) bantime = 9d 过滤器 nginx-cc nano /etc/fail2ban/filter.d/nginx-cc.conf #填写如下内容 [Definition] failregex = <HOST> -.*- .*HTTP/1.* .* .*$ ignoreregex = nginx-dir-scan nano /etc/fail2ban/filter.d/nginx-dir-scan.conf [Definition] failregex = <HOST> -.*- .*Mozilla/4.0* .* .*$ ignoreregex = 常用命令 # 设置开机自动启动 fail2ban sudo systemctl enable fail2ban # 重新启动 fail2ban sudo systemctl restart fail2ban # 停止 fail2ban 的状态 sudo systemctl stop fail2ban # 查看 fail2ban 的状态 sudo systemctl status fail2ban # 查看所有可用 jail 的状态 fail2ban-client status # 验证配置是否生效 tail -f /var/log/auth.log fail2ban-client status sshd # 解封所有IP fail2ban-client unban --all # 解封指定IP # fail2ban-client unban <IP> ... <IP> fail2ban-client unban 1.1.1.1 #删除特定服务的(如sshd)被ban IP fail2ban-client set sshd delignoreip 1.1.1.1 # 完全卸载fail2ban sudo apt remove fail2ban && apt purge fail2ban && apt autoremove rm /etc/fail2ban/ -rf # 显示配置以及错误 sudo fail2ban-client -d 删除多余日志 #fail2ban日志 开机自删+定时删日志 logdelete="./fail2banlogdelete.sh" cat>"${logdelete}"<<EOF #!/bin/bash find /path/to/nginx/ -mtime +15 -name "*.log" | xargs -i mv {} /root/RecycleBin/; find /usr/local/nginx/logs/ -mtime +15 -name "*.log" | xargs -i mv {} /root/RecycleBin/; find /var/log/ -mtime +15 -name "*.log" | xargs -i mv {} /root/RecycleBin/; find /root/RecycleBin/ -name "*.log" -exec rm -rf {} \; EOF cp ./fail2banlogdelete.sh /etc/init.d/ #读挡并赋予权限 chmod +777 /etc/init.d/fail2banlogdelete.sh update-rc.d ./fail2banlogdelete.sh defaults 90 cd (echo "0 0 */15 * * bash /etc/init.d/fail2banlogdelete.sh >>/dev/null 2>&1" ; crontab -l )| crontab cd 一键生成密钥 wget -O key.sh https://raw.githubusercontent.com/yuju520/Script/main/key.sh && chmod +x key.sh && clear && ./key.sh Docker 安装 # 海外服务器 方法1 wget -qO- get.docker.com | bash # 海外服务器 方法2 curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh # 大陆服务器 curl https://install.1panel.live/docker-install -o docker-install && sudo bash ./docker-install && rm -f ./docker-install # 开机自启 sudo systemctl enable docker # 卸载 sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo apt-get remove docker docker-engine sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd # 查看docker 版本 docker -v # 查看docker compose版本 Docker18.06.0-ce 版本就开始自带 Docker Compose docker compose version Linux硬盘清理 systemd-journal 日志清理 设置 打开配置文件 nano /etc/systemd/journald.conf 填写 SystemMaxUse=5M SystemMaxFileSize=2M SystemKeepFiles=1 清理日志 journalctl --vacuum-time=1week 重启 systemctl restart systemd-journald
没有改过ssh的端口,有时候就用的密码,没用密钥
@铁板飞鱼 #6 让 ai 写,最符合自己的需要
差不多,我也是手工党……
整个脚本方便很多
我的全过程,在考虑要不要让AI优化下,网上收集整合的
更新软件包和系统并清理"孤儿包"
# Debian/Ubuntu 系统(apt) apt update && apt upgrade -y && apt dist-upgrade -y && apt full-upgrade -y && apt autoremove -y # CentOS/RHEL 8+(dnf) sudo dnf check-update && sudo dnf upgrade -y && sudo dnf distro-sync -y && sudo dnf autoremove -y # CentOS/RHEL 7及之前(yum) sudo yum check-update && sudo yum update -y && sudo yum upgrade -y && sudo yum autoremove -y # Fedora(dnf) sudo dnf check-update && sudo dnf upgrade -y && sudo dnf autoremove -y # Arch Linux(pacman) sudo pacman -Sy && sudo pacman -Syu --noconfirm && sudo pacman -Rns $(pacman -Qdtq) --noconfirm系统参数优化
Tuned和其他系统性能优化工具来自动调整和优化服务器的运行状态。# bash <(wget -qO- https://raw.githubusercontent.com/jerry048/Tune/main/tune.sh) -t网络加速
# bbr 加速 # 法1 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 # TCP加速 一键安装管理脚本 94ish.me wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh # TCP加速 一键安装管理脚本 推荐 wget -O tcpx.sh "https://github.com/ylx2016/Linux-NetSpeed/raw/master/tcpx.sh" && chmod +x tcpx.sh && ./tcpx.sh # 法4 bash <(wget -qO- https://raw.githubusercontent.com/jerry048/Tune/main/tune.sh) -x sudo reboot lsmod | grep bbr # 法5 wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh安装swap
修改时区
apt install -y locales echo "Asia/Shanghai" > /etc/timezone && \ dpkg-reconfigure -f noninteractive tzdata && \ sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ echo 'LANG="en_US.UTF-8"'>/etc/default/locale && \ dpkg-reconfigure --frontend=noninteractive locales && \ update-locale LANG=en_US.UTF-8 echo "Asia/Shanghai" > /etc/timezone #方法2 apt install sudo curl wget nano -y sudo timedatectl set-timezone Asia/Shanghai timedatectl修改日志最大容量
# 修改日志最大容量 echo "SystemMaxUse=512M" >> /etc/systemd/journald.conf echo "SystemMaxFileSize=32M" >> /etc/systemd/journald.conf echo "RuntimeMaxUse=32M" >> /etc/systemd/journald.conf echo "RuntimeMaxFileSize=4M" >> /etc/systemd/journald.conf systemctl restart systemd-journald.serviceSSH
# SSH sed -i 's/^Port.*$/Port 2233/' /etc/ssh/sshd_config # 设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。 sed -i 's/^#LoginGraceTime.*$/LoginGraceTime 30/' /etc/ssh/sshd_config # 最大尝试次数 sed -i 's/^#MaxAuthTries.*$/MaxAuthTries 3/' /etc/ssh/sshd_config # 开启 RSA sed -i 's/^#RSAAuthentication.*$/RSAAuthentication yes/' /etc/ssh/sshd_config # 是否使用公钥验证 sed -i 's/^#PubkeyAuthentication/PubkeyAuthentication/' /etc/ssh/sshd_config sed -i 's/^#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/sshd_config # 超时 sed -i 's/^#TCPKeepAlive/TCPKeepAlive/' /etc/ssh/sshd_config sed -i 's/^#ClientAliveInterval.*$/ClientAliveInterval 600/' /etc/ssh/sshd_config sed -i 's/^#ClientAliveCountMax.*$/ClientAliveCountMax 3/' /etc/ssh/sshd_config防止爆破Fail2ban
安装Fail2ban
配置Fail2Ban
[DEFAULT] #忽略的IP列表,不受设置限制(白名单) ignoreip = 127.0.0.1/8 #允许ipv6 allowipv6 = auto #日志修改检测机制(gamin、polling和auto这三种) backend = systemd #针对各服务的检查配置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置 [sshd] #是否激活此项(true/false) enabled = true #过滤规则filter的名字,对应filter.d目录下的sshd.conf filter = sshd #ssh端口 port = ssh #动作的相关参数 action = iptables[name=SSH, port=ssh, protocol=tcp] #检测的系统的登陆日志文件 #debian:logpath = /var/log/auth.log #centos:logpath = /var/log/secure logpath = /var/log/auth.log #屏蔽时间,单位:秒 #配置 IP 封禁的持续时间(years/months/weeks/days/hours/minutes/seconds) bantime = 1w #是否开启增量禁止,可选 bantime.increment = true #如果上面为false则不生效,增量禁止的指数因子,这里设置为168的意思就是每次增加 168*(2^ban次数) (封禁时长类似这样 - 1小时 -> 7天 -> 14天 ...): bantime.factor = 2 #最大封禁时间,8w 表示8周,可选 bantime.maxtime = 8w #配置计算封禁 IP 的具体滑动窗口大小 #这个时间段内超过规定次数会被ban掉 findtime = 5m #最大尝试次数 maxretry = 3 #禁止 Nginx 目录扫描的规则 [nginx-dir-scan] #启用该规则 enabled = true #使用 nginx-dir-scan 过滤器来检测恶意扫描行为 filter = nginx-dir-scan #通过 iptables 阻止恶意 IP 地址访问端口 443(HTTPS) action = iptables[name=nginx-dir-scan, port="http,https", protocol=tcp] #指定 Nginx 访问日志的路径,注意替换为实际路径 logpath = /www/wwwlogs/*access.log #如果同一 IP 地址在 findtime 时间窗口内扫描超过 1 次,则触发封禁 maxretry = 1 #封禁 IP 9 天(单位:秒,1天=86400秒) bantime = 9d #查找恶意扫描行为的时间窗口为 5 分钟(300秒) findtime = 5m #防御 Nginx CC 攻击的规则 [nginx-cc] #启用该规则 enabled = true #监控 HTTP(端口 80)和 HTTPS(端口 443)端口 port = http,https #使用 nginx-cc 过滤器来检测可能的 CC 攻击 filter = nginx-cc #执行 Fail2ban 默认动作,包含邮件通知 action = %(action_mwl)s #如果同一 IP 在 60 秒内请求超过 20 次,则触发封禁 maxretry = 20 #设置请求计数的时间窗口为 60 秒 findtime = 60 #封禁 IP 9 天(单位:秒,1天=86400秒) bantime = 9d #指定 Nginx 访问日志路径,注意替换为实际路径 logpath = /www/wwwlogs/*access.log #检测HTTP身份验证失败的尝试 #Nginx配置文件http{内添加 limit_req_zone \$binary_remote_addr zone=example_zone:10m rate=1r/s; } [nginx-http-auth] enabled = true filter = nginx-http-auth mode = fallback port = http,https logpath = /www/wwwlogs/*error.log #新加 maxretry = 3 bantime = 3600 action = iptables[name=nginx-limit-req, port="http,https", protocol=tcp] #检测NGINX的请求限制 [nginx-limit-req] enabled = true filter = nginx-limit-req port = http,https logpath = /www/wwwlogs/*access.log #新加 action = iptables[name=nginx-limit-req, port="http,https", protocol=tcp] maxretry = 5 bantime = 3600 #检测潜在的恶意机器人搜索 [nginx-botsearch] enabled = true filter = nginx-botsearch port = http,https logpath = /www/wwwlogs/*access.log #新加 action = iptables[name=nginx-botsearch, port="http,https", protocol=tcp] maxretry = 5 bantime = 3600 #检测Nginx错误请求 [nginx-bad-request] enabled = true filter = nginx-bad-request port = http,https logpath = /www/wwwlogs/*access.log action = iptables[name=nginx-bad-request, port="http,https", protocol=tcp] maxretry = 5 bantime = 3600 #检测PHP中的URL打开尝试 [php-url-fopen] enabled = true filter = php-url-fopen port = http,https logpath = /www/wwwlogs/*access.log action = iptables[name=php-url-fopen, port="http,https", protocol=tcp] maxretry = 5 bantime = 3600可选配置
# 防御 FTP 暴力破解攻击的规则 - 仅发出警告 [vsftpd-notification] # 启用该规则 enabled = true # 使用 vsftpd 过滤器来检测暴力破解攻击 filter = vsftpd # 发送警告邮件,并附带 WHOIS 信息 action = sendmail-whois[name=VSFTPD, [email protected]] # 指定 FTP 服务的日志路径 logpath = /var/log/vsftpd.log # 如果同一 IP 在 findtime 时间窗口内尝试登录超过 5 次,则触发警告 maxretry = 5 # 封禁 IP 9 天(单位:秒,1天=86400秒) bantime = 9d # 防御 FTP 暴力破解攻击的规则 - 封禁恶意 IP [vsftpd-iptables] # 启用该规则 enabled = true # 使用 vsftpd 过滤器来检测暴力破解攻击 filter = vsftpd # 通过 iptables 阻止攻击者的 IP 访问 FTP 端口(21) action = iptables[name=VSFTPD, port=ftp, protocol=tcp] # 发送警告邮件,并附带 WHOIS 信息 sendmail-whois[name=VSFTPD, [email protected]] # 指定 FTP 服务的日志路径 logpath = /var/log/vsftpd.log # 如果同一 IP 在 findtime 时间窗口内尝试登录超过 5 次,则触发封禁 maxretry = 5 # 封禁 IP 9 天(单位:秒,1天=86400秒) bantime = 9d过滤器
nginx-cc
nginx-dir-scan
常用命令
# 设置开机自动启动 fail2ban sudo systemctl enable fail2ban # 重新启动 fail2ban sudo systemctl restart fail2ban # 停止 fail2ban 的状态 sudo systemctl stop fail2ban # 查看 fail2ban 的状态 sudo systemctl status fail2ban # 查看所有可用 jail 的状态 fail2ban-client status # 验证配置是否生效 tail -f /var/log/auth.log fail2ban-client status sshd # 解封所有IP fail2ban-client unban --all # 解封指定IP # fail2ban-client unban <IP> ... <IP> fail2ban-client unban 1.1.1.1 #删除特定服务的(如sshd)被ban IP fail2ban-client set sshd delignoreip 1.1.1.1 # 完全卸载fail2ban sudo apt remove fail2ban && apt purge fail2ban && apt autoremove rm /etc/fail2ban/ -rf # 显示配置以及错误 sudo fail2ban-client -d删除多余日志
#fail2ban日志 开机自删+定时删日志 logdelete="./fail2banlogdelete.sh" cat>"${logdelete}"<<EOF #!/bin/bash find /path/to/nginx/ -mtime +15 -name "*.log" | xargs -i mv {} /root/RecycleBin/; find /usr/local/nginx/logs/ -mtime +15 -name "*.log" | xargs -i mv {} /root/RecycleBin/; find /var/log/ -mtime +15 -name "*.log" | xargs -i mv {} /root/RecycleBin/; find /root/RecycleBin/ -name "*.log" -exec rm -rf {} \; EOF cp ./fail2banlogdelete.sh /etc/init.d/ #读挡并赋予权限 chmod +777 /etc/init.d/fail2banlogdelete.sh update-rc.d ./fail2banlogdelete.sh defaults 90 cd (echo "0 0 */15 * * bash /etc/init.d/fail2banlogdelete.sh >>/dev/null 2>&1" ; crontab -l )| crontab cd一键生成密钥
wget -O key.sh https://raw.githubusercontent.com/yuju520/Script/main/key.sh && chmod +x key.sh && clear && ./key.shDocker
安装
# 海外服务器 方法1 wget -qO- get.docker.com | bash # 海外服务器 方法2 curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh # 大陆服务器 curl https://install.1panel.live/docker-install -o docker-install && sudo bash ./docker-install && rm -f ./docker-install # 开机自启 sudo systemctl enable docker # 卸载 sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo apt-get remove docker docker-engine sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd # 查看docker 版本 docker -v # 查看docker compose版本 Docker18.06.0-ce 版本就开始自带 Docker Compose docker compose versionLinux硬盘清理
systemd-journal 日志清理
设置