1.1 自动备份
- 创建备份目录 /var/mylog
mkdir /var/mylog # 操作系统中创建目标路径
- 每日凌晨0点10分自动备份 /var/log 下所有文件打包至 /var/mylog 打包文件以前一天日期命名
crontab -e # 编辑定时任务清单
10 0 * * * tar -cf /var/mylog/`date -d "1 day ago" +"\%Y\%m\%d"`.tar /var/log/ # 添加定时任务
补充知识
补充知识1 crontab 格式
* * * * *
分钟 小时 日期 月份 周
每个级别时间点的填写方式有以下几种:
- n: 第n个时间点,如 第10分钟,第6小时,第5日,第3月
- m,n,o,p: 第m、n、o、p个时间点;如
1,3,5,7 * * * * #每小时的第1、3、5、7分钟,执行任务
- m-n:从第m至n的每个时间点执行一次
* 2-15 * * * #每日2时至15时的每分钟执行一次
- m/k: 从第m个时间点开始,每间隔k个时间点执行一次
3/4 * * * * #每小时第3分钟开始,每间隔4分钟执行一次
- m-n/k:从第m至n、每间隔k个时间点执行一次
20 0-23/2 * * * #每月每天 0 点 20 分, 2 点 20 分, 4 点 20 分执行一次
- 在crontab 任务设置文档中,百分号% 被当作换行符,所以需要用 \ 符号将 % 符号进行转义
补充知识2 date 指令输出格式化时间字符串
`date -d "1 day ago" +"\%Y\%m\%d"`
# 以yyyymmdd格式输出前一天的日期
1.2 用户管理
创建以下用户、组、和组成员关系
- 名称为admin的组,组id为100
groupadd -g 100 admin
- 用户xxxx_1,使用 admin作为附属组
useradd xxxx_1 -G admin
- 用户xxxx_2,使用 admin作为附属组
useradd xxxx_2 -G admin
- 用户xxxx_3,在系统上不能访问可交互的shell,且不是 admin的成员
useradd xxxx_3
usermod -s /sbin/nologin xxxx_3
- 三个用户密码都是 centos_7
passwd xxxx_1
passwd xxxx_2
passwd xxxx_3
补充知识
补充知识1 用户附属组
每个用户都有且只有一个“主组”;创建用户时如果没有用 -g 指定主组,则会自动创建一个与用户同名的组,作为该用户的主组
每个用户可以同时存在于多个“附属组”中
1.3 基础配置
1.3.1 配置IP地址为192.168.1.10/24,网关 192.168.1.251
- (1)配置文件所在路径及备份
cd /etc/sysconfig/network-scripts/ # 进入网卡配置文件存放路径
cp ifcfg-ens33 # 备份已有的网卡配置文件 有的网卡文件名可能后缀不一样,注意使用 ll , ls 等指令查看
vi ifcfg-ens33 # 开始编辑网卡配置信息
- (2)查看当前网卡配置
ip addr # CentOS7 用ip 指令辅以相应参数
ip addr |grep ens33 # 或通过 grep 指令可以更精确找到指定网卡信息
- (3)修改配置文件
BOOTPROTO=static # 修改 BOOTPROTO ,从 “dhcp”改为“static”,即从动态获取IP地址改为静态IP地址(2501实训环境为dhcp即可获得)
ONBOOT=yes # 修改 ONBOOT 确保值为 yes ,即开机时网卡也启动
IPADDR=192.168.1.10 # 修改或增加 IPADDR ,设置为题目要求的IP地址
NETMASK=255.255.255.0 # 修改或增加 NETMASK ,设置子网掩码(对应24)
GATEWAY=192.168.1.251 # 修改或增加 GATEWAY, 设置为网关地址(2501实训环境网关为 192.168.1.1)
- (4)保存配置文件并重启 network 服务以求生效
systemctl restart network # 重启方法1
service network restart # 重启方法2
ip addr
1.3.2 配置实现与 192.168.1.1 的时间同步
时间同步依赖于 ntp 软件实现;
一台设备担任NTP服务器角色(192.168.1.1),向其它需要时间同步服务的客户端设备(192.168.1.10)提供服务。
因此,NTP服务器、NTP客户端都需要安装 ntp 服务。
- ntp服务安装情况检查
rpm -qa ntp # 如果有出现 ntp-4.2.6 类似的结果,代表 ntp 服务已经安装
- 配置文件所在路径及备份,编辑配置文件
cd /etc/
cp ntp.conf ntp.conf.bak
vi ntp.conf
- 配置文件中的修改
# 以下4行原有的信息,在行首添加 # 符号,注释使之失效
# 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.1.1 # 添加此行信息,将192.168.1.1 设置为ntp服务器
# 保存文件,退出
- 配置生效
systemctl restart ntpd # 重启 ntpd 服务使配置生效
ntpq -p # 检查配置结果;若成功将会有以下反馈信息:
# remote refid st t
# =======================================
# 192.168.1.1 LOCAL(0) 6 u
1.3.3 配置日志自动保存在192.168.1.2 服务器
日志自动保存至远程服务器,依赖于 rsyslog 服务实现;
一台设备担任NTP服务器角色(192.168.1.2),向其它需要日志保存服务的客户端设备(192.168.1.10)提供服务。
- rsyslog 服务安装情况检查
rpm -qa rsyslog
# 若出现类似 rsyslog-8.24.0-38.el7.x86_64 的反馈,说明rsyslog服务已安装
- 配置文件所在路径及备份,编辑配置文件
cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
vi rsyslog.conf
- 在配置文件中修改、增加信息
# 以下原有信息取消注释
$ActionQueueFileName fwdRule1
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
*.* @192.168.1.2 # 增加此一行信息,指定日志服务器是192.168.1.2
*.* @192.168.1.2:514 # 也可按此书写;514是rsyslog默认的UDP端口号
# 保存文件,退出
- 登录至日志服务器,检查是否已经有日志保存
ssh rsyslog@192.168.1.2:10022
cd /var/log/syslog
# 进入 192.168.1.2 的远程日志存放路径,查看是否有对应自己IP地址的子路径存在;
# 如果有,说明已经成功将日志推送到服务器
1.4 安全加固
1.4.1 启用口令策略与锁定策略,符合国网安全要求
编辑 /etc/pam.d/system-auth 内容
vi /etc/pam.d/system-auth
# 设置密码复杂度配置
# 注意: CentOS7 / RHEL 7 开始使用 pam_pwquality.so 模块代替 pam_cracklib.so 模块
password requisite pam_pwquality.so retry=3 difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
# retry=3 :最多重试3次
# minlen=8 :最短长度8位
# difok=N :新密码必须与旧密码不同的最少位数N
# ucredit=N :大写字符数量
# lcredit=N :小写字符数量
# dcredit=N :数字字符数量
# ocredit=N :特殊字符个数
# (N>=0:密码中最多有多少个)(N<0:密码中最少有多少个)
# 但 root 用户进行修改时不受限制?
# 修改此行,确保包含 remember=5 ,代表禁止使用最近用过的5个密码
password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5
另一种方式,修改 /etc/login.defs ,但会被覆盖
PASSMAXDAYS 99999 # 密码最大有效期,99999为永久有效
PASSMINDAYS 0 # 是否可修改密码。 0:可修改,非0:修改密码后下一次修改需间隔多少天后可修改
PASS_MIN_LEN 8 # 密码最小长度; 使用pam_pwquality.so 时 该参数不再有效
PASSWARNAGE 7 # 密码失效前多少天在用户登录时通知用户修改密码
1.4.2~1.4.4 配置 /etc/profile
- 1.4.2 登录超时策略,超过3分钟自动退出,并立即生效
- 1.4.3 将用户目录缺省访问权限设置为 027 ,立即生效
- 1.4.4 配置用户命令历史记录条数为5,立即生效
编辑文件
vi /etc/profile
写入/修改内容
# 在文件最后添加或修改
export TMout=180 # 超时策略 3分钟=180秒
export HISTSIZE=5 # 配置用户命令历史记录条数为5,立即生效
umask 027 # 用户缺省访问权限设置
生效配置
source /etc/profile
1.4.5 针对 ipv4 启用 SYN cookie
查看当前配置
cat /proc/sys/net/ipv4/tcp_syncookies #确认主机系统是否使用 IPv4 TCP SYN Cookie
修改配置文件 /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
生效配置
sysctl -p
注意事项
- /proc/sys/net/ipv4/tcp_syncookies 此处用于查看,但不在此处修改;
- /etc/sysctl.conf 可能默认未写入 net.opv4.tcp_syncookies 值
- 写入/etc/sysctl.conf 并生效后, /proc/sys/net/ipv4/tcp_syncookies 值会同步更新
- 删除 /etc/sysctl.conf 中的配置、并执行生效操作, /proc/sys/net/ipv4/tcp_syncookies 此处不会更新!如果要修改,仍须在/etc/sysctl.conf中显式指定
1.4.6 修改 ssh 端口为10022,禁止空口令登录,禁止root远程登录
修改 /etc/ssh/sshd_config 文件
vi /etc/ssh/sshd_config
修改文件
Port 10022 # 修改端口为 10022
PermitEmptyPasswords no # 禁止空口令登录
PermitRootLogin no # 禁止 root 远程登录
重启 sshd 服务以生效
systemctl restart sshd
1.4.7 仅允许 xxxx_1 用户 su 到root账户
先用 xxxx_1 用户测试,无法 su 至root,输入密码后提示“拒绝权限”。
需要将xxxx_1 用户放入 wheel 组;可以是主组也可以是附属组。
groups xxxx_1 # 查看fjdl_1 用户当前所在组
usermod xxxx_1 -g users -G syslog,admin,wheel # xxxx_1 用户拥有wheel作为附属组;wheel组用户可以 su 至 root 用户中
登录 xxxx_1 用户进行测试
su root # 以 xxxx_1 用户测试 su 至root 用户
root组
用同样方法,xxxx_1用户主组或附属组设置为 root ,试试能否su 至 root 用户?
1.4.8 创建 /mnt/xxxx 文件,写入 hello world ,要求锁定该文件,即使root用户也不能删除
文件新建及编辑
echo "hello world" > /mnt/xxxx
锁定文件
通过 chattr +i 文件名 ,对指定文件加锁;去除锁, chattr -i 即可
chattr +i /mnt/xxxx
rm -f /mnt/xxxx # 尝试删除,提示 rm: 无法删除"xxxx": 不允许的操作
chattr -i /mnt/xxxx
rm -f /mnt/xxxx # 再次尝试删除,成功执行
1.4.9 要求设置 /tmp 权限,要求该文件夹下的文件,除了所有者外,任何人不得删除。
chmod 1777 /tmp
补充介绍
(1) 基础权限
在任意目录执行 ll ,可以查看文件、目录的属性,以10个字符串表示。
例如"drwxr-xr–" 代表是某个目录的读®、写(w)、执行(x) 权限;"-rwxrw-r–"代表某一个文件的权限。
d 代表是一个路径 directory;如果是文件,则用"-"代表。
之后3组 “rwx” ,代表用户本人、用户所属组、其他用户的权限设置。每一组3个字符分别代表 读®、写(w)、执行(x) 权限,具备读权限,则对应位置标记为 r,否则标记为-,写、执行权限同理。
如果每组的3个字符对应到一个三位的二进制数(例如rwx对应111,r–对应100),则可以一个8进制数字代表每一组的权限设置:
- rwx → 111 → 7 ;
- r-- → 100 → 4 ;
上述"drwxr-xr–"→ 754,"rwxrw-r–"对应 764 。
修改文件或路径的读写执行权限,可以用诸如 chmod 754 /tmp 的指令实现。
(2) 进阶
在(1) 基础权限的基础上,可以在第一位增加一个8进制数字,形成1777、2777、4777
chmod 1777 /tmp
这里是用增加的8进制数字,代表设置 setuid、 setgid、sticky bit这3个属性的设置,同样可以理解为一组三位的二进制数。
4 代表设置了setuid,没有设置 setgid和 sticky bit(100 = 4 );
2 代表设置了 setgid ,没有设置 setuid 和 sticky bit (010 = 2)
其中,sticky bit 可理解为“防删除位”,对特定的路径进行设置。设置后,该路径下即使某个用户有写入权限,也无法删除其他用户拥有的文件。
sticky bit 需要针对不允许删除的目标文件/路径的上层路径 进行设置。
例如,要防止其他用户删除 /test 路径下的 1.log,需要对 /test 路径进行 chmod 1777
1.5 防火墙中,设置 http 的基本服务为7001,7010 并开启http 的对外访问。
此题考查CentOS7 中防火墙端口开放控制,即 firewall-cmd 的使用。
firewall-cmd开放端口,有2种方式:
- 通过 --add-port ==???/xxx 形式,开放端口号为???、传输层协议为 xxx 的端口。这里 xxx= tcp 或 udp。
- 通过 --add-service=??? 形式,开放 ??? 服务(在firewall相关配置文件中,对应此服务的端口号)。
- 例如http ,默认为 80 端口
- ftp默认为21端口。
按题目要求,需要修改 firewall 服务中,对应 http 服务的配置文件、将端口号改为7001、7010 两项,并且启用 http 服务。
cd /usr/lib/firewalld/services/ # 进入 firewalld 各类服务的配置文件存放路径
cp http.xml http.xml.bak # 备份http 服务的配置文件
vi http.xml # 开始修改配置文件
文件中已有以下这行:
<port protocol="tcp" port="80"/>
修改其为
<port protocol="tcp" port="7001"/>
<port protocol="tcp" port="7010"/>
保存退出
firewall-cmd --zone=public --permanent --add-service=http # 启用 http 服务
firewall-cmd --reload # 配置生效
补充知识
firewall-cmd 对应的配置文件,在以下两处路径都有:
- /etc/firewalld/
- /usr/lib/firewalld/
测试上述两个路径优先级
同时在 /etc/firewalld/services/ 、 /usr/lib/firewalld/services/两个路径下,写入http.xml文件;
- /etc/firewalld/services/http.xml 开放 17001、17003 端口
- /usr/lib/firewalld/services/http.xml 开放17001、17002 端口
使用上述允许http 协议的命令;生效后,17001、17003端口可以访问;17002端口无法访问。
说明: /etc/firewalld/ 路径下的配置文件,优先级更高
zone
zone=public,则此路径下会存在一个 public.xml 文件;
可以查看此文件
cat /etc/firewalld/zones/public.xml
如果多次修改了public区的策略,会另有 public.xml.old 文件作为备份