开启了新的 Linux 服务器后,首要任务是做安全配置。

首先更新:

# ubuntu
sudo apt-get update # 获取 apt 源的软件列表
sudo apt-get upgrade # 更新 # centos
sudo yum update # 获取 apt 源的软件列表
sudo yum upgrade # 更新

1. 添加新用户

adduser username  # 比 useradd 更友好,会进入交互模式设置家目录、密码等

# 给予 user sudo 权限
usermod -aG wheel username # CentOS 的 wheel 用户组自动获得 sudo 权限
usermod -aG sudo username # Ubuntu 的 sudo 用户组拥有 sudo 权限 # 如果 adduser 不能使用,或者没有进入交互模式,就改用下面的方法
useradd username
passwd username # 进交互模式,设置用户密码

2. 使用 ssh-key 登录

先在本地机器生成密钥对:

ssh-keygen  # 会进入交互模式,可以指定密钥对保存位置与文件名称

接下来需要把公钥追加到远程主机的 $HOME/.ssh/authorized_keys 文件的末尾($HOME 是 user 的家目录,不是 root 的家目录,看清楚了):

# 传输公钥,默认传输 ~/.ssh/id_rsa.pub
ssh-copy-id -i path/to/key_name.pub user@host # 然后在远程主机上执行(修改权限):
chmod 600 ~/.ssh/authorized_keys

这样你就可以使用秘钥登录了:

ssh <username>@<server-ip> -i <rsa_private_key>  # 私钥默认使用 ~/.ssh/id_rsa

# 举例
ssh ubuntu@111.222.333.444 -i ~/.ssh/id_rsa_for_server

如果无法登录,可以继续下一步。(在下一步会允许使用秘钥方式登录)

3. 禁止密码登录,禁止 root 用户远程登录

编辑 ssh 配置文件 /etc/ssh/sshd_config,修改如下:

PermitRootLogin no  # 禁止 root 登录
PasswordAuthentication no # 禁止密码认证 RSAAuthentication yes # 允许 RSA 秘钥认证
PubkeyAuthentication yes # 允许使用公钥认证登录

然后重启 ssh 服务:sudo service sshd restart

4. 打开防火墙,只开启需要使用的端口

旧版的 linux 基本都使用 iptables 做防火墙,但是它配置特别麻烦。新版的 ubuntu 使用 ufw(底层使用 iptables),而 centos 使用 firewall

4.1 ufw

$ sudo apt-get install -y ufw  # 新版 ubuntu 自带
$ sudo ufw default deny # 默认禁用端口
$ sudo ufw allow ssh # 允许 ssh,这使用了 /etc/services 内的配置,该配置中 ssh 对应端口 22
$ sudo ufw allow http # /etc/services 中 http 对应 80 端口
$ sudo ufw allow 443/tcp # 允许 443 的 tcp 连接
$ sudo ufw --force enable # 开启防火墙
$ sudo ufw status verbose

现在只开启了 22 80 和 443 端口,其他所有端口都会被禁用。

4.2 firewall

systemctl start  firewalld # 启动
systemctl status firewalld # 或者 firewall-cmd --state 查看状态
systemctl disable firewalld # 停止
systemctl stop firewalld # 禁用 # 显示服务列表
Amanda, FTP, Samba和TFTP等最重要的服务已经被FirewallD提供相应的服务,可以使用如下命令查看: firewall-cmd --get-services # 允许SSH服务通过
firewall-cmd --enable service=ssh # 禁止SSH服务通过
firewall-cmd --disable service=ssh sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
sudo firewall-cmd --reload # 重载配置

其他 linux 用户相关操作

参考

Linux 远程主机安全配置的更多相关文章

  1. 阿里云服务器Linux CentOS安装配置(三)yum安装mysql

    阿里云服务器Linux CentOS安装配置(三)yum安装mysql 1.执行yum安装mysql命令:yum -y install mysql-server mysql-devel 2.启动mys ...

  2. 在Linux虚拟机下配置tomcat

    1.到Apache官网下载tomcat http://tomcat.apache.org/download-80.cgi 博主我下载的是tomcat8 博主的jdk是1.8 如果你们的jdk是1.7或 ...

  3. 在Linux虚拟机下配置jdk的环境变量

    1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...

  4. Linux网络属性配置

    目录 IP地址分类 如何将Linux主机接入到网络中 网络接口的命名方式 ifcfg系列命令 如何配置主机名 如何配置DNS服务器指向 iproute2系列命令 Linux管理网络服务 永久生效配置路 ...

  5. 阿里云服务器Linux CentOS安装配置(零)目录

    阿里云服务器Linux CentOS安装配置(零)目录 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 阿里云服务器Linux CentOS安装配置(二)yum安装svn 阿里云服 ...

  6. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  7. 阿里云服务器Linux CentOS安装配置(八)nginx安装、配置、域名绑定

    阿里云服务器Linux CentOS安装配置(八)nginx安装.配置.域名绑定 1.安装nginx yum -y install nginx 2.启动nginx service nginx star ...

  8. 阿里云服务器Linux CentOS安装配置(七)域名解析

    阿里云服务器Linux CentOS安装配置(七)域名解析 1.购买域名 登录阿里云,左侧菜单点击[域名],然后[域名注册],完成域名购买.(一般首年45元) 2.添加域名解析 在域名列表里点击你的域 ...

  9. 阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署

    阿里云服务器Linux CentOS安装配置(六)resin多端口配置.安装.部署 1.下载resin包 http://125.39.66.162/files/2183000003E08525/cau ...

随机推荐

  1. 微信开发----JS-SDK接口

    2018.03.15:GitHub下载代码 208.3.6:更新:我们不再使用JosnHelp返回字典类或者强类型,而是直接返回动态类型,这样就会方便的多. JsonHelp更新详情:微信开发---- ...

  2. 访问oracle数据库

    如果是本地 :sqlplus system/xxx(用户名/密码) 远程到服务器, sqlplus system/xxx(用户名/密码) @IP:port/orcl(orcl为数据库实例)

  3. JS基础——数组API之数组操作(filter、map、some、every、sort)

    var arr = [1,2,3,4];   forEach arr.forEach((item,index,arr) => { console.log(item) //结果为1,2,3,4 } ...

  4. c++cmb

    #include<windows.h> #include<bits/stdc++.h> using namespace std; ]; int main() { printf( ...

  5. ABAP术语-Function Group

    Function Group 原文:http://www.cnblogs.com/qiangsheng/archive/2008/02/13/1067699.html Group of logical ...

  6. 19-2-28Python的了解以及变量、常量、数据类型、if语句的结构

    Python目前有两个大版本,一个是2.x版本,一个是3.x版本. Python2x:源码冗余,混乱:且默认ASCII码,只能识别英文字母数字. Python3x:源码整合,美观,清晰,简单.默认ut ...

  7. springMVC-RESTful约束下dispatcher拦截对象优化

    警告: No mapping found for HTTP request with URI [/management/fonts/glyphicons-halflings-regular.woff] ...

  8. Percona-Tookit工具包之pt-kill

      Preface       Sometimes,we are determined to kill some MySQL connections which are occupying huge ...

  9. CentOS7版本基础使用

    第1章 CentOS7的使用 1.1 为什么要使用CentOS7版本 CentOS7是在CentOS6基础上发布的新版本,与之前的版本相比,主要的更新包括: 1.内核更新到3.10.0 2.支持Lin ...

  10. IDEA的使用方法(三)(改变字体主题)

    今天正式写代码的时候发现,一开始由于破解的太随意,没有设定好主题和字体现在看的有点昏,那么接下来就发一个该如何改变IDEA的字体和主题的教程: File——>setting——>Edito ...