分类目录归档:Linux

使用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 安装桌面环境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,就都有了…

CentOS7 防火墙iptables的使用与管理

防火墙概述

在网络安全许多规则中,我认为有一条很重要,那就是给服务器加上防火墙。如果这台服务器是接入公网环境下(有公网IP),那就更不能忽视防火墙。如果简单的把防火墙停掉,那么所有的端口都可能被黑客进行攻击

防火墙可以只开放指定的端口以及规则,如果用好防火墙,那么所有的网络流量都将在自己的掌控之下。我总结一下这几天项目部署,防火墙的使用经验总结

防火墙安装

因为以前经常使用CentOS6、Ubuntu,接触最多最熟悉的也是iptables,所以我选择将原有的firewall替换成iptables,如果你是CentOS7,使用下面命令可以进行替换:

systemctl disable firewalld
sudo yum install -y iptables-services

防火墙启动与停止

开机自启: systemctl enable iptables 
禁止开机自启: systemctl disable iptables
配置保存: service iptables save
重启防火墙: service iptables reload

规则概述

有许多的规则类型,比如说INPUT管理入站(外部流量进来),OUTPUT出站(本机流量流出),FORWARD(处理通过系统路由的数据包)等,这些在我理解应该都是一个个CHAIN(链),然后每个链都有各自的规则,从高到低按顺序依次判断,如下图:

图上有许多Chain,各自的Chain都有规则,这些规则从上到下依次判断,满足即返回

常见的命令参数有-p 协议类型(tcp,udp),–sport(源端口),–dport(目标端口),-s(源IP),-d(目标IP),-j 处理结果(accept允许通过,drop拒绝但不回应,reject拒绝并立刻回应)

常用的命令

允许指定端口通过:
iptables -I