提高服务器安全性能

40

1. 前言

毕竟放了实验室的网站在上面,得注重一下安全性。要是出了问题,影响老板评院士就不好了。

2. 有多紧急?

# 看看自己是什么服务器
lsb_release -a
# Distributor ID:	Debian
# Description:	Debian GNU/Linux 10 (buster)
# Release:	10
# Codename:	buster

# 查看一下我的登陆日志
sudo cat /var/log/auth.log | awk '{$4="";print$0}' | grep caigui | grep -v sudo

# 查看有多少人尝试登陆我的服务器但是失败了
sudo grep sshd.\*Failed /var/log/auth.log | less
# 以上只有近两天的信息 不好统计

# 查看久远一点的日志,auth.log.1
# 以下统计都以这7天的日志为主
sudo cat /var/log/auth.log.1 | grep sshd.\*Failed  | awk '{print $1,$2}' | sort -u
# Apr 16
# Apr 17
# Apr 18
# Apr 19
# Apr 20
# Apr 21
# Apr 22
# auth.log.1这个日志保存了大概一周的

# 计数
sudo cat /var/log/auth.log.1 | grep sshd.\*Failed | wc -l
# 总行数40580
# 40580/7=5797次。平均每天有5797次尝试登陆我服务器失败的记录。平均每分钟4个。

# 查看自己服务器的用户名单
cut -d: -f1 /etc/passwd | sort

# 统计一下有哪些是用了在我的用户名单的账号尝试登陆的
sudo cat /var/log/auth.log.1 | grep sshd.\*Failed | grep -Eo "for \b\w+\b from" | awk '{print $2}' | sort | uniq -c | sort -nr
#   25732 root
#    1076 admin
#      79 mysql
#      35 bin
#      18 sys
#       9 backup
#       8 sshd
#       8 nobody
#       7 uucp
#       7 daemon
#       2 sync
#       2 news
#       2 mail

# 统计一下有哪些新名字
sudo cat /var/log/auth.log.1 | grep sshd.\*Failed | grep -Eo "invalid user \b\w+\b from" | awk '{print $3}' | sort | uniq -c | sort -nr | wc -l
# 1749个新名字
# 看一下前二十名的名字
#    2464 user
#    2456 ubuntu
#     404 test
#     348 oracle
#     184 postgres
#     178 ftpuser
#     166 guest
#     131 usuario
#     131 test1
#     119 debian
#     113 hadoop
#     112 test2
#     111 git
#      95 es
#      89 adm
#      85 dolphinscheduler
#      80 centos
#      79 support
#      75 ubnt
#      66 zabbix
# 有趣的是我的域名,ccgg排在第36名。
# 要搁在之前,我的域名就是我的名字,也就是我的用户名。那就很不妙了。

3. 入手。

3.1 入手的前言。

大致简单了解了一下,有修改ssh端口,修改root及其他用户的用户名和密码,限制ip,及时升级服务器,经常检查登陆日志,设置防火墙等。

3.2 先修改一个ssh端口吧。

# step1
# 先去阿里云服务器管理页面,开放我想要替换的端口

# step2
sudo vim /etc/ssh/sshd_config
# 在#Port 22的下一行,按照相同格式添加一行,添加端口号
# 需要注意的是,要取消掉前面的“#”,这样才能覆盖注释。而且修改时最好先保留原来的port 22

# step3
sudo /etc/init.d/ssh restart

# step4 
# 使用新端口登陆,登陆成功后,注释掉port 22端口后,重启ssh服务

# step5
# 确认22端口登陆不了了,修改完成。再去阿里云服务器管理页面,把能关的端口都关了。

3.3 禁止root远程登录

# step1
sudo vim /etc/ssh/sshd_config

# step2
# 将PermitRootLogin yes改成PermitRootLogin no

# 重启ssh服务
sudo /etc/init.d/ssh restart

3.4 其他提高安全性的方法(暂未应用)

来源于chatGPT

  • 当使用SSH作为远程连接协议时,为了增加服务器的安全性,可以采取以下措施:
  1. 启用多重身份验证: 除了基本的用户名和密码之外,启用多重身份验证可以进一步增加身份验证的复杂度。例如,使用一次性密码令牌或短信验证码等方法来限制访问。
  2. 使用安全密钥: 在SSH连接中使用安全密钥能够提高安全性。将公钥存储在服务器上,只有对应的私钥才能进行身份验证。
  3. 限制SSH root登录: 禁止SSH root登录可以避免攻击者使用该账户来直接访问服务器。取而代之,使用另一个有限制权限的用户账户来进行SSH登录,并在必要时使用sudo提升权限。
  4. 安装和配置入侵检测和防火墙软件: 通过安装入侵检测和防火墙软件,可以检测和防止未经授权或有害的网络流量进入服务器并对其进行攻击。例如,使用iptables来限制特定IP地址的访问,或启用SELinux(安全增强的Linux)来强化服务器的安全性。
  • 这些措施可以一起使用,以提高服务器的安全性,并保护服务器免受潜在的攻击。

3.5 补充一些查看端口状态的命令

sudo netstat -tulpn # 这个命令将显示所有正在监听的 TCP 和 UDP 端口,以及它们所对应的进程。
sudo lsof -i # 这个命令将显示所有当前打开的网络连接及其相关的进程和端口信息。