云服务器(centos7)新机器安全配置(持续更新)

  • 如果买了云服务器,不管是哪家的,默认没有防护服务,除非花钱购买,所以这里总结下,提供给各位
  • 欢迎提供自己的经验,加入到其中,帮助更多人

按照以下完成服务器配置,至少可以抵御80%来自互联网的扫描和攻击

禁用22端口,改为其他端口

一、修改SSH配置文件(注意是sshd_config而不是ssh_config,多了个d)

vim /etc/ssh/sshd_config

找到“#Port 22”,把两行的“#”号即注释去掉,修改成:

Port 22

Port 50500

SSH默认监听端口是22,如果你不强制说明别的端口,”Port 22”注不注释都是开放22访问端口。上面我保留了22端口,防止之后因为各种权限和配置问题,导致连22端口都不能访问了,那就尴尬了。等一切都ok了,再关闭22端口。

Ok,继续,我增加了50500端口,大家修改端口时候最好挑10000~65535之间的端口号,10000以下容易被系统或一些特殊软件占用,或是以后新应用准备占用该端口的时候,却被你先占用了,导致软件无法运行。

二、如果你关闭了SELinux,可以忽略第二步

先查看SELinux开放给ssh使用的端口

semanage port -l|grep ssh

我的系统打印如下:

ssh_port_t tcp 22

可知,SELinux没有给SSH开50500端口,那么我们来添加该端口:

semanage port -a -t ssh_port_t -p tcp 50500

完成后,再次查看

semanage port -l|grep ssh

ssh_port_t tcp 22,50500

三、如果你关闭了防火墙,可以忽略第三步,话说防火墙不开启太危险了,建议开启(关了防火墙等于一个美女脱光了满大街跑)。

先查看防火墙是否开启了50500端口:

firewall-cmd --permanent --query-port=50500/tcp

打印结果如下:

success

重新加载防火墙策略:

firewall-cmd --reload

执行成功后,查看50500端口是否被开启:

firewall-cmd --permanent --query-port=50500/tcp

打印结果如下:

yes

四、重启SSH服务和防火墙

systemctl restart sshd
systemctl restart firewalld.service

五、验证50500是否能远程连接,使用自己的shell工具,远程通过50500端口连接服务器,能连通则配置成功

六、50500连接成功后,关闭22端口的远程访问能力

vim /etc/ssh/sshd_config

找到“Port 22”,将其注释。

重启sshd服务:

systemctl restart sshd

七、验证22是否能远程连接,使用自己的shell工具,远程通过22端口连接服务器,不能连通则配置成功

防暴力破解安装

安装fail2ban

yum install fail2ban

配置fail2ban安全策略

vim /etc/fail2ban/jail.d/jail.local

输入:

#defalut这里是设定全局设置,如果下面的监控没有设置就以全局设置的值设置。
[DEFAULT]
# 用于指定哪些地址ip可以忽略 fail2ban 防御,以空格间隔。
ignoreip = 127.0.0.1/8
# 客户端主机被禁止的时长(默认单位为秒)
bantime  = 3600
# 过滤的时长(秒)
findtime  = 600
# 匹配到的阈值(次数)
maxretry = 3



[ssh-iptables]
# 是否开启
enabled  = true
# 过滤规则
filter   = sshd
# 动作
action   = iptables[name=SSH, port=ssh, protocol=tcp]
# 日志文件的路径
logpath  = /var/log/secure
# 匹配到的阈值(次数)
maxretry = 3

启动防暴器

systemctl   start fail2ban
fail2ban-client reload

查看防爆结果

fail2ban-client status ssh-iptables

禁ping服务器

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

创建新用户,使用ssh登陆,禁止root登陆,密码登陆

注意:以下所有操作都不要关闭shell窗口,需要等所有操作都执行完了,才允许关闭shell窗口,防止人为配置出错,导致自己无法登录服务器

先使用root用户登陆,创建新用,为新用户创建密码

useradd guest
passwd guest

这里的guest为演示用户,修改为自己的用户名,长度不短于8位长度,因为暴力破解8位已经很难了

为用户分配sudo权限

给予sudo权限, 当权限不够时,可以用sudo

gpasswd -a guest wheel

查询所有带sudo权限的用户


lid -g wheel

如果想删除用户,删除用户和相应的目录:
这一步不是必须的
userdel -r guest

用户创建完毕,切换guest用户登陆(因为要为当前用户生成密钥)

su guest 
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" //生成密钥,邮件换成自己的

生成之后 ,
私钥是/home/guest/.ssh/id_rsa
公钥是id_rsa.pub
可以更改私钥名称为id_rsa_guest.pem,公钥为authorized_keys(因为centos默认配置文件的名字是authorized_keys )

在这里插入图片描述

退回到root用户

exit

执行

chmod 700 /home/guest/.ssh/
chmod 644 /home/guest/.ssh/authorized_keys

将私钥文件从服务器下载到本地,然后用shell登陆,使用public key的方式登陆

确保登陆后,修改/etc/ssh/sshd_config文件,禁止密码登陆,启用密钥验证

vim /etc/ssh/sshd_config

修改以下三项:

  • PasswordAuthentication no
  • RSAAuthentication yes
  • PubkeyAuthentication yes

在最后新增一行,限制只允许guest远程登录,其他用户都不可以,如果将来这一行不见了或者被改了,说明服务器被攻击了(其实/etc/ssh/sshd_config这个文件中的配置只要被人动过,说明黑客已经获取到root执行权限了,很危险了已经,建议立即断开外网,再处理)

AllowUsers guest

重启ssh服务

systemctl restart sshd.service

验证

  • 打开新的shell窗口,使用root用户名登录,此时应该登录失败
  • 打开新的shell窗口,使用guest用户名登录,此时应该登录失败
  • 打开新的shell窗口,使用使用public key的方式登陆,此时应该登录成功

至此,以上都验证过了,才可以关闭shell窗口

使用跳转机

  • 如果资金允许的话,可以购买一台或多台配置相当的机器作为跳转机,所有服务都关闭外网访问能力,开通对这些跳转机的接入接出能力。
  • 这样的话,可以将真实的服务以及服务器都隐藏在这些跳转机后面,起到间接保护服务器作用。即使跳转机被攻破,真正的服务也能暂时得到保护。

使用预警系统

可对以下参数监控:

  • CPU
  • 内存
  • 登录日志
  • 文件系统

这块可自行查找,有免费的、有收费的

记录服务器的所有操作

黑客一般会删除自己的操作记录,最好保留所有操作。

vim /etc/profile

在末尾加入

LOGIN_USER=`who -u am i 2>/dev/null| awk '{print $1}'`
LOGIN_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ ! -d /opt/his/cmd_history ]
then
mkdir -p /opt/his/cmd_history
chmod 777 /opt/his/cmd_history
fi
if [ ! -d /opt/his/cmd_history/${LOGIN_USER} ]
then
mkdir -p /opt/his/cmd_history/${LOGIN_USER}
fi
export HISTFILE="/opt/his/cmd_history/${LOGIN_USER}/history"
chattr +i /opt/his/cmd_history/${LOGIN_USER}/history
shopt -s histappend
PROMPT_COMMAND="history -a"
HISTFILESIZE=50000
HISTSIZE=10000

或者

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /opt/his/cmd_history ]
then
mkdir -p /opt/his/cmd_history
chmod 777 /opt/his/cmd_history
fi
if [ ! -d /opt/his/cmd_history/${LOGNAME} ]
then
mkdir -p /opt/his/cmd_history/${LOGNAME}
chmod 300 /opt/his/cmd_history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date "+%Y-%m-%d_%H:%M:%S"`
export HISTFILE="/opt/his/cmd_history/${LOGNAME}/${USER_IP}_his.$DT"
chmod 600 /opt/his/cmd_history/${LOGNAME}/*_his* 2>/dev/null

查看最近登录记录

最近成功的登录

last

最近失败的登录

lastb

如果机器被非法登陆过,排查机器遗留的非法入口

  1. 查看ssh登录配置
vim /etc/ssh/sshd_config
  • 确认该文件只有以上配置过的选项,比如端口只有50500,如果有多余的,请删除。
  • 确认以下配置,只有一个选项,这里是指定存放免密登录key的地方
    在这里插入图片描述
  1. 全盘扫描.ssh/authorized_keys
find / -name authorized_keys

确保只有自己按照上面配置生成过的秘钥,如果有多余的路径,多半是黑客留下的后门,马上删掉,我的机器上被黑客留了好几个后门。
在这里插入图片描述

  1. 如果上面有发现任何黑客留下的后门,马上删除自己之前生成的authorized_keys,重新生成一遍,记得换邮箱,这一步千万别关shell窗口。

  2. 查看黑客启动的进程,使用top命令找出可疑进程,不是自己的,多分析,一般自己进程都闲着,占用cpu、内存高的进程都有问题

  3. 查看crontab,很多黑客会修改crontab,添加自己的自启动任务

crontab -l

发现非法的定时任务,马上干掉

  1. 查看机器与哪些外部机器在远程通信
netstat -anp

主要关注Foreign Address一列,这一步可以找出很多蛛丝马迹

机器只要重启,都要检查一遍防火墙、ssh、防暴器是否都已经启动

在云服务器web管理端页面关闭多余端口,只开放需要的少量端口

查看系统隐藏的进程,我的服务器cpu一直为0,但是负载很高,最后查到,黑客的进程躲在后台运行,top查不出进程信息。

vim /etc/ld.so.preload

如果这里面配置了某个程序地址,将其删除,就可以在top看到他的进程

查找近24小时内被修改过的文件

 find /etc -mtime +1 -type f -print   | ll -t

如果主机名被修改了,按照以下方法修改

方法1:临时有效

hostname 主机名 //只能临时修改的主机名,当重启机器后,主机名称又变回来了。

hostname xh01

方法2:永久生效

//永久性的修改主机名称,重启后能保持修改后的。
hostnamectl set-hostname xxx    

//删除hostname
hostnamectl set-hostname ""
hostnamectl set-hostname "" --static
hostnamectl set-hostname "" --pretty
  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ERD Online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值