服务器安全设置教程,手把手保护好你的主机(保姆级)

2025-01-09 17:31:42 3点赞 41收藏 1评论
服务器安全设置教程,手把手保护好你的主机(保姆级)

防护的意义

自古以来,攻击和防护就像盾牌和矛处于对立面上。自打有linux系统以来,这两个对立面就一直彼此的升级,又彼此的促进。互联网时代,网站、APP、服务均部署在远程服务器上,这背后牵涉到巨大的经济利益和商业价值,于是各种产业链就有了巨大的攻击动力,所以防护的好可以减少遭受经济损失的概率。 通常你拥有一台服务器时候,它全天运行,并有一个或者多个公网ip。当IP暴露的的那一刻起,服务器就暴露在攻防的第一线。 对于安全问题,安全无小事,但是也不用太紧张,毕竟你的服务器没有太大价值,一般不会招来高水平攻击,通常都是脚本化攻击,用来挂马或者当肉鸡的。 对于前者,只能说要提高技术水平(变成大牛(╹▽╹)),这需要日积月累的经验,不是一天两天能完成的。 而对于后者,只需要做一些普通的防护,既可以防御大部分的攻击(DDOS除外)。

防护防的是什么

通常暴露IP的服务器,在公网上有四大薄弱因素,IP ;端口;用户名;密码

IP:访问的唯一地址,通常恶意脚本用扫描ip段来嗅探真实ip,无法隐藏。 端口:用来访问特定服务的接口。每种服务都会有一个默认端口。 用户名:登录账号的账号名,通常默认的都是root 密码:如果服务器是默认密码或者弱密码,比如123456,888888,这种要破解是在是太容易。

对于用户名和密码,还可能出现另一种情况,比如用户名更改了,而且密码用了大小写带着特殊字符的强密码,依然被破解了。这种情况大概率是被人撞库了,也就是说你用的同样的用户名和账户在别的网站登录了,而这个网站又被拖库,于是明文就到了对方手里了。

当这四个要素都被别人掌握了,你的服务器的最高权限就落在了对方手里(比如挖矿,传播病毒,欺诈,做非法代理)。对于一些普通的恶意脚本,它会迫不及待的榨取你服务器的资源,这时候你登录服务器,可以从进程,cpu和内存占用率来发现异常。而有一些高级脚本,恶意做到相当隐蔽,进程、CPU占用、流量基本没有太大波动,很难被发现。当对方用你的服务器干一些违法的事情,就可能牵连到你,毕竟服务器是你买的!!

防护方案

下面代码系统以Debian为例,Ubantu也是类似操作,centos有些差别(比如apt 换成yum之类的要注意)

更新系统安全补丁

更新系统,把一些系统的漏洞补丁先打上

apt update apt upgrade

SSH服务增强

更改 SSH 端口

更改SSH端口,攻击者无法确认服务与端口的匹配关系,就可以让这些自动扫描的攻击者以为这台服务器不存在。

在服务器终端运行命令

nano /etc/ssh/sshd_config

  1. 打开ssh配置文件后,找到port所在的位置(可用ctrl+w然后搜索port),将前面的 # 去掉,并将22改为其他端口,比如9765.

  2. ctrl+o + Enter保存文件并退出

  3. 重启ssh服务并应用新的配置文件

sudo service sshd restart

使用增强型密码

修改了root密码,注意linux下密码是不显示字符的,修改的密码一定要记住。

passwd

禁止 root 登陆

可以禁止root账户登录来防止root账户和密码一但泄露,别人直接得到root权限的问题。 首先要确保有一个普通用户。

# 新增用户user adduser user

# 打开ssh配置文件 nano /etc/ssh/sshd_config

找到 PermitRootLogin 选项,将前面的 # 去掉,并将值改为 no. 文件保存并退出

# 重启ssh服务 sudo service sshd restart

使用证书来登录

再复杂的密码也有泄露的可能,当然除非每隔一阵就换一次密码,操作起来多少有些麻烦,这时候可以用rsa证书当做密钥来登录服务器。

密钥的生成

rsa证书密钥分为两部分,一部分为公钥,放在服务器上,一部分为私钥,放在本地电脑上。 eg.阿里云服务器可以直接在控制台生成密钥,不需要登录ssh。

切换到ssh文件夹

# root 用户 cd /root/.ssh # 普通用户 cd /home/用户名/.ssh

执行ssh-keygen命令创建密钥对,运行命令后一路回车,选择默认就行。

ssh-keygen -t rsa -b 4096 -C "文件名"

在.ssh文件夹中,有两个文件,id_rsa和id_rsa.pub。其中id_rsa是私钥(这个很重要,不能外泄),id_rsa.pub是公钥。 把公钥拷贝到需要登录的远程服务器或Linux系统上

# 端口不是22的把22改成你的端口 ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.100.10 -p 22

rsa下载到本地保存用于登录即可。

宝塔面板

宝塔面板近几年用的人多了,所以宝塔也被许多不法分子盯上了,通过它来进行渗透

更改宝塔端口

将宝塔的默认 8888 端口,改成其他端口

使用用反向代理

一般反向代理配置:

location / { proxy_pass http://127.0.0.1:8888/; #改成你服务的端口号 rewrite ^/(.*)$ /$1 break; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade-Insecure-Requests 1; proxy_set_header X-Forwarded-Proto https; }

系统规则

安装 UFW 防火墙

带控制台的服务器,比如阿里或者腾讯之类的,可以在控制台上来设置允许的访问端口,不需要安装防火墙

# 安装ufw sudo apt-get install ufw # 查看ufw的状态 sudo ufw status numbered # 添加防火墙规则 # 设置 ufw 使用默认值 sudo ufw default deny incoming sudo ufw default allow outgoing # 允许ssh访问 # 默认22端口ssh访问命令 sudo ufw allow ssh # 其他端口ssh访问命令 sudo ufw allow 9765/tcp comment 'SSH' # 允许 http 连接 sudo ufw allow http # 允许 https 连接 sudo ufw allow https # 启动 ufw 防火墙 sudo ufw enable # 删除防火墙的第四条规则 sudo ufw delete 4 # 重载配置 sudo ufw reload

禁止 Ping

宝塔用户可以直接在宝塔面板上关闭ping访问

安装ufw的设置方式

sudo nano /etc/ufw/before.rules

搜索:echo-request,把 ACCEPT 改成 DROP

未安装ufw的设置方式

编辑/etc/sysctl.conf文件:

echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf

临时设置ping禁止访问,重启后设置失效

# 开启是1,关闭是0 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

防止暴力破解密钥

通过安装 Fail2ban来实现

# 安装fail2ban sudo apt update && sudo apt install fail2ban # 进入fail2ban目录 cd /etc/fail2ban # 复制一份配置文件 sudo cp fail2ban.conf fail2ban.local

默认的是没有配置的,将下面内容加入conf文件

[sshd] enable = ture port = 22 # 注意改成自己对应的端口 filter =sshd logpath = /var/log/auth.log maxretry = 3 bantime = -1

#重启fail2ban服务 sudo service fail2ban restart #查看状态 sudo fail2ban-client status #查看sshd的详细状态 sudo fail2ban-client status sshd #解禁指定IP sudo fail2ban-client set sshd unbanip 192.0.0.1


作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

文章很值,打赏犒劳作者一下

打赏“首席”打赏官正虚席以待!
1评论

  • 精彩
  • 最新
  • 试试

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
41
扫一下,分享更方便,购买更轻松

举报成功

该举报信息「小小值」会优先核实并处理哦!