内容简介:前几天果然满满的一大屏。回来重新设置了一下,下面总结一下基本的安全配置。申请了
前几天 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
denyhosts
是 Python
语言写的一个程序,它会分析 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
会执行几个设置:
-
为
root
用户设置密码 - 删除匿名账号
-
取消
root
用户远程登录 -
删除
test
库和对test
库的访问权限 - 刷新授权表使修改生效
一路选择 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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- [CentOS7]redis设置开机启动,设置密码
- hadoop地址配置、内存配置、守护进程设置、环境设置
- OpenMediaVault 设置
- scrapy代理的设置
- jvm的参数设置
- perl 国际时区设置
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。