linux网络完全与防护
- iptables
- 主要功能是封包过滤
- 主要分析TCP/IP的封包表头来进行过滤的机制
- 分析的是OSI的第二三四层,主要控制的就是
- MAC,IP,ICMP,TCP,UDP的端口与状态(SYN,ACK...)
- tcp_wrappers
- 在通过iptables的过滤之后,开始接受tcp_wrapppers的检验
- 即/etc/hosts.allow 与/etc/hosts.deny两个配置文件
- 同样可以地址或通过一些ip或者port
- 防火墙的管控,我们可以将大部分来自因特网的垃圾联机丢弃,只允许自己开发的服务的联机进入本机而已,可以达到最基础的安全防护;
2.服务(daemon)的基本功能
- 防火墙主要管理的是MAC,IP,Port等封包的表头方面的信息
- 要控管一些目录的权限,就要使用服务软件本身的设置做限制
- 举例:
- 可以在 httpd.conf 这个配置文件之内规范某些 IP 来源不能使用 httpd 这个服务来取得主机的数据, 那么即使该 IP 通过前面两层的过滤,他依旧无法取得主机的资源喔
- 注意
- 如果 httpd 这支程序本来就有问题的话,那么client 端将可直接利用 httpd 软件的漏洞来入侵主机,而不需要取得主机内root 的密码
3. selinux对网络服务的细部权限控制
- selinux(security enhanced Linux,安全强化 Linux)
- 可以针对网络服务的权限来设定一些规则(policy)让程序能够进行的功能有限,因此即使使用者的权限设置错误,以及程序有问题时,该程序能够进行的动作还是被限制的,即使该程序使用的是root的权限也一样。
- 举例
- 前一个步骤的 httpd 真的被 cracker 攻击而让对方取得 root 的使用权,由于 httpd 已经被 SELinux 控制在 /var/www/html 里面,且能够进行的功能已经被规范住了,因此 cracker 就无法使用该程序来进行系统的进一步破坏啰。
- 文件的权限
- R,W,X
- 建立完善的登陆密码规则限制
- 完善的主机权限设定
- 设定自动升级与修补软件漏洞,及移除危险软件
- 在每项系统服务的设定当中,强化安全设定的项目
- 利用iptables,tcp_wrappers强化网络防火墙
- 领主机监控软件MRTG与logwatch来分析主机状况与登录文件
- 软件更新
- 减少网络服务
- 启动selinux
- yum
- apt
- dpkg
- 先有配置文件判断yum server 所在IP地址
- 连接到yum server后,先下载新的rpm档案的表头数据
- 分析比较使用这所欲安装/升级的档案,并提供使用者确认
- 下载用户选择的档案到系统中/var/cache/yum,并进行实际安装
# 范例一:搜寻 CentOS 官网提供的软件名称是否有与 RAID 有关的?
[root@www ~]# yum search raid
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile <==这里就是在测试最快的映射站
* base: ftp.isu.edu.tw <==共有四个容器内容
* extras: ftp.isu.edu.tw <==每个容器都在
ftp.isu.edu.tw 上
* updates: ftp.isu.edu.tw
base | 3.7 kB : <==下载软件的表头列表中
extras | B :
updates | 3.5 kB :
=================== Matched: raid =================<==找到的结果如下
dmraid.i686 : dmraid (Device-mapper RAID tool and library)
....(中间省略)....
mdadm.x86_64 : The mdadm program controls Linux md devices (software
RAID
....(底下省略)....
# 范例二:上述输出结果中, mdadm 的功能为何?
[root@www ~]# yum info mdadm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.twaren.net
* extras: ftp.twaren.net
* updates: ftp.twaren.net
Installed Packages <==这里说明这是已经安装的软件!
Name : mdadm
Arch : x86_64
Version : 3.1.
Release : .el6
Size : k
Repo : installed
From repo : anaconda-CentOS-.x86_64
Summary : The mdadm program controls Linux md devices (software RAID
URL : http://www.kernel.org/pub/linux/utils/raid/mdadm/
License : GPLv2+
Description: The mdadm program is used to create, manage, and monitor
....(底下省略)....
# 由上述底线的 Summary 关键词,知道这软件在达成软件磁盘阵列功能!!
#范例三:安装某个软件吧!以 mdadm 这个软件名为例:
[root@www ~]# yum install mdadm
....(前面省略)....
Setting up Install Process
Package mdadm-3.1.-.el6.x86_64 already installed and latest version
Nothing to do
[root@www ~]# yum install mdadma
Setting up Install Process
No package mdadma available.
Nothing to do
[root@www ~]# vim /etc/yum.repos.d/drbl.repo
[drbl]
name=This is DRBL site
baseurl=http://free.nchc.org.tw/drbl-core/i386/RPMS.drbl-stable/
enable=
gpgcheck= [root@www ~]# yum search drbl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
============================== Matched: drbl
==============================
clonezilla.i386 : Opensource Clone System (ocs), clonezilla
drbl.i386 : DRBL (Diskless Remote Boot in Linux) package.
drbl-chntpw.i386 : Offline NT password and registry editor
....(底下省略).... [root@www ~]# yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base CentOS- - Base enabled: ,
c6-media CentOS- - Media disabled
centosplus CentOS- - Plus disabled
contrib CentOS- - Contrib disabled
debug CentOS- - Debuginfo disabled
drbl This is DRBL site enabled: <==新
的在此!
extras CentOS- - Extras enabled:
updates CentOS- - Updates enabled: ,
repolist: ,
ctive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0.0.0.0: 0.0.0.0:* LISTEN
tcp 0.0.0.0: 0.0.0.0:* LISTEN
tcp 127.0.0.1: 0.0.0.0:* LISTEN
....(底下省略)....
[root@www ~]# netstat -tun
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 192.168.1.100: 192.168.1.101:
ESTABLISHED
[root@www ~]# netstat -tunp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/P name
tcp 192.168.1.100: 192.168.1.101: ESTABLISHED /
# 范例一:使用预设参数扫瞄本机所启用的 port (只会扫瞄 TCP)
[root@www ~]# yum install nmap
[root@www ~]# nmap localhost
PORT STATE SERVICE
/tcp open ssh
/tcp open smtp
/tcp open rpcbind
# 在预设的情况下, nmap 仅会扫瞄 TCP 的协议喔!
# 范例二:同时扫瞄本机的 TCP/UDP 端口
[root@www ~]# nmap -sTU localhost
PORT STATE SERVICE
/tcp open ssh
/tcp open smtp
/tcp open rpcbind
/udp open rpcbind <==会多出 UDP 的通讯协议端口!
[root@www ~]# nmap -sP 192.168.1.0/
Starting Nmap 5.21 ( http://nmap.org ) at 2011-07-20 17:05 CST
Nmap scan report for www.centos.vbird (192.168.1.100)
Host is up.
Nmap scan report for 192.168.1.101 <==这三行讲的是 192.168. 的范例!
Host is up (.00024s latency).
MAC Address: :1B:FC::9A:BB (Asustek Computer)
Nmap scan report for 192.168.1.254
Host is up (.00026s latency).
MAC Address: :0C:6E::D5: (Asustek Computer)
Nmap done: IP addresses ( hosts up) scanned in 3.81 seconds
- stand alone
- 直接执行该服务的执行档,让执行档案直接加载到内存中运行。
- 这种服务启动script都会放在/etc/init.d中
- 常常使用/etc/init.d/sshd restart来重启
- 网络服务响应速度快的优点
- super daemon
- 用一个超级服务作为总管,来统一管理某些特殊的服务。
- centos6.x是xinetd 这个super daemon
- 虽然在响应速度上比较慢但super daemon可以提供一些控管;
- 何时启动,何时可以进行联机,哪个ip可以连进来,是否允许同时联机等等一些管控。
- 一般在/etc/xinetd.d/中
- 使用/etc/init.d/xinetd restart
[root@www ~]# netstat -tnlp | grep
tcp 0.0.0.0: 0.0.0.0:* LISTEN /rpcbind
tcp ::: :::* LISTEN /rpcbind
# 原来用的是 rpcbind 这个服务程序!
[root@www ~]# which rpcbind
/sbin/rpcbind
# 找到档案后,再以 rpm 处理处理
[root@www ~]# rpm -qf /sbin/rpcbind
rpcbind-0.2.-.el6.x86_64
# 找到了!就是这个软件!所以将他关闭的方法可能就是:
[root@www ~]# rpm -qc rpcbind | grep init
/etc/rc.d/init.d/rpcbind
[root@www ~]# /etc/init.d/rpcbind stop
- 主体 (Subject):
- SELinux 主要想要管理的就是程序,因此你可以将『主体』跟本章谈到的 process划上等号;
- 目标 (Object):
- 主体程序能否存取的『目标资源』一般就是文件系统。因此这个目标项目可以等文件系统划上等号;
- 政策 (Policy):
- 由于程序与档案数量庞大,因此 SELinux 会依据某些服务来制订基本的存取安全性政策。这些政策内还会有详细的规则 (rule) 来指定不同的服务开放某些资源的存取与否。
- 在目前的 CentOS 6.x 里面仅有提供两个主要的政策如下,一般来说,使用预设的 target 政策即可。
- targeted:针对网络服务限制较多,针对本机限制较少,默认的政策;
- mls:完整的 SELinux 限制,限制方面较为严格。
- 安全性本文 (security context):
- 我们刚刚谈到了主体、目标与政策面,但是主体能不能存取目标除了要符合政策指定之外,主体与目标的安全性本文必须一致才能够顺利存取。
- 简单理解
- 能不能存取还得要看两者的安全性文本是否匹配。而安全性文本中,就是看主体的domain与目标的type是否搭配。而这种搭配是在政策中规定好的。但最终主体能不能拿到目标还要看,目标的rwx是否服务Linux权限的规范。
- 简单理解
- 安全性本文的内容与设定是非常重要的! 如果设定错误,你的某些服务(主体程序)就无法存取文件系统(目标资源),当然就会一直出现『权限不符』的错误
[root@www ~]# ls -Z
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 bin
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog
# 上述特殊字体的部分,就是安全性本文的内容!
- 身份识别 (Identify):相当于账号方面的身份识别!主要的身份识别则有底下三种常见的类型:
- root:表示 root 的账号身份,如同上面的表格显示的是 root 家目录下的数据啊!
- system_u:表示系统程序方面的识别,通常就是程序啰;
- user_u:代表的是一般使用者账号相关的身份。
- 角色 (Role): 透过角色字段,我们可以知道这个数据是属于程序、档案资源还是代表使用者。一般的角色有:
- object_r:代表的是档案或目录等档案资源,这应该是最常见的啰;
- system_r:代表的就是程序啦!不过,一般使用者也会被指定成为system_r 喔!
- 类型 (Type):
- 在预设的 targeted 政策中, Identify 与 Role 字段基本上是不重要的!重要的在于这个类型 (type) 字段! 基本上,一个主体程序能不能读取到这个档案资源,与类型字段有关!
- 类型字段在档案与程序的定义不太相同,分别是:
- type:在档案资源 (Object) 上面称为类型 (Type);
- domain:在主体程序 (Subject) 则称为领域 (domain) 了
- domain 需要与 type 搭配,则该程序才能够顺利的读取档案资源啦
- 程序与档案selinux type 字段的相关性
类型
- 首先,我们触发一个可执行的目标档案,那就是具有 httpd_exec_t 这个类型的 /usr/sbin/httpd
- 该档案的类型会让这个档案所造成的主体程序 (Subject) 具有 httpd 这个领域 (domain), 我们的政策针对这个领域已经制定了许多规则,其中包括这个领域可以读取的目标资源类型;
- 由于 httpd domain 被设定为可以读取 httpd_sys_content_t 这个类型的目标档案 (Object), 因此你的网页放置到 /var/www/html/ 目录下,就能够被httpd 那支程序所读取了;
- 但最终能不能读到正确的资料,还得要看 rwx 是否符合 Linux 权限的规范!
- 政策内需要制订详细的 domain/type 相关性;
- 若档案的 type 设定错误, 那么即使权限设定为 rwx 全开的 777 ,该主体程序也无法读取目标档案资源的啦
- enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限domain/type 了;
- permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不 会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;
- disabled:关闭, SELinux 并没有实际运作。
[root@www ~]# vim /etc/selinux/config
SELINUX=enforcing <==调整 enforcing|disabled|permissive
SELINUXTYPE=targeted <==目前仅有 targeted 与 mls
# 范例一:将 SELinux 在 Enforcing 与 permissive 之间切换与观察
[root@www ~]# setenforce [|]
选项与参数:
:转成 permissive 宽容模式;
:转成 Enforcing 强制模式 [root@www ~]# setenforce
[root@www ~]# getenforce
Permissive
[root@www ~]# setenforce
[root@www ~]# getenforce
Enforcing
#setenforce 无法在 Disabled 的模式底下进行模式的切换喔!
# 范例:将 /etc/hosts 复制到 root 家目录,并观察相关的 SELinux 类型变化
[root@www ~]# cp /etc/hosts /root
[root@www ~]# ls -dZ /etc/hosts /root/hosts /root
-rw-r--r--. root root system_u:object_r:net_conf_t:s0 /etc/hosts
dr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /root/hosts
可见type字段变成了和root的一样
# 范例二:将 /root/hosts 移动到 /tmp 下,并观察相关的 SELinux 类型变化
[root@www ~]# mv /root/hosts /tmp
[root@www ~]# ls -dZ /tmp /tmp/hosts
drwxrwxrwt. root root system_u:object_r:tmp_t:s0 /tmp
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /tmp/hosts
# 范例一:将刚刚的 /tmp/hosts 类型改为 etc_t 的类型
[root@www ~]# chcon -t net_conf_t /tmp/hosts
[root@www ~]# ll -Z /tmp/hosts
-rw-r--r--. root root unconfined_u:object_r:net_conf_t:s0 /tmp/hosts
# 范例二:以 /var/spool/mail/ 为依据,将 /tmp/hosts 修改成该类型
[root@www ~]# ll -dZ /var/spool/mail
drwxrwxr-x. root mail system_u:object_r:mail_spool_t:s0
/var/spool/mail
[root@www ~]# chcon --reference=/var/spool/mail /tmp/hosts
[root@www ~]# ll -Z /tmp/hosts
-rw-r--r--. root root system_u:object_r:mail_spool_t:s0 /tmp/hosts
# 范例:将刚刚 /tmp/hosts 移动至 /root 并以预设的安全性本文改正过来
[root@www ~]# mv /tmp/hosts /root
[root@www ~]# ll -Z /root/hosts
-rw-r--r--. root root system_u:object_r:mail_spool_t:s0 /root/hosts
[root@www ~]# restorecon -Rv /root
restorecon reset /root/hosts context
system_u:object_r:mail_spool_t:s0->system_u:object_r:admin_home_t:s0
# 表示将 hosts 由 mail_spool_t 改为 admin_home_t
- 政策内的规则比对与
- 程序与档案的 SELinux type
# 范例一:列出 SELinux 在此政策下的统计状态
[root@www ~]# seinfo
tatistics for policy file: /etc/selinux/targeted/policy/policy.
Policy Version & Type: v. (binary, mls) <==列出政策所在档与版本
Classes: Permissions:
Sensitivities: Categories:
Types: Attributes:
Users: Roles:
Booleans: Cond. Expr.:
Allow: Neverallow:
Auditallow: Dontaudit:
Type_trans: Type_change:
Type_member: Role allow:
Role_trans: Range_trans:
....(底下省略)....
# 从上面我们可以看到这个政策是 targeted ,此政策的 SELinux type 有3076 个;
# 而针对网络服务的规则 (Booleans) 共制订了 条规则!
# 范例二:列出与 httpd 有关的规则 (booleans) 有哪些?
[root@www ~]# seinfo -b | grep httpd
Conditional Booleans:
allow_httpd_mod_auth_pam
httpd_setrlimit
httpd_enable_ftp_server
....(底下省略)....
# 你可以看到,有非常多的与 httpd 有关的规则订定呢!
[root@www ~]# sesearch [--all] [-s 主体类别] [-t 目标类别] [-b 布尔值]
选项与参数:
--all :列出该类别或布尔值的所有相关信息
-t :后面还要接类别,例如 -t httpd_t
-b :后面还要接布尔值的规则,例如 -b httpd_enable_ftp_server 范例一:找出目标档案资源类别为 httpd_sys_content_t 的有关信息
# 范例一:找出目标档案资源类别为 httpd_sys_content_t 的有关信息
[root@www ~]# sesearch --all -t httpd_sys_content_t
Found semantic av rules:
allow avahi_t file_type : filesystem getattr ;
allow corosync_t file_type : filesystem getattr ;
allow munin_system_plugin_t file_type : filesystem getattr ;
....(底下省略)....
# 『 allow 主体程序安全性本文类别 目标档案安全性本文类别 』
# 如上,说明这个类别可以被那个主题程序的类别所读取,以及目标档案资源的格式。
#范例三:我知道有个布尔值为 httpd_enable_homedirs ,请问该布尔值规范多少规则?
[root@www ~]# sesearch -b httpd_enable_homedirs --all
Found semantic av rules:
allow httpd_user_script_t user_home_dir_t : dir { getattr search open } ;
allow httpd_sys_script_t user_home_dir_t : dir { ioctl read getattr } ;
....(后面省略)....
# 范例一:查询本系统内所有的布尔值设定状况
[root@www ~]# getsebool -a
abrt_anon_write --> off
allow_console_login --> on
allow_cvs_read_shadow --> off
....(底下省略)....
# 您瞧!这就告诉你目前的布尔值状态啰!
[root@www ~]# setsebool [-P] 布尔值=[|]
选项与参数:
-P :直接将设定值写入配置文件,该设定数据未来会生效的!
# 范例一:查询 httpd_enable_homedirs 是否为 on,若不为 on 请启动他!
[root@www ~]# getsebool httpd_enable_homedirs
httpd_enable_homedirs --> off <==结果是 off ,依题意给他启动!
[root@www ~]# setsebool -P httpd_enable_homedirs=
[root@www ~]# getsebool httpd_enable_homedirs
httpd_enable_homedirs --> on
- 在服务与 rwx 权限都没有问题,却无法成功的使用网络服务时;
- 先使用 setenforce 0 设定为宽容模式;
- 再次使用该网络服务,如果这样就能用,表示 SELinux 出问题,请往下继续处理。如果这样还不能用,那问题就不是在 SELinux 上面!请再找其他解决方法,底下的动作不适合你;
- 分析 /var/log/messages 内的信息,找到 sealert -l 相关的信息并且执行;
- 找到 Allow Access 的关键词,照里面的动作来进行 SELinux 的错误克服;
- 处理完毕重新 setenforce 1 ,再次测试网络服务吧!这样就能够很轻松的管理你的 SELinux。不需要想太多!分析登录档就对啦
linux网络完全与防护的更多相关文章
- Linux网络驱动--snull
snull是<Linux Device Drivers>中的一个网络驱动的例子.这里引用这个例子学习Linux网络驱动. 因为snull的源码,网上已经更新到适合最新内核,而我自己用的还是 ...
- Linux网络相关配置
一.修改网卡相关配置 Linux网络参数是在/etc/sysconfig/network-scripts/ifcfg-eth0中设置,其中ifcfg-eth0表示是第一个网卡,如果还有另外一块网卡,则 ...
- 【深入浅出Linux网络编程】 "开篇 -- 知其然,知其所以然"
[深入浅出Linux网络编程]是一个连载博客,内容源于本人的工作经验,旨在给读者提供靠谱高效的学习途径,不必在零散的互联网资源中浪费精力,快速的掌握Linux网络编程. 连载包含4篇,会陆续编写发出, ...
- 【linux草鞋应用编程系列】_5_ Linux网络编程
一.网络通信简介 第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章. 二.linux网络通信 在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...
- 1、linux网络服务实验 用PuTTY连接Linux
这个是大三下学期的Linux网络服务配置详解时,感觉老师上得简单,就整理下,岭南师范学院师弟妹有福,如果是蔡老师交的话,可以拿来预习,复习. 一.用PuTTY连接Linux ①.装有redhat系统的 ...
- Linux 网络子系统
今天记录一下Linux网络子系统相关的东西. 因为感觉对这一块还是有一个很大的空白,这件事情太可怕了. 摘抄多份博客进行总结一下Linux网络子系统的相关东西. 一. Linux网络子系统体系结构 L ...
- Linux网络配置基础
linux网络配置常见有两种:桥接模式(Bridge)与NAT模式,还有一种Host-Only模式由于其局限性通常被舍弃就不加以说明了,下面我们介绍下桥接模式(Bridge)和NAT模式. 桥接模式( ...
- Linux网络基本配置
一.Linux网络配置文件 1. /etc/sysconfig/network-scripts/ifcfg-eth0 文件 在Red Hat系统中,系统网络设备的配置文件保存在/etc/syscon ...
- Linux 网络基本配置
一.Linux网络配置文件 1. /etc/sysconfig/network-scripts/ifcfg-eth0 文件 在Red Hat系统中,系统网络设备的配置文件保存在/etc/syscon ...
随机推荐
- JavaScript 运行时错误: 无法获取未定义或 null 一种解决方案
脚本是肯定没有错误的!! 引用了高版本的jquery jquery-1.10.1.min.js 但在ie10下面就是报错 "JavaScript 运行时错误: 无法获取未定义或 null & ...
- HDU 2276
http://acm.hdu.edu.cn/showproblem.php?pid=2276 矩阵乘法可以解决的一类灯泡开关问题 /* 转移关系为 now left now* 1 0 1 1 1 0 ...
- LINUX系统编程 由REDIS的持久化机制联想到的子进程退出的相关问题
19:22:01 2014-08-27 引言: 以前对wait waitpid 以及exit这几个函数只是大致上了解,但是看REDIS的AOF和RDB 2种持久化时 均要处理子进程运行完成退出和父进程 ...
- ArrayBlockingQueue-我们到底能走多远系列(42)
我们到底能走多远系列(42) 扯淡: 乘着有空,读些juc的源码学习下.后续把juc大致走一边,反正以后肯定要再来. 主题: BlockingQueue 是什么 A java.util.Queue t ...
- 【学习笔记】Oracle-1.安装及配置
Win7旗舰版安装Oracle_11gR1_database: http://my.oschina.net/laiwanshan/blog/89951 Oracle用户登陆 sqlplus sys/ ...
- hdu4690 EBCDIC ——水题,考耐心
link:http://acm.hdu.edu.cn/showproblem.php?pid=4690 考的是耐心何细心啊,用map把两个表格映射一下就行~ #include <iostream ...
- RobotFramwork + Appium+ Andriod 环境搭建
RF+Appium+Android环境搭建教程 - 1.RF安装 一.适用操作系统 Win7 旗舰版Sp1 32位操作系统 RF环境搭建,请参考文档<RobotFramwork安装指南> ...
- bootstrap模态框Esc键不关闭
项目开发时很多时候会需要用到弹出框,而且很多框架都有自己的弹出框,比较现在很流行的bootstrap就有模态框(model). 很多时候这东西用起来非常方便,可以为开发省去很多自己定义的时间!最近项目 ...
- ubuntu12.04+kafka2.9.2+zookeeper3.4.5的伪分布式集群安装和demo(java api)测试
博文作者:迦壹 博客地址:http://idoall.org/home.php?mod=space&uid=1&do=blog&id=547 转载声明:可以转载, 但必须以超链 ...
- intellij idea使用配置jetty maven 插件
pom.xml中更改或则添加: <build> <finalName>mall</finalName> <plugins> <plugin> ...