系统管理员都应该烂熟于心的:
务必保证系统是 最新的
经常更换密码 - 使用数字、字母和非字母的符号组合
给予用户 最小 的权限,满足他们日常使用所需即可
只安装那些真正需要的软件包
1. 更改默认的SSH端口,先打开sshd_config文件:
vim /etc/ssh/sshd_config
找到下面这行:
#Port 22
“#”号表示这行是注释。首先删除#号,然后把端口号改成目的端口。端口号不能超过 65535,确保要指定的端口号没有被系统或其它服务占用。建议在[维基百科]上查看常用端口号列表。在本文中,使用这个端口号:
Port 16543 2. 使用SSH密钥认证
在通过SSH访问服务器时,使用SSH密钥进行认证是尤其重要的。这样做为服务器增加了额外的保护,确保只有那些拥有密钥的人才能访问服务器。
在本地机器上运行下面命令以生成SSH密钥:
ssh-keygen -t rsa
你会看到下面的输出,询问要将密钥写到哪一个文件里,并且设置一个密码:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): my_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in my_key.
Your public key has been saved in my_key.pub.
The key fingerprint is:
SHA256:MqD/pzzTRsCjZb6mpfjyrr5v1pJLBcgprR5tjNoI20A
完成之后,就得到两个文件:
my_key
my_key.pub 接下来把my_key.pub拷贝到~/.ssh/authorized_key中
cp my_key.pub ~/.ssh/authorized_keys
然后使用下面命令将密钥上传到服务器:
scp -P16543 authorized_keys user@yourserver-ip:/home/user/.ssh/
3. 关闭SSH的密码认证
有了SSH密钥,关闭SSH的密码认证就会更安全。编辑sshd_config,按如下设置: ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
关闭Root登录
下一步关闭root用户的直接访问,使用sudo或su来执行管理员任务。先需要添加一个有root权限的新用户,编辑这个路径下的sudoers文件:
/etc/sudoers/
visudo 这样的命令编辑该文件,会在关闭文件之前检查任何可能出现的语法错误。当你在编辑文件时出错了,很有用。
接下来赋予某个用户root权限,使用用户 admin。确保在编辑后这个文件时使用的用户是系统已有的用户。找到下面这行:
root ALL=(ALL) ALL
拷贝这行,粘贴,然后把root更改为“admin”,如下所示:
root ALL=(ALL) ALL
admin ALL=(ALL) ALL
解释一下这行的每一个选项的含义:
(1) root (2)ALL=(3)(ALL) (4)ALL (1) 指定用户
(2) 指定用户使用sudo的终端
(3) 指定用户可以担任的用户角色
(4) 这个用户可以使用的命令
(LCTT 译注:所以上面的配置是意思是:root 用户可以在任何终端担任任何用户,执行任何命令。)
使用这个配置可以给用户访问一些系统工具的权限。
关闭通过SSH直接访问root,编辑sshd_config ,找到下面这行:
#PermitRootLogin yes
更改为:
PermitRootLogin no
然后保存文件,重启sshd守护进程使改动生效。执行下面命令即可: sudo /etc/init.d/sshd restart
systemctl list-unit-files --type=service | grep enabled 查看跟随系统系统的服务
systemctl disable servicename 关闭不需要的服务  

centos服务器安全技巧的更多相关文章

  1. Bash shell命令记录和CentOS的一些技巧

    ①CentOS的实用技巧: 一.按下ctrl+alt+F2可由图形界面切换至命令行(shell窗口),按下ctrl+alt+F1可由命令行切换至图形界面(前提是安装CentOS时软件选择项选择安装了图 ...

  2. Fail2ban 防止暴力破解centos服务器的SSH或者FTP账户

    次尝试登陆root账户失败的情况.[说明服务器被攻击了]   logtarget = SYSLOG  #我们需要做的就是把这行改成/var/log/fail2ban.log,方便用来记录日志信息 so ...

  3. java servlet上传centos服务器

    前面一篇随笔说了Centos上架设javaWeb运行环境的方法,这篇主要讲打包上传服务器. 一.数据库连接文件.propeties 为了数据库安全,mysql3306端口访问我做了ip访问限制,由于m ...

  4. 阿里云(ECS)Centos服务器LNMP环境搭建

    阿里云( ECS ) Centos7 服务器 LNMP 环境搭建 前言 第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是 ...

  5. SSH框架构建微信公众帐号服务器小技巧

    SSH框架构建微信公众帐号服务器小技巧 熟悉struts2和servlet的同学应该清楚,struts2的方法多样性弥补了servlet单一的doGet 和doPost方法.如果自己的公众账号服务器是 ...

  6. CentOS服务器下对mysql的优化

    原文链接: CentOS服务器下对mysql的优化 一.mysql的优化思路 mysql的优化分为两方面: 1. 服务器使用前的优化 2. 服务使用中的优化 二.mysql的基础优化步骤 1. 硬件级 ...

  7. [转]linux下centos服务器安全设置

    引言: 我们必须明白:最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小话,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置 ...

  8. 再谈腾讯云centos服务器不能登录的解决过程

    上篇文章谈到腾讯云centos服务器不能登录,通过查看监控信息,cpu使用过高,再腾讯云页面使用VNC方式直接登录,然后根据提示信息,关闭导致内存溢出的进程,从而解决问题. 1 问题再现 昨天刚解决了 ...

  9. 腾讯云centos服务器不能登录的解决过程

    在腾讯云上申请了一个centos服务器,最基础的配置,1 核 1 GB 1 Mbps,50G硬盘,主要用来测试程序,练手用.在上面配置了一个mysql数据库,一直使用都没什么问题. 1 问题描述 过了 ...

随机推荐

  1. NodeJs学习日报day8——接口编写

    今天看了黑马NodeJs中关于接口编写以及跨域问题的视频

  2. Fabric2.2中的Raft共识模块源码分析

    引言 Hyperledger Fabric是当前比较流行的一种联盟链系统,它隶属于Linux基金会在2015年创建的超级账本项目且是这个项目最重要的一个子项目.目前,与Hyperledger的另外几个 ...

  3. 使用pip管理库

    2.5 使用pip管理库 安装Python后会默认安装pip工具,该工具可以用来安装.升级和移除库.默认情况下 pip 将从[Python Package Index]https://pypi.org ...

  4. 认识 vh 和 vw 单位

    1. 页面 html 结构 <header> <h1>欢迎来到米修在线</h1> <p>Lorem ipsum dolor sit amet conse ...

  5. python基础练习题(有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?)

    day6 --------------------------------------------------------------- 实例011:养兔子 题目 有一对兔子,从出生后第3个月起每个月 ...

  6. netty系列之:netty中的核心MessageToMessage编码器

    目录 简介 框架简介 MessageToMessageEncoder MessageToMessageDecoder MessageToMessageCodec 总结 简介 在netty中我们需要传递 ...

  7. VSCode 前端常用插件集合

    Visual Studio Code 是由微软开发的一款免费.跨平台的文本编辑器.由于其卓越的性能和丰富的功能,它很快就受到了大家的喜爱. 但工欲善其事必先利其器,以下是本人为前端开发收集的常用的vs ...

  8. 数据结构篇(2) ts实现单链表

    interface NodeItem { prev: NodeItem | null next: NodeItem | null data: any } class NodeItem { prev: ...

  9. Springmvc01-什么是Springmvc

    首先,我们回顾一下什么是MVC 1.什么是MVC   MVC是模型(model),视图(View),控制器(Controller)的简写,是一种软件基本规范 Model(模型):数据模型,提供要展示的 ...

  10. [笔记] K-D Tree

    一种可以 高效处理 \(k\) 维空间信息 的数据结构. 在正确使用的情况下,复杂度为 \(O(n^{1-\frac{1}{k}})\). K-D Tree 的实现 建树 随机一维选择最中间的点为当前 ...