Linux 远程主机安全配置
开启了新的 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 远程主机安全配置的更多相关文章
- 阿里云服务器Linux CentOS安装配置(三)yum安装mysql
阿里云服务器Linux CentOS安装配置(三)yum安装mysql 1.执行yum安装mysql命令:yum -y install mysql-server mysql-devel 2.启动mys ...
- 在Linux虚拟机下配置tomcat
1.到Apache官网下载tomcat http://tomcat.apache.org/download-80.cgi 博主我下载的是tomcat8 博主的jdk是1.8 如果你们的jdk是1.7或 ...
- 在Linux虚拟机下配置jdk的环境变量
1.到Oracle公司的官网里下载好jdk,网址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...
- Linux网络属性配置
目录 IP地址分类 如何将Linux主机接入到网络中 网络接口的命名方式 ifcfg系列命令 如何配置主机名 如何配置DNS服务器指向 iproute2系列命令 Linux管理网络服务 永久生效配置路 ...
- 阿里云服务器Linux CentOS安装配置(零)目录
阿里云服务器Linux CentOS安装配置(零)目录 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 阿里云服务器Linux CentOS安装配置(二)yum安装svn 阿里云服 ...
- 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署
阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...
- 阿里云服务器Linux CentOS安装配置(八)nginx安装、配置、域名绑定
阿里云服务器Linux CentOS安装配置(八)nginx安装.配置.域名绑定 1.安装nginx yum -y install nginx 2.启动nginx service nginx star ...
- 阿里云服务器Linux CentOS安装配置(七)域名解析
阿里云服务器Linux CentOS安装配置(七)域名解析 1.购买域名 登录阿里云,左侧菜单点击[域名],然后[域名注册],完成域名购买.(一般首年45元) 2.添加域名解析 在域名列表里点击你的域 ...
- 阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署
阿里云服务器Linux CentOS安装配置(六)resin多端口配置.安装.部署 1.下载resin包 http://125.39.66.162/files/2183000003E08525/cau ...
随机推荐
- 对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口
来源:http://www.cnblogs.com/eagle1986/archive/2011/12/06/2278531.html 1:比较和排序的概念 比较:两个实体类之间按>,=,< ...
- deep learning学习记录二
接着我的微博继续八卦吧 微博里问了几个人,关于deep learning和cnn的区别,有不少热心网友给了回答,非常感谢.结合我听课和看文章的理解,我大胆大概总结一下: 在上世纪90年代,neural ...
- orcal 数据库 maven架构 ssh框架 的全注解环境模版 maven中央仓库批量删除lastupdated文件后依然是lastupdated解决方法 mirror aliyun中央仓库
批量删除文件,得用批处理文件,文件名随便,路径改成你的Repository,代码如下 rem 这里写你的仓库路径 set REPOSITORY_PATH=d:\repo rem 正在搜索... for ...
- Cantor表
题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 - 2/1 2/2 2/3 2/4 - ...
- 高级同步器:交换器Exchanger
引自:https://blog.csdn.net/Dason_yu/article/details/79764467 一.定义每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹 ...
- 序列化serialize()与反序列化unserialize()的实例
在写序列化serialize与反序列化unserialize()时,我们先来看看: serialize - 产生一个可存储的值的表示 描述 string serialize ( mixed $valu ...
- 【linux下dhcp服务的简单搭建及优化部署】
dhcp server: 1::vim /etc/sysconfig/network-scripts/ifcfg-scfg:配置 server的 static IP: 2:vim /etc/dhcpd ...
- Java : 实体类不能序列化异常
当修改实体类之后调用接口出现不能序列化的异常时,一定要检查实体之间的关系是否都是正确的. could not serialize; nested exception is org.hibernate. ...
- PHP基础 (麦子学院 第二阶段)
zendstudio 10.0破解版,新建完项目后,首先修改项目的编码方式,统一改成utf-8 (选中项目,再右键properties:Text file encoding).修改字体大小. apac ...
- ctf题目writeup(6)
2019.2.2 依旧是bugku上面的题目,地址:https://ctf.bugku.com/challenges 1. 解压后是60多个out.zip,都是真加密,里面都是1kb的data.txt ...