分类目录归档:运维

使用SSH密钥,更安全快速的免密登陆到Linux服务器

为什么用密钥替代传统的密码

因为密码虽然可以设置复杂一些,但终究还是不方便管理,需要管理员手动输入一遍又一遍。还有密码的安全性也是一个令人担忧的地方,如果要在公网暴露公网IP,我不太敢让服务器提供密码鉴权服务(虽然也有failban,但是依旧不信任),毕竟有那么多攻击四处寻找目标,一切要以安全为核心

如果使用密钥,上面的担忧都可以消除了!因为密钥首先加密长度不短,需要暴力破解没个几年日夜不停的话,被攻击成功的可能性还是比较小的。其次,密钥在手,可以免密登陆,在经常登陆的场景下非常方便,甚至一个私钥我可以登陆所有服务器,而不需要任何密码输入,可以说非常方便

密钥创建

如果是windows,请先安装git-bash,它会给你许多Linux下的工具(不是所有)。如果是Linux,不需要做任何操作,一般都有必备的软件工具

在自己的主目录下创建.ssh主目录(win是C:\users\${user},Linux是~):

ssh-keygen -b 4048

第一次询问文件名称,如果没有即回车,有的话将会输出到当前文件夹下。后面的询问都直接回车即可

正常情况下,应该是生成了test.pub和test这两个文件(我拿test作为示例),test.pub是公钥,是传送给目标Linux服务器的,test是私钥,是用来后续登陆使用的

拷贝公钥到目标服务器

ssh-copy-id -i ./test.pub root@${ssh_ip} -p ${ssh_port}

拷贝最后会要求输入密码,输入之后没有错误即完成了

使用私钥进行SSH登陆

ssh -i ./test root@{ssh_ip} -p ${ssh_port}

更安全的SSH登陆配置

只是密钥登陆还不是最佳实践,更安全的配置请参考我之前的写的文章…

Linux服务器安全建议以及相关配置

能处处都特别理想,我按照我思考的最理想的配置来描述,可能有不对的地方,请多多包涵和指出!

1,永远不要关闭iptables

我以前为了方便开发调试,经常执行iptables -F清空所有规则,但是后面深入了解网络安全,发现这样会导致服务器处于无保护状态。至少要确保每个端口开放都是明确的,否则会很不安全

2,SSH只允许密钥登陆,禁止密码登陆和Root远程登陆权限,修改22端口

如果密码不复杂,那么允许密码登陆也会导致服务器不安全。我推荐使用密钥进行登陆,过几天有空写一些专门的SSH密钥配置流程。

接下来编辑/etc/ssh/sshd_config,修改一些参数:

修改22端口,和禁止Root登陆
禁止密码登陆

3,不能随意给Root权限,在chmod设置权限的时候谨慎给与其他用户组rwx

root账号应该是顶级用户使用的,具体分配给成员各自的账号,在/var/log/下各种操作都可以一目了然。如果都是root权限,那么在出问题的时候很难查出是谁操作的(随意删除操作日志、.bash_history等)。还有,Linux的权限系统限定了owner,group,other users,不能随意的设置文件777权限,这可能会导致部分用户可以读取执行隐私文件…

Linux系统配置lrzsz,配合XShell提升使用体验

在传统的Linux文件上传下载,一般是需要用到SFTP或者Rsync、FTP等协议,然而有一个更快捷更方便的方法,可以让你在上传下载时效率提升N倍

这里用CentOS7作为示例,首先安装相关的软件包:

yum -y install lrzsz

然后,在windows打开xshell,登陆目标服务器的SSH控制台,你可以尝试拖拽一个文件到控制台下,如图:

是不是很方便,它传送的目标地址就是你当前控制台的位置

那么怎么传送当前控制台下的某个文件呢?很简单,输入 sz ${YOUR_TARGET_FILE}即可:

sz mytarget.tar

选择好目标即可进行传送

这个方法真的非常提升效率,减少了误操作,强烈推荐


Linux的LANG语言编码配置

语言编码配置,是非常重要的,如果设置了不恰当的语言编码(比如英文或者GBK),同时你又尝试运行基于UTF-8的Java应用程序,那么乱码概率可是相当的大的!

临时设置:

export LANG=en.US

永久设置

vi /etc/locale.conf ,使目标编码生效即可(去除前面的#号)…

CentOS7在执行groupinstall的时候报错

因为在一开始选择了minmal install,许多依赖包没有安装,输入下面命令执行就可以了

yum groupinstall “Office Suite and Productivity” –setopt=group_package_types=mandatory,default,optional

然后,再执行yum group list,可以看到有许多套件,安装即可(记得组建名要大小写一致,用引号标注):

CentOS7 安装桌面环境Xfce4以及VNC-Server

因为之前一直用Ubuntu来开发,最近想尝尝鲜,用CentOS7来试试它的桌面(过几天装Oracle肯定也要GUI,我提前先试试^_^)

1,首先安装GNOME环境

yum groupremove “GNOME Desktop”

2,安装Redhat的升级包

yum install epel-release

3,安装XWindow的基本系统

yum groupinstall “X Window System”

4,安装Xfce4的group安装包

yum grouplist yum groupinstall Xfce4

5,初始化xstartup

echo ‘#!/bin/sh’ > ~/.vnc/xstartup

echo ‘/usr/bin/startxfce4’ >> ~/.vnc/xstartup

到这里,大致的环境已经配置好了!接下来就是安装VNC-Server,使用VNC进行登陆即可!

yum install -y tigervnc-server

echo ‘VNCSERVERS=”1:root”‘ > /etc/sysconfig/vncservers…

搭建HTTPS服务,为Web应用安全护航

什么是https

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL

https搭建的目的

最大的动力还是因为http明文传输、容易被中间人劫持,同时也是为了让用户浏览安全,所以我尽可能给自己的Web应用加上https证书

搭建环境

操作系统: CentOS7

Linux账号: root

创建https证书

首先执行,创建基本的acme目录:

curl https://get.acme.sh | sh

进入acme目录,并且执行命令

cd /root/.acme.sh

./acme.sh –issue -d laihuanmin.com –dns –yes-I-know-dns-manual-mode-enough-go-ahead-please

按照输出结果,配合域名值记录值,到DNS解析处进行记录添加
看到这是插入的结果,因为我解析了@和www,所以添加了两个TXT记录

在添加之后,再进行二次校验

./acme.sh –renew -d laihuanmin.com –dns –yes-I-know-dns-manual-mode-enough-go-ahead-please

正常情况下,会有Verifying并且Success的字样…

使用OpenSSL加密重要文件

之前需要寄一块机械硬盘给同学,为了确保数据安全,不会被别人在传输途中就轻易读取,我采用tar+openssl进行加密,具体密钥在我和同学手中,这样就可以确保万无一失了!^_^

具体实现命令如下:

加密:dd if=target.tar |openssl des3 -salt -k ${YOUR_PASSWORD} | dd of=archive

解密:dd if=archive |openssl des3 -d -k ${YOUR_PASSWORD} -out target.tar

Windows也是有dd、openssl这些命令的,不过就需要你安装git-bash。只要装好git-bash,什么vi、dd、openssl、curl,就都有了…