===接上节===
1.3、“来访主机地址+本机目标服务”访问控制列表
TCP Wrappers是RHEL7系统中默认启用的一款流量监控程序,它能够根据来访主机地址与本机的目标服务程序作出允许或拒绝的操作。Linux系统中其实有两个层面的防火墙,第一种是前面讲到的基于TCP/IP协议的流量过滤工具,而TCP Wrappers服务则是能允许或禁止Linux系统提供服务的防火墙,从而在更高层面保护了Linux系统的安全运行。
TCP Wrappers服务的防火墙策略由两个控制列表文件所控制,控制列表文件修改后会立即生效。系统将会先检查允许控制列表文件(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量;如果没有匹配,则去进一步匹配拒绝控制列表文件(/etc/hosts.deny),若找到匹配项则拒绝该流量;如果这两个文件全都没有匹配到,则默认放行流量。
TCP Wrappers服务的控制列表文件中常用的参数:
客户端类型 |
示例 |
满足示例的客户端列表 |
单一主机 |
192.168.10.10 |
IP地址为192.168.10.10的主机 |
指定网段 |
192.168.10. |
IP段为192.168.10.0/24的主机 |
指定网段 |
192.168.10.0/255.255.255.0 |
IP段为192.168.10.0/24的主机 |
指定DNS后缀 |
.linuxprobe.com |
所有DNS后缀为.linuxprobe.com的主机 |
指定主机名称 |
www.linuxprobe.com |
主机名称为www.linuxprobe.com的主机 |
指定所有客户端 |
ALL 或 * |
所有主机全部包括在内 |
在配置TCP Wrappers服务时需要遵循两个原则:
①:编写拒绝策略规则时,填写的是服务名称,而非协议名称;
②:建议先编写拒绝策略规则,再编写允许策略规则,以便直观地看到相应的效果。
注:策略配置完成后,现有连接需要断开方能生效。
第九章 使用ssh服务管理远程主机
9.1、创建网络会话
RHEL和CentOS系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。使用nmcli命令来管理Network Manager服务。使用nmcli命令配置过的网络会话是永久生效。
[root@linuxprobe ~]# nmcli connection show
NAME UUID TYPE DEVICE
eno16777736 9e2ccb08-b59a-4b2f-a3fd-05b58bcc5574 802-3-ethernet eno16777736
//查看网络会话。
[root@linuxprobe ~]# nmcli connection add con-name mlghome ifname eno16777736 autoconnect no type ethernet ip4 192.168.10.10/24 gw4 192.168.10.1
Connection 'mlghome' (fb42ebc7-b380-48e7-aa97-b66c095f009f) successfully added.
[root@linuxprobe ~]# nmcli connection add con-name hongyi ifname eno16777736 autoconnect no type ethernet ip4 172.16.1.10/24 gw4 172.16.1.200
Connection 'hongyi' (b13d407c-1358-4d52-83bf-d0f76a3bc0f0) successfully added.
[root@linuxprobe ~]# nmcli connection add con-name waimian ifname eno16777736 type ethernet
Connection 'waimian' (b6e9cde0-38b3-4363-8c19-6dcd443a3bd0) successfully added.
//创建网络会话,绿色标记部分为新创建网络会话的名字。
[root@linuxprobe ~]# nmcli connection show
NAME UUID TYPE DEVICE
hongyi b13d407c-1358-4d52-83bf-d0f76a3bc0f0 802-3-ethernet --
mlghome fb42ebc7-b380-48e7-aa97-b66c095f009f 802-3-ethernet --
eno16777736 9e2ccb08-b59a-4b2f-a3fd-05b58bcc5574 802-3-ethernet eno16777736
waimian b6e9cde0-38b3-4363-8c19-6dcd443a3bd0 802-3-ethernet --
//查看新创建的网络会话。
[root@linuxprobe ~]# nmcli connection up mlghome
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
//启用指定的网络会话,并查看该会话中的地址信息是否已生效(如下)。
[root@linuxprobe ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fee6:c2bf prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:e6:c2:bf txqueuelen 1000 (Ethernet)
RX packets 50934 bytes 3436408 (3.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43390 bytes 5466893 (5.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@linuxprobe ~]# nmcli connection up hongyi
//启用指定的网络会话,并查看该会话中的地址信息是否已生效(如下)。
9.2、网卡绑定
借助于网卡绑定技术,不仅可以提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。假设我们对两块网卡实施了绑定技术,这样在正常工作中它们会共同传输数据,使得网络传输的速度变得更快;而且即使有一块网卡突然出现了故障,另外一块网卡便会立即自动顶替上去,保证数据传输不会中断。
配置要绑定的物理网卡及生成新的bond0网卡的参数:
[root@linuxprobe ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno16777736
MASTER=bond0
SLAVE=yes
[root@linuxprobe ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno33554984
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno33554984
MASTER=bond0
SLAVE=yes
[root@linuxprobe ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
TYPE=Ethernet
BOOTPROTO=static
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.10.10
NETMASK=255.255.255.0
#PREFIX=24
GATEWAY=192.168.10.1
DNS1=114.114.114.114
DNS2=8.8.8.8
NM_CONTROLLED=no
[root@linuxprobe ~]#
说明:USERCTL=yes/no 是否允许非root用户控制设备;NM_CONTROLLED=yes/no 是否允许通过NetworkManager服务控制设备,实时生效,不需要重启。
常见的网卡绑定驱动有三种模式—mode0、mode1和mode6。
①:mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。
②:mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。
③:mode6(平衡负载模式):平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。
[root@linuxprobe ~]# vim /etc/modprobe.d/bond.conf
alias bond0 bonding
options bond0 miimon=100 mode=6
注:miimon=100出现故障时网卡切换时间为100毫秒,丢失1个包。
[root@linuxprobe ~]# systemctl restart network
//所以参数配置完成后重启网络服务,查看网卡绑定配置信息是否正确(如下)。
9.3、SSH服务
SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。
sshd是基于SSH协议开发的一款远程管理服务程序,sshd服务程序提供两种安全验证的方法:
①:基于口令的验证—用账户和密码来验证登录;
②:基于密钥的验证—需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该方式相较来说更安全。
sshd服务的配置信息保存在/etc/ssh/sshd_config文件中。
sshd服务配置文件中包含的参数以及作用(默认参数已生效,可修改为其它参数):
参数 |
作用 |
Port 22 |
默认的sshd服务端口 |
ListenAddress 0.0.0.0 |
设定sshd服务器监听的本机IP地址,默认所有地址 |
Protocol 2 |
SSH协议的版本号 |
HostKey /tc/ssh/ssh_host_key |
SSH协议版本为1时,DES私钥存放的位置 |
HostKey /etc/ssh/ssh_host_rsa_key |
SSH协议版本为2时,RSA私钥存放的位置 |
HostKey /etc/ssh/ssh_host_dsa_key |
SSH协议版本为2时,DSA私钥存放的位置 |
PermitRootLogin yes |
设定是否允许root管理员直接登录 |
StrictModes yes |
当远程用户的私钥改变时直接拒绝连接 |
MaxAuthTries 6 |
最大密码尝试次数 |
MaxSessions 10 |
最大终端数 |
PasswordAuthentication yes |
是否允许密码验证 |
PermitEmptyPasswords no |
是否允许空密码登录(很不安全) |
注:修改完sshd配置参数后需要重启sshd服务。
[root@linuxprobe ~]#systemctl restart sshd //重启sshd服务。
[root@linuxprobe ~]#systemctl enable sshd //配置sshd服务开机自动启动。
配置安全密钥验证:
1)、在服务器端生成“密钥对”(id_rsa私钥加密,id_rsa.pub公钥解密、验证)。
[root@linuxprobe ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
fd:64:dc:b8:34:a2:07:17:33:56:e5:99:63:5a:68:51 root@linuxprobe.com
The key's randomart image is:
+--[ RSA 2048]----+
| ooE |
| . + o |
| = o B |
| o * * . |
| S + O . |
| + * o |
| . . o |
| . |
+-----------------+
2)、把服务器端主机的公钥文件id_rsa.pub复制到客户端/root/.ssh/目录的authorized_keys文件中。
命令格式:[root@linuxprobe ~]# ssh-copy-id 客户端IP(如192.168.10.20)
(1)公钥文件复制到客户端之前客户端目录中无此文件:
[root@linuxprobe ~]# cd /root/.ssh/
[root@linuxprobe .ssh]# ll
total 8
-rw-------. 1 root root 1679 Mar 8 21:18 id_rsa
-rw-r--r--. 1 root root 401 Mar 8 21:18 id_rsa.pub
(2)把服务器端主机的公钥文件id_rsa.pub复制到客户端/root/.ssh/目录的authorized_keys文件中。
[root@linuxprobe .ssh]# ssh-copy-id 192.168.10.20
The authenticity of host '192.168.10.20 (192.168.10.20)' can't be established.
ECDSA key fingerprint is e7:18:c3:3c:76:83:c0:e3:d9:65:d0:b9:55:51:a6:9b.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.10.10's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.10.20'"
and check to make sure that only the key(s) you wanted were added.
(3)公钥文件id_rsa.pub复制到客户端之后客户端目录中出现authorized_keys文件或者内容添加到该文件中:
[root@linuxprobe .ssh]# ll
total 16
-rw-------. 1 root root 401 Mar 8 21:20 authorized_keys
-rw-------. 1 root root 1679 Mar 8 21:18 id_rsa
-rw-r--r--. 1 root root 401 Mar 8 21:18 id_rsa.pub
-rw-r--r--. 1 root root 175 Mar 8 21:20 known_hosts
3)、验证登录效果
[root@linuxprobe .ssh]# ssh 192.168.10.10
Last login: Sun Mar 8 21:13:53 2020 from 192.168.10.14
[root@linuxprobe ~]#
9.4、远程文件传输命令scp
scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令。scp不仅能够通过网络传送数据,而且所有的数据都将进行加密处理。
命令格式:scp [参数] 本地文件 远程帐户@远程IP地址:远程目录
参数:-v显示详细的连接进度;-P(大写)指定远程主机的sshd端口号;-r递归操作,用于传送文件夹及下的数据。
举例1:本地数据复制到远程
[root@linuxprobe ~]# scp /home/EPEL-linuxprobe.com.tar.bz2 192.168.10.10:/root/
EPEL-linuxprobe.com.tar.bz2 100% 123MB 61.3MB/s 00:02
[root@linuxprobe ~]# cd /root/
[root@linuxprobe ~]# ll
-rw-r--r--. 1 root root 128527996 Mar 8 21:58 EPEL-linuxprobe.com.tar.bz2
举例2:远程数据复制到本地
[root@linuxprobe home]# scp 192.168.10.10:/root/EPEL-linuxprobe.com.tar.bz2 /home
EPEL-linuxprobe.com.tar.bz2 100% 123MB 122.6MB/s 00:00
[root@linuxprobe home]# ll
-rw-r--r--. 1 root root 128527996 Mar 8 21:59 EPEL-linuxprobe.com.tar.bz2
9.5、不间断会话服务
screen是一款能够实现多窗口远程控制的开源服务程序,解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序。
使用screen服务程序同时在多个远程会话中自由切换,能够做到实现如下功能。
①会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。
②多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。
③会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。
screen管理远程会话参数:-S参数创建会话(后跟要创建的会话名称);-ls参数显示当前已有的会话; -r参数恢复指定会话(会话ID或会话名称);-x参数共享指定会话(会话ID或会话名称);-d参数将指定会话(会话ID或会话名称)进行离线处理;-wipe参数把目前无法使用的会话删除。
[root@linuxprobe ~]# yum install screen //首先需要安装screen服务程序。
举例1:创建会话
[root@linuxprobe ~]# screen -S miliguo
举例2:查看已有会话并恢复到指定会话(会话ID或会话名称)
[root@linuxprobe ~]# screen -ls
There is a screen on:
28584.miliguo (Detached)
1 Socket in /var/run/screen/S-root.
[root@linuxprobe ~]# screen -r miliguo或28584
举例3:共享会话 (多个终端显示同一个会话内容)
[root@linuxprobe ~]# screen -x 28584
举例4:将指定会话进行离线处理,但并未删除会话。
[root@linuxprobe ~]# screen -d 28584
[28584.miliguo detached.]
共享会话窗口提示如下信息:
[remote detached from 28584.miliguo]
来源:oschina
链接:https://my.oschina.net/u/3706537/blog/3190247