linux学习笔记(4)

第9章使用ssh服务管理远程主机

9.1 配置网卡服务

9.1.1 配置网卡参数

网卡配置文件位于目录:/etc/sysconfig/network-scripts/

文件ifcfg-eth0即为网络配置文件(不同版本的linux文件名可能会有差异)

当修改完Linux系统中的服务配置文件后,并不会对服务程序立即产生效果。要想让服务程序获取到最新的配置文件,需要手动重启相应的服务:

# systemctl restart network

9.1.2 创建网络会话

RHEL和CentOS系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。可以使用nmcli命令来管理Network Manager服务:

# nmcli connection show

网络会话支持配置不同的网络使用环境(如办公网络、家庭网络),可以使用nmcli命令并按照“connection add con-name type ifname”的格式来创建网络会话

9.1.3 绑定两块网卡

9.2 远程控制服务

9.2.1 配置sshd服务

SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。想要使用SSH协议来远程管理Linux系统,则需要部署配置sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序。

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

是否允许空密码登录(很不安全)

禁止以root管理员的身份远程登录到服务器,则可以大大降低被黑客暴力破解密码的几率。配置方法:修改/etc/ssh/sshd_config,将PermitRootLogin取值修改为 no,然后重启sshd服务:

# systemctl restart sshd
# systemctl enable sshd

9.2.2 安全密钥验证

如果正确配置了密钥验证方式,那么sshd服务程序将更加安全。密钥配置过程大致如下,具体配置命令略:

1.     在客户端生成密钥对

2.     把客户端主机中生成的公钥文件传送至远程主机

3.     对服务器进行设置,使其只允许密钥验证,拒绝传统的口令验证方式

之后客户端再登录服务器,不用密码也可以成功登录

9.2.3 远程传输命令SCP

scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令

上传文件的命令格式为:

“scp [参数] 本地文件远程帐户@远程IP地址:远程目录”,

下载文件的命令格式为:

“scp [参数] 远程用户@远程IP地址:远程文件本地目录”

参数

作用

-v

显示详细的连接进度

-P

指定远程主机的sshd端口号

-r

用于传送文件夹

-6

使用IPv6协议

9.3 不间断会话服务

使用sshd服务当与远程主机的会话被关闭时,在远程主机上运行的命令也随之被中断。可以用screen命令实现多窗口远程控制和多个远程会话中自由切换。screen安装:

执行命令:yum install screen

9.3.1 管理远程会话

screen命令能做的事情非常多:

l  可以用-S参数创建会话窗口;

l  用-d参数将指定会话进行离线处理;

l  用-r参数恢复指定会话;

l  用-x参数一次性恢复所有的会话;

l  用-ls参数显示当前已有的会话;

l  以及用-wipe参数把目前无法使用的会话删除

当在命令行中敲下这条命令的一瞬间,屏幕会快速闪动一下,这时就已经进入screen服务会话中了,在里面运行的任何操作都会被后台记录下来,执行命令后会立即返回一个提示符。虽然看起来与刚才没有不同,但实际上可以查看到当前的会话正在工作中。

[root@linuxprobe ~]# screen -S backup
[root@linuxprobe ~]#
[root@linuxprobe ~]# screen -ls
There is a screen on:
32230.backup (Attached)
1 Socket in /var/run/screen/S-root.

要想退出一个会话也十分简单,只需在命令行中执行exit命令即可。

9.3.2 会话共享功能

当多个用户同时控制主机的时候,screen可以把屏幕内容共享出来,也就是说每个用户都可以看到相同的内容。要实现会话共享功能,首先使用ssh服务程序将终端A远程连接到服务器,并创建一个会话窗口。然后,使用ssh服务程序将终端B远程连接到服务器,并执行获取远程会话的命令。接下来,两台主机就能看到相同的内容了。

[root@client A ~]# ssh 192.168.10.10
[root@client A ~]# screen -S linuxprobe
 
[root@client B ~]# ssh 192.168.10.10
[root@client B ~]# screen -x 

第10章使用Apache服务部署静态网站

10.1 安装Apache服务程序

# yum install httpd

安装完成之后可以用下面的命令启用httpd服务:

[root@linuxprobe ~]# systemctl start httpd
[root@linuxprobe ~]# systemctl enable httpd

之后浏览器访问:http://127.0.0.1即可看到Web服务的httpd服务程序的默认页面了

10.2 配置服务文件参数

httpd服务程序的主要配置文件及存放位置如下:

服务目录

/etc/httpd

主配置文件

/etc/httpd/conf/httpd.conf

网站数据目录

/var/www/html

访问日志

/var/log/httpd/access_log

错误日志

/var/log/httpd/error_log

配置httpd服务程序时最常用的参数以及用途描述如下:

ServerRoot

服务目录

ServerAdmin

管理员邮箱

User

运行服务的用户

Group

运行服务的用户组

ServerName

网站服务器的域名

DocumentRoot

网站数据目录

Listen

监听的IP地址与端口号

DirectoryIndex

默认的索引页页面

ErrorLog

错误日志文件

CustomLog

访问日志文件

Timeout

网页超时时间,默认为300

DocumentRoot参数用于定义网站数据的保存路径,其参数的默认值是把网站数据存放到/var/www/html目录中;而当前网站普遍的首页面名称是index.html,因此可以向/var/www/html目录中写入一个文件,替换掉httpd服务程序的默认首页面,该操作会立即生效

10.3 SELinux安全子系统

SELinux(Security-EnhancedLinux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。SELinux服务有三种配置模式,具体如下:

l  enforcing:强制启用安全策略模式,将拦截服务的不合法请求。

l  permissive:遇到服务越权访问时,只发出警告而不强制拦截。

l  disabled:对于越权的行为不警告也不拦截。

模式的修改如下:

vim /etc/selinux/config

可以使用getenforce命令获得当前SELinux服务的运行模式:

# getenforce 

如果把网站数据存放到默认目录(/var/www/html)之外的目录,则很可能会由于SELinux的监管原则的限制导致网站不能正常访问,这时可以用semanage命令来修改SELinux策略以使网站可以正常访问

[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*

10.4 个人用户主页功能

httpd服务程序提供的个人用户主页功能可以让系统内所有的用户在自己的家目录中管理个人的网站,实现步骤如下(前提是SELinux服务已经设置为enforcing):

l  开启个人用户主页功能:编辑文件vim /etc/httpd/conf.d/userdir.conf,取消“UserDir disabled”和“UserDirpublic_html”的注释

l  在/home目录下创建网站数据的目录及首页面文件,并将/home目录的权限递归修改为755

l  使用如下命令修改SELinux域安全策略:

# setsebool -P httpd_enable_homedirs=on

l  重新启动httpd服务程序,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”

另外可以给网站加入口令功能,以便保证只有验证通过的用户才可以访问网站,操作基本步骤如下:

l  先使用htpasswd命令生成密码数据库

htpasswd -c /etc/httpd/passwd linuxprobe

l  然后编辑个人用户主页功能的配置文件

vim /etc/httpd/conf.d/userdir.conf

10.5 虚拟网站主机功能

利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术

10.5.1 基于IP地址

如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,这样当用户请求访问不同的IP地址时,会访问到不同网站的页面资源

第1步:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件

第2步:在httpd服务的配置文件中大约113行处开始,分别追加写入三个基于IP地址的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效

[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
113 <VirtualHost 192.168.10.10>
114 DocumentRoot /home/wwwroot/10
115 ServerName www.linuxprobe.com
116 <Directory /home/wwwroot/10 >
117 AllowOverride None
118 Require all granted
119 </Directory>
120 </VirtualHost>

第3步需要手动把新的网站数据目录的SELinux安全上下文设置正确(见10.3)

10.5.2 基于主机域名

当服务器无法为每个网站都分配一个独立IP地址的时候,可以尝试让Apache自动识别用户请求的域名,从而根据不同的域名请求来传输不同的内容

第1步:手工定义IP地址与域名之间对应关系的配置文件,保存并退出后会立即生效。可以通过分别ping这些域名来验证域名是否已经成功解析为IP地址

# vim /etc/hosts
192.168.10.10 www.linuxprobe.com bbs.linuxprobe.com tech.linuxprobe.com
# ping -c 4 www.linuxprobe.com

第2步:分别在/home/wwwroot中创建用于保存不同网站数据的三个目录(我是在/var/www/html目录下创建的),并向其中分别写入网站的首页文件

第3步:在httpd服务的配置文件中大约113行处开始,分别追加写入三个基于主机名的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效

# vim /etc/httpd/conf/httpd.conf
113 <VirtualHost 192.168.10.10>
114 DocumentRoot "/home/wwwroot/www"
115 ServerName "www.linuxprobe.com"
116 <Directory "/home/wwwroot/www">
117 AllowOverride None
118 Require all granted
119 </Directory> 
120 </VirtualHost>

10.5.3 基于端口号

基于端口号的虚拟主机功能可以让用户通过指定的端口号来访问服务器上的网站资源。在使用Apache配置虚拟网站主机功能时,基于端口号的配置方式是最复杂的。因此我们不仅要考虑httpd服务程序的配置因素,还需要考虑到SELinux服务对新开设端口的监控

第1步:分别在/home/wwwroot中创建用于保存不同网站数据的两个目录,并向其中分别写入网站的首页文件

第2步:在httpd服务配置文件的第43行和第44行分别添加用于监听6111和6222端口的参数(参考Listen 80配置)

第3步:在httpd服务的配置文件中大约113行处开始,分别追加写入两个基于端口号的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。

# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息……………… 
113 <VirtualHost 192.168.10.10:6111>
114 DocumentRoot "/home/wwwroot/6111"
115 ServerName www.linuxprobe.com
116 <Directory "/home/wwwroot/6111">
117 AllowOverride None
118 Require all granted
119 </Directory> 
120 </VirtualHost>

第4步:SELinux允许的与HTTP协议相关的端口号中默认没有包含6111和6222,因此需要将这两个端口号手动添加进去。该操作会立即生效,而且在系统重启过后依然有效

10.6 Apache的访问控制

Apache可以基于源主机名、源IP地址或源主机上的浏览器特征等信息对网站上的资源进行访问控制。它通过Allow指令允许某个主机访问服务器上的网站资源,通过Deny指令实现禁止访问。通过Order指令来定义Allow或Deny指令起作用的顺序

如,以下设置只允许使用火狐浏览器进行访问:

# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
129 <Directory "/var/www/html/server">
130 SetEnvIf User-Agent "Firefox" ff=1
131 Order allow,deny
132 Allow from env=ff
133 </Directory>

猜你喜欢

转载自blog.csdn.net/weixin_42534940/article/details/81016676