超文本传输协议HTTP
概念
HTTP协议的作用
会话跟踪技术: cookie,session
httpd服务
httpd简介
httpd服务特点
名称
|
特点
|
---|---|
高度模块化
|
core + modules,核心加模块,想要什么功能添加什么模块;
|
DSO
|
Dynamic Shared Object,动态共享库;
|
MPM
|
Multipath processing Modules 多路处理模块。
|
httpd的工作模型
prefork:两级进程模型,父进程管理子进程,每个进程响应一个请求
注意:会预先生成几个空闲进程,随时等待用于响应用户请求,最大不会超过 1024 个worker :三级进程模型,父进程管理子进程,子进程通过线程响应用户请求,每个线程处理一个用户请求
httpd的配置文件
文件/目录
|
对应的功能
|
---|---|
/var/log/httpd/access.log
|
访问日志
|
/var/log/httpd/error_log
|
错误日志
|
/var/www/html/
|
站点文档目录,默认网站目录
|
/usr/lib64/httpd/modules/
|
模块文件路径
|
/etc/httpd/conf/httpd.conf
|
主配置文件(重点)
|
/etc/httpd/conf.modules.d/.conf
|
模块配置文件
|
/etc/httpd/conf.d/.conf
|
辅助配置文件
|
httpd自带的工具程序
工具
|
功能
|
---|---|
htpasswd
|
basic认证基于文件实现时,用到的帐号密码生成工具
|
apachectl
|
httpd自带的服务控制脚本,支持start,stop,restart
|
apxs
|
由httpd-devel包提供的,扩展httpd使用第三方模块的工具
|
rotatelogs
|
日志滚动工具
|
suexec
|
访问某些有特殊权限配置的资源时,临时切换至指定用户运行的工具
|
ab apachebe nchmark
|
httpd的压力测试工具
|
httpd常用配置
[root @cluster151 ~]# yum -y install httpd
[root @cluster151 ~]# vim /etc/httpd/conf/httpd.conf
95 ServerName 127.0.0.1 : 80
# 查看 httpd 服务器状态[root @cluster151 ~]# systemctl status httpd# 关闭防火墙[root @cluster151 ~]# systemctl stop firewalld# 启动 httpd 服务[root @cluster151 ~]# systemctl start httpd# 查看启动结果[root @cluster151 ~]# systemctl status firewalld
# 先安装 netstat 工具yum -y install net-tools# 使用 netstat 查看当前系统下的 tcp 协议的网络进程netstat -lntp
结果可以看到监听的80端口的进程信息
[root @cluster151 ~]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 127.0.0.1 : 25 0.0.0.0 :* LISTENtcp 0 0 0.0.0.0 : 22 0.0.0.0 :* LISTENtcp6 0 0 :: 1 : 25 :::* LISTENtcp6 0 0 ::: 80 :::* LISTENtcp6 0 0 ::: 22 :::* LISTEN
浏览器输入地址发起请求: http://192.168.206.131 此时显示测试页,说明httpd服务正常
测试页面的配置是在 /etc/httpd/conf.d/welcome.conf中配置的
# 在默认的目录下创建 index.html[root @cluster151 ~]# echo "<h1>AAA</h1>" > / var /www/html/index.html# 重启服务,此时再次访问服务器,页面内容发生了改变[root @cluster151 ~]# systemctl restart httpd
# 在配置文件中 , 设置 DocumentRoot119 DocumentRoot "/home/myhtml"# 并且修改针对该目录的权限配置132 <Directory "/home/myhtml" ># 是否允许以索引方式显示目录内容Options Indexes FollowSymLinks# 针对 .htaccess 文件是否允许进行 url 重写。AllowOverride None# 是否允许访问目录内容Require all granted158 </Directory>
另外,要注意要创建对应的目录,并关闭内核防火墙
# 创建对应的网站根目录mkdir /home/myhtml# 关闭内核防火墙 ( 内核安全子系统 ), 如果不关闭,页面访问会显示 403 (拒绝访问)setenforce 0 # 这种是临时关闭getenforce # 获取内核配置# 持久化修改内核安全子系统,要通过配置文件修改#vi /etc/sysconfig/selinux把SELINUX改为disabled
mkdir /home/myhtml/xxxtouch /home/myhtml/xxx/aaa.txttouch /home/myhtml/xxx/bbb.txttouch /home/myhtml/xxx/ccc.txt
此时从过浏览器访问对应的xxx目录,目录中的文件会以列表方式呈现
httpd虚拟主机
添加之后使用ipconfig查看,会多出两个网卡设备
[root @cluster151 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens34[root @cluster151 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sy sconfig/network-scripts/ifcfg-ens35
打开新网卡的配置文件,修改其中的NAME,DEVICE,IPADDR
保存退出,重启网卡服务(或者重启虚拟机)
[root @cluster151 ~]# systemctl restart network.service[root @cluster151 ~]# systemctl status network.service
确保新网卡ip能被访问
接着打开httpd.conf文件,进行虚拟主机的配置
[root @cluster151 ~]# vim /etc/httpd/conf/httpd.conf
这个文件本身没有虚拟主机的相关配置,需要在文件中添加
# 定位到文件最后一行,添加虚拟主机配置<VirtualHost 192.168.206.131 : 80 ># 设置针对当前 ip 的网站根目录DocumentRoot "/home/myhtml/www"# 设置针对当前 ip 的自定义域名 ( 随便定义 )ServerName www.aaa.com# 配置针对当前文件目录的访问权限<Directory "/home/myhtml/www" ># 是否允许访问 .htaccess 文件 ( 用于 url 重定向 ) None: 不允许 All: 允许AllowOverride None# 允许访问Require all granted</Directory></VirtualHost>
三台虚拟主机的完整配置
<VirtualHost 192.168.206.131 : 80 >DocumentRoot "/home/myhtml/www"ServerName www.aaa.com<Directory "/home/myhtml/www" >AllowOverride NoneRequire all granted</Directory></VirtualHost><VirtualHost 192.168.206.141 : 80 >DocumentRoot "/home/myhtml/bbs"ServerName bbs.aaa.com<Directory "/home/myhtml/bbs" >AllowOverride NoneRequire all granted</Directory></VirtualHost><VirtualHost 192.168.206.151 : 80 >DocumentRoot "/home/myhtml/blog"ServerName blog.aaa.com<Directory "/home/myhtml/blog" >AllowOverride NoneRequire all granted</Directory></VirtualHost>
配置后,重启,通过ip测试
基于域名的虚拟主机
在/etc/hosts文件中添加域名ip映射
192.168.48.151 cluster151 www.aaa.com bbs.aaa.com blog.aaa.com
<VirtualHost 192.168.206.131 : 80 >DocumentRoot "/home/myhtml/www"ServerName www.aaa.com<Directory "/home/myhtml/www" >AllowOverride NoneRequire all granted</Directory></VirtualHost><VirtualHost 192.168.206.131 : 80 >DocumentRoot "/home/myhtml/bbs"ServerName bbs.aaa.com<Directory "/home/myhtml/bbs" >AllowOverride NoneRequire all granted</Directory></VirtualHost><VirtualHost 192.168.206.131 : 80 >DocumentRoot "/home/myhtml/blog"ServerName blog.aaa.com<Directory "/home/myhtml/blog" >AllowOverride NoneRequire all granted</Directory></VirtualHost>
[root @cluster151 ~]# curl www.aaa.comwww.aaa.com[root @cluster151 ~]# curl bbs.aaa.combbs.aaa.com[root @cluster151 ~]# curl blog.aaa.comblog.aaa.com[root @cluster151 ~]#
<VirtualHost 192.168.48.151 : 80 >DocumentRoot "/home/myhtml/www"ServerName www.aaa.com<Directory "/home/myhtml/www" >AllowOverride NoneRequire all granted</Directory></VirtualHost><VirtualHost 192.168.48.151 : 8080 >DocumentRoot "/home/myhtml/bbs"ServerName bbs.aaa.com<Directory "/home/myhtml/bbs" >AllowOverride NoneRequire all granted</Directory></VirtualHost><VirtualHost 192.168.48.151 : 8088 >DocumentRoot "/home/myhtml/blog"ServerName blog.aaa.com<Directory "/home/myhtml/blog" >AllowOverride NoneRequire all granted</Directory></VirtualHost>
另外,在配置文件中,添加针对端口的Listen监听
42 Listen 8043 Listen 808044 Listen 8088
重启后测试,通过不同端口访问,显示不同内容
使用单独的虚拟主机配置文件
访问控制法则
法则
|
功能
|
Require all granted
|
允许所有主机访问
|
Require all deny(denied)
|
拒绝所有主机访问
|
Require ip IPADDR
|
授权指定来源地址的主机访问
|
Require not ip IPADDR
|
拒绝指定来源地址的主机访问
|
Require host HOSTNAME
|
授权指定来源主机名的主机访问
|
Require not host HOSTNAME
|
拒绝指定来源主机名的主机访问
|
IPADDR的类型
|
HOSTNAME的类型
|
---|---|
IP
|
192.168.1.1
|
Network/mask
|
192.168.1.0/255.255.255.0
|
Network/Length
|
192.168.1.0/24
|
Net
|
192.168
|
FQDN
|
特定主机的全名
|
DOMAIN
|
指定域内的所有主机
|
DNS服务器
域名系统采用类似目录树的等级结构,域名分为根域、顶级域、二级域、三级域和主机名五类
根据服务器在DNS层次结构分类:
域名查询机制
FQDN IN A IP 地址
IP地址 IN PTR FQDN
域名 记录类型 SOA 主域名服务器的 FQDN 管理员邮件地址 (序列号刷新间隔重试间隔过期间隔TTL)
NS记录:权威服务器记录
区域名 IN NS FQDN
CNAME记录:FQDN别名记录
别名 IN CNAME 主机名
MX记录:邮件服务器记录
区域名 IN MX 优先级 邮件服务器名称
安装DNS
rpm -qa | grep bind
yum -y install bind bind-chroot bind-utils
systemctl start namedsystemctl enable named
systemctl start named-chrootsystemctl enable named-cheoot
部署主从DNS服务器
器可从主DNS服务器中复制数据,并在主服务器故障时实现域名解析等工作。

# cp /etc/named.conf / var /named/chroot/etc/named.conf
之后使用vi命令打开named.conf文件,对其进行修改,具体如下:
#设置监听对象
listen - on port 53 { any; };//named 监听所有 ip4 主机的 53 端口listen - on - v6 port 53 { any; }; //named 监听所有 ip6 主机的 53 端口# 设置客户端查询范围allow-query { any; };// 客户端查询范围,可设置为网段# 引用区域配置文件include "/etc/named.rfc1912.zones" ; // 引入区域配置信息文件
zone "aaatest.com" IN {
// 正向区域解析文件type master;// 服务器类型为 master ,即主服务器file "aaatest.com.zone" ;// 文件名为 aaatest.com.zoneallow-transfer { 192.168.48.152 ; }; // 即从服务器地址};zone "48.168.192.in-addr.apra" IN { // 反向区域解析文件type master;file "48.168.192.zone" ;allow-transfer { 192.168.48.152 ; };};
编辑区域数据文件
正向解析数据文件
$TTL 1D@ IN SOA dns.aaatest.com admin.aaatest.com. (1 ; 版本号1D ; 更新时间1H ; 重试时间1W ; 超时时间2H ; 否定回答缓存时间)IN NS dnsIN NS dnscIN MX 5 mail; 邮件服务器名称dnsIN A 192.168.48.151dnscIN A 192.168.48.152wwwIN A 192.168.48.151ftpIN CNAME www
反向解析数据文件
$TTL 1D@ IN SOA dns.aaatest.com admin.aaatest.com. (1 ; 版本号1D ; 更新时间1H ; 重试时间1W ; 超时时间2H ; 否定回答缓存时间)IN NS dns.aaatest.com.IN NS dnsc.aaatest.com.151 IN PTR dns.aaatest.com.152 IN PTR dnsc.aaatest.com.151 IN PTR www.aaatest.com.151 IN PTR ftp.aaatest.com.
[root @cluster151 ~]# chown -R named.named /etc/named*[root @cluster151 ~]# chown -R named.named / var /named/
到此,主DNS服务器配置完毕,管理员可通过如下命令启动主DNS服务器中的DNS服务:
[root@cluster151 ~]# systemctl start named-chroot
[root @cluster151 ~]# netstat -tnlp
使用dig解析域名,查看解析的ip地址
#在133机器上,将DNS服务器的配置改为151
# 先安装 bind-utils ,里面包含 dig 模块[root @cluster153 ~]# yum install bind-utils# 使用 dig 解析域名[root @cluster153 ~]# dig www.aaatest.com
使用trceroute测试路由过程
# 安装 traceroute[root @cluster153 ~]# yum -y install traceroute# 针对 ip 进行测试,测试结果默认会解析 ip 对应的域名[root @cluster153 ~]# traceroute 192.168.48.151
配置从DNS服务器
从/etc/目录下复制named.conf文件到虚拟文件目录/var/named/chroot/etc/中,进行配置
#设置监听对象
listen - on port 53 { any; };//named 监听所有 ip4 主机的 53 端口listen - on - v6 port 53 { any; }; //named 监听所有 ip6 主机的 53 端口# 设置客户端查询范围allow-query { any; };// 客户端查询范围,可设置为网段
zone "aaatest.com" IN {
# 正向区域解析文件type slave;# 服务器类型为 slave ,即从服务器file "slaves/aaatest.com.zone" ; # 文件存储路径masters { 192.168.48.151 ; };allow-transfer { none; };};zone "48.168.192.in-addr.apra" IN {# 反向区域解析文件type slave;file "slaves/48.168.192.zone" ;masters { 192.168.48.151 ; }; # 指定主服务器的 IP 地址allow-transfer { none; };};
[root@cluster151 ~]# chown -R named.named /etc/named*
[root @cluster151 ~]# chown -R named.named / var /named/
# rndc reload
FTP服务器
简介
FTP(File Transfer Protocol)是TCP/IP协议簇中的协议之一,也称文件传输协议,其主要功能是借助网络实现远距离主机间的文件传输。
FTP服务器文件传输方式
VSFTP简介
安全、高速、稳定、小巧
VSFTP的用户类型
安装并启动VSFTP服务
# yum -y install vsftpd
# systemctl start vsftpd.service
VSFTP的配置文件
主配置文件/etc/vsftpd/vsftpd.conf
原始配置如下所示:
anonymous_enable=YES# 开启匿名登录local_enable=YES# 开启本地用户登录write_enable=YES# 开启写入功能local_umask= 022# 设置本地用户创建文件的 umask 值为 022dirmessage_enable=YES # 激活目录消息xferlog_enable=YES# 激活上传、下载功能connect_from_port_20=YES# 设置 VSFTP 服务器的数据连接端口为 20xferlog_std_format=YES# 将日志文件格式设置为标准的 FTP 服务器日志格式listen=NO# 该选项与 listen_ipv6 不可并存listen_ipv6=YES# 接受来自 IPv4 和 IPv6 客户端的连接pam_service_name=vsftpd # 指定 VSFTPD 将使用的 PAM 服务的名称为 vsftpduserlist_enable=YES# 加载用户名列表tcp_wrappers=YES# 将 vsftp 与 tcp wrapper 结合使用
用户控制配置文件
用户列表配置文件
限制/排除名单文件
# yum -y install ftp
匿名登录
# ftp 192.168.255.157
配置匿名服务器
编辑主配置文件
# 允许匿名用户访问12 anonymous_enable=YES# 新增 , 指定匿名用户登陆的目录13 anon_root=/ var /ftp# 允许匿名用户删除和重命名的权限14 anon_other_write_enable=YES# 设置允许改变匿名用户删除文件的属主15 chown_uploads=YES# 允许登陆用户有写权限22 write_enable=YES# 允许匿名用户上传文件的权限32 anon_upload_enable=YES# 允许匿名用户新增目录的权限36 anon_mkdir_write_enable=YES# 设置匿名用户上传的属主名51 chown_username=Tom
创建匿名上传目录
# mkdir / var /ftp/userdir# chown ftp.ftp / var /ftp/userdir# chmod 777 / var /ftp/userdir
配置防火墙和SELinux服务
#关闭防火墙
systemctl stop firewalld.servicesystemctl disable firewalld.service# 关闭 SElinux打开 SELinux 的配置文件 /etc/selinux/config ,将其中的 SELINUX=enforcing 改为 SELINUX=disabled ,之后重启计算机。
ftp测试
登录测试
从物理机命令窗口,使用ftp命令连接VSFTP服务器,并通过匿名用户ftp登录。
C:\Users\henry>ftp 192.168.48.151
连接到 192.168.48.151 。220 (vsFTPd 3.0.2 )200 Always in UTF8 mode.用户 ( 192.168.48.151 :(none)): ftp331 Please specify the password.密码 :230 Login successful.ftp>
下载功能测试
ftp> ls -l200 PORT command successful. Consider using PASV.150 Here comes the directory listing.-rw-r--r-- 1 0 0 0 Oct 30 14 : 50 aaa.txtdrwxr-xr-x 2 0 0 6 Jun 09 2021 pubdrwxrwxrwx 2 14 50 6 Oct 30 14 : 39 userdir226 Directory send OK.
下载文件
ftp> get aaa.txt200 PORT command successful. Consider using PASV.150 Opening BINARY mode data connection for aaa.txt ( 4 bytes).226 Transfer complete.ftp: 收到 4 字节,用时 0.00 秒 4000.00 千字节 / 秒。ftp>
上传功能测试
ftp> put 55. jpg200 PORT command successful. Consider using PASV.553 Could not create file.ftp>
切换到具有权限的userdir目录下,然后上传
ftp> cd userdir
250 Directory successfully changed.ftp> ls -l200 PORT command successful. Consider using PASV.150 Here comes the directory listing.226 Directory send OK.ftp> put 55. jpg200 PORT command successful. Consider using PASV.150 Ok to send data.226 Transfer complete.ftp: 发送 30027 字节,用时 0.00 秒 30027.00 千字节 / 秒。ftp>
目录创建功能测试
ftp> mkdir dir257 "/userdir/dir" createdftp> ls -l200 PORT command successful. Consider using PASV.150 Here comes the directory listing.-rw------- 1 1002 50 30027 Oct 30 15 : 02 55. jpgdrwx------ 2 14 50 6 Oct 30 15 : 04 dir226 Directory send OK.ftp: 收到 128 字节,用时 0.00 秒 42.67 千字节 / 秒。ftp>
禁止指定用户登录
# 查看 ftpusers 文件中已经配置过的不能登陆 ftp 的账号[root @cluster151 ~]# cat /etc/vsftpd/ftpusers# Users that are not allowed to login via ftprootbindaemonadmlpsyncshutdownhaltnewsuucpoperatorgamesnobody
创建账号aaa,并设置密码aaa。使用该账号可以直接登陆ftp
E:\>ftp 192.168.48.151连接到 192.168.48.151 。220 (vsFTPd 3.0.2 )200 Always in UTF8 mode.用户 ( 192.168.48.151 :(none)): aaa331 Please specify the password.密码 :230 Login successful.ftp> pwd257 "/home/aaa"
接着将该账号添加到ftpusers中,拒绝该用户登陆ftp
[root@cluster151 ~]# echo aaa >> /etc/vsftpd/ftpusers
[root @cluster151 ~]# cat /etc/vsftpd/ftpusers# Users that are not allowed to login via ftprootbindaemonadmlps yncshutdownhaltnewsuucpoperatorgamesnobodyaaa
再次使用aaa登陆ftp,提示登陆失败
E:\>ftp 192.168.48.151连接到 192.168.48.151 。220 (vsFTPd 3.0.2 )200 Always in UTF8 mode.用户 ( 192.168.48.151 :(none)): aaa331 Please specify the password.密码 :530 Login incorrect.登录失败。ftp>