Linux入门攻坚——24、BIND编译安装、Telnet和OpenSSH

BIND编译安装

对于没有rpm包,需要源代码编译安装。

1、下载源代码:bind-9.12.2-P1.tar.gz,解压:tar -xf bind-9.12.2-P1.tar.gz
2、完善环境:
  1)增加用户组named:groupadd -g 53 named
  2)增加用户named(系统用户):useradd -r -u 53 -g  named named 
3、执行configure:进入加压后的目录,执行
    ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
    make
    make install
4、编译安装后,没有配置文件,即没有named.conf和named.rfc1912.zones等配置文件;没有rndc相关的配置文件;所以需要手工建立。同时相关命令也不能直接调用,相关库文件、头文件、资料文件需要添加到搜索路径中,即导出这些文件:

1)导出二进制命令路径,需要将路径输出到PATH环境变量中:在/etc/profile.d/下建立named.sh文件,内容如下:  export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH
然后重读一下文件:. /etc/profile.d/named.sh  ,然后就可以直接调用这些命令了。
  2)导出库文件,其他程序用到这些开发库,如果不导出,也无法使用,即找不到,所以要导出:
在/etc/ld.so.conf.d/下新建named.conf文件,内容是bind的库文件位置:
/usr/local/bind9/lib
然后要通知系统重读此配置文件,生成库文件搜索路径:ldconfig -v
  3)导出头文件:ln -sv /usr/local/bind9/include/ /usr/include/named
  4)导出帮助手册,即man目录,即将安装的man目录加入到搜索路径中,编辑/etc/man.config文件:添加MANPATH路径:

  5)创建bind的配置文件/etc/named/named.conf,因为我们编译安装是配置了配置文件路径是/etc/named。

options {
        directory "/var/named";    //全局配置只配置这一项就可以运行了,其他采用默认配置
};

zone "." IN {
        type hint;
        file "named.ca";
};

zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};

然后这些库文件也需要我们自己创建:/var/named/named.ca、/var/named/localhost.zone、/var/named/named.local
根节点库文件,可以通过:dig -t NS . @ip获得,这里ip是可以连接互联网的机器:
将结果拷贝到named.ca中:dig -t NS . @192.168.138.2 > /var/named/named.ca
创建解析库文件:/var/named/localhost.zone:

$TTL 1d
@	IN	SOA	localhost.	admin.localhost. (
			2024052401
			1h
			5m
			7d
			1d )
	IN	NS	localhost.
localhost.	IN	A	127.0.0.1

解析库文件:/var/named/named.local
 

$TTL 1d
@	IN	SOA	localhost.	admin.localhost. (
			2024052401
			1h
			5m
			7d
			1d )
	IN	NS	localhost.
1	IN	PTR	localhost.

6)修改文件权限:
  /var/named/下的所有文件:chmod 640 ./*   ;  chown :named *
  chmod 640 /etc/named/named.conf   ; chown :named /etc/named/named.conf
5、启动服务,成为缓存名称服务器:
  named -u named -f -g -d 3,运行于前台
  named -u named,运行于后台

启动过程中多次出现某目录或文件权限不够的提示,即permission denied,修改其属组权限后,系统运行正常

6、配置rndc,使用rndc工具时,提示
[root@study610-f2 named]# rndc reload
rndc: neither /etc/named/rndc.conf nor /etc/named/rndc.key was found
使用rndc-confgen产生:

按照提示分别拷贝相关内容到rndc.conf和named.conf中

# 以下为named.conf文件内容
options {
	directory "/var/named";
};

zone "." IN {
	type hint;
	file "named.ca";
};

zone "localhost" IN {
	type master;
	file "localhost.zone";
	allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
	type master;
	file "named.local";
	allow-update { none; };
};

zone "mytestcc.com" IN {
	type master;
	file "mytestcc.com.zone";
	allow-update { none; };
};

# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
      algorithm hmac-sha256;
      secret "JS3jsXcMavvFVDGsjokYVhvml8h5dhwnvvrZJElW0F0=";
};

controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf

# 以下为rndc.conf文件内容
# Start of rndc.conf
key "rndc-key" {
	algorithm hmac-sha256;
	secret "JS3jsXcMavvFVDGsjokYVhvml8h5dhwnvvrZJElW0F0=";
};

options {
	default-key "rndc-key";
	default-server 127.0.0.1;
	default-port 953;
};
# End of rndc.conf

重新启动named进程,即可使用rndc进行管理。

远程登录
登录到主机中,经历了 本地终端——>远程终端——>安全远程终端 几个阶段,最开始,主机提供相应的硬件接口,在此接口上连接VGA和键盘,实现登录主机,即本地终端登录,此时主机不需要额外的进程来处理与终端的通讯,随着网络的发展,出现在远端通过网络登录主机的需求,要实现的是同本地终端类似的功能,因为需要通过网络连接,并且要把网络包内容并在主机上解包并并运行其中的内容,就需要额外进程来负责,分为服务器端和客户端,服务器端实现接收客户端的输入内容,与主机交互将内容交给主机执行,将主机执行结果打包反馈给客户端,客户端要实现模拟本地终端的功能,实现内容输入和接收返回内容的展示,这需要双方遵守相同的规则,即需要终端通信协议,此时交互内容是明文在网络上传递;随着网络安全威胁越来越高,上述交互很容易被窃取,于是要求安全的网络交互,就出现了安全的远程终端,随之也就有安全终端协议。

Telnet

一种不安全的远程终端协议telnet协议的实现,C/S架构,监听端口23/tcp。

telnet的使用:
1)安装:yum install telnet-server

安装后有telnet-server.x86_64 和telnet.x86_64 两个程序包,一个是服务器端程序包,一个是客户端程序包。telnet server是一个独特的服务,工作于基于超级守护进程管理的瞬时守护进程模式。

2)telnet server的启动:
  chkconfig telnet on
  service xinetd restart
查看:

xinetd叫超级守护进程,下面的没有运行级别的,像telnet叫瞬时守护进程。xinetd代瞬时守护进程监听,在有用户访问时,唤醒瞬时守护进程。像telnet进程使用的频度不高,不需要时刻监听。

3)登录,因为telnet是明文传输,禁止使用管理员账户登录,使用普通用户登录:
在windows上:

OpenSSH

ssh:secure shell ,Protocol,即是一种协议。监听在tcp的22号端口,实现安全的远程登录。
OpenSSH:ssh协议的开源实现。dropbear是另一种实现。
Telnet:实现远程登录,但是没有安全保护,早期的远程登录。端口23/tcp

SSH协议版本:
  v1:基于CRC-32做MAC,不安全:易遭到man-in-middle攻击
  v2:双方主机协商选择安全的MAC方式。基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证。

两种方式的用户登录认证:  基于password、基于key
  通过ssh host登录服务器,客户端必须认证一下这台主机是不是就是要连接的那台主机,一般使用密钥对方式验证,客户端用主机的公钥解密主机发送的内容验证通过,即证明是需要的主机。关于客户端中主机的公钥,在第一次登录时,主机会发送这个公钥,在客户端会提醒是否保存这个公钥,就是让客户端使用者确定主机,接受保存后下一次访问,就会直接使用这个公钥。

基于密钥登录:客户端生成密钥对,将公钥发送给远程主机中对应登录用户的家目录下的某个文件中,以后此用户再登录时,主机用此公钥解密客户端的信息,依此来判断客户端的合法性,而不需要输入口令。此公钥是不允许公开的。

具体保存在~/.ssh/known_hosts中。

OpenSSH是C/S架构,客户端(C端)有ssh,(scp,sftp),windows客户端有xshell,putty,securecrt;对于Linux下的ssh客户端,配置文件为/etc/ssh/ssh_config;服务器端(S端):sshd,配置文件为/etc/ssh/sshd_config

客户端工具:ssh命令
  ssh [user]@host [command]:没有user,默认使用linux当前登录用户,指定了user,以指定的特定user登录。
  ssh [ -l user ] host [command]: 
  参数  -p port:远程服务器监听的端口;
           -X :支持X11转发
           -Y:支持信任的x11转发;

  客户端配置文件格式,/etc/ssh/ssh_config
    Host PATTERN
        PARAMETER VALUE

# Host *    # *号代表所有主机
#   ForwardAgent no
#   ForwardX11 no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask    # 第一次登录时,会提示是否接受密钥,设置no不提问
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   Port 22
#   Protocol 2,1
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
Host *
	GSSAPIAuthentication yes
# If this option is set to yes then remote X11 clients will have full access
# to the original X11 display. As virtually no X11 client supports the untrusted
# mode correctly we set this to yes.
	ForwardX11Trusted yes
# Send locale-related environment variables
	SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 
	SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 
	SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE
	SendEnv XMODIFIERS

基于密钥的认证(不需要密码进行登录):
  (1)在客户端生成密钥对
        ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]
  (2) 把公钥传输至远程服务器对应用户的家目录
        ssh-copy-id [ -i [ identity_file] ] [ user@] machine
  (3)登录验证:ssh 
  (4)安全提醒:不要使用root,可以登录后切换至root

实操:
  1)客户端生成密钥对:


  2)把公钥传输至远程服务器端对应用户的家目录

在服务器中查看:

注意,authorized_keys文件的权限为:-rw-------,即600,这是为了确保安全。
  3)测试:

结果直接登录,没有提示输入密码。

scp命令
  scp [options]  SRC ...  DEST/
  存在两种情形:
    PULL:scp [options] [user@]host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE
    把远程文件拉到本地来,以哪个用户登录到哪台远程主机上去拉文件,即远程主机的用户
    PUSH:scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE
    把本地文件推送给(复制给)远程主机。也是远程主机用户。
    常用选项:
        -r :递归复制
        -p :保持源文件的属性信息
        -q :静默模式
        -P PORT:指明remote host的监听的端口;

scp也基于ssh,因为在上一步设置了基于密钥的认证,所以复制过程也不需要输入密码。

sftp命令
  sftp [user@]host
同scp,也是基于ssh

服务器端:sshd
  配置文件/etc/ssh/sshd_config

#	$OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.
# 以#加空格开头的是注释,以#开头后无空格的是配置项,去掉#就是配置

#Port 22    # sshd服务监听的端口,默认22
#AddressFamily any  # IP家族,any表示IPv4和IPv6
#ListenAddress 0.0.0.0  # 监听本机所有IPv4地址
#ListenAddress ::

# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2    # 使用协议的哪个版本

# Centos6上sshd的配置
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# 在7.x版本,即centos7上,配置如下
#HostKey /etc/ssh/ssh_host_rsa_key
##HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key    # 在用户登录时发送给用户的公钥,即保存在客户端用户家目录.ssh下know_hosts中的公钥
#HostKey /etc/ssh/ssh_host_ed25519_key


# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h    # 对称密钥重新生成时间间隔
#ServerKeyBits 1024

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV  # 日志使用AUTHPRIV,保存在/var/log/secure
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m      # 登录的宽限时间(等待输入用户密码时间)
#PermitRootLogin yes    # 是否允许root直接登录,默认是可以的
#StrictModes yes        # 是否严格检查格式
#MaxAuthTries 6         # 最大认证重试次数
#MaxSessions 10         # 最大会话数

#RSAAuthentication yes  
#PubkeyAuthentication yes
#AuthorizedKeysFile	.ssh/authorized_keys   # 客户端采用密钥认证时,客户端的公钥在服务器端的保存位置
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes  # 允许基于口令认证方式登录

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no    

# Kerberos options   # 实现第三方统一认证的一种认证方式
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes

# GSSAPI options 
#GSSAPIAuthentication no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no

# Set this to 'yes' to enable PAM authentication, account processing, 
# and session processing. If this is enabled, PAM authentication will 
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
#UsePAM no
UsePAM yes

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
X11Forwarding yes       # 允许客户端调用服务器端的图形程序
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes        # DNS的反向解析功能,默认是开启的,一般设为no,否则,客户端登录时会发生被卡住一会的现象
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none

# no default banner path
#Banner none

# override default of no subsystems
Subsystem	sftp	/usr/libexec/openssh/sftp-server    # 支持sftp

# Example of overriding settings on a per-user basis
#Match User anoncvs
#	X11Forwarding no
#	AllowTcpForwarding no
#	ForceCommand cvs server

在ssh命令中使用 -X选项支持X11转发或-Y选项支持信任的x11转发

ssh服务的最佳实践
  1、不要使用默认端口;
  2、禁止使用Protocol version 1;
  3、限制可登录用户:配置文件中AllowUsers和AllowGroups,白名单;
   实操: 添加两个用户:gentoo和centos,在没配置白名单前都能登录:

在服务器的配置文件/etc/ssh/sshd_config的最后添加:AllowUsers root centos
然后重载服务:service sshd restart
再次测试登录,centos可以登录,但是gentoo无法登录:

  也可以使用黑名单:DenyUsers
  4、设定空闲会话超时时长;
  5、利用防火墙设置ssh访问策略;
  6、仅监听特定的IP地址;
  7、基于口令认证时,使用强密码策略;
        随机密码:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
  8、使用基于密钥的认证;
  9、禁止使用空密码;
  10、禁止root用户直接登录;
  11、限制ssh的访问频度和并发在线数;
  12、做好日志,经常分析;

ssh协议的另一个实现:dropbear
  1)安装:yum install dropbear
  2)生成密钥对,启动服务:        
        dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
        dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
        dropbear -p [ip:]port -F -E

连接测试:

  3)可以作为客户端连接其他远程主机,工具是dbclient
    dbclient root@host

OpenSSL-重温
  三个组件:
  openssl:多用途的命令行工具;
  libcrypto:加密解密库;
  libssl:ssl协议的实现

PKI:Public Key Instructure,公钥基础设施
  CA、RA、CRL、证书存取库

建立私有CA(一个组织内部使用):两种方式
  OpenCA和 openssl,OpenCA比较专业,使用也比较复杂;openssl简单易用

证书申请及签署步骤:
  1)生成申请请求;
  2)RA核验;
  3)CA签署;
  4)获取证书;

创建私有CA:
  openssl的配置文件:/etc/pki/tls/openssl.cnf  

安装上面配置信息创建对应的文件、目录
  1)创建所需文件,在/etc/pki/CA目录下
    # touch index.txt
    # echo 01 > serial
    确保certs 、crl、 newcerts、 private子目录存在
  2)CA自签证书,要想生存证书,要有密钥对
# (umask 077;openssl genrsa -out private/cakey.pem 2048)   # 生成私钥,-out与配置文件一致
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650  -out /etc/pki/CA/cacert.pem     # 自签证书生成
    -new:生成新证书签署请求
    -x509:专用于cA生成自签证书
    -key:生成请求时用到的私钥文件,证书需要公钥,通过私钥自动生成
    -days:证书有效期限
    -out:证书的保存路径,与配置文件中的配置保持一致
这个文件发送给需要使用证书的客户机,导入到信任的根证书颁发机构中。
  3)发证
    (a)用到证书的主机生成证书请求
      生成私钥、利用私钥生成证书签署请求文件
    (b)把证书签署请求文件传输给CA
    (c)CA签署证书,并将证书发还给用户
    (d)查看证书中的信息:
        openssl x509 in /PATH/FROM/CERT_FILE -noout -text| -subject | -serial
    (e)吊销证书:
        <1>获取要吊销的证书的serial
        <2>CA先根据客户提交的serial与subject,对比检验是否与index.txt中信息一致;
        吊销证书:openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
        生成吊销证书的编号(第一次吊销一个证书时):echo 01 > /etc/pki/CA/crlnumber
        更新证书吊销列表:openssl ca -gencrl -out thisca.crl
        查看crl文件:openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
实操:
  a)、 (umask 077; openssl genrsa -out httpd.key 2048)  # 生成私钥

  openssl req -new -key httpd.key -days 365 -out httpd.csr  # 生成证书签署请求文件

  b)、发送此请求文件至CA:
  scp httpd.csr root@192.168.138.139:/tmp

  c)、CA签发证书
  openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 365
出现错误:

原因分析:在前面安装python时,对openssl进行了编译安装,所以现在的openssl使用的是编译安装后的高版本,其配置文件使用的是/usr/local/openssl/ssl目录下的openssl.cnf
错误排除:修改/usr/local/openssl/ssl/openssl.cnf配置文件,将其中的dir = ./demoCA,修改为dir=/etc/pki/CA应该就可以了。排查前面的操作,除了这个配置文件,其他都是在/etc/pki/CA目录下,所以openssl的配置文件只修改ca的目录配置即可。

再次签发:

证书签发成功。

生成的证书应该保存在/etc/pki/CA/certs下。

d)客户端取回证书:scp /tmp/httpd.crt root@192.168.138.138:/tmp

e)查看证书信息:

f)吊销证书:

至此,证书签发完毕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/668834.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Multipass虚拟机磁盘扩容

Multipass 是一个用于轻松创建和管理 Ubuntu 虚拟机的工具&#xff0c;特别适合开发环境。要使用 Multipass 扩大虚拟机的磁盘容量&#xff0c;你需要经历几个步骤&#xff0c;因为 Multipass 自身并不直接提供图形界面来调整磁盘大小。不过&#xff0c;你可以通过结合 Multipa…

程序员上岸指南

如果你还在996&#xff0c;大小周&#xff0c;感觉身体被掏空&#xff0c;那么你可以看看下面这篇文章&#xff0c;我特意搜集了一些苦逼程序员的上岸教程。 人生真的就是做几道选择题&#xff0c;选错了&#xff0c;忙也是瞎忙。选对了&#xff0c;躺着都能赢。总的来说&#…

MQTT之使用mosquitto

1、下载并安装mosquitto 参考&#xff1a;04 Windows下mosquitto安装_mosquitto-1.6.9-install-windows-x64 windowsserver系-CSDN博客 2、启动 2.1添加用户 .\mosquitto_passwd -c pwfile.example user1 报错信息如下&#xff1a; Error: Unable to open file C:\Program…

Go-Admin后台管理系统源码(GO+VUE)编译与部署

1.克隆源码: # Get backend code git clone https://github.com/go-admin-team/go-admin.git# Get the front-end code git clone https://github.com/go-admin-team/go-admin-ui.git3.下载并安装GO开发环境: 3.编译管理后台后端 # Enter the go-admin backend project cd ./…

深入解析智慧互联网医院系统源码:医院小程序开发的架构到实现

本篇文章&#xff0c;小编将深入解析智慧互联网医院系统的源码&#xff0c;重点探讨医院小程序开发的架构和实现&#xff0c;旨在为相关开发人员提供指导和参考。 一、架构设计 智慧互联网医院系统的架构设计是整个开发过程的核心&#xff0c;直接影响到系统的性能、扩展性和维…

IO流(1)

定义&#xff1a;存取和读取数据的解决方案 作用&#xff1a;用于读写数据&#xff08;本地文件、网络&#xff09; 分类&#xff1a; 一种是&#xff1a;输出流和输入流。 一种是&#xff1a;字节流和字符流。 字节流 字节流——FileOutputStream&#xff08;字节输出流&…

MoeCTF 2022 usb

直接找 URB的第一个输入协议 我们需要提取的数据 HID Data 提取过滤器 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json >1.json 拿 usbhid.data 字段 tshark -r usb.pcapng -Y "usb.src\"2.2.1\"" -T json -e usbhid.data …

【记录】打印|用浏览器生成证件照打印PDF,打印在任意尺寸的纸上(简单无损!)

以前我打印证件照的时候&#xff0c;我总是在网上找在线证件照转换或者别的什么。但是我今天突然就琢磨了一下&#xff0c;用 PDF 打印应该也可以直接打印出来&#xff0c;然后就琢磨出来了&#xff0c;这么一条路大家可以参考一下。我觉得比在线转换成一张 a4 纸要方便的多&am…

Git常用命令1

1、设置用户签名 ①基本语法&#xff1a; git config --global user.name 用户名 git config --global user.email 邮箱 ②实际操作 ③查询是否设置成功 cat ~/.gitconfig 注&#xff1a;签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交…

2.1 OpenCV随手简记(二)

为后续项目学习做准备&#xff0c;我们需要了解LinuxOpenCV、Mediapipe、ROS、QT等知识。 一、图像显示与保存 1、基本原理 1.1 图像像素存储形式 首先得了解下图像在计算机中存储形式&#xff1a;(为了方便画图&#xff0c;每列像素值都写一样了)。对于只有黑白颜色的灰度…

OSM历史10年(2014-2024)全国数据下载(路网、建筑物、POI、水系、地表覆盖利用······)

点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 零、前沿 这次向大家介绍一下OSM&#xff08;OpenStreetMap&#xff09;十年历史数据&#xff08;2014—2014&#xff09;的下载方法。当然我们也下载好分享给大家&#xff…

如何上传模型素材创建3D漫游作品?

一、进入3D空间漫游互动工具编辑器 进入720云官网-点击“开始创作”-选择3D空间漫游-进入到作品创建页面。 二、上传模型及素材&#xff0c;创建生成3D空间漫游模型 1.创建3D空间作品&#xff1a;您可以选择新建空白作品或使用720云提供的预设空间模板&#xff0c;本篇主要介绍…

顶级商圈词汇,你听过哪些?

能把复杂的事情说到简单才是真正的高手&#xff0c;堆砌时髦名词的人&#xff0c;大多是被别人影响后的盲从之辈&#xff0c;高认知的人不扯这些虚头巴脑的东西。 顶级商圈词汇&#xff0c;你听过哪些&#xff1f; 生命周期&#xff0c;价值转化&#xff0c;完善逻辑业模式&a…

Elasticsearch 认证模拟题 - 4

一、题目 生成快照&#xff0c;或快照生命周期 1.1 考点 快照生命周期&#xff08;最好通过界面化配置&#xff09;创建仓库创建快照 &#xff08;因为这个需要部署共享文件&#xff0c;所以这个我就在虚拟机上简单操作一下&#xff09; 注&#xff1a; 部署共享文件系统可…

Java Web基础知识(Servlet、Cookie、Session、Filter、Listener)

文章目录 Servlet什么是Servlet&#xff1f;Servlet的生命周期ServletConfig对象ServletContext对象Servlet请求转发和重定向Servlet请求转发&#xff08;forward和include&#xff09;Servlet重定向&#xff08;redirect&#xff09;重定向和转发的区别? 读取文件、下载文件 …

攻防对抗少丢分,爱加密帮您筑起第二防线

应用程序通常处理和存储大量的敏感数据&#xff0c;如用户个人信息、财务信息、商业数据、国家数据等&#xff0c;用户量越大的应用程序&#xff0c;其需要存储和保护的用户数据越多。因此应用层长期是攻击方的核心目标&#xff0c;传统应用安全依靠防火墙(FireWall)、入侵检测…

一周学会Django5 Python Web开发 - Django5内置Admin系统二次开发

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计56条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

规则引擎Drools,基于mysql实现动态加载部署

文章目录 一、使用1、参考资料2、引包3、创建规则实体类4、实现drools动态规则5、模拟数据库&#xff0c;实现规则的CRUD6、创建控制层7、测试规则的动态添加&#xff08;1&#xff09;添加规则&#xff08;2&#xff09;修改规则&#xff08;3&#xff09;删除规则 8、模拟2个…

01PCB设计概述

PCB设计概述 EDA electronic design automatic 电子设计自动化&#xff08;利用计算机来实现电子设计&#xff09; 分为 &#xff1a; 微电子&#xff08;芯片设计&#xff09;、硬件板卡&#xff08;PCB设计&#xff09; 画原理图、画PCB布线 要会绘制原理图库、和封装图库 元…

短信发送验证码及邮件发送验证码

发送短信验证码 阿里云发送验证码 public Integer sendTelCode(String tel) {String url "https://dfsns.market.alicloudapi.com/data/send_sms";String appcode "a3198282fbdf443d97aa9f3cfbe1232e";int code RandomUtil.randomInt(1000,10000);emai…