远程访问及连接ssh、tcp wrappers策略应用和FTP文件传输共享服务
一、ssh远程连接
【1】配置文件
(1)服务端配置文件:/etc/ssh/sshd_config
(2)客户端配置文件:/etc/ssh/ssh_config
【2】ssh基本配置及应用
(1)远程登录的命令格式:ssh username@hostIP
[root@kgc ~]# hostname test02
[root@kgc ~]# bash(临时修改主机名方便下面的实验)
[root@test02 ~]# vim /etc/ssh/sshd_config
Port 22(进入配置文件打开22端口)
使用远程登录的方式登录客户端root用户
[root@test02 ~]# ssh root@192.168.60.60
root@192.168.60.60's password:
Last login: Sun Jul 12 11:12:02 2020
[root@test01 ~]# exit
登出
Connection to 192.168.60.60 closed.
[root@test02 ~]#
参数解释:
exit ###退出当前bash环境
Permission denied ###权限拒绝(密码输错)
(2)禁止使用root用户远程登录
[root@test01 ~]# vim /etc/ssh/sshd_config
PermitRootLogin no(禁用以root身份远程登录)
[root@test01 ~]# systemctl restart sshd(每次修改配置文件均要重启服务)
[root@test02 ~]# ssh root@192.168.60.60
root@192.168.60.60's password:
Permission denied, please try again.
(3)限制切换root用户
[root@test02 ~]# ssh lisi@192.168.60.60
lisi@192.168.60.60's password:
Last login: Sun Jul 12 11:56:27 2020 from 192.168.60.10
[lisi@test01 ~]$ su - root
密码:
上一次登录:日 7月 12 20:25:23 CST 2020从 192.168.60.10pts/2 上
[root@test01 ~]# exit
虽然仅用了以root身份登录,但可以登录客户端其他用户,在切换成root身份,所以要限制切换root用户。
[root@test01 ~]# vim /etc/pam.d/su
auth required pam_wheel.so use_uid
[root@test01 ~]# usermod -g wheel zhangsan(把用户zhangsan加入到wheel组中)
[root@test01 ~]# id zhangsan
uid=1001(zhangsan) gid=10(wheel) 组=10(wheel)
这样就只有在wheel组中的用户可以切换root其余的不可以。
[root@test01 ~]# ssh wangwu@192.168.60.60
The authenticity of host '192.168.60.60 (192.168.60.60)' can't be established.
ECDSA key fingerprint is SHA256:I1y8AwPDuMn4brw9K9N/buO2y4hgZ6+Ft6PJcuVoC58.
ECDSA key fingerprint is MD5:42:47:cb:ec:24:fe:9e:14:6b:77:6d:98:72:73:c4:8b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.60.60' (ECDSA) to the list of known hosts.
wangwu@192.168.60.60's password:
Last login: Sun Jul 12 11:27:52 2020 from 192.168.60.10
[wangwu@test01 ~]$ su - root
密码:
su: 拒绝权限
(4)使用白名单或黑名单
命令格式:
AllowUsers username(用户可以使用任意终端远程登录)
DenyUsers username@host IP(用户不能能使用这一终端进行远程登录)
一般使用白名单,在配置文件中写入允许什么用户使用什么终端登录
[root@test01 ~]# vim /etc/ssh/sshd_config
AllowUsers wangwu lisi@192.168.60.10
####允许wangwu以任何终端登录,lisi以192.168.60.10终端登录
(5)限制密码验证次数
[root@test01 ~]# vim /etc/ssh/sshd_config
#LoginGraceTime 2m(会话超时时间)
#StrictModes yes(在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权)
MaxAuthTries 6(最大密码尝试次数)
#MaxSessions 10(允许创建会话的个数)
#PermitEmptyPasswords no(不允许空密码登录)
PasswordAuthentication yes(使用密码验证登录)
[root@test01 ~]#ssh -o NumberOfPasswdPrompts=8 lisi@192.168.60.60
####设置最大登录次数为8次,默认是3次######
【3】ssh密钥对解释及应用
(1)加密方式
进入配置文件启用相关参数
[root@test01 ~]# vim /etc/ssh/sshd_config
PubkeyAuthentication yes (启用密钥认证)
AuthorizedKeysFile .ssh/authorized_keys(密钥文件默认路径)
(2)应用步骤
1、创建生成密钥对
[caiwu@tes02 ~]$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/caiwu/.ssh/id_ecdsa): (选择默认路径)
Created directory '/home/caiwu/.ssh'.
Enter passphrase (empty for no passphrase): (输入密钥对密码)
Enter same passphrase again: (再确认密码)
Your identification has been saved in /home/caiwu/.ssh/id_ecdsa.
Your public key has been saved in /home/caiwu/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:4XCsX9haLvwHYPwh4OKhfDkITiVyLPFzJaAwEhQo7xw caiwu@tes02
The key's randomart image is:
+---[ECDSA 256]---+
|O*o.. . |
|B=o. o.. |
|++= ...o+ |
|..Eoo .==+. |
|o= = +..S++. |
| .* = o =o |
| . . = .. |
| o . |
| .. |
+----[SHA256]-----+
[caiwu@tes02 ~]$ ls -a /home/caiwu/.ssh
. .. id_ecdsa id_ecdsa.pub
[caiwu@tes02 ~]$
2、上传公钥文件给客户端
[caiwu@tes02 ~]$ ssh-copy-id -i .ssh/id_ecdsa.pub zhangsan@192.168.60.60
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_ecdsa.pub"
The authenticity of host '192.168.60.60 (192.168.60.60)' can't be established.
ECDSA key fingerprint is SHA256:I1y8AwPDuMn4brw9K9N/buO2y4hgZ6+Ft6PJcuVoC58.
ECDSA key fingerprint is MD5:42:47:cb:ec:24:fe:9e:14:6b:77:6d:98:72:73:c4:8b.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
zhangsan@192.168.60.60's password: (输入zhangsan用户的密码)
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'zhangsan@192.168.60.60'"
and check to make sure that only the key(s) you wanted were added.
3、查看客户端公钥信息是否正确
[zhangsan@test01 ~]$ cat .ssh/authorized_keys
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBN7Q6CI+ERkPcsG9vfCNFWt+VcWWQNptxbdxJJ3/sdARpKhnBrW1poJEucVO2C8Sb7XZjd8DpU7kIy5FpaORMUs= caiwu@tes02
[zhangsan@test01 ~]$
4、使用密钥对验证
[caiwu@tes02 ~]$ ssh zhangsan@192.168.60.60
Enter passphrase for key '/home/caiwu/.ssh/id_ecdsa': (输入密钥对的密码)
Last login: Sun Jul 12 21:09:27 2020
[zhangsan@test01 ~]$
5、赋予免密登录权限
因为每次登录要输入密钥对密码,为了方便起见,直接免密登录
[caiwu@tes02 ~]$ ssh-agent bash
[caiwu@tes02 ~]$ ssh-add
Enter passphrase for /home/caiwu/.ssh/id_ecdsa: (密钥对密码)
Identity added: /home/caiwu/.ssh/id_ecdsa (/home/caiwu/.ssh/id_ecdsa)
[caiwu@tes02 ~]$ ssh zhangsan@192.168.60.60
Last login: Sun Jul 12 21:11:53 2020 from 192.168.60.10
[zhangsan@test01 ~]$
【4】ssh客户端的上传和下载
(1)普通的上传和下载
[root@tes02 opt]# ls
ssh_server.txt test02
上传:
[root@tes02 opt]# scp -r test02 root@192.168.60.60:/opt
root@192.168.60.60's password: (root用户登录密码)
[root@test01 ~]# cd /opt
[root@test01 opt]# ls
test02 test03
下载:
[root@tes02 opt]# scp -r root@192.168.60.60:/opt/test03/ /opt
root@192.168.60.60's password:
txt.txt 100% 0 0.0KB/s 00:00
[root@tes02 opt]# ls
ssh_server.txt test02 test03
(2)在线快速上传和下载
[root@tes02 opt]# sftp root@192.168.60.60
root@192.168.60.60's password:
Connected to 192.168.60.60.
sftp> cd /opt(可以在对方的任何目录做任何操作)
sftp> ls(如果写错可以ctrl+backspace删除)
test02 test03
sftp> put ssh_server.txt (上传)
Uploading ssh_server.txt to /opt/ssh_server.txt
ssh_server.txt 100% 17 26.6KB/s 00:00
sftp> ls
ssh_server.txt test02 test03
sftp> get -r test04 (下载)
Fetching /opt/test04/ to test04
Retrieving /opt/test04
[root@tes02 opt]# ls
ssh_server.txt test02 test03 test04
二、TCPWrappers策略的应用
【1】保护原理
TCPWrappers相当于一个简略的防火墙,客户机的访问请求经过TCP wrappers时监听端口号,对请求的端口号进行控制调出相应的网络程序。
【2】访问策略的配置文件(先白后黑)
(1)白名单允许
配置文件:/etc/hosts.allow
[root@tes02 ~]# vim /etc/hosts.allow
sshd:192.168.60.*,20.0.0.20 ####允许192.168.60网段所有以及20.0.0.20主机远程登录
(2)黑名单拒绝
配置文件:/etc/hosts.deny
[root@tes02 ~]# vim /etc/hosts.deny
sshd:ALL(禁止所有进行远程登录)
三、FTP文件传输共享服务
【1】ftp的认识
FTP是 File Transfer Protocol (文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet 上的控制文件的双向传输。同时,它也是一个应用程序( Application )。基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP 的使用当中,用户经常遇到两个概念: 下载 Download )和 上传 Upload )。"下载 文件就是从远程主机拷贝文件至自己的计算机上; 上传 文件就是将文件从自己的计算机 中拷贝至远程主机上。用 Internet 语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
【2】vsftpd的简介
vsftpd 是“ very secure FTP daemon ”的缩写,安全性是它的一个最大的特点。 vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux 、 BSD 、 Solaris 、HP UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。
【3】vsftpd服务的搭建
(1)服务器与客户端之间的网络(同一个网段)
服务器端网卡配置:
客户端网卡配置:
连通性测试
(2)挂载镜像安装vsftpd服务或直接线网yum安装
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:vsftpd-3.0.2-25.el7 ################################# [100%]
或者可以使用线网安装
[root@localhost ~]# yum install -y vsftpd
(3)关闭防火防护,开启服务,查看配置文件和客户机访问站点
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start vsftpd
查看配置文件
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
[root@localhost vsftpd]# cat vsftpd.conf |grep -vE "#"
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
查看站点
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# ls
pub
[root@localhost ftp]#
(4)匿名用户上传下载文件
在服务器端修改上传下载的权限
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES(允许匿名访问)
anon_upload_enable=YES(允许上传)
anon_mkdir_write_enable=YES(允许创建目录和写入)
anon_other_write_enable=YES(允许其他权限和写入,自己添加)
[root@localhost ~]# systemctl restart vsftpd
下载,在站点创建一个文件,客户端连接ftp,下载到客户端本地
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# echo "this is test" > ./test.txt
[root@localhost ftp]# ls
pub test.txt
在客户端进行下载
在客户端执行上传和删除
[root@localhost ftp]# chmod 777 pub/(修改站点目录写入权限)
[root@localhost ftp]# ll
drwxrwxrwx. 2 root root 6 4月 1 12:55 pub
[root@localhost ftp]# cd pub/
[root@localhost pub]# ls
qing.txt
(5)本地用户的上传和下载
新建两个本地用户
[root@localhost ~]# useradd zhangyang
[root@localhost ~]#passwd zhangyang
[root@localhost ~]# useradd zhangqing
[root@localhost ~]#passwd zhangqing(密码自己设置)
在客户端使用ftp使用本地用户连接
但问题是:作为一个普通用户可以随意切换服务器的主目录,很危险,所以要在服务器设置
[root@localhost /]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES(禁锢本地用户切换其他目录)
[root@localhost /]# systemctl restart vsftpd
再到客户机上面就不可以随意切换了。
使用列表限制用户进行ftp连接
[root@localhost vsftpd]# vim vsftpd.conf
userlist_enable=YES
[root@localhost vsftpd]# vim user_list
# If userlist_deny=NO, only allow users in this file(如果在配置文件中写入这个条件是只允许列表中的用户访问)
# If userlist_deny=YES (default), never allow users in this file, and(默认情况下是不允许列表中的用户访问的)
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
zhangyang
(6)虚拟用户上传和下载
1)创建虚拟用户映射文件
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vuser
tom
000000
jack
000000
#########奇数行创建用户,偶数行添加密码##########
2)把映射文件转化成数据库文件
[root@localhost vsftpd]# db_load -T -t hash -f vuser vuser.db
[root@localhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vuser vuser.db
由于虚拟用户密码写在文件中,所以为了安全起见,修改文件的访问权限
[root@localhost vsftpd]# chmod 600 vuser vuser.db
[root@localhost vsftpd]# ll
-rw-------. 1 root root 23 7月 20 11:04 vuser
-rw-------. 1 root root 12288 7月 20 11:07 vuser.db
3)创建一个用户,指定家目录在/opt/vuser下,不允许shell登录
[root@localhost vsftpd]# useradd -d /opt/vsuser -s /sbin/nologin vuser
[root@localhost vsftpd]# cd /etc/pam.d/
[root@localhost pam.d]# cp vsftpd vuser(新建pam认证模块)
[root@localhost pam.d]# vim vuser
auth required pam_userdb.so db=/etc/vsftpd/vuser(这儿的vuser对应的是vuser.db)
account required pam_userdb.so db=/etc/vsftpd/vuser
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
#pam_service_name=vsftpd(为了防止重复注释掉)
guest_enable=YES(允许来宾访问)
guest_username=vuser(来宾名称对应数据库文件名)
pam_service_name=vuser(新建的pam认证模块名)
4)重启服务验证
[root@localhost ~]# systemctl restart vsftpd
在客户端使用虚拟用户登录就可以了
上传的文件属主和属组是vuser
[root@localhost opt]# cd vsuser/
[root@localhost vsuser]# ll
-rw-------. 1 vuser vuser 14 7月 20 10:16 zhangqing.txt
5)修改上传文件的权限
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vudir
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# mkdir vudir
[root@localhost vsftpd]# cd vudir/
[root@localhost vudir]# vim tom
anon_umask=022
再次上传文件,权限就改变为644
[root@localhost opt]# cd vsuser/
[root@localhost vsuser]# ll
-rw-------. 1 vuser vuser 14 7月 20 10:16 zhangqing.txt
-rw-r--r--. 1 vuser vuser 14 7月 20 10:20 zhangqin.txt