linux

Linux Server 安全设置

今天,我发现自己的博客被攻击了,没错,人生第一次,服务器被人攻破,的确值得放烟花庆祝,不过,这个攻击也没做啥事,就是登录后下载了一个脚本 fanelishere.tk/arhive/info 然后运行了这个脚本,此外再无其他。但,终究还是被人攻击了。所以有了此文,本文主要讲述我个人了解的 Linux 服务器 安全设置。

禁用 ssh 的密码登录,仅可以用 publicKey 登录

vim /etc/ssh/sshd_config

搜索  #PasswordAuthentication  并去掉前面的 # 号,将值设为 no,搜索 ChallengeResponseAuthentication 并去掉 #号,将值也设为 no,如下:

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
ChallengeResponseAuthentication no

修改 ssh 端口为 非 22 端口

vim /etc/ssh/sshd_config

搜索 #Port (大概在文件开头位置) 修改为 Port xxxx 比如

Port 2019
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

然后 重启 sshd 比如 systemctl restart ssh

ssh 登录 邮件提醒

apt install mailutils

配置 选择 默认的 internet site,接着输入 你发邮件的 域名,比如 kpromise.top ,然后 在 ~/.bashrc 文件的末尾 加入:

TZ='Asia/Shanghai'; export TZ

IP="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
HOSTNAME=$(hostname)
NOW=$(date '+%Y-%m-%d %H:%M:%S')
JSON=$(curl -H "Authorization: Bearer 5930c0c4ac416a" ipinfo.io/$IP)
CITY=$(echo $JSON | jq -r '.city')
PROVINCE=$(echo $JSON | jq -r '.region')
COUNTRY=$(echo $JSON | jq -r '.country')
LOC=$(echo $JSON | jq -r '.loc')
ORG=$(echo $JSON | jq -r '.org')i
echo -e '有人登录了您的服务器 '$HOSTNAME' , 以下是具体信息\n\n\n时间: '$NOW'\n\n登录地点:'$COUNTRY'-'$PROVINCE'-'$CITY'\n\n具体经纬度:'$LOC'\n\n运营商信息:'$ORG | mail -r 'chun@kpromise.top' -s 'SSH Login Notification' kpromise@qq.com

这里,你可以把 chun@kpromise.top 改为你自己的发件地址(不需要配置第三方邮件服务器信息),后面的 kpromise@qq.com  改为你要接收邮件的邮箱。jq 是  shell json 解析利器,以后有空再做介绍吧,另外,配置域名的 spf 记录。

配置 域名 spf 记录

spf 记录 本质上是新建一个 txt 记录,主机记录 @,value  大致可以是  v=spf1 include:spf.kpromise.top -all   这里 spf.kpromise.top 改为你自己的 spf 域名,然后新建 A 记录,主机记录 为 spf 值为 邮件服务器 ip

full-stack-trip

Share
Published by
full-stack-trip
Tags: ssh

Recent Posts

Android 自定义 View 入门

说来惭愧,工作数年,连基本的自…

4 年 ago

retrofit 同时支持 xml 和 json

retrofit 解析 jso…

4 年 ago

mysql - 存储过程 从入门到放弃

最近有个报表的需求,于是乎用了…

4 年 ago

奶嘴战略 - 你不得不知道的扎心真相(一)

一句:英雄枯骨无人问,戏子家事…

4 年 ago

acme.sh 的简单使用

acme.sh 是纯 shel…

4 年 ago

wrk -更现代化的http压测工具

wrk 是一款更现代化的 ht…

4 年 ago