- SUDO,PAM配置规范说明
sudo:
是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
具体工作过程如下:
当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
–>确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
–>若密码输入成功,则开始执行sudo后续的命令
编辑配置文件的方式
# sudoedit /etc/sudoers
# vim /etc/sudoers
# visudo
[root@oracle11g ~]# cat /etc/sudoers | grep -v "#"| grep -v "^$"
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: ALL
%test ALL=(ALL) ALL
格式: who which_hosts=(runas) command
PAM
1、pam介绍
在linux中,PAM是指可动态加载验证模块,是一套共享库,使本地系统管理员可以随意选择程序的认证方式;因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。PAM使用配置“/etc/pam.d/”下的文件,来管理对程序的认证方式。应用程序 调用相应的配置文件,从而调用本地的认证模块。
2、pam查看命令
通过ldd命令查看服务名,确定服务是否使用pam功能(pam服务对应libpam*.so库文件)
ldd /usr/sbin/sshd
linux-vdso.so.1 => (0x00007fff1b8ef000)
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f579f2d8000)
libpam.so.0 => /lib64/libpam.so.0 (0x00007f579f0cb000)
3、Linux系统PAM配置
/lib/security目录存放pam模块文件
pam_access.so 控制访问者地址与账号名称
pam_listfile.so 控制访问者的账号名称或登录位置
pam_limits.so 控制为用户分配的资源
pam_rootok.so 对管理员(uid=0)无条件允许通过
pam_userdb.so 设定独立用户账号数据库认证
/etc/pam.d目录存放使用pam的服务名
ogin -------/etc/pam.d/login
ipop3d -------/etc/pam.d/pop
vsftpd -------/etc/pam.d/ftp(编译安装)或/etc/pam.d/vsftpd(rpm安装)
sshd -------/etc/pam.d/sshd
su -------/etc/pam.d/su
/etc/security/目录存放pam认证、鉴权时使用的配置文件,如limits.conf
通过配置文件增改删进程的鉴权规则
- chrony搭建私有ntp服务
服务端配置
1、服务端安装chrony
rpm -q chrony && > /dev/null || yum -y install chrony
2、服务端修改配置文件,注释默认时钟地址添加网络时钟服务器地址
vim /etc/chrony.conf
#pool 2.pool.ntp.org iburst #注释掉自带的
server ntp.aliyun.com iburst #和阿里云的服务器同步
server time1.cloud.tencent.com iburst #和腾讯云同步
# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 192.168.217.0/24 #加上这一行,指定允许同步的网段
# Serve time even if not synchronized to a time source.
#local stratum 10 #将这一行的注释去掉。表示互联网无法连接时,仍然可以为客户端提供时间同步
3、重启chrony服务,并查看chrony端口是否启用
systemctl restart chronyd.service
客户端配置
编辑配置文件,并重启chrony服务
1、修改配置为服务端地址
vim /etc/chrony.conf
#注释点默认服务器,添加上之前设置好的时间服务器
#pool 2.pool.ntp.org iburst
server 192.168.217.132 iburst
2、重启服务
systemctl restart chronyd.service
- 说明CDN原理
其实 CDN 就是内容分发网络的意思,其英文全称为 Content Delivery Network。简单地说,CDN 可以提前把数据存在离用户最近的数据节点,从而避免长途跋涉经过长途骨干网,最终达到减少骨干网负担、提高访问速度的目的。
CDN 基本工作过程
1、浏览器发起图片 URL 请求,经过本地 DNS 解析,会将域名解析权交给域名 CNAME 指向的 CDN 专用 DNS 服务器。
2、CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回给浏览器。
3、浏览器向 CDN 全局负载均衡设备发起 URL 请求。
4、CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的 URL,选择一台用户所属区域的区域负载均衡设备,向其发起请求。
5、区域负载均衡设备会为用户选择最合适的 CDN 缓存服务器(考虑的依据包括:服务器负载情况,距离用户的距离等),并返回给全局负载均衡设备。
6、全局负载均衡设备将选中的 CDN 缓存服务器 IP 地址返回给用户。
7、用户向 CDN 缓存服务器发起请求,缓存服务器响应用户请求,最终将用户所需要偶的内容返回给浏览器。
- 搭建智能DNS,实现不同地域客户端解析到不同主机
主DNS服务器操作
1、配置网卡
[root@master01 ~]# hostname -I
10.0.0.10 20.0.0.10
2、主配置文件vim /etc/named.conf
# 在最上方添加
acl beijingnet {
10.0.0.0/24;
};
acl shanghainet {
20.0.0.0/24;
};
acl othernet {
any;
};
# 注释两行
//listen-on port 53 { 127.0.0.1; };
//allow-query { localhost; };
# 创建 view
view beijingview {
match-clients { beijingnet; };
include "/etc/named.rfc1912.zones.beijing";
};
view shanghaiview {
match-clients { shanghainet; };
include "/etc/named.rfc1912.zones.shanghai";
};
view otherview {
match-clients { othernet; };
include "/etc/named.rfc1912.zones";
};
# 删除此行
include "/etc/named.rfc1912.zones;
3、区域配置文件
[root@master01 ~]# vim /etc/named.rfc1912.zones
zone "." IN {
type hint;
file "named.ca";
};
zone "test.com" IN {
type master;
file "test.com.zone";
};
[root@master01 ~]# vim /etc/named.rfc1912.zones.beijing
zone "." IN {
type hint;
file "named.ca";
};
zone "test.com" IN {
type master;
file "test.com.zone.beijing";
};
[root@master01 ~]# vim /etc/named.rfc1912.zones.shanghai
zone "." IN {
type hint;
file "named.ca";
};
zone "test.com" IN {
type master;
file "test.com.zone.shanghai";
};
4、区域数据库文件
[root@master01 ~]# vim /var/named/test.com.zone
$TTL 1D
@ IN SOA master test.com. ( 1 1D 6H 1W 1D )
NS master
master A 10.0.0.10
[root@master01 ~]# vim /var/named/test.com.zone.beijing
$TTL 1D
@ IN SOA master test.com. ( 1 1D 6H 1W 1D )
NS master
master A 10.0.0.10
www A 1.1.1.1
[root@master01 ~]# vim /var/named/test.com.zone.shanghai
$TTL 1D
@ IN SOA master test.com. ( 1 1D 6H 1W 1D )
NS master
master A 10.0.0.10
www A 2.2.2.2
5、生效配置文件
# 第一次启动服务
systemctl start named
# 不是第一次启动服务
rndc reload
客户端测试
[root@test01 ~]# host www.test.com @10.0.0.10
www.test.com. 86400 IN A 1.1.1.1
[root@test01 ~]# dig www.test.com @20.0.0.10
www.test.com. 86400 IN A 2.2.2.2
-
解释DNS解析流程
DNS服务工作原理(递归查询:负责到底,迭代查询不会负责到底)
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
- 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址
- 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址
- 权威 DNS 服务器 :返回相应主机的 IP 地址
域名解析过程
1、客户机提出域名解析请求,并将该请求发送给本地的域名服务器
2、当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回.
3、如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址.
4、本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址.
5、重复第四步,直到找到正确的纪录.
6、本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机.
- iptables 5表5链解释
五表
filter:过滤规则表,根据预定义的规则过滤符合条件的数据包(默认表)
nat:地址转换规则表
mangle:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由 Linux 安全模块(如 SELinux)实现
优先级
security --> raw --> mangle --> nat --> filter
五链
INPUT链:处理输入数据包
OUTPUT链:处理输出数据包
FORWARD链:处理转发数据包
PREROUTING链:用于目标地址转换(DNAT)
POSTOUTING链:用于源地址转换(SNAT)
数据报文流向
到本机某进程的报文:PREROUTING –> INPUT
由本机转发的报文:PREROUTING –> FORWARD –> POSTROUTING
由本机的某进程发出报文(通常为响应报文):OUTPUT –> POSTROUTING
表链关系
PREROUTING 的规则可以存在于:raw表,mangle表,nat表
INPUT 的规则可以存在于:mangle表,filter表
FORWARD 的规则可以存在于:mangle表,filter表
OUTPUT 的规则可以存在于:raw表mangle表,nat表,filter表
POSTROUTING 的规则可以存在于:mangle表,nat表
- iptables/firewalld/nftable 实现主机防火墙。5000-6000端口仅192.168.0.0/24网段内的主机访问
iptables -A INPUT -p tcp --dport 5000:6000 ! -s 192.168.0.0/24 -j REJECT
firewalld-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 port port=5000-6000 accept'
- mysql的各发行版有哪些 ?
常见 MySQL 发行版本:
MySQL 官方版本:分为社区版和企业版,企业版性能略强,提供了更多的功能和工具
Percona MySQL:基于官方社区版本二次开发,增加了一些 MySQL 官方企业版才有的功能,同时对官方社区版进行了一些优化
MariaDB:MySQL 初创者开发,很大程度上兼容 MySQL,可以很容易的将数据从 MySQL 迁移到 MariaDB 上
- mysql索引的作用
MySQL索引一般是用于加速表的查询的,索引一般分为
1.主键索引:基于主键做的索引,比如订单表的编号是自动增长的(auto_increment),同时订单号又是主键,可以做基于订单号的索引
2.聚簇索引:数据data和索引index放在一起,形成一个磁盘上的文件
3.B+TREE索引:索引上只存放索引信息,基本分为一层根节点+一层分支节点,下面都是数据了,查询效率最高,一般的MySQL表都是BTREE索引,同时下面的数据都是加了链表的,数据都是有链接起来的,查询速度快,节省性能--->一般来说都是b_tree索引
10.mysql btree索引的原理
B-Tree 结构的数据可以让系统高效的找到数据所在的磁盘块
B树的搜索,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为空,或已经是叶子结点
- mysql安全加固?
执行mysql_secure_installation 修改mysql密码、删除匿名账户、测试库等。
限制连入数据库的网段。
开启二进制日志、慢查询日志。