首页 > 系统相关 >不定时修改Linux服务器端口和密码

不定时修改Linux服务器端口和密码

时间:2024-07-08 16:10:13浏览次数:25  
标签:服务器端 sudo EMAIL SSH Linux NEW 定时 PORT ssh

最近总是不想动,服务器的安全又不得不考虑,有时候还会忘记修改服务器的端口和密码,就诞生了下面的Shell脚本。

脚本包含了日志记录,备份SSH文件,修改SSH端口,修改SSH密码,更新防火墙、发送加密邮件,设置定时任务。

脚本目前只在Ubuntu系统测试,其它系统未测试,以下标红的信息一定要看。

注意:在使用脚本之前一定要先进行测试,尤其是发送邮件和接收邮件是否正常,否则会很麻烦。

1、安装依赖库

sudo apt-get update
sudo apt-get install -y ssmtp openssl

2、配置ssmtp

sudo vi /etc/ssmtp/ssmtp.conf

  2.1添加或修改以下内容:这里的信息都需要修改为你自己的。

root=postmaster
mailhub=smtp.your-email-provider.com:587
[email protected]
AuthPass=your-email-password
UseSTARTTLS=YES

3、Shell脚本,

#!/bin/bash

# 配置
EMAIL="[email protected]"
MIN_PORT=1024
MAX_PORT=65535
MIN_PASS_LENGTH=8
MAX_PASS_LENGTH=16
LOG_FILE="/var/log/auto_update_ssh_password.log"
BACKUP_DIR="/etc/ssh/backup"
SERVER_NAME=$(hostname) # 获取服务器名称

# 创建备份目录
mkdir -p $BACKUP_DIR

# 生成随机端口号
NEW_PORT=$(shuf -i $MIN_PORT-$MAX_PORT -n 1)

# 生成随机密码
PASSWORD_LENGTH=$(shuf -i $MIN_PASS_LENGTH-$MAX_PASS_LENGTH -n 1)
NEW_PASSWORD=$(openssl rand -base64 $PASSWORD_LENGTH | tr -dc 'a-zA-Z0-9' | head -c $PASSWORD_LENGTH)

# 获取当前SSH端口
CURRENT_PORT=$(grep "^Port " /etc/ssh/sshd_config | awk '{print \$2}')

# 备份SSH配置文件
sudo cp /etc/ssh/sshd_config $BACKUP_DIR/sshd_config_$(date +%F_%T)

# 修改SSH端口
if [ -z "$CURRENT_PORT" ]; then
  # 如果没有找到Port配置,添加新的端口配置
  echo "Port $NEW_PORT" | sudo tee -a /etc/ssh/sshd_config
else
  # 替换现有的端口配置
  sudo sed -i "s/^Port $CURRENT_PORT/Port $NEW_PORT/" /etc/ssh/sshd_config
fi

# 检测并更新防火墙规则
if command -v ufw > /dev/null; then
  # 使用ufw
  sudo ufw allow $NEW_PORT/tcp
  if [ ! -z "$CURRENT_PORT" ]; then
    sudo ufw delete allow $CURRENT_PORT/tcp
  fi
elif command -v iptables > /dev/null; then
  # 使用iptables
  sudo iptables -A INPUT -p tcp --dport $NEW_PORT -j ACCEPT
  if [ ! -z "$CURRENT_PORT" ]; then
    sudo iptables -D INPUT -p tcp --dport $CURRENT_PORT -j ACCEPT
  fi
else
  echo "未检测到受支持的防火墙工具 (ufw 或 iptables)。请手动更新防火墙规则。" | tee -a $LOG_FILE
  exit 1
fi

# 重启SSH服务
sudo systemctl restart sshd

# 修改用户密码
echo "root:$NEW_PASSWORD" | sudo chpasswd

# 记录日志
echo -e "$(date +%F_%T) - SSH端口已更改为: $NEW_PORT\n新密码为: $NEW_PASSWORD\n" | sudo tee -a $LOG_FILE

# 发送加密邮件
EMAIL_SUBJECT="SSH端口和密码更新 - $SERVER_NAME"
EMAIL_BODY="SSH端口已更改为: $NEW_PORT\n新密码为: $NEW_PASSWORD"
echo -e "$EMAIL_BODY" | gpg --encrypt --recipient $EMAIL | ssmtp -s "$EMAIL_SUBJECT" $EMAIL

# 设置定时任务
CRON_JOB="0 0 */7-15 * * /path/to/update_ssh_password.sh"
(crontab -l 2>/dev/null; echo "$CRON_JOB") | crontab -

脚本中的[email protected]记得修改,/path/to/update_ssh_password.sh路径需要修改为脚本的实际地址,否则无法添加定时任务,

4、赋予脚本可执行权限

chmod +x update_ssh_password.sh

文章地址:https://www.cnblogs.com/shenjingwa/p/18290098

标签:服务器端,sudo,EMAIL,SSH,Linux,NEW,定时,PORT,ssh
From: https://www.cnblogs.com/shenjingwa/p/18290098

相关文章

  • Linux中安装anaconda
    1.下载 官网下载:https://www.anaconda.com/download镜像下载:清华大学镜像站 比如:Anaconda3-2024.06-1-Linux-x86_64.sh 2.安装 bashAnaconda3-2024.06-1-Linux-x86_64.sh 一直按住回车,阅读用户协议。然后输入:yes: 按回车安装到默认位置,或者输入自定义安装......
  • Franka 在Linux上安装
    本章介绍如何安装libfranka和franka_ros(作为二进制包或从源代码构建),以及如何安装实时Linux内核。仅当您想使用ROSfranka_ros控制机器人时才需要。虽然libfranka软件包franka_ros可以在不同的Linux发行版上运行,但目前官方仅支持:Ubuntu18.04LTS BionicBeaver和ROS Mel......
  • Install the Operating System of Windows and Linux on the Laptop
    EnvironmentsWindows11Ubuntu24.04LTSLaptop:YogaPro14SARH7AllocatedDiskForUbuntu:146.5GBStepI:DownloadUbuntuPackageDownloadtheUbuntuISOfilefromtheofficialwebsite:https://ubuntu.com/download/desktopJustselecttheversion......
  • Linux 源码安装禅道
    安装ApacheHttpServer安装所需依赖yuminstallapr-develapr-util-develgccmakepcre-developenssl-devel安装Apache服务#下载最新版安装包wgethttps://dlcdn.apache.org/httpd/httpd-2.4.59.tar.gz#解压tarxfhttpd-2.4.59.tar.gzcdhttpd-2.4.59#配......
  • Linux系统权限控制详解(理论+实战)
    一、权限概述Linux权限控制是指对文件和目录的访问权限进行限制,以保护系统安全和数据完整性。其作用包括以下几个方面:保护系统安全:Linux系统中许多重要的配置文件和程序文件只有管理员才有权限访问,一般用户不能修改或删除这些文件,以防止系统被破坏。保护用户数据:每个用户的家......
  • 【linux/shell】如何创建脚本函数库并在其他脚本中调用?
    在Shell中创建和使用脚本库通常涉及以下几个步骤:1. 创建脚本库文件脚本库通常是包含了一系列可重用函数的Shell脚本文件。你可以使用文本编辑器创建一个脚本库文件,例如 mylib.sh 。nanomylib.sh在文件中,你可以定义一些函数,例如:#!/bin/bashfunctiongreet{  ech......
  • 香橙派编译linux内核支持ebpf和虚拟WIFI
    前言上一篇文章香橙派5plus上跑云手机方案一redroid(带硬件加速)中说了怎么运行redroid,这篇补一下怎么修改参数编译内核。补充上篇文章有个内容需要补充一下:更新完内核需要用下面的命令防止内核被apt更新,不然后面使用aptupdate又回到官方的内核(注意版本号,当前是1009)。sudo......
  • (麒麟Linux+PHP8+KingBase)麒麟Linux系统安装PHP8及人大金仓KingBase应用
    一、PHP8安装1.1环境CPU内核:aarch64OS:麒麟V104.19.90-23.34.v2101.ky10Web中间件:东方通THS/V6php:8.2.0db:KingbaseESV8R61.2下载https://www.php.net/releases/下载地址:https://www.php.net/distributions/php-8.2.0.tar.gz1.3解压cd/optsudotar-z......
  • centos8(linux): 安装使用supervisor管理laravel队列
    一,什么是supervisorSupervisor是一个进程控制系统,它使用户能够监视和控制类unix操作系统进程。它通过提供基于配置或事件启动、停止和重新启动进程的机制,帮助管理应该在系统中连续运行的进程。对于需要控制和监视Linux或其他类unix操作系统上多个进程的状态的开发人员和系统管理......
  • Linux系统配置Opencv+cuda+ffmpeg开发环境,-217:Gpu API call unknown error code问题
    Opencv是当前比较热门的图像处理开源算法库,但是随着深度学习在图像存储里领域的大放异彩,基于python的图像处理和深度学习算法大有超越opencv的趋势。opencv在最近的版本更新中,重点都放在了人工智能算法方面,本文介绍linux环境下配置支持GPU/cuda的ffmpeg和opencv开发环境,并将其中遇......