Centos7关于SSH端口的配置

  
  

1. 背景

  刚上完一天的网课,进来阿里云服务器的控制台,看到了下面这些东西,我惊呆了……

  就在前几天才领到的阿里云服务器,对服务器的知识一脸蒙逼,刚装了宝塔(网站还没配置好),就运行了几次脚本代码,然后就来攻击我了?不过看网上说的,这是正常现象~
  然后去查了一些相关的知识,发现说SSH端口默认是22,经常会有一些人大量的扫描然后尝试破解,这是正常操作,欢迎来到互联网!

  
环境:Linux CentOS7以上,阿里云服务器
  

2. last命令、lastb命令

last作用是显示近期用户或终端的登录情况。通过last命令查看该程序的log,管理员可以获知谁曾经或者企图连接系统。

last不加参数:直接执行last命令时,它会读取/var/log目录下名称为wtmp的文件,并把该文件记录的登录系统或终端的用户名单全部显示出来。默认显示wtmp的记录,btmp能显示的更详细,可以显示远程登录,例如ssh登录。

Linux lastb命令用于列出登入系统失败的用户相关信息。

lastb不加参数:单独执行lastb指令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。
  
下面的参数两者通用
-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
-d:将IP地址转换成主机名称;
-f <记录文件>:指定记录文件;
-n <显示列数>或-<显示列数>::设置列出名单的显示列数;
-R:不显示登入系统的主机名称或IP地址;
-x:显示系统关机,重新开机,以及执行等级的改变等信息。

第一列:用户名;
第二列:终端位置(pts/0伪终端,意味着从SSH或telnet等工具远程连接的用户,图形界面终端归于此类)
第三列:登录ip或者内核;(如果是:0.0或者什么都没有,意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中)
第四列:开始时间;
第五列:结束时间;(still login in 还未退出 down 直到正常关机 crash 直到强制关机)
第六列:持续时间。
  

  • uptime:查看系统从上次开机到现在运行多久了
  • cat /var/log/secure | awk '/Failed/{print $(NF-3)}'| sort| uniq -c| awk '{print $2"="$1;}':统计失败次数
      

3. SSH更改端口

  ssh的访问如果都利用22端口,则会容易被攻击,修改一个端口号可增强一定的安全性。
  

【第一步】


修改配置文件sshd_config里端口号(建议使用 1024 以上的)。

vim /etc/ssh/sshd_config

找到Port 22这一行(一定不要删除22号!),发现已经被注释了,将注释解开,并添加一行Port 2333,保存退出。

【第二步】

重启SSH

systemctl restart sshd

查看端口是否更改

netstat -ntlp | grep 2333

一定要保留原有的22端口,在加上自己的端口、更新保存之后,如果直接断开使用新的端口登陆,可能会发现以下错误:

  远程连接不上,这里有一点就是记得去服务器控制台配置规则,添加你新更改的端口,然后用默认的22连接SSH,进去后还需要修改防火墙的规则。
  CentOS7默认的防火墙不是iptables,而是firewalle。

防火墙是整个数据包进入主机前的第一道关卡。防火墙主要通过Netfilter与TCPwrappers两个机制来管理的。
1)Netfilter:数据包过滤机制
2)TCP Wrappers:程序管理机制
关于数据包过滤机制有两个软件:firewalld与iptables
iptables通过控制端口来控制服务,而firewalld则是通过控制协议来控制端口。

firewalld的指令

systemctl status firewalld:查看防火墙的状态,看到active(running)就意味着防火墙打开了;
systemctl stop firewalld:关闭防火墙,如果看到inactive(dead)就意味着防火墙关闭了;(关闭后重启会恢复回原来的状态)
systemctl disable firewalld:关闭后重启不会恢复回原来的状态;
systemctl start firewalld 开启的同理关闭的 systemctl enable firewalld

【第三步】

向防火墙中添加端口,显示sucess则成功。

firewall-cmd --zone=public --add-port=2333/tcp --permanent

重新加载防火墙规则

firewall-cmd --reload

查看端口是否添加成功,成功的话返回yes

firewall-cmd --zone=public --query-port=2333/tcp

拓展知识

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

DAC:
  在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。只要访问这个资源的进程符合以上的条件就可以被访问。
  而最致命问题是,root 用户不受任何管制,系统上任何资源都可以无限制地访问。这种权限管理机制的主体是用户,也称为自主访问控制(DAC)。

MAC:
  在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。
  这样一来,即使进程是以 root 身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。进程的活动空间也可以被压缩到最小。
  即使是以 root 身份运行的服务进程,一般也只能访问到它所需要的资源。即使程序出了漏洞,影响范围也只有在其允许访问的资源范围内。安全性大大增加。这种权限管理机制的主体是进程,也称为强制访问控制(MAC)。

【第四步】

先安装SELinux的管理工具: semanage (已安装的话略过)

yum provides semanage

发现下载时报错,是因为还要先安装其依赖工具包 policycoreutils-python

yum install policycoreutils-python

安装好之后,可以直接使用 semanage 命令,查询当前 ssh 服务端口

semanage port -l | grep ssh

向 SELinux 中添加 ssh 端口

semanage port -a -t ssh_port_t -p tcp 2333

验证 ssh 端口是否添加成功

semanage port -l | grep ssh

添加成功之后就可以重启 ssh 服务了

systemctl restart sshd.service

【第五步】

关掉当前终端,确保已在安全组添加自己新的SSH端口,然后登陆时使用新的端口号进行登陆,即可成功!

查看当前系统对外开放的端口

firewall-cmd --list-ports

如果要关掉哪个端口,下面两个步骤:
修改配置文件sshd_config里端口号(将不需要的删除)

vim /etc/ssh/sshd_config

删除firewall防火墙中的端口

firewall-cmd --zone=public --remove-port=2333/tcp --permanent

关闭semanage中的端口

semanage port -d -t ssh_port_t -p tcp 2333

重新加载防火墙规则

firewall-cmd --reload

重启 ssh 服务

systemctl restart sshd.service


4. 结束

  新手上路,请多指教!

发布了17 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/fengge2018/article/details/104702129