防护的意义

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

防护防的是什么

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

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

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

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

防护方案

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

更新系统安全补丁

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

SSH服务增强

更改 SSH 端口

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

在服务器终端运行命令

  1. 打开ssh配置文件后,找到port所在的位置(可用ctrl+w然后搜索port),将前面的 # 去掉,并将22改为其他端口,比如9765.
  2. ctrl+o + Enter保存文件并退出
  3. 重启ssh服务并应用新的配置文件

使用增强型密码

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

禁止 root 登陆

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

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

使用证书来登录

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

密钥的生成

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

切换到ssh文件夹

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

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

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

宝塔面板

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

更改宝塔端口

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

使用用反向代理

一般反向代理配置:

系统规则

安装 UFW 防火墙

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

禁止 Ping

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

安装ufw的设置方式

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

未安装ufw的设置方式

编辑/etc/sysctl.conf文件:

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

防止暴力破解密钥

通过安装 Fail2ban来实现

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