博客主页:christine-rr-CSDN博客
专栏主页:软考中级网络工程师笔记
大家好,我是christine-rr !目前《软考中级网络工程师》专栏已经更新三十多篇文章了,每篇笔记都包含详细的知识点,希望能帮助到你!
今天的笔记是UOS Linux防火墙配置和Web应用服务配置。
一、UOS Linux防火墙配置
1.UOS Linux防火墙类型
uos linux防火墙配置包含两套框架:
- Netfilter
- 较老的内核;
- 配置工具:firewalld、iptables、UFW(Uncomplicated Firewall)
- nftables
- 自linux - 13内核以上开始支持。
- 配置工具:nft
趋势:nftables在逐步取代Netfilter/iptables软件框架
考试重点:IPtables是考试重点。其他配置工具及nft与IP tables在配置上大同小异。考试不要求学生会写这些配置命令,但需能看懂并理解其含义和效果,以应对选择题。
1) firewalld
- firewalld是UOS默认的防火墙管理工具。其配置命令为firewall-cmd。
常见用法如下:
1.显示当前配置规则
- iptables -nL,该命令用于查看当前的IPtables规则。
2.配置本机开放tcp 443端口
firewall-cmd --permanent --add-port=443/tcp
- 开放443端口通常用于HTTPS应用。
- --permanent参数表示永久生效,即重启后配置依然有效。
- 通过firewall-cmd命令配置永久生效,添加443端口为TCP端口。
- 此配置意味着本机作为一台WEB服务器,开放443端口,允许其他主机通过HTTPS协议进行访问。
3.配置允许源地址10.0.30.5访问本机的tcp 3389端口
firewall-cmd -- permanent --add-rich-rule= "rule family="ipv4" source address="10.0.30.5" port protocol="tcp" port="3389" accept"
- 该命令以标准格式开头,即alvo-。
- 接着是permanent表示永久生效,以及rich rule,意为富有的规则。
- 此规则相对复杂,包含多种选项参数。其中,地址族为IPV4,原IP地址为特定值,协议为TCP协议3389。
- 将这些信息总结为一句话:允许源IP地址为10.0.30.5的主机访问本机3389端口。
- 3389端口用于RDP远程桌面。
- 此设置放行了一个IP地址,使其能够通过远程桌面访问本机。
- 注意:理解此设置的关键在于识别相关英文单词,如原IP地址、端口协议(TCP)及具体端口号(3389),以及accept(接受)的含义。
4.重载配置使之生效
firewall-cmd --reload
- 重载配置使之生效的方法是执行reload操作。
- 这一操作在重启交换机、路由器等设备时也经常使用。
2) iptables的四表五链(重点)
- 默认四个规则表
- raw表:确定是否对数据包进行跟踪。
- mangle表:对数据做标记。
- NAT表:用于NAT转换,如原目端口、原目IP地址的转换。
- filter表:对数据包进行过滤,是防火墙使用的表,用于数据报文的过滤。
- 考点提示:虽然IP tables有四个规则表,但考试中主要考察filter表,因其负责数据包的过滤功能。
- 默认的五种规则链:
- input :处理入站数据包
- output:处理出站数据包
- forward
- pre routing
- post routing
- 考点提示: 需要重点掌握的是前面三种规则链。原因在于四表五链之间存在关联。
3) 核心规则表-filter
filter表(iptables)中的三条链:input、output和forward的含义及应用
- input链:表示进入设备的流量。当需控制进入Linux服务器的流量时,应使用input链进行配置。
- 例如,只允许远程通过ssh登录22端口,或只允许通过http/https协议访问服务器的443端口,这些都属于input链的流量控制。
- output链:表示从设备出去的流量。在Linux服务器上配置IP table防火墙时,也会涉及到output链的应用,尽管相对于input链来说,其使用频率可能较低。
- forward链:表示设备作为中间防火墙进行流量转发。
- 例如,当PC1需要通过防火墙访问PC2时,流量会先进入防火墙(input),然后经过防火墙的转发(forward),最后从防火墙出去(output)到达PC2。但在大多数Linux系统配置中,forward链的使用并不频繁。
考点提示:历年考试中,iptables防火墙的配置是重点考察内容,特别是input链的应用。因此,理解并掌握这三条链的含义及应用是至关重要的。
4) iptables语法格式
iptables【-t表名】管理选项【链名】条件匹配-j执行动作
iptables -t filter -A INPUT -s 192.168.184.20 -p tcp -- dport 22 -j DROP
- -t :选择一个表名,做数据包过滤通常选择filter表。
- -A :选择一条链,input表示进入服务器的流量。
- -s :source表示原IP地址。
- -p :选择协议协议用TCP
- --deport:目的端口(destination port)是22,表示对ssh的应用流量进行过滤。
- drop:表示丢弃。
上述命令的含义:阻止来自 IP 地址 192.168.184.20
的 SSH(TCP 端口 22)连接请求。执行这条规则后,来自该 IP 地址的 SSH 访问将被防火墙阻止。
通用参数:
- - p 协议:协议的选择,如TCP、UDP等 。例:iptables-A INPUT-p tcp
- -s 源地址(source) 例:iptables-A INPUT-s 192.168.1.1
- - d 目的地址(destination) 例:iptables-A INPUT-d 192.168.12.1
- -- sport 源端口 例: iptables-A INPUT -p tcp -- sport 22
- -- dport 目的端口 例: iptables -A INPUT -p tcp -- dport 22
- -j 处理的动作:
- drop:直接丢弃流量,不做回应。
- reject:丢弃流量,但会回显一个ICMP不可达消息。
- log:将数据包信息记录到syslog,记录日志
- ACCEPT:相当于允许通过(pass)。
5) iptables配置案例
IP tables配置案例:
1.显示所有规则:
iptables -nL
2.添加规则,拒绝源地址为10.0.80.10的数据:
iptables -A INPUT -s 10.0.80.10 -j DROP
- 在默认field表(即filter表)中,通过input链拒绝所有从原IP地址进入的数据包,使用drop动作,该动作不回复也不报错。
3.添加规则,允许外部访问本机TCP 80端口:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- 设置input链允许TCP协议访问本机的80端口。
4.添加规则,允许特定IP地址10.0.30.5访问3389端口:
iptables -A INPUT -s 10.0.30.5/32 -p tcp -m tcp --dport 3389 -j ACCEPT
- 配置允许特定IP地址10.0.30.5通过TCP协议的3389端口进行访问。
5.添加规则,保存配置使其生效
service iptables save
- 命令保存配置。
考试重点:第三和第四种类型的配置命令是考试中的高频考点,尽管命令较长,但理解起来相对容易,需特别注意。
6) nftables
- nftables是一个新的数据包分类框架,在Linux内核版本高于- 13时可用。
- 默认情况下,它并未安装,需在使用前进行安装。
- 安装可选择在uos服务器或PC上进行,且针对服务器(server版本)和桌面(PC版本)的安装命令有所区别。
- 服务器版本使用yum进行安装:yum install nftables
- 桌面版本则使用APT get命令:apt-get install nftables
7) nftables配置
nft(Network Filter Tables)是一个新的防火墙工具,用于替代传统的iptables。
1.查看命令示例
nft list tables
#查看所有表。nft list命令可以列出所有的表。
nft list table ip filter
#查看ip簇filter表的所有规则,ip filter表里包含了input、output和forward三条链,与iptables类似
nft list chain filter INPUT
#查看filter表INPUT链的规则,默认为ip簇
nft list ruleset
#查看所有规则
例题:请问上述所有规则使用的是黑名单的防火墙还是白名单的防火墙技术?
- 答案是黑名单。
- policy accepts表示默认是放行的,也就是黑名单的技术。黑名单里面的默认拒绝,其他的默认放行。而白名单技术中只有在白名单里面的才给放行。
黑名单和白名单哪个的安全性会更高?
- 白名单的安全性会更高,因为它默认全部拒绝,只有你手工加入白名单之后才会放行。
2.表操作
表操作主要包括添加表、删除表以及列出表中的规则
表的操作符包括:
- Add:添加表。
- delete:删除表。
- list:显示一个表中的所有规则链和规则。
- flush:清除一个表中的所有规则链和规则
以下是具体的操作示例:
命令示例:
nft list table ip filter #查看ip簇filter表的所有规则
nft add table ip filter #创建ip簇的filter表
nft add table ipv6 filter #创建ipv6簇的filter表
3.链操作
链的操作符包括:
- add:将一条规则链添加到表
- create:在表中创建规则链
- delete:删除一条规则链
- flush:清除一条规则链里的所有规则
- list:显示一条规则链里的所有规则
- rename:修改一条规则链的名称
基本规则链类型包括:
- filter:数据包过滤
- route:用于数据包路由
- nat:用于网络地址转换
filter链的一个操作是包过滤(packet filtering),这就是IPtables防火墙或者Linux防火墙的核心功能。
命令示例
nft add chain ip filter test { type filter hook input priority 0\; }
- nft命令可以添加一条链到filter表中。添加的链名称为test,该链作用于input区间,即对进入的流量进行过滤。
命令执行后效果:
table ip filter
{
chain test { type filter hook input priority filter; policy accept; }
}
- 这条命令的作用是创建一个名为test的链,它:
- 属于filter表,用于过滤流量
- 挂载在input钩子上,处理所有进入本机的数据包
- 具有默认的优先级0
4.规则配置
规则配置的操作符包括:
- add:添加一条规则
- insert:在规则链中加入一个规则,可以添加在规则链开头或指定的地方
- delete:删除一条规则
例:
nft add rule filter test tcp dport 22 accept
#filter表的INPUT链增加规则,开放tcp 22端口
- 规则含义:配置TCP的22端口以接收通过SSH访问的流量
命令执行后效果:
table ip filter
{
chain test { type filter hook input priority filter; policy accept; tcp dport 22 accept }
}
- 该规则执行后,会被放到后续流程中执行。
8) 例题1:创建新表命令
- 创建表使用的命令是table。
- 在IP filter中,默认存在IP field表,用于创建表或者创建IPV6的future表,选择c答案。
- 答案:C
9)例题2:拒绝TCP 22端口流量命令
- 拒绝输入链TCP 22端口流量的命令,关键在于理解输入(input)流量和拒绝(drop)操作。在iptables中,reject也用于拒绝,但通常drop更为直接。
- 分析选项时,accept表示接受,与拒绝相反,因此不是正确答案。选项d未提供任何相关信息,显然错误。
- 在b和c中选择,b选项提到了input和目的端口22,并使用了drop操作,符合拒绝TCP 22端口流量的要求。
- 而c选项未体现拒绝或丢弃的操作,因此不正确。通过找关键词的方法,可以确定正确答案为b。
- 答案:B
10)例题3:拒绝远程主机登录命令
- 题目:在Linux系统中,通过什么命令可以拒绝IP地址为192.168.0.2的远程主机登录到本服务器。
- 分析:
- 该IP地址是源IP地址,而非目的IP地址。
- 远程登录通常使用的协议端口为22(SSH)。
- 拒绝远程主机登录应针对input链进行设置。
- 在不同Linux发行版本中,拒绝连接的命令可能使用drop或reject或delay等词汇,但核心意义均为拒绝连接,不影响题目解答。
- 答案:c。
11)例题4:-P参数表示含义
- IPtables命令中的-P参数表示设置默认策略。
- 需注意的是,-P中的P为大写,代表Policy(策略),并非protocol(协议)。默认策略决定防火墙的总体状态,即默认是允许还是拒绝数据流通。
- 默认策略通常只有两种:打开或关闭。小写p才代表protocol,其后会跟随如TCP、UDP等具体协议类型。
- 答案:C
12)例题:允许客户端访问本机命令
- 考点:Linux命令中允许IP地址访问特定端口的知识。
- 在Linux命令中,实现允许特定IP地址访问本机22端口的是iptables命令的相关配置。具体来讲,若题目中提到要允许某个IP地址通过SSH(默认端口22)访问本机,则应选择配置iptables以放行该IP地址到22端口的流量。
- 答案:D。
13)例题:Linux防火墙工具与配置
- linux防火墙工具是IP tables。使用IP tables配置可以禁止特定网段,注意是网段而非单个主机。网段通常表示为/24、/32等格式,其中/32表示单个主机,而/24等表示一个网段。例如,- - - 0/24表示一个网段。
- 在配置IP tables禁止网段时,需要对进入服务器的流量,即input链进行操作。
- 禁止网段且不做响应的配置是drop,而reject则表示拒绝并做回显。因此,在选择答案时,应注意区分这两种不同的配置行为。
- 答案:(68)B (69)A
14)例题:防火墙配置命令分析
- 本题考察的是防火墙访问控制配置的理解。
- 配置分析如下:
- 第一条命令:允许进入的TCP流量,目的端口为43,即放行https的流量,用于访问WEB服务器。
- 第二条命令:允许特定IP地址通过ICMP协议访问,type为8的报文(即请求报文),并允许对应的回应报文(equal reply)输出。
- 第三条命令:禁止某网站访问服务器。
- 第四条命令:允许特定网段通过SSH(目的端口22)登录服务器。
- 第五条命令:允许从回环接口(lo接口)的流量访问服务器。
- 第六条命令:拒绝其他所有流量。
- 选项分析:
- A选项:仅允许该主机去ping这台服务器,表述错误。实际上是允许特定主机(254主机)ping服务器,而非服务器ping主机。
- B选项:允许所有的主机访问服务器的SSH服务,表述错误。实际上仅允许特定网段访问。
- D选项:允许所有主机使用https协议访问服务器的Web服务,表述正确。对应配置中的第一条命令,放行所有主机访问服务器的443端口(https)流量。
- C选项(虽未明确提及,但根据排除法可判断):表述错误。
- 答案:D。
2.小结
类别 | 子类别 | 关键点 | 示例/命令 | |||||
UOS Linux防火墙类型 | Netfilter | 较老的内核框架,逐步被nftables取代 | firewalld、iptables、UFW | |||||
nftables | Linux内核版本高于-13时可用,逐步取代Netfilter/iptables | nft | ||||||
firewalld配置 | 显示规则 | 查看当前IPtables规则 | iptables -nL | |||||
开放端口 | 开放HTTPS端口 | firewall-cmd --permanent --add-port=443/tcp | ||||||
允许特定IP访问 | 允许特定IP通过RDP访问 | firewall-cmd --permanent --add-rich-rule="..." | ||||||
重载配置 | 使配置生效 | firewall-cmd --reload | ||||||
iptables的四表五链 | 表名 | raw, mangle, NAT, filter | - | |||||
链名 | input, output, forward, pre routing, post routing | - | ||||||
核心规则表-filter | input链 | 控制进入Linux服务器的流量 | - | |||||
output链 | 从设备出去的流量 | - | ||||||
forward链 | 设备作为中间防火墙进行流量转发 | - | ||||||
iptables语法格式 | 基本语法 | iptables【-t表名】管理选项【链名】条件匹配-j执行动作 | iptables -t filter -A INPUT -s 192.168.184.20 -p tcp --dport 22 -j DROP | |||||
iptables配置案例 | 显示规则 | 查看iptables所有规则 | iptables -nL | |||||
拒绝特定IP | 拒绝源地址为10.0.80.10的数据 | iptables -A INPUT -s 10.0.80.10 -j DROP | ||||||
允许外部访问端口 | 允许外部访问本机TCP 80端口 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT | ||||||
保存配置 | 保存iptables配置 | service iptables save | ||||||
nftables配置 | 查看操作 | 查看所有表、特定表规则、特定链规则、所有规则 | nft list tables, nft list table ip filter, nft list chain filter INPUT, nft list ruleset | |||||
表操作 | 添加、删除、列出、清除表 | nft add table ip filter, nft delete table ip filter, nft list table ip filter, nft flush table ip filter | ||||||
链操作 | 添加、创建、删除、清除、列出、重命名链 | nft add chain ip filter test { type filter hook input priority 0 } | ||||||
规则配置 | 添加、插入、删除规则 | nft add rule filter test tcp dport 22 accept | ||||||
例题解析 | 创建新表 | 使用table命令创建表 | C | |||||
拒绝TCP 22端口流量 | 理解input链和drop操作 | B | ||||||
拒绝远程主机登录 | 针对input链设置,使用drop或reject | C | ||||||
-P参数含义 | -P表示设置默认策略 | C | ||||||
允许客户端访问本机 | 配置iptables放行特定IP到22端口的流量 | D | ||||||
Linux防火墙工具与配置 | 使用IP tables配置禁止特定网段 | (68)B (69)D | ||||||
防火墙配置命令分析 | 理解防火墙访问控制配置 | D |
二、Web应用服务配置
Web服务软件
- Linux操作系统:
- 常用的Web服务软件有Apache和Nginx。
- 通过简单的配置,即可提供HTTP或HTTPS服务(默认端口80和443)。
- Windows操作系统:
- Web服务软件是IIS,可以提供Web、FTP和SMTP服务。【没有POP3】
- 标识虚拟主机的方法:基于IP地址、基于端口、基于名字。
1. Apache安装与配置
- 安装方法:yum -y install httpd,需要联网下载
- 版本验证:rpm -qa httpd,查看安装版本
- 服务管理:
- 启动服务:systemctl start httpd
- 停止服务:systemctl stop httpd
- 查看状态:systemctl status httpd
2. Apache配置
- 配置文件路径:/etc/httpd/conf/httpd.conf
- 核心配置项:默认目录/var/www/html
- Listen 80:设置监听端口
- User/Group apache:设置运行用户和组
- ServerName localhost:80:设置绑定的域名/IP和端口
- DocumentRoot "/var/www/html":设置网站根目录(重要考点)
- DirectoryIndex index.html:设置默认首页文件
- ErrorLog:设置错误日志路径
3. Nginx
- 功能特点:
- 高性能HTTP和反向代理服务器
- 支持UNIX、Linux、Windows系统
- 常与其他Web中间件配合使用,实现反向代理、负载均衡和缓存功能
- 核心优势:
- 内存占用少(约10MB)
- 启动速度快
- 高并发能力强
- 支持热部署
1)Nginx安装与启动
- 安装方法:yum install nginx
- 服务管理:
- 启动服务:systemctl start nginx
- 停止服务:systemctl stop nginx
- 查看状态:systemctl status nginx
2)反向代理
- 工作模式:客户端 ↔ Nginx ↔ 后端服务器,客户端和服务器中间放一个中间层Nginx
- 三大功能:
- 负载均衡:将请求分发到多个后端服务器,提供系统性能和可靠性。
- 缓存加速:缓存热点数据,减少后端压力并加快响应的速度。
- 安全增强:隐藏后端服务器IP,增强安全性;配置SSL/TLS,支持HTTPS加密,保护数据传输安全
- 与正向代理区别:
- 反向代理面向服务端,正向代理面向客户端
- 反向代理示例:Nginx代理Web服务器
- 正向代理示例:科学上网工具、访问屏蔽网站
4. 应用案例
1)例题:Apache默认站点目录
- 关键考点:Apache默认网站根目录位置
- 选项分析:
- A./etc/httpd(配置文件目录)
- B./var/log/httpd(日志目录)
- C./var/home(最接近正确选项)
- D./home/httpd(错误路径)
- 正确答案:C(不同版本可能有差异)
2)例题:Windows Server内嵌Web服务器
- 关键考点:Windows系统默认Web服务器
- 选项分析:
- A.IIS(Windows系统内置)
- B.Apache(Linux常用)
- C.Tomcat(Java应用服务器)
- D.Nginx(Linux常用)
- 正确答案:A(IIS还提供FTP和SMTP服务)
3)例题:Web服务器安全测试
- 测试结果分析:
- 数据库软件:MySQL(显示"back-end DBMS: MySQL")
- Web服务器:Apache 2.4.26(显示"web application technology: Apache 2.4.26")
- 漏洞类型:SQL注入(sqlmap,检测到注入点)
- 整改措施:
- 部署WAF(Web应用防火墙)
- 使用过滤性语句对输入进行检查
- 参考答案:
- (8)MySQL (9)Apache (10)SQL注入
- (11)部署WAF (12)使用过滤语句
5.知识小结
知识点 |
核心内容 |
考试重点/易混淆点 |
难度系数 |
Web服务软件 |
Linux常用Apache和Nginx,Windows用IIS |
端口号区分:Apache默认80(HTTP)/443(HTTPS),IIS支持Web/FTP/SMTP服务 |
★★☆☆☆ |
虚拟主机标识方法 |
基于IP/端口/域名三种方式 |
同一IP不同端口可绑定多个网站(如80/443/8080) |
★★★☆☆ |
Apache配置 |
配置文件路径/etc/httpd.conf,关键参数:监听端口/运行用户/网站根目录 |
根目录考题:不同版本路径差异(如/var/www/html) |
★★★★☆ |
Nginx特性 |
高性能/低内存/热部署,支持反向代理与负载均衡 |
与Apache对比:内存占用更小(约10MB),并发能力更强 |
★★★☆☆ |
反向代理功能 |
负载均衡/缓存加速/安全性增强(隐藏后端IP+SSL配置) |
与正向代理区别:反向代理面向服务器,正向代理面向客户端 |
★★★★☆ |
安全漏洞修复 |
SQL注入防御措施:部署WAF+输入过滤 |
考题案例:Apache 2.4.26版本存在SQL注入漏洞 |
★★★★☆ |
服务管理命令 |
systemctl start/stop/status httpd(Apache) systemctl start/stop/status nginx |
易混淆点:Windows的IIS通过服务管理器操作 |
★★☆☆☆ |