一、frp
frp是一个开源,简洁易用,高性能的内网穿透和反向代理软件。支持tcp、udp、http、https等协议。
frp工作原理
服务端运行,监听一个主端口,等待客户端的连接;
客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
服务端fork新的进程监听客户端指定的端口;
外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
mwget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
[root@y ~]# tar -zxvf frp_0.33.0_linux_amd64.tar.gz
[root@y ~]# cd frp/
[root@y frp]# vim frpc.ini
[common]
server_addr = 123.249.27.70
server_port = 7000
token=knee@588588
[tangyufeng]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6014
[root@y frp]# ./frpc -c frpc.ini
2024/07/19 10:19:29 [I] [service.go:282] [a795830584b9cc78] login to server success, get run id [a795830584b9cc78], server udp port [0]
2024/07/19 10:19:29 [I] [proxy_manager.go:144] [a795830584b9cc78] proxy added: [tangyufeng]
2024/07/19 10:19:29 [I] [control.go:179] [a795830584b9cc78] [tangyufeng] start proxy success
y 内⽹主机 不可以被⽹络访问
b 外⽹主机 可以被外⽹通过ip或者域名访问
使⽤b代理a主机,通过访问b主机管理a主机
访问b主机的特定端⼝,管理a主机的22端⼝
现在我们说b为服务端,提供代理服务
y主机是客户端,被代理了
[root@b ~]# tar -zxvf frp_0.33.0_linux_amd64.tar.gz
[root@b ~]# vim frp/frps.ini
[common]
bind_port = 7000
dashboard_user=aaa
dashboard_pwd=aaa
dashboard_port=7500
服务端开启端口(不能关闭防火墙)
[root@b ~]# firewall-cmd --zone=public --add-port=7000/tcp --permanent
success
[root@b ~]# firewall-cmd --zone=public --add-port=7500/tcp --permanent
success
[root@b ~]# firewall-cmd --zone=public --add-port=6000-6100/tcp --permanent
success
关闭防火墙
[root@b ~]# systemctl stop firewalld
[root@b frp]# ./frps -c frps.ini
2024/07/19 11:18:15 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2024/07/19 11:18:15 [I] [service.go:277] Dashboard listen on 0.0.0.0:7500
2024/07/19 11:18:15 [I] [root.go:209] start frps success
2024/07/19 11:23:02 [I] [dashboard_api.go:65] Http request: [/api/serverinfo]
2024/07/19 11:23:02 [I] [dashboard_api.go:58] Http response [/api/serverinfo]: code [200]
2024/07/19 11:23:11 [I] [service.go:432] [6f6257f1b993d562] client login info: ip [192.168.1.11:53138] version [0.33.0] hostname [] os [linux] arch [amd64]
2024/07/19 11:23:11 [I] [tcp.go:63] [6f6257f1b993d562] [tangyufeng] tcp proxy listen port [6014]
2024/07/19 11:23:11 [I] [control.go:445] [6f6257f1b993d562] new proxy [tangyufeng] success
2024/07/19 11:23:21 [I] [dashboard_api.go:65] Http request: [/api/serverinfo]
2024/07/19 11:23:21 [I] [dashboard_api.go:58] Http response [/api/serverinfo]: code [200]
2024/07/19 11:25:09 [I] [dashboard_api.go:65] Http request: [/api/serverinfo]
2024/07/19 11:25:09 [I] [dashboard_api.go:58] Http response [/api/serverinfo]: code [200]
客户机
[root@y frp]# vim frpc.ini
[common]
server_addr = 192.168.1.12
server_port = 7000
[tangyufeng]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6014
[root@y frp]# ./frpc -c frpc.ini
2024/07/19 11:23:11 [I] [service.go:282] [6f6257f1b993d562] login to server success, get run id [6f6257f1b993d562], server udp port [0]
2024/07/19 11:23:11 [I] [proxy_manager.go:144] [6f6257f1b993d562] proxy added: [tangyufeng]
2024/07/19 11:23:11 [I] [control.go:179] [6f6257f1b993d562] [tangyufeng] start proxy success
二、FTP服务 统信os
FTP是一种应用非常广泛并且古老的一个互联网文件传输协议。
文件传输:文件上传与文件下载
主要用于互联网中==文件的双向传输==(上传/下载)、文件共享
跨平台Linux、Windows
FTP是==C/S==架构,拥有一个客户端和一个服务端,使⽤==TCP协议==作为底层传输协议,提供可靠的数据传输
FTP的默认端⼝ ==21号==(命令端⼝) ==20号==(数据端⼝,主动模式下) 默认被动模式下
FTP服务的客户端⼯具
Linux:ftp、lftp(客户端程序)
Windows:FlashFXP(虚拟主机)、FileZilla、IE、Chrome、Firefox
lftp和ftp⼯具区别:
lftp:默认是以==匿名⽤户==访问
ftp:默认是以==⽤户名/密码==⽅式访问
lftp可以批量并且下载⽬录
FTP的两种运⾏模式
在FTP服务中,其⼀共拥有两种模式(主动模式 + 被动模式)
[root@b frp]# yum -y install vsftpd
[root@b frp]# rpm -ql vsftpd //vsftpd相关文件
/usr/lib/systemd/system/vsftpd.service 启动脚本
/etc/vsftpd 配置⽂件的⽬录
/etc/vsftpd/ftpusers ⽤户列表⽂件,⿊名单
/etc/vsftpd/user_list ⽤户列表⽂件,可⿊可⽩(默认是⿊名单)
/etc/vsftpd/vsftpd.conf 配置⽂件(主配置⽂件)
/usr/sbin/vsftpd 程序本身(⼆进制的命令)
/var/ftp 匿名⽤户的默认数据根⽬录
/var/ftp/pub 匿名⽤户的扩展数据⽬录
[root@b ~]# systemctl start vsftpd
[root@b ~]# netstat -lpunt | grep ftp //查看端口情况
tcp6 0 0 :::21 :::* LISTEN 1707/vsftpd
[root@b ~]# firewall-cmd --zone=public --add-port=21/tcp --permanent
success
[root@b ~]# setenforce 0 //关闭selinux
[root@b ~]# vim /etc/selinux/config
SELINUX=permissive
[root@b ~]# systemctl enable vsftpd //开机自启
另一台主机
[root@y ~]# yum -y install vsftpd
[root@y ~]# yum -y install ftp
[root@y ~]# ftp 192.168.1.12
Connected to 192.168.1.12 (192.168.1.12).
220 (vsFTPd 3.0.2)
Name (192.168.1.12:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
回到第一台主机
[root@b ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES ⽀持匿名⽤户访问
local_enable=YES ⽀持⾮匿名⽤户,普通账号登录,默认进⼊到⾃⼰家⽬录
write_enable=YES 写总开关
local_umask=022 反掩码 file:644 rw- r-- r-- dir:755
dirmessage_enable=YES 启⽤消息功能
xferlog_enable=YES 开启或启⽤xferlog⽇志
connect_from_port_20=YES ⽀持主动模式(默认被动模式)
xferlog_std_format=YES xferlog⽇志格式
listen=YES ftp服务独⽴模式下的监听
pam_service_name=vsftpd 指定认证⽂件
userlist_enable=YES 启⽤⽤户列表
tcp_wrappers=YES ⽀持tcp_wrappers功能(FTP限速操作)
创建ftp登录的账户
[root@b ~]# useradd kehu
[root@b ~]# echo kehu | passwd --stdin kehu
[root@b ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
[root@b ~]# systemctl restart vsftpd
另一台主机
[root@y ~]# ftp 192.168.1.12
Connected to 192.168.1.12 (192.168.1.12).
220 (vsFTPd 3.0.2)
Name (192.168.1.12:root): kehu
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
指定用户访问路径
[root@b ~]# vim /etc/vsftpd/vsftpd.conf
local_root=/data/kehu //添加
[root@b ~]# mkdir -p /data/kehu //创建配置文件时的目录(-p多级创建)
限定账户3只能在/data/kehu⽬录下活动
[root@b ~]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES //取消注释(禁锢⽬录补充【禁锢所有⽤户】)
[root@b ~]# systemctl restart vsftpd
另一台
[root@y ~]# ftp 192.168.1.12
Connected to 192.168.1.12 (192.168.1.12).
220 (vsFTPd 3.0.2)
Name (192.168.1.12:root): kehu
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
回第一台
[root@b ~]# dd if=/dev/zero of=/data/kehu/bigfile0 bs=3M count=1
第二台
ftp> ls
227 Entering Passive Mode (192,168,1,12,168,254).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 3145728 Jul 19 08:21 bigfile0
226 Directory send OK.
# vim /etc/vsftpd/vsftpd.conf
105⾏ chroot_list_enable=YES 开启⽤户列表⽂件
107⾏ chroot_list_file=/etc/vsftpd/chroot_list 指定⽤户列表⽂件
echo kehu >> /etc/vsftpd/chroot_list 代表kehu这个账号不会被禁锢在指定⽬录