yoobak

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

SUDO,PAM,chrony,智能DNS,防火墙,Mysql简介

sudo配置规范

包sudo

[root@rocky ~]# rpm -ql sudo
...........
/etc/sudoers
/etc/sudoers.d
...........

有两个文件都可以配置

[root@rocky ~]# vim /etc/sudoers
[root@rocky ~]# vim /etc/sudoers.d/

配置文件支持通配符

? * [abc] [!abc] \x [[alpha]] 	
  • ? 匹配任意一个字符

  • *匹配一个或多个字符

  • [abc]匹配a,b,c其中的一个

  • [!abc]匹配除了a,b,c以外的字符

  • \x 转义

  • [[alpha]]字母

配置文件规则有两类

  • 别名定义:非必须
  • 授权规则:必须

sudoers授权规则:

用户 登入主机=(代表用户)命令

user hosts=(runas) command

[root@rocky ~]# sed '/^#/d;/^$/d' /etc/sudoers
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

sudoers别名

User和runas:

		username

		#uid

		%#gid

		user_alias|runas_alias

host:

		ip或hostname

		network

		host_alias

command:

		command name

		directory

		sudoedit

		Cmnd_Alias

sudo别名

  • User_Alias
  • Runas_Alias
  • Host_Alias
  • Cmnd_Alias

PAM配置规范

首先确认是否支持PAM

[root@rocky ~]# ldd `which sshd` | grep libpam
	libpam.so.0 => /lib64/libpam.so.0 (0x00007fb64975d000)
[root@rocky ~]# ldd `which passwd` | grep pam
	libpam.so.0 => /lib64/libpam.so.0 (0x00007ff47199b000)
	libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007ff471797000)

是支持的

修改PAM配置会立即生效

通用配置文件/etc/pam.conf,此格式不使用

application  type control module-path arguments

专用配置文件/etc/pam.d/格式

type  control  module-path  arguments
[root@rocky pam.d]# ls
atd          crond             gdm-launch-environment  other          remote          smtp.postfix      sudo-i        vmtoolsd
chfn         cups              gdm-password            passwd         runuser         sshd              su-l          xserver
chsh         fingerprint-auth  gdm-pin                 password-auth  runuser-l       sssd-shadowutils  system-auth
cockpit      gdm-autologin     gdm-smartcard           polkit-1       smartcard-auth  su                systemd-user
config-util  gdm-fingerprint   login                   postlogin      smtp            sudo              vlock
[root@rocky pam.d]# cat atd 
# The PAM configuration file for the at daemon
#
#
auth       required    pam_env.so
auth       include     password-auth
account    required    pam_access.so
account    include     password-auth
session    required    pam_loginuid.so
session    include     password-auth

module-type

Auth:账号的认证和授权

Account:账号的有效性,如:用来限制或者允许用户对某个服务的访问时间,位置(root用户只能从控制台登录)

Password:用户修改密码时密码复杂度检查功能

Session:用户会话的控制,如:最多打开的文件数...

-type:表示因为缺少而不能加载的模块将不记录到系统日志

Control

required:一票否决,本模块必须返回成功才能通过认证,失败的话就要等到同一type中的所有模块执行完毕,再将失败结果返回应用程序。

requisite:一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,直接将控制权返回给应用程序。

sufficient:一票通过,本模块返回成功即通过身份认证要求。不再执行同一type的其他模块。如果本模块返回失败可忽略。

optional:本模块非必须。结果如何不会对身份认证起关键作用。

include:调用其他配置文件中定义的配置信息。

module-path

所在的绝对路径:

所在的相对路径:/lib64/security

[root@rocky ~]# cd /lib64/security/
[root@rocky security]# ls
pam_access.so        pam_filter            pam_loginuid.so          pam_securetty.so       pam_tty_audit.so
pam_cap.so           pam_filter.so         pam_mail.so              pam_selinux_permit.so  pam_umask.so
pam_chroot.so        pam_fprintd.so        pam_mkhomedir.so         pam_selinux.so         pam_unix_acct.so
pam_cockpit_cert.so  pam_ftp.so            pam_motd.so              pam_sepermit.so        pam_unix_auth.so
pam_console.so       pam_gdm.so            pam_namespace.so         pam_shells.so          pam_unix_passwd.so
pam_cracklib.so      pam_gnome_keyring.so  pam_nologin.so           pam_ssh_add.so         pam_unix_session.so
pam_debug.so         pam_group.so          pam_oddjob_mkhomedir.so  pam_sss_gss.so         pam_unix.so
pam_deny.so          pam_issue.so          pam_permit.so            pam_sss.so             pam_userdb.so
pam_echo.so          pam_keyinit.so        pam_postgresok.so        pam_stress.so          pam_usertype.so
pam_env.so           pam_lastlog.so        pam_pwhistory.so         pam_succeed_if.so      pam_warn.so
pam_exec.so          pam_limits.so         pam_pwquality.so         pam_systemd.so         pam_wheel.so
pam_faildelay.so     pam_listfile.so       pam_rhosts.so            pam_time.so            pam_xauth.so
pam_faillock.so      pam_localuser.so      pam_rootok.so            pam_timestamp.so

有些模块有专有配置文件,在/etc/security/*.conf

[root@rocky security]# cd /etc/security/
[root@rocky security]# ls
access.conf   console.handlers  faillock.conf  limits.d        namespace.init  pwquality.conf    time.conf
chroot.conf   console.perms     group.conf     namespace.conf  opasswd         pwquality.conf.d
console.apps  console.perms.d   limits.conf    namespace.d     pam_env.conf    sepermit.conf

Arguments

debug:该模块把调试信息写入系统日志文件中

no_warn:该模块不应把警告信息发送到应用程序中

use_first_pass:不能提示用户输入密码,只能从前一个模块得到输入密码

try_first_pass:该模块首先用前一个模块从用户得到密码,如果不通过,则提示用户输入密码

use_mapped_pass:不能提示用户输入密码,使用映射过的密码

expose_account:允许该模块显示用户的账号名等信息。用一定的安全风险。

常见PAM模块

pam_limits.so

实现对可使用资源的限制

[root@rocky ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 6903
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 6903
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

要对其永久保存必须写入配置文件

/etc/security/limits.conf
/etc/security/limits.d/

配置文件格式

<domain>		<type>		<item>		<value>

domain

  • Username 单个用户
  • @group组内所有用户
  • *所有用户
  • %仅用于限制maxlogins limit,可以使用%group语法

type

  • Soft 软限制,普通用户可自行修改
  • Hard 硬限制,由root用户设定,且通过kernel强制生效
  • -二者同时限定

item

  • nofile 同时打开的最大文件数量,默认为1024
  • nproc同时打开的最大进程数量,默认为1024

chrony搭建私有ntp服务

准备一台可以连接外网的服务器作为NTP服务器,为企业内部提供NTP

服务器端配置

[root@rocky ~]# yum install chrony
[root@rocky ~]# vim /etc/chrony.conf 
#pool 2.rhel.pool.ntp.org iburst  自身带有的注释掉
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
allow 0.0.0.0/0    加上就是允许所有网段同步
local stratum 10   去掉注释#,当互联网无法连接时,仍然可以为客户端同步  
[root@rocky ~]# systemctl restart chronyd
[root@rocky ~]# hostname -I
192.168.3.130 

客户端配置

[root@centos7 ~]# vi /etc/chrony.conf 
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server  192.168.3.130         iburst  把原有的注释掉,加上此行
[root@centos7 ~]# systemctl restart chronyd.service

CDN原理

CDN的基本原理是在用户访问相对集中的地区和网络设置一些缓存服务器。当用户访问网站时,利用全局的负载均衡技术将用户的访问指向距离最近的缓存服务器,由缓存服务器代替源站响应用户的访问请求。

搭建智能DNS

实现不同地域客户端解析到不同主机

准备5台主机

DNS主服务器和web服务器:10.0.0.8/24,192.168.3.140/24

web服务器:10.0.0.7

web服务器:192.168.3.130

客户端服务器:192.168.3.141

客户端服务器:10.0.0.6

DNS主服务器配置

安装bind,bind-utils,之后进入该配置文件

[root@rocky ~]# yum install bind -y ;yum install bind-utils -y
Last metadata expiration check: 1:23:05 ago on Sat 05 Aug 2023 01:57:18 PM CST.
Package bind-32:9.11.36-5.el8_7.2.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
Last metadata expiration check: 1:23:06 ago on Sat 05 Aug 2023 01:57:18 PM CST.
Package bind-utils-32:9.11.36-5.el8_7.2.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@rocky ~]# cat /etc/named.conf 
..............................................
acl beijingnet{
	192.168.3.0/24;
};
acl shengzhengnet{
	10.0.0.0/24;
};
acl othernet {
	any;
};

options {
//	listen-on port 53 { 127.0.0.1; };
...............................................
//	allow-query     { localhost; };
...............................................
//zone "." IN {
//	type hint;
//	file "named.ca";
// };

view beijingview {
	match-clients { beijingnet; };
	include "/etc/named.rfc1912.zones.bj";
};
view shengzhengview {
	match-clients { shengzhengnet; };
	include "/etc/named.rfc1912.zones.sz";
};
view otherview {
	match-clients { othernet; };
	include "/etc/named.rfc1912.zones.other";
};

//include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

配置区域文件

[root@rocky ~]# cat /etc/named.rfc1912.zones.bj
zone "." IN {
	type hint;
	file "named.ca";
};
zone "magedu.org" {
	type master;
	file "magedu.org.zone.bj";
};

[root@rocky ~]# cat /etc/named.rfc1912.zones.sz 
zone "." IN {
	type hint;
	file "named.ca";
};
zone "magedu.org" {
	type master;
	file "magedu.org.zone.sz";
};

[root@rocky ~]# cat /etc/named.rfc1912.zones.other 
zone "." IN {
	type hint;
	file "named.ca";
};
zone "magedu.org" {
	type master;
	file "magedu.org.zone.other";
};

配置数据库文件

[root@rocky ~]# cat  /var/named/magedu.org.zone.bj
$TTL 1D
@	IN	SOA	master	admin.magedu.org. (
				20230804    ; serial
				1D	; refresh
				1H	; retry
				1W	; expire
				3H )	   ; minimum
			NS	master
master			A	10.0.0.8
websrv			A	192.168.3.130
www			CNAME 	websrv
[root@rocky ~]# cat  /var/named/magedu.org.zone.sz
$TTL	1D
@	IN	SOA	master admin.magedu.org. (
				20230804  ; serial
				1D	; refresh
				1H	; retry
				1W	; expire
				3H )	   ; minimum
			NS	master
master			A	10.0.0.8
websrv			A	10.0.0.7
www			CNAME	websrv
[root@rocky ~]# cat  /var/named/magedu.org.zone.other 
$TTL	1D
@	IN	SOA	master admin.magedu.org. (
				20230804  ; serial
				1D	; refresh
				1H	; retry
				1W	; expire
				3H )	   ; minimum
			NS	master
master			A	10.0.0.8
websrv			A	157.0.0.1
www			CNAME	websrv
[root@rocky ~]# rndc reload  //已开启named服务使用这个
[root@rocky ~]# systemctl start named  

所有web服务器安装httpd

yum install httpd  -y

web服务器:192.168.3.140

[root@rocky ~]# echo GG Bond in other > /var/www/html/index.html

web服务器:192.168.3.130

[root@rocky ~]# echo GG Bond in beijing > /var/www/html/index.html

web服务器:10.0.0.7

[root@rocky ~]# echo GG Bond in shengzheng > /var/www/html/index.html

所有web服务器

systemctl  start httpd

主机192.168.3.141,DNS要指向192.168.3.130

[root@centos7 ~]# dig A www.magedu.org

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> A www.magedu.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24072
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.magedu.org.			IN	A

;; ANSWER SECTION:
www.magedu.org.		86400	IN	CNAME	websrv.magedu.org.
websrv.magedu.org.	86400	IN	A	192.168.3.130

;; AUTHORITY SECTION:
magedu.org.		86400	IN	NS	master.magedu.org.

;; ADDITIONAL SECTION:
master.magedu.org.	86400	IN	A	10.0.0.8

;; Query time: 0 msec
;; SERVER: 192.168.3.140#53(192.168.3.140)
;; WHEN: Sat Aug 05 17:15:03 CST 2023
;; MSG SIZE  rcvd: 117

[root@centos7 ~]# curl www.magedu.org
GG Bond in beijing

主机10.0.0.6,DNS要指向10.0.0.8

[root@localhost ~]# curl www.magedu.org
GG Bond in shengzheng

主机192.168.3.140,DNS要指向157.0.0.1

[root@rocky ~]# curl www.magedu.org
GG Bond in other

DNS解析流程

客户端发起网址链接,通过DNS代理服务器询问,如果不知道,代理服务器向根域名服务器询问(它说:不知道,.com或许知道),向.com服务器发起询问(它说:不知道,GGbond.com或许知道),向GG bond.com域名服务器发起询问(它说:知道)得到对应的IP地址,返回给DNS代理服务器,DNS读取缓存。最后返回给用户。

iptables

iptables 实现主机防火墙。5000-6000端口仅192.168.0.0/24网段内的主机访问

使用iptables前提需要关闭firewalld

[root@rocky conf]# systemctl disable --now firewalld

查看iptables的策略

[root@rocky conf]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination        

指定端口时,要调用 -m multiport 模块

[root@rocky conf]# iptables -AINPUT -s 192.168.0.0/24 -p tcp -m multiport ! --dport 5000:6000 -j REJECT
[root@rocky conf]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       192.168.0.0          0.0.0.0/0            multiport dports  !5000:6000

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination    

安装httpd,修改端口为5001

[root@rocky conf]# yum install -y httpd; echo GG bond in Beijing > /var/www/html/index.html
[root@rocky conf]# sed -i '/^Listen 80/c Listen 5001' /etc/httpd/conf/httpd.conf
[root@rocky conf]# systemctl enabeld --now httpd

用另外一台192.168.3.140测试一下

[root@rocky ~]# hostname -I
192.168.3.140 
[root@rocky ~]# curl 192.168.3.130
curl: (7) Failed to connect to 192.168.3.130 port 80: Connection refused
[root@rocky ~]# curl 192.168.3.130:5001
GG Bond in beijing

firewalld

centos7推出的防火墙管理工具firewalld,默认是已安装的。

启动服务

[root@rocky ~]# systemctl start firewalld

设置5000-6000端口仅192.168.3.0/24网段内的主机访问

[root@rocky ~]# firewall-cmd  --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 port  port=5000-6000 protocol=tcp accept'
success
[root@rocky ~]# firewall-cmd --reload
success
[root@rocky ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule family="ipv4" source address="192.168.3.0/24" port port="5000-6000" protocol="tcp" accept

开启httpd服务,修改端口为5000

[root@rocky conf]# yum install -y httpd; echo GG bond in Beijing > /var/www/html/index.html
[root@rocky conf]# sed -i '/^Listen 80/c Listen 5001' /etc/httpd/conf/httpd.conf
[root@rocky conf]# systemctl enabeld --now httpd

用另外192.168.3.140的机器测试一下

[root@rocky .ssh]# hostname -I
192.168.3.140
[root@rocky .ssh]# curl  192.168.3.130:5000
GG Bond in beijing

nftable

实现主机防火墙。5000-6000端口仅192.168.3.0/24网段内的主机访问

添加表,链

[root@rocky ~]# nft add table inet test_table
[root@rocky ~]# nft add chain inet test_table test_filter_input_chain { type filter hook input priority 0 \; }
[root@rocky ~]# nft add chain inet test_table test_chain

在里面添加规则

[root@rocky ~]# nft add rule inet test_table test_filter_input_chain ip saddr 192.168.3.0/24 tcp dport {5000-6000} accept 

输入下面的命令完成。注意:至少要添加一个规则确保远程连接不会断开。

[root@rocky ~]# nft add rule inet test_table test_filter_input_chain reject with icmp type port-unreachable

MySQL的发行版本

MySQL Community Server

这是MySQL的免费版本,可在GPL下使用和分发。

MySQL Enterprise Server

这是MySQL的商业版本,可以获得更好的支持和功能,还有附加的企业级功能。

Percona MySQL

是MySQL 重要的分支之一,它基于InnoDB 存储引擎的基础上,提升了性能和易管理性,最后形成了增强版的XtraDB 引擎,可以用来更好地发挥服务器硬件上的性能。

MariaDB

由MySQL初始创建者在MySQL被Oracle收购之后,又独立成立了一家公司,来开发的数据库。其以MySQL5.5源代码为基础,发展起来。MariaDB并不能完全和MySQL官方版完全兼容,但大多数功能是兼容的。

Mysql索引的作用

排序的快速查找的特殊数据结构,定义作为查找条件的字段上,又称为键key,索引通过存储引擎实现
优点:

	索引可以降低服务需要扫描的数据量,减少了10次数
	索引可以帮助服务器避免排序和使用临时表
	索引可以帮助将随机I/O转为顺序I/0

缺点:

占用额外空间,影响插入速度

Mysql btree索引的原理

btree是一种平衡的查找树,它可以利用多个分支节点来减少查询数据时所经历的节点树,这样可以节省存取时间,提高效率。

Mysql安全加固

Mysql 版本8.0

  • 设置数据库管理员root口令
  • 删除anonymous用户帐号
  • 禁止root远程登录
  • 删除test数据库
  • 是否立即重新加载特权表
[root@rocky ~]# mysql_secure_installation

posted on   TUOP  阅读(27)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示