ssh远程安全登录,使用密钥登陆

在linux服务器下,我们经常使用远程登录服务器,那么经常使用的小工具就是ssh,这个ssh非常方便,使用ip和用户名密码即可登录,但是这样也有缺点,这很容易被一些hack暴力破解,因此我们需要一些安全机制,这里我们简单设置两点。

1、很多同学在ssh远程登录的时候会使用root登录,殊不知这样很危险,特别容易被暴力破解。因此我们需要禁止掉root远程登录服务器,ssh的相关配置都在/etc/ssh下面,其中sshd_config是服务器端的配置文件。我们如果要禁止root远程登录,可以这样配置

vim /etc/ssh/sshd_config
PermitRootLogin yes

将以上的配置改为

PermitRootLogin on

2、禁止了root远程登录,我们再开启密钥文件验证登录。同样的编辑这个文件。

vim /etc/ssh/sshd_config

将这三行的注释去掉

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

这样我们就开启了密钥登录验证,下面我们来建立公钥和密钥对。因为我们禁止了ssh的root远程登录,因此我们需要一个普通账户,可以新建一个账户

useradd xiaotiejiang

例如这里我要添加一个用户,这个用户我不想使用key登陆,可以这样

useradd gaoxueping                                //添加用户名
passwd gaoxueping                               //设置密码,会自动提示,你输入密码的
usermod -g root gaoxueping                 //设置加入root组
groups gaoxueping                               //查看用户所在的组
userdel  -r gaoxueping                     //删除用户和用户所有的相关信息

你可以查看当前系统下可以ssh登陆的用户:

awk 'BEGIN{FS=":"}$7~/sh$/{print $1}' /etc/passwd

附:如果添加一个ftp账号(当然要安装了vsftp)

adduser –g ftp –d /home/test username

这个用户将被添加到ftp组,他的目录为`/home/test/“
然后给这个用户增加一个密码

passwd username

当然,如果你要禁止这个用户可以切换到上一级目录例如/home/,可以修改配置文件

vim /etc/vsftpd/vsftpd.conf

添加:

chroot_list_enable=NO
chroot_local_user=YES

如果删除这个账号使用

userdel -r xiaotiejiang

有时候正确安装了vsftpd,也按照争取的方法建立了ftp用户在登录的时候报出错误

500 OOPS:cannot change directory:/root

这是为什么呢,我们先查看 SELinux 的状态

#查看ftp的状态
sestatus -b | grep ftp

这个时候你会看到

ftp_home_dir          off  
tftpd_disable_trans   off

okay,我们将其开启

setsebool -P ftpd_disable_trans on

此时我们可能会遇到以下错误

libsemanage.dbase_llist_set: record not found in the database (No such file or directory).
libsemanage.dbase_llist_set: could not set record value (No such file or directory).
Could not change boolean ftpd_disable_trans
Could not change policy booleans 

可是试一下这样解决

/usr/sbin/setsebool -P ftp_home_dir 1

如果不能解决,就这样做

setsebool allow_ftpd_full_access 1
setsebool allow_ftpd_use_cifs 1
setsebool allow_ftpd_use_nfs 1
setsebool -P ftp_home_dir 1
setsebool httpd_enable_ftp_server 1
setsebool tftp_anon_write 1
service vsftpd restart

然后重启服务即可或者

setsebool -P  ftp_home_dir  on

现在ftp应该可以正常连接和上传了,那我们也再转回到本文正题:
然后切换到这个账号

ssh-keygen -t rsa

这个命令是基于openssh的,centos下默认安装,可以查询一下

rpm -qa | grep ssh
openssh-4.3p2-82.el5
openssh-clients-4.3p2-82.el5
openssh-server-4.3p2-82.el5

接下来会询问你密钥文件存储位置以及你的登录密码,公钥密钥对位置默认即可,直接敲回车。密码自己设一下。
这时候在你的用户名目录下的.ssl/下面就多了两个文件

id_rsa   id_rsa.pub

其中我们需要将公钥文件改个名字

mv id_rsa.pub authorized_keys

这个公钥文件保存在服务端,是为了和客户端的密钥文件进行验证的。okay,我们将id_rsa文件下载到本地(如果权限不够,请切换至root账户,若ftp到本地失败,请更改文件权限),然后使用puttygen.exe,点击conversions→import key,导入id_rsa生成*.ppk文件
我们在服务端重启sshd服务

/ect.rc.d/init.d/sshd restart

至此,我们就大功告成了。如果你在服务器已经生成了公钥和密钥,那么你可以本地同过puttygen的Generate按钮生成密钥,然后将内容复制到服务器的~/.ssh/authorized_keys中,修改器权限,然后修改配置文件即可使用密钥

设置FTP用户的主目录

默认的用户主目录是,比如你新建一个用户useradd -m -c "comment" -s /bin/bash test

/home/$USER
# 设置用户配置文件目录,没有则新建
user_config_dir=/etc/vsftpd/userconfig
# 设置用户主目录
echo "local_root=/data1" > /etc/vsftpd/userconfig/test

设置用户列表,没有则新建

userlist_file=/etc/vsftpd/user_list

比如新建完成一个用户后可以

echo "test" | tee -a /etc/vsftpd/user_list

Reference

How to Install, Configure and Secure FTP Server in CentOS 7 – [Comprehensive Guide]
How To Install an FTP Server on CentOS 7 With VSFTPD

Avatar photo

About Blackford

这是个最好的时代,这是个最坏的时代,这是个充满希望的春天,这是个令人绝望的冬天,我们前面什么都有,我们前面什么都没有。梦想,让我们一次次的走远,又一次次的回头,一个关于人生的梦想还在不断奔跑,带着喜悦和疼痛,不过一切才刚刚开始,并且直到今天也远远没有结束
This entry was posted in 架构运维 and tagged , . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注