第十七章:第52节Linux安全防护——ssh安全大总结

更新于:2020-12-28 14:34:08

前几节讲服务器安全,一直在讲ssh。因为做好服务器的安全,遵循这样两条规则:


第一条:启用尽可能少的服务【减少对外开放端口】。

第二条:管好服务器的ssh。


ssh安全了,服务器也就相对安全了。


根据前几节所讲,这节对ssh安全做个全面总结:


1)禁止root用户远程登录


root是linux里的最高统帅了,就它权限最大,可以在系统里畅通无阻。也就是因为这个原因,它是我们的重点保护对象。对于管理linux系统,一个最基本的建议就是:


平时登陆和工作的时候都使用普通用户进行操作,在需要修改系统设置使用特级权限时,再切换到root用户(su  - root)。这样可以最大限度地避免因为误操作造成对linux系统的破坏。另外因为root用户是每个linux系统里都内置的,恶意的黑客可能会拿它做用户名然后尝试用不同的密码登陆密码,所以还是自己新建一个帐号,这样用户名被猜中的机率就很低了,再禁止root用户登陆,想猜密码?先猜用户吧。


在sshd_config中修改参数:PermitRootLogin  no,重启sshd服务。


2)禁止空密码登陆


一般来说linux系统都会内置很多帐号,而这些用户的密码我们是不知道的。谁知道哪天哪个linux的发行版,对其中的帐号设置空密码或者指定的密码呢?所以还是禁止为妙,省得夜长梦多。


在sshd_config中修改参数:PermitEmptyPasswords  no,重启sshd服务。


3)使用非默认端口,非22端口


服务器被黑客盯上,并不是有人特意跟你过不去,人家随机地用软件扫了一个ip段,而你的ip正好在里面,而人家的扫描规则就是:是否开启22端口。这个时候如果你服务器没有禁止root登陆,root的密码又是简单的123456 or 000000 or 111111这些地球人都知道的密码的话,你的服务器不黑,谁的被黑?所以安全从简单的小事儿做起,你向前移动一小步,你的服务器安全就进步一大步。还等什么?先修改默认端口。


在sshd_config中修改参数:Port 端口号,重启sshd服务。


4)限制ssh监听的ip


在服务器有多个ip的时候,设置ssh服务器只监听指定的ip未尝不是一个好办法。例如一组服务器中,肯定会组成内网和外网两个小的局域网,这时候只让不起眼的一两台机器的ssh服务监听到公网ip上,其它的机器ssh只监听内网ip,通过另外的一两台机器登陆进行管理,这样做会安全多。


在sshd_config中修改参数:ListenAddress 服务器内网IP,重启sshd服务。


5)使用的协议版本2: ssh v2


ssh协议有两个版本,v2要比v1安全高效,v1版本钥匙和锁头默认不会变化,数据传输不安全;v2版本钥匙和锁头会经常变化,数据传输更安全。ssh服务器默认会接受两种版本的连接。用SSH 2.x的客户端程序不能连接到SSH 1.x的服务程序上。为了保证服务器的安全,咱们可以定义服务器只使用v2:


在sshd_config中修改参数:Protocol 2,重启sshd服务。


6) 禁用密码登陆,推荐使用密钥登录,并且私钥使用强密码加密


这是上节介绍的内容。详情看上一节。


密钥登录,ssh服务绝对又是一个质得提升:能够拿到管理员本地私key,又知道服务器登陆的用户名和端口,这绝对不是一件简单的事情。


7)限制连接客户端IP,仅保证有限的机器能够远程访问


再拿出最后一招杀手锏:限制ssh服务连接的客户端ip。我们前面提到一组服务器我们只留一两台机器可以远程访问,这样这两台机器的安全又成了重中之重。怎样再保证一下这两台机器的安全呢?我们可以限制连接这两台机器的ip。例如:这两台机器只允许公司的出口ip进行访问,这样就再次提高了服务器的安全系数。想想如果有一个黑客,能够进入你们公司的办公网络,能够拿到你的私key,又能知道只有你才知道的服务器的用户名和登陆的端口,以及登陆的方式,如果有这样的牛X的黑客,还有什么好防的呢?因为防不胜防啊。看下限制ip的做法:

      在/etc/hosts.allow输入  

      sshd:192.168.1.5:allow(其中192.168.1.5是你要允许登陆ssh的ip,或者是一个网段192.168.1.0/24)  

      在/etc/hosts.deny输入

      sshd:ALL(表示除了hosts.allow中允许的,其他的ip拒绝登陆ssh)  


8)日志


记录好日志,经常做日志分析。 

用户登录成功日志: /var/log/wtmp  , 使用 # last 命令查看

用户登录失败日志: /var/log/btmp , 使用 # lastb 命令查看

查看所有用户上次登录情况: 使用  #lastlog [-u User]


/var/log/auth.log文件不存在

SSh登陆失败的日志查看