网络管理及安全
常用网络配置命令
当今计算机已经通过网络紧密的连在了一起,通过互联网,计算机之间可以实现各种网络通信,如电子邮件、即时聊天、网页访问等。Linux作为重要的服务器平台,在互联网发展的过程中起了重要作用。本节内容将介绍Linux平台中常用的网络配置命令。
ifconfig命令
ifconfig是Linux平台中用于显示或配置网络设备的命令。ifconfig命令在Ubuntu中不再默认安装,需要手动进行安装。
-
安装ifconfig命令
-
使用ifconfig查看网卡状态
inet后为IPv4地址,inet6后位IPv6地址,ether后为MAC地址。
- 在上述示例中,显示当前系统由两个正在使用的网络接口:ens33和lo。
- ens33:以太网网卡接口,实现当前操作系统和外部互联网的连接及信息传输。
- lo:操作系统内部的环路网络(loopback),内部环路网络并没有实体网卡,所以没有硬件MAC地址,IPv4为固定值127.0.0.1
除了显示网卡状态外,ifconfig还提供了很多实用的参数来实现更多的功能,如下
-a: 列出当前系统所有可用的网络接口,包括禁用状态的网络接口 up: 启用指定的网络接口 down: 禁用指定的网络接口 netmask: 指定当前IP网络的子网掩码 IP地址: 修改指定网络接口的IP地址
-
使用ifconfig命令禁用en33网卡
-
使用ifconfig命令激活网络接口
- 在上述示例中,显示当前系统由两个正在使用的网络接口:ens33和lo。
ip命令
ip命令能够简单的执行一些网络管理任务 ,比如操作路由、网络设备、多播地址等。ip命令基本语法如下:
ip [选项] object [子命令]
常用选项:
-h : 输出可读信息
-4 : 指定协议为inet,即IPv4
-6 : 指定协议为inet6,即IPv6
-s : 显示详细信息
object是ip命令操作的对象,ip命令功能强大,能够操作系统中的不同设备,因此将不同设备抽象为不同的对象进行操作,简化命令的复杂性。常见的对象如下:
address: IP地址,IPv4或IPv6
12tp: L2TP隧道协议
link: 网络设备
maddress:多播地址
route: 路由表
rule: 路由策略
tunnel: 隧道
根据不同的对象会有不同的子命令
-
使用ip命令查看网络接口信息
route命令
要实现两个不同的子网之间的通信,通常需要一台连接两个网络的路由器,或是位于两个网络的网关来实现。路由表是指路由器或者其他互联网网络设备上存储信息的一张表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。
route命令常用来显示和操作IP路由表,与ifconfig命令一样都是net-tools软件包中的一个命令
route 常用选项,常用选项如下:
-A: 指定协议族,可以指定inet/inet6
-n: 显示数字形式的IP地址
-e: 使用netstat格式显示路由表,netstat命令将在后续章节讲解
-net: 指定的目标是一个网络
-host: 指定的目标是一个主机
del: 删除路由记录
add: 添加路由记录
gw: 设置默认网关
dev: 路由记录对应的网络接口
netmask:指定目标网络的子网掩码
-
使用route命令查看路由表信息
第1列,目标网络或者主机的IP地址
第2列,网关信息,如果没有网关信息,该项显示未*
第3列,目标网络的子网掩码,如果目标路由为一台主机
第4列,标志位,U:这条路由处于启动状态;如果这条路由通向网关,则含有G;其他还有H、R、D等标志
第5列,当前位置距离目标主机或网络的距离,通常用跳数来表示
第6列,永远为0
第7列,该路由被使用的次数
第8列,该路由的数据包将要发送到的网络接口
netstat命令
netstat命令主要用户查看各种网络信息。与上述的内容提到的命令比较,netstat命令提供了更多更详细的信息内容,包括网络连接、路由表及网络接口的各种统计数据等。
netstat命令常用选型如下所示:
-a : 显示所有处于活动状态的套接字
-A : 显示指定协议族的网络连接信息
-c : 持续列出网络状态信息,刷新频率为1s
-e : 显示更加详细的信息
-i : 列出所有网络接口
-l : 列出处于监听状态的套接字
-n : 直接显示IP地址,不转换域名
-p : 显示使用套接字的进程ID和程序的名称
-r : 显示路由表的信息
-s : 显示每个协议的统计信息
-t : 显示TCP/IP的连接信息
-u : 显示UDP的连接信息
-
使用netstat命令查看所有端口的状态
上述示例中,列出了所有的端口状态,包括监听和未监听的端口。输出信息中包含两部分,其中第一部分为激活的网络端口信息,第二部分为UNIX套接字信息。
nslookup命令
域名与IP地址之间能够相互转换,nslookup命令就会可以用来查看域名信息的一个命令。
-
使用nslookup查看www.tedu.cn的信息
上述示例中,该命令第1、2行显示nslookup命令使用的域名服务器。
ping命令
ping命令在Windows和Linux平台上都是一个非常频繁使用的命令,该命令最主要的功能是向目标主机发送一个ICMP包,并接收相应。如果接受到响应,则表示当前主机和目标主机在物理上是连通的,如果接受不到响应,则表示网络故障或者网络设置错误。
上述示例中,ping命令会不断输出目标主机的相应信息,直到被打断(Ctrl+C)
防火墙
防火墙是当今计算机上不可缺少的一个系统软件,它由软件和硬件组合而成、在内部网和外部网之间、专用网和公共网之间的界面上构造的保护屏障。所有的网络信息都会经过防火墙的过滤,只有被允许的信息才可以通过防火墙进行传输,否则都会被拦截。
UFW防火墙简介
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,存储在专用的数据包过滤表中,这些表集成在Linux内核中。netfilter/iptables IP数据包过滤系统是一款功能强大的工具,可用于添加、编辑和删除规则。
UFW(Uncomplicated FireWall)是Ubuntu系统上配置IPTABLES防火墙的工具。UFW可以创建基于IPv4和IPv6的防火墙规则。
-
ufw命令
ufw命令 常用的辅助命令如下: enable: 开启防火墙 diable: 关闭防火墙 reload: 重新加载防火墙 default: 修改默认策略 logging: 日志管理,包括启用或禁用日志,以及制定日志级别 reset: 将防火墙配置恢复到初始状态 status: 显示防火墙状态 show: 显示防火墙信息 allow: 添加允许通信的规则 deny: 添加禁止通信的规则 reject: 添加决绝通信的规则 limit: 添加限制规则 delete: 删除指定的规则 insert: 在指定的位置插入规则 app list: 列出使用防火墙的应用系统 app info: 查看应用系统的信息 app default: 指定应用系统默认的规则
默认状态,UFW处于禁用状态,可以使用status命令查看
-
查看UFW当前状态
-
启用ufw
-
启用ufw命令开始8080端口
-
使用ufw命令禁用8080端口
-
删除禁用的8080规则
SSH服务
本书之前的内容更多使用的是图形界面中的终端环境进行命令的执行,但在实际应用中,尤其是对服务器进行管理时,通常采用的是远程登录的方式在终端机上登录到服务器,实现服务器的远程控制。
SSH服务简介
-
SSH(Secure Shell)是一种通用的、功能强大的、基于软件的网络安全解决方案。
-
计算机每次向网络发送数据时,SSH都会自动对其进行加密。数据达到目的地时,SSH自动对加密数据进行解密。
-
SSH的另外一个优点:其在传输数据的时候,对数据进行压缩,可以加快传输速度。
-
配置SSH服务
通常Ubuntu操作系统会默认安装SSH服务端。
- 验证是否安装Ubuntu服务
如上图显示,则未安装
补充:在更新update和安装时,会失败:提示ppa缺少release命令,使用如下方法可解决上述问题。同时更换sources.list文件中的源为国内阿里云源。
- 安装openssh-server服务
安装之后,SSH服务默认开始,可以使用systemctl命令进行查看。
-
查看ssh服务
由于在前述内容中启用了Ubuntu防火墙的UFW,所以此时仍不能通过SSH服务进行远程主机控制,需要打开SSH服务端口来可以,此时可以使用ufw命令的另一种方法,即服务名称方法添加端口信息。
-
使用ufw命令添加允许SSH端口通信的规则
此时只需要输入SSH服务的名称即可
使用PuTTY登录SSH服务
远程登录主机时,对终端机来说没有特别的要求,任意支持SSH的终端机都可以。在Windows平台上,有许多优质的工具提供了SSH登录的功能,例如PuTTY。
PuTTY是一个集Telnet、SSH、rlogin、纯TCP以及串行连接连接的软件,较早的版本进支持Windows平台,再后来的版本中开始支持各类UNIX平台,并打算移植到MAC OS X上。在远程登录工具中,PuTTY是出色的工具之一。PuTTY是一个免费的、windows X86平台下的Telent、SSH和rlogin客户端,但其功能丝毫不逊色于商业的Telnet类工具,
PuTTY的使用非常简单,下面就简单介绍Windows平台下的PuTTY软件的使用。
-
PuTTY下载
前往PuTTY官网下载最近的PuTTY即可。
-
打开PuTTY
Port端口默认为22,连接类型选择SSH,单机Open按钮开始与远程主机进行连接,此时的远程主机指的是虚拟机中Ubuntu 20.04。
-
确认认证信息
点击Open后,针对某一台远程主机,如果是第一次登陆,由于本地没有缓存该主机的注册信息,需要终端用户确认该远程主机是否是其希望连接的主机。如果确认远程主机没错,直接单击“accept”按钮即可,否则可以点击取消。
-
进入登录界面
点击‘’accept“后,连接程序后进入终端会提示登录操作。
-
登录
输入用户名之后按回车,之后在password之后可以输入用户的登录密码就可以实现登录。需要注意的是,密码如论输入什么都不会有提示,输入完之后直接回车即可。
登录成功之后会显示一些操作系统的提示信息,见下图,比如操作系统的版号和内核版本等。最后一行会显示上一次登录的时间,之后会等待用户输入命令,之后和在Ubuntu终端的使用方法基本一致。
-
执行命令
输入ls命令,能够实现查看当前登录用户的主目录下的文件,输出的信息和在Ubuntu终端输出的内容是相同的。
然而gedit命令却无法执行,这是因为PuTTY登录后只是进入CLI命令行的环境,并没有桌面环境,而gedit命令的作用是打开gedit文本编辑器。在CLI环境下,无法打开,会报错。即使用PuTTY登录远程主机后,也只可以使用命令对远程主机进行操作,而不能执行任何与界面有关的命令。
-
退出登录
在命令行输入exit即可
FTP
随着计算机网络的普及,越来越多的文件开始在网络上进行传输,文件传输协议由此产生。各种类型的操作系统基本上都设置了文件传输服务,并作为一种标准的网络服务提供。
FTP简介
FTP(File Transfer Protocol,文件传输协议)是基于互联网文件的双向传输协议。不同操作系统有不同的FTP应用程序,而这些所有的应用程序都遵守FTP,所以不同的操作系统之间都可以使用FTP进行数据传输。
FTP的实现需要客户端和服务端两个部分。服务端主要进行文件的托管。在满足一定权限的条件下,客户端可以将服务端托管的文件下载下来,也可以将文件上传的服务器进行保存
-
FTP支持两种模式:
-
Standard(主动)模式
-
FTP客户端首先需要主动和服务器的21端口建立连接,用来发送命令。
- 客户端需要在接收数据的同时在这个通道上发送Port命令。Port命令包括客户端接受数据所用端口,一般是20端口。
- 在传送数据的时候,服务器端通过自身的20端口连接值客户端指定的端口发送数据,FTP Server必须和客户端建立一个新的连接来传送数据。
-
-
Passive(被动)模式
- 建立控制通道和Standard模式类似,但建立后需要发送PASV命令。
- 服务器收到PASV命令后,打开一个临时端口(端口号大于1023小于65535)并且通知客户端在这个端口上传送数据的请求
- 客户端连接FTP服务器端口,然后FTP服务器将通过这个端口传送数据
-
安装vsftpd服务
vsftpd是一个UNIX类操作系统上运行的服务器,其可以运行在诸如Linux、BSD、Solaris、HP-UX,以及IRIX上面。vsftpd支持很多其他的FTP服务器不支持的特征,例如:
-
vsftpd是以一般用户身份启动服务,所以对于Linux系统的使用权限较低,对于Linux系统的危害相对减低。
-
任何需要具有较高执行权限的vsftpd指令均有一个特殊的上层程序所控制,该上层程序需要享有较高的执行权限功能已经被限制的相当低,并以不影响Linux本身的系统为准。
-
所有来自客户端想要使用这支上层应用程序所以工的较高执行权限值vsftpd指令的需求均被视为“不可信任的要求”来处理,必须要经过相等程度的身份确认后,才可利用该上层程序的功能。
-
此外,上面提到的上层程序中,依然使用chroot()的功能来限制使用者的执行权限。
-
安装vsftpd服务
vsftpd服务安装完成后即可使用,而且每次系统重启后都会自动启动,但是其默认的配置并非完全合适,因此需要根据需求进行修改。vsftpd的配置文件存放在/etc目录下,绝对路径为/etc/vsftpd.conf
,可以使用nano文本编辑器进行更改。
-
使用nano编辑器编辑vsftpd.conf文件
略
其他网络安全相关服务
所有连接上网络的计算机都无法做到100%的安全,网络安全已经成为现今系统维护维护中最重要的组成部分。本节将简单介绍在Ubuntu操作系统中可以更好地保护计算的几种方法。
AppArmor
-
查看AppArmor的运行状态
从上述示例中可以看出:
-
AppArmor已经处于运行状态
loaded
-
77 profiles are loaded
说明有77个配置文件已经加载成功 AppArmor中每个配置文件对应一个应用程序,对应的应用程序运行时,必须遵守配置文件的规则,否则可能不能运行成功,或者被认为是有害的应用程序,达到主动防御的目的。
-
根据配置文件的不同,分为两种加载模式:
enforce
和complain
模式-
enforce模式:应用程序根据配置文件设定的权限运行,不符合设定的操作直接被拦截
-
complain模式:应用程序根据配置文件设定的权限运行,不符合设定的操作可以运行,同时不符合操作的操作会被记录到日志中。
-
-
-
安装额外的配置文件
默认情况下,系统自带安装的配置文件较少,通过命令
sudo apt-get install apparmor-profiles
可以安装额外的AppArmor-profile文件。除了安装额外的配置文件外,也可以手动编写适合自己的配置文件。 Apparmor的配置文件位于
/erc/apparmor.d
目录中,并以应用程序的绝对路径命令,只是将其中的/
替换为.
。例如,配置文件/etc/apparmor.d/bin.ping
对应的应用程序为/bin/ping
。 -
查看ping命令的配置文件
ping命令的配置文件,只有在安装额外的配置文件之后才会看到,默认并没有该命令的配置文件。
数字证书
随着互联网环境的文化,互联网建立之初采用的明文信息传出方式越来越不安全,取而代之的是各种加密信息。数字证书就是互联网通信中标志各方身份信息的一串数字,其提供了一种在网络上验证通信身体身份的方式。数字证书不是身份证,而是身份证机构改在数字身份证上一个章或者印(说着说着是加在数字身份证上的一个签名)。数字证书是由CA机构发型,人们可以在网上用该证书来识别对方的身份。
数字证书采用公钥体制,即利用一对互相匹配的密匙进行加密、解密。每个用户有一把特定的仅供本人使用的私有秘钥,用其进行解密和签名,同时有一把公钥,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接受方的公钥对数据进行加密,而接收方使用自己的私钥进行解密,这样就可以安全无误的到达目的地了。通过数字的手段保证加密过程是一个不可逆的过程,即只有私有密钥才能进行解密。