vps安全设置

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

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

前几天 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

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

查看所有标签

猜你喜欢:

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

C++ Primer Plus

C++ Primer Plus

Stephen Prata / 张海龙、袁国忠 / 人民邮电出版社 / 2012-6-19 / 99.00元

C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言,是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的。通过大量短小精悍的程序详细而全面地阐述了C++的基本概念和技术。全书分为18章和10个附录,分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间、类......一起来看看 《C++ Primer Plus》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码