zoukankan      html  css  js  c++  java
  • 新的 Centos 服务器初始化配置

    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 更加安全和可用,如果你不想每次创建服务器都要做同样的步骤,建议你上面的内容都写都脚本中。

  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/jojo-feed/p/10169769.html
Copyright © 2011-2022 走看看