vps安全设置

栏目: 服务器 · 发布时间: 7年前

内容简介:前几天果然满满的一大屏。回来重新设置了一下,下面总结一下基本的安全配置。申请了

前几天 vps 上放的网站突然打不开了,提示数据库错误,登录 vps 上一查,结果发现数据库居然被清空了,只留下一个 waring 的数据库和 readme 的表,表里面留下了黑客的比特币账号、交易网址,说我的数据被他备份了,要勒索我0.2个比特币才还给我数据。:sweat:,我会相信?(其实主要是没钱)之前写了一个备份脚本,结果只备份了10天的,然而刚好国庆放假没看网站,10天早就过期了。猜想应该是密码被暴力破解了,或者数据库账号配暴力破解,查看尝试暴力破解机器密码的人:

sudo grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more

果然满满的一大屏。回来重新设置了一下,下面总结一下基本的安全配置。

root账号

申请了 vps 后,一般平台会给一个 root 账号和密码,使用 ssh 登录服务器默认是22端口,最好修改掉默认端口,然后禁止 root 用户登录,修改修改/etc/ssh/sshd_config文件:

vi /etc/ssh/sshd_config
ort 3434 #一个别人猜不到的端口号
PermitRootLogin no

以后操作最好使用一个普通用户,所以我们来创建一个普通用户并赋予 sudo 权限,

useradd -m username // 创建用户
// -m可以为用户创建相应的帐号和用户目录/home/username
passwd username // 设置密码
groupadd admin // 创建用户组
usermod -G admin username // 设置组
// 添加sudu权限
visudo // 调出了nano编辑器,ctrl + X 退出,确认保存文件,回车
// 添加用户
我们可以看到admin组默认已经用了root权限
// %admin ALL=(ALL) ALL
如果是某个用户
// username ALL=(ALL) ALL

其实不建议直接修改 /etc/sudoers ,而是通过在 /etc/sudoers.d/ 文件夹中新增文件来完成配置,文件名无所谓。

登录

如果一直使用用户名密码,即使改了端口号,其实还是可以使用 nmap 这类的 工具 嗅探端口,然后暴力破解用户名密码,所以最好直接不允许使用用户名密码登录,

# vi /etc/ssh/sshd_config
RSAAuthentication yes #RSA认证
PubkeyAuthentication yes #开启公钥验证
AuthorizedKeysFile .ssh/authorized_keys #验证文件路径
PasswordAuthentication no #禁止密码认证
PermitEmptyPasswords no #禁止空密码
# 最后保存,重启
# /etc/init.d/sshd restart

使用RSA登录的步骤在之前的博客已经说过,VPS新手指南,这里不再重复。

安装denyhosts

denyhostsPython 语言写的一个程序,它会分析 sshd 的日志文件,当发现重复的失败登录时就会记录 IP/etc/hosts.deny 文件,从而达到自动屏 IP 的功能:

apt-get install denyhosts
// 如需修改配置,可以在 /etc/denyhosts.conf 这里修改。

UFW防火墙

ufw是一个主机端的iptables类防火墙配置工具

sudo apt-get install ufw
// 启用
sudo ufw enable
sudo ufw default deny
// 开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)
// 开放一些需要外部访问的服务或者端口
sudo ufw allow nginx
sudo ufw allow 443

mysql

安装完 MySQL 后执行 mysql_secure_installation ,运行 mysql_secure_installation 会执行几个设置:

  1. root 用户设置密码
  2. 删除匿名账号
  3. 取消 root 用户远程登录
  4. 删除 test 库和对 test 库的访问权限
  5. 刷新授权表使修改生效

一路选择 yes 就行了,平时使用的时候注意不要用 root 用户,用一个普通用户,只赋予特定几个数据库的操作权限,数据库登录不允许远程登录,修改默认端口号,做好这些,基本就不会再被黑了。

备份数据库: vim mysql_backup.sh :

#!/bin/bash
#mysql 备份30天脚本
#备份目录
backupDir=/home/wulv/backup/mysql
#mysqlDump
mysqldump="$(which mysqldump)"
#ip
host=localhost
#用户名
username=root
password=123456
#今天日期
today=`date +%Y%m%d`
#十天前的日期
timeTenDayAgo=`date -d -30day +%Y%m%d`
#要备份的数据库数组
databases=(shadowsocks)
# echo $databaseCount
for database in ${databases[@]}
  do
    echo 'start backup '$database
    $mysqldump -h$host -u$username -p$password $database | gzip > $backupDir/$database-$today.sql.gz
    echo 'success backup '$database'to'$backupDir/$database-$today.sql.gz
    if [ ! -f "$backupDir/$database-$timeTenDayAgo.sql.gz" ]; then
      echo 'no 30 days ago backup file'
    else
        rm -f $backupDir/$database-$timeTenDayAgo.sql.gz
        echo 'delete 30 days ago backup '$backupDir/$database-$timeTenDayAgo.sql.gz
    fi
  done

添加定时任务:

crontab -e
// 输入一下,每天晚上23点50分开始自动执行备份脚本
50 23 * * *  /home/wulv/backup/mysql_backup.sh >/dev/null 2>&1

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Domain-Driven Design

Domain-Driven Design

Eric Evans / Addison-Wesley Professional / 2003-8-30 / USD 74.99

"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is n......一起来看看 《Domain-Driven Design》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具