模块目录:
1. SELinux
2. Firewall
3. samba服务
4. iscsi跨平台共享
5. mariadb数据库
6. Apache httpd网页服务
SELinux
三种运行模式 Enforcing Permissive Disabled
其配置文件为 /etc/selinux/config
命令:
getenforce ---> 查看SELinux的模式
setenforce ---> 临时更改SELinux模式,不过只能在Enforcing和Permissive间切换
getsebool -a ---> 查看布尔值
setsebool ---> 设置布尔值
chcon -R --reference=[目录a] [目录b] ---> 将a的安全上下值赋给b
semanage port -l | grep [软件] ---> 查看某软件的端口号
semanage port -a -t http_port_t -p tcp 8909 ---> 修改某软件的开放端口号(修改的时候会消耗很多内存,耐心等待)
Firewall
防火墙,一般影响两台设备间的通信
四种模式:
public 允许一部分 默认允许ssh,dhcp,ping
trusted 全允许
block 全禁止,并且反馈给客户
drop 全禁止,并且不反馈
命令:
firewall-cmd --get-default-zone ---> 查看防火墙默认安全模式
firewall-cmd --set-default-zone=[安全模式] ---> 设置防火墙默认安全模式
firewall-cmd --zone=public --add-service=[服务名,如http ,ftp] ---> 默认区域的服务添加
firewall-cmd --zone=public --list-all --->列出所有该防火墙的相关服务
samba服务(day12)
作用 跨平台共享文件夹
软件: 服务端samba 客户端cifs-utils
服务: 服务端smb
配置文件 /etc/samba/smb.conf
搭建 :
服务端:装包配置起服务,加用户设权限关se防火墙
1.装包
yum install -y samba
2.建立samba共享用户
pdbedit -a [用户名]
3.修改配置文件
/etc/samba/smb.conf
[名字]
path = [共享目录]
write list = [允许读写的用户名]
4.重启服务
systemctl restart smb
5.SELinux和防火墙
firewall-cmd --set-default-zone=trusted
getsebool -a | grep samba
setsebool samba_export_all_rw on
6.本机目录权限 (setfacl 添加acl权限策略,跟的选项是-m)
setfacl -m u:[用户名]:rwx [共享目录]
客户端:装包,挂载
1. 装包 cifs-utils
2. 挂载 插入到挂载配置文件 /etc/fstab
//[IP]/共享名 [挂载点] cifs defaults,user=[用户名],pass=[密码],_netdev 0 0
注意点:
1. 创建共享用户的命令是pdbedit
2. 软件是samba 服务是smb
3. SELinux干涉samba的是bool值,所以用setsebool命令修改
4. 单独赋权的时候setfacl后面加的选项是-m
5. 客户端可以用samba-client软件做测试具体看day12
6.客户端访问服务端影响的方面
6-1.防火墙(firewall-cmd)
6-2.SELinux(getsebool 和 setsebool)
6-3.服务本身的策略(配置文件)
6-4.服务端本地目录的权限(判断共享目录对于设置的samba用户权限是什么,用setfacl设置)
iscsi 网络磁盘共享
软件: 服务端 targetcli 客户端 iscsi-initiator-utils
服务: 服务端 target 客户端 iscsid iscsi
配置: 服务端 targetcli命令 客户端 /etc/iscsi/initiatorname.iscsi iscsiadm
把服务器的磁盘当本地磁盘用,分backstore(后端存储),target(磁盘组),lun(逻辑单元)
IQN - ISCSI Qualified Name 名称规范,要求极高
iqn.[yyyy]-[mm].[com].[域名]:[自定义标识]
作用:用来识别 target 磁盘组, 也用来识别客户机身份
配置:
服务端:分区关防火墙,装包配置起服务
1. 分区,从磁盘中分一个区(fdisk),不用格式化,具体看day8。
2. 关闭防火墙
3. 装包
yum install -y targetcli
4. 配置
targetcli(里面创建5个模块)
/> backstores/block create name=[名字] dev=[磁盘]
/> iscsi/ create [iqn命名,作为iscsi的名字]
/> iscsi/[tab键]/tpg1/luns create /ba[tab键]
/> iscsi/[tab键]/tpg1/acls create [iqn命名,用于验证用户名]
/> iscsi/[tab键]/tpg1/portals create [本机用于传递的IP]
5.重启服务
systemctl restart target
客户端:装包 配置起服务✖️2
1. 装包
yum install -y iscsi-initiator-utils
2. 配置用户名
vim vim /etc/iscsi/initiatorname.iscsi
把InitiatorName后面的值改成服务端设置的验证的用户名
3. 重启服务
systemctl restart iscsid
4. 配置IP(可以用man iscsiadm中的example来找)
iscsiadm --mode discoverydb --type sendtargets --portal [IP] --discover
5. 重启服务
systemctl restart iscsi
注意点:
1. iscsi服务端装的包是targetcli 而服务是target
2. 客户端要配置两次重启两个服务
3. 网络服务要处理好防火墙和SELinux
4. 在服务端配置的时候多用tab键
mariadb数据库
配置:
装包: yum install -y mariadb-server
起服务: systemctl restart mariadb
修改密码:
mysqladmin -u [用户名] [-p[旧密码]] password '新密码'
登录:
mysql -u [用户名] -p[密码]
导入备份:
mysql -u [用户名] -p[密码] [库] < [文件]
基本操作:
show databases 查看所有库的基本信息
use database [库名] 前往某个库
show tables 查看库中的表的基本信息
对用户创建并赋权
grant [增删改查的权限] on [库].[表] to [用户名]@[登陆IP] identified by [密码];
对表进行查找
select [表1].[表中数据的字段1],[表2].[表中数据的字段2]…… from [表1],[表2]…… where [表].[字段] = '' and ……;
对表进行删除
delete from [表1],[表2]…… where [表].[字段] = '' and ……;
对表进行增加
insert into [表] values ('[按照表的要求写入数据1]','[按照表的要求写入数据2]' …… );
注意点:
1. mariadb 进去数据库的命令是mysql , 设置密码是 mysqladmin
2. ***注意登录或者改密码时候-p后面要紧跟密码,不能有空格
3. mariadb 数据库中,每个语句要家;
4. 增删改查中where用于设置条件,其连接方式是and,其他是用[ , ] 所以要注意分开记忆。
Apache http网页服务
软件包: httpd
服务: httpd
配置: /etc/httpd/conf/httpd.conf(主配置文件) /ect/httpd/conf.d/*.conf(用户配置文件)
配置(只有服务端,客户端直接访问就好):
1. 安装配置文件 yum install -y httpd
2. 起服务:systemctl restart httpd
对其进行特殊要求的部署:
1. 修改域名 --> vim /etc/httpd/conf/httpd.conf 中的 ServerName行
2. 修改网页文件根目录 --> vim /etc/httpd/conf/httpd.conf 中的 DocumentRoot
3. 虚拟主机 --> 修改配置文件 /etc/httpd/conf.d/[自己设置虚拟主机配置的名字].conf
<virtualhost [IP,一般是*]:[端口,一般是80]>
ServerName [域名]
DocumentRoot [网络根目录]
</virtualhost>
4. 设置权限(一般默认/var/www下所有子目录对所有人有访问权限,其他地方默认没有权限)--> 修改配置文件 /etc/httpd/conf.d/[自己设置权限配置的名字].conf ---> 设置SELinux的安全上下文值
<Directory [目录的绝对路径]>
Require all granted | denied # 全体禁止访问或者允许
Require ip [IP] # 只允许某IP访问
</Directory>
**** 设置完权限要设置SELinux 的安全上下文值
chcon -R --reference=[目录a] [目录b] # 把a目录的上下文值给b目录
5. 部署Python的动态页面 ---> 装包,修改 conf.d/[虚拟主机配置文件].conf
yum install -y mod_wsgi
vim /etc/httpd/conf.d/[虚拟主机的配置文件]
<VirtualHost *:80>
WsgiScriptAlias [客户端网络路径] [服务器实际原始路径]
</VirtualHost>
6. 修改端口 ---> 修改配置文件vim /etc/httpd/conf.d/[虚拟主机的配置文件] --->修改SELinux的开发端口
vim /etc/httpd/conf.d/[虚拟主机的配置文件]
Listen 8909
<VirtualHost *:8909>
WsgiScriptAlias [客户端网络路径] [服务器实际原始路径]
</VirtualHost>
semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 8909
注意:
1. 每次修改配置文件都要重启服务
2. 虚拟主机存在的时候,直接用IP,会调用第一个虚拟主机的信息,客户端调用的时候,出现端口不匹配或者域名不匹配,当中有一个不匹配时,会根据端口信息调用该端口中的第一个虚拟主机。
3. 搭建Apache服务的时候,需要考虑的几个问题:1.部署的服务是否有权限 2. 修改到新的路径下,要设置权限并且修改目录的上下文值(部署到/var/www以外的地方)3. 设置SELinux的默认端口,并且配置文件中要写Listen(修改端口信息)