新的 Centos 服务器初始化配置
当你初次创建新的 Centos 服务器的时候, Centos 默认的配置安全性和可用性上会存在一点缺陷(运维人员往往会有初始化的脚本)。为了增强服务器的安全性和可用性,有些配置你应该尽快地完成。 这篇文章大致从这方面去讲 - 账号安全 - ssh 安全 - 防火墙 - 交换区文件(swap file)
用户密码安全
关于 root 用户
root 用户是在linux环境下拥有非凡权限的的超级管理员。因为root用户的权限很高,所以在日常使用中不建议使用。这是因为 root 用户能做出一些非常有破坏性的行为,甚至是事故。(比如是臭名昭彰的rm -rf /
,或者你会对这篇文章《Linux 中如何避免 rm -rf /*》感兴趣) 下一步,我们为了日常工作会设置一个权限较小的替代用户。我们会教你当你需要更大的权限的时候怎样获取。
创建一个新的用户
这个例子会创建一个用户叫 demo,你可以替换成你喜欢的用户名:
adduser demo
下一步,为新的用户分配密码(再次说明,用你刚创建的用户替换demo)
passwd demo
输入一个强密码,然后再重复输入以完成验证。
用户权限
现在,我们已经有了一个普通权限的用户。然而我们有时需要执行一些管理员任务。 为了避免要注销普通用户,然后用 root 用户重新登录,Linux 中有个优雅的解决方式,系统授权特定用户或用户组作为 root 或他用户执行某些(或所有)命令系统。在这个用户组的用户在每条命令前加个单词 sudo,就可以用管理员权限执行命令。
安装 sudo
有些版本会没有 sudo
命令的,所以首先要安装 sudo
yum install -y sudo
属于wheel
用户组的用户可以使用sudo
命令。 在 RedHat 系只需我们需要添加用户到那个wheel
组。属于wheel
组的用户可以使用sudo
命令。 以root
的身份执行以下命令,会将新用户添加到wheel
组中(将 demo 替换成你的新用户)
gpasswd -a demo wheel
ssh 安全
保护你的服务器的下一步是为你的新用户设置公钥认证。通过使用 SSH 私钥登录来会提高服务器的安全性。
生成密钥对
如果你没有包含公钥和私钥的密钥对,你需要生成一个。如果你已经有了想要使用的密钥,请跳到复制公钥的步骤。 要生成新的密钥对,请在本地机器终端输入以下命令:
ssh-keygen
假设你的本地用户叫 localuser
,你会看到的输出如下所示
ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
按回车键以接受这文件名和路径(或者输入新的名称) 下一步,系统会提示你输入密码确保密钥的安全。你可以输入密码或者将密码留空。 注意:如果你将密码留空,你可以用私钥进行身份验证,不输入再输入密码。如果你输入密码了,你需要私钥和密码才能登陆。使用密码保护密码会更加安全,但两者都有自己的用途,并且都比基本密码验证更安全。 这会在 localuser 的Home
(主)目录的 .ssh
文件夹 中生成一个私钥 id_rsa
和一个公钥 id_rsa.pub
。记住私钥不要和任何不该访问你服务器的人共享。
复制公钥
生成 ssh
密钥对后,你需要将你的公钥复制到新的服务器上。我们将介绍两种简单的方法来做到这点。
方案一: 使用 ssh-copy-id
如果您的本地计算机安装了 ssh-copy-id ,则可以使用它将你的公钥安装到你拥有登录凭据的任何用户。 执行 ssh-copy-id脚本需要指定要安装密钥的服务器的用户名和 IP 地址来,如下所示:
ssh-copy-id demo@SERVER_IP_ADDRESS
在提示符处输入密码后,你的公钥用会被添加到远程用户的.ssh/authorized_keys
的文件中。现在可以使用相应的私钥登录到服务器了。
方案二:手动配置密钥
1.如果服务器上没有.ssh/authorized_keys
文件, 要先创建.ssh
文件夹以及.ssh/authorized_keys
文件
cd ~
mkdir .ssh
chmod 700 ~/.ssh
cd ssh
touch authorized_keys
chmod 600 authorized_keys
2.复制公钥内容到服务器上
scp id_rsa.pub userName@host:/home/userName/.ssh/wait_to_authorized_key
3.将公钥字符串添加到authorized_keys
文件中
cat wait_to_authorized_key >> authorized_keys
禁止 root 用户登录
现在我们有了新用户,通过修改 SSH 的守护进程(允许我们远程登录的程序)的配置来禁止远程SSH访问 root 用户,这样可以更好第保护我们的服务器。 /etc/ssh/sshd_config
中
#PermitRootLogin yes
改成
PermitRootLogin no
- (可选) 禁止密码登录: 把
PasswordAuthentication yes
修改为PasswordAuthentication no
然后重载一下ssh
的配置
sudo systemctl reload sshd
现在,在我们退出服务器之前,我们应该测试我们的新配置。直到我们确认可以成功建立新的连接。
更多
你可以看我这篇文章 提高-ssh-安全性
防火墙设置
防火墙能控制端口、应用程序的流量,让服务器更加安全。在 Centos 7 中引进 firewalld 作为 iptables 的前端。firewalld 对比 iptables,有区域(zones)划分, 更简单,能动态配置等特点。 下面主要介绍杂在新服务器中 Firewalld 的基本配置 启动
sudo systemctl start firewalld
设置默认区域
sudo firewall-cmd --set-default-zone=public
查看激活区域
sudo firewall-cmd --get-active-zones
如果激活区域中没有public
的话,可能是没有为public
区域设置接口,你需要用id addr
查看网卡接口(其中 lo 是本地回环接口),再使用设置
sudo firewall-cmd --permanent --zone=public --change-interface=eth0
给防火墙添加允许通过的服务
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=ssh
查看更多可以添加的服务
sudo firewall-cmd --get-services
查看你的 firewalld 信息
sudo firewall-cmd --list-all
重载配置
sudo firewall-cmd --reload
开机启动
sudo systemctl enable firewalld
更多
更多的你可以看官方文档
设置交换分区(可选)
当你服务器内存不够用的时候,就会被访问频率较低暂时放在交换分区的磁盘文件中。现在设置交换分区的公司应该不多,因为不够用还不如直接加内存。分区文件执行效率肯定比内存低很多。 为何还是会有人用分区文件呢? 穷。比如我(逃 下面来讲下如何设置分区文件。 交换分区的大小大概等于或者是物理内存的2倍。 比如说,如果我们需要创建一个4千兆字节的文件,我们可以通过输入以下内容创建在 /swapfile
的交换文件
sudo fallocate -l 4G /swapfile
我们需要限制对文件的访问,要让其他用户或其他进程无法看到写入的内容
sudo chmod 600 /swapfile
格式化分区文件
sudo mkswap /swapfile
告诉系统可以用这个文件可以用于交换
sudo swapon /swapfile
开机自动执行
sudo sh -c 'echo "/swapfile none swap sw 0 0" >> /etc/fstab'
可以用free -m
查看使用的情况
最后
以上几个步骤会让你的 Linux 更加安全和可用,如果你不想每次创建服务器都要做同样的步骤,建议你上面的内容都写都脚本中。
新的 Centos 服务器初始化配置的更多相关文章
- 搭建yum本地源_阿里云CentOS服务器初始化设置
CentOS服务器初始化设置其实不分阿里云或其它服务器了,操作配置过程与步骤也差不多一.挂载硬盘 1.磁盘分区 fdisk -l #查看设备,一般可以看到设备名为/dev/xvdb fdisk /de ...
- CentOS服务器初始化设置
CentOS服务器初始化设置 以阿里云服务器为例 一.挂载硬盘 1.磁盘分区 fdisk -l #查看设备,一般可以看到设备名为/dev/xvdb,或者为/dev/vdb(阿里云io优化型) fdis ...
- Ubuntu 系统服务器初始化配置、安全加固、内核优化和常用软件安装的Shell脚本分享
转载自:https://www.bilibili.com/read/cv13875402?spm_id_from=333.999.0.0 描述: 适用于企业内部 Ubuntu 操作服务器初始化.系统安 ...
- CentOS7 系统服务器初始化配置、安全加固、内核升级优化常用软件安装的Shell脚本分享
转载自:https://www.bilibili.com/read/cv13875630?spm_id_from=333.999.0.0 描述: 适用于企业内部 CentOS7 系列操作服务器初始化. ...
- centos系统初始化配置
.改主机名: sed -i 's#HOSTNAME=.*#HOSTNAME=u05mix06.yaya.corp#g' /etc/sysconfig/network && hostna ...
- 在centos服务器上配置gitlab钩子引发的一系列问题
为了给公司的服务器上搭建gitlab环境并且配置钩子(实现在本地git push之后服务器自动git pull),整了好久,最后终于把问题解决了,下面是记录安装gitlab之后引发的一系列问题: 首先 ...
- ansible-playbook编写服务器初始化脚本
1.原理:通过limit的参数,限制新定义的服务器.即可给新买的服务器初始化优化.(如下图所示) 首先我们编写一个总入口的palybook脚本: init.yml --- - hosts: all u ...
- 【转】CentOS 6 服务器安全配置指南
原文连接: CentOS 6 服务器安全配置指南(通用) Linux 是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 L ...
- Linux - CentOS6.5服务器搭建与初始化配置详解(下)
传送带:Linux - CentOS6.5服务器搭建与初始化配置详解(上) 继续接着上面的安装,安装完后会出现下面界面 点击reboot重启 重启后可以看到下面的tty终端界面 因为这就是最小化安装 ...
随机推荐
- postgresql数据库删除时提示回话 sessions using the database
数据库命令行或者管理工具中执行删除数据库的命令, DROP DATABASE testdb; 的时候,可能会提示: ERROR: database "testdb" is bein ...
- How JavaScript works: an overview of the engine, the runtime, and the call stack
https://blog.sessionstack.com/how-does-javascript-actually-work-part-1-b0bacc073cf
- vue项目 使用Hbuilder打包app 设置沉浸式状态栏
使用 Hbuilder新建好移动app项目后,mainfest.json这个文件里的 plus里设置 statusbar ..... "plus": { "statusb ...
- Java集合:整体结构
一.Java中集合 Java中集合类是Java编程中使用最频繁.最方便的类.集合类作为容器类可以存储任何类型的数据,当然也可以结合泛型存储指定的类型(不过泛型仅仅在编译期有效,运行时是会被擦除的).集 ...
- MySQL GTID你知多少
MySQL在5.6的版本推出了GTID复制,相比传统的复制,GTID复制对于运维更加友好,这个事务是谁产⽣,产⽣多少事务,⾮常直接的标识出来,当然GTID也有限制,对于什么是GTID可以参考我之前的文 ...
- 【原创】《windows驱动开发技术详解》第4章实验总结一
目录 1 实验要求 2 编写过程 2.1 确立整体架构 2.1.1 入口函数——DriverEntry 2.1.2 自定义创建设备函数——CreateDevice 2.1.3 卸载函数——Driver ...
- SpringBoot(10) Servlet3.0的注解:自定义原生Servlet、自定义原生Listener
一.自定义原生Servlet 1.启动类里面增加注解 @ServletComponentScan 2.Servlet上添加注解 @WebServlet(name = "userServle ...
- Perl一行式:字段处理和计算
perl一行式程序系列文章:Perl一行式 获取每行最后一个字段 $ perl -alne 'print $F[$#F]' file.log 这里涉及到了选项"-a".数组@F.这 ...
- [android] activity横竖屏切换的生命周期
模拟器横竖屏切换,ctrl+f11 界面activity会销毁,重新打开创建 第一种做法: 定死就是横屏 在清单文件,<activity/>节点部分,添加属性,设置屏幕朝向 android ...
- Eclipse中提示svn: is already locked的解决办法
eclipse的svn提交不了,报错.提示 svn: is already locked 解决办法:右键项目-------Team------Refresh/Cleanup