1、谈谈规范的那些事
首先思考为什么要规范,规范有哪些好处、怎样去规范、规范可以避免哪些风险,当服务器超过几百上千台的时候,规范的重要性越发的尤为重要,废话不多说,浅谈下自己的规范文档。
RedHat Linux操作系统安装配置规范
1.1 版本选择
根据应用的要求,并结合硬件类型,选择适当的操作系统版本。
至本规范最后更新时,新安装操作系统允许使用的版本如下:
RedHatEnterprise Linux Server 6.4
RedHatEnterprise Linux Server 7.2
软件包选择: 操作系统安装的初始软件包选择建议如下
软件包名称
软件包说明
base( 组 )
操作系统基础包
compat-libraries( 组 )
操作系统兼容性库包,提供对老版本软件的支持
hardware-monitoring( 组 )
硬件监控工具,提升系统定位能力
large-systems( 组 )
大型系统工具集包,提供 cgroup 等管理工具
legacy-unix( 组 )
Unix 兼容性包
performance( 组 )
性能定位和监控工具,及时了解系统瓶颈
ksh
ksh ,监控软件和传统 unix 工具依赖
ftp
ftp 客户端,环境维护管理员使用
telnet
telnet 客户端,环境维护管理员使用
l VMware虚拟机中,须取消VMware Tools配置项中的“在虚拟机和ESX Server操作系统之间进行时间同步”。
l 操作系统应开启时间同步服务,以进行时间同步,配置方法如下:
在 RedHat Enterprise Linux Server 6 上 :
(1) 添加时钟同步服务器,在/etc/ntp.conf文件中增加如下配置:
server IP prefer
server IP
service ntpd restart
chkconfig ntpd on
时间同步最大阀值应设置为500秒,服务器与时间服务器的时间误差超过500秒时应停止同步,在RedHat Enterprise Linux Server 5和6上ntpd服务将自动退出,在RedHat Enterprise Linux Server 7上chronyd服务将忽略跳过
1.2 服务的配置
为提高系统的稳定性,减少系统网络配置上的安全漏洞,如非特殊需要,建议关闭以下系统服务:
服务名称
服务描述
cups
打印服务
postfix
邮件服务( RHEL5 上的邮件服务是 sendmail )
pcscd
smart 卡登录服务
smartd
磁盘监控服务,对于做过 RAID 的磁盘无效
alsasound
声卡服务
iscsitarget
iscsi target 服务
smb
与 windows 互访问的文件服务
acpid
acpi 高级电源管理服务
iptables
ipv4 防火墙服务
ip6tables
ipv6 防火墙服务
firewall
防火墙服务( RHEL7 上才有的)
命令时间戳记录
在 /etc/bashrc 文件中增加如下行:
export HISTTIMEFORMAT="%F %T "
1.3 ulimit设置
不恰当的 limit 设置会导致系统或者应用程序运行出现错误,应对 /etc/security/limits.conf 配置文件中的参数进行设置,并将 /etc/security/limits.d/90-nproc.conf 配置文件中的以下行注释:
#* soft nproc 1024
配置文件 /etc/security/limits.conf 中主要参数的说明及配置值如下所示:
l 应用程序 core 大小设置,为防止大量的 core 文件占用系统,建议应用程序 core 大小限制为 100M 以下,在配置文件中增加如下两行:
* soft core 102400
* hard core 102400
1.4 系统敏感文件权限设置
# chmod 400 /etc/crontab
# chmod 400 /etc/securetty
# chmod 600 /boot/grub/grub.conf
# chmod 600/boot/grub2/grub.cfg ( 仅针对 RHEL7)
# chmod 600 /etc/inittab
# chmod 600/etc/login.defs
查看配置结果
ll /etc/crontab
ll /etc/securetty
ll /boot/grub/grub.conf
ll /etc/inittab
ll /etc/login.defs
1.5 日志审计策略配置
1. 统缺省已经开启 syslog/rsyslog 服务,禁止关闭。系统 syslog/rsyslog 服务会将所有系统日志自动记录到 /var/log/messages 文件中,系统日志永久保留。
2. 开启 audit 审计功能,可以监控指定用户或目录,缺省会监控 root 的所有登录和操作。
l 添加规则到 /etc/audit/audit.rules(RHEL7 为 /etc/audit/rules.d/audit.rules ) 文件中,实现监控所有用户的登录行为,包含用户所有操作,以及 shell 脚本中的命令
-a exit,always -F arch=b64 -S execve -k exe c
-a exit,always -F arch=b32 -S execve -k exec
添加后使用 ausearch -k exec 来列出用户操作的记录。
1. 配置 audit 日志, audit 日志文件自动保存在 /var/log/audit/ 目录中。
l 每个 log 文件超过 50M 时进行轮换,保持最后 4 个 log ,可以通过 /etc/audit/auditd.conf 进行配置,修改如下选项:
num_logs = 4 # 个数
max_log_file = 50 # 大小 (MB)
l 默认情况下,审计日志为每 20 条 flush 一次,为了防止由于大量后台脚本运行产生的审计日志在频繁 flush 到磁盘,导致磁盘使用率过高(特别是没有 cache 直接落盘的 RAID 卡),所以需要修改 flush 模式为 NONE 。可以通过编辑 audit 配置文件 /etc/audit/auditd.conf 进行配置,修改如下选项:
flush = NONE
具体审计配置请参照我博文的audit审计
启动 audit 和 syslog/rsyslog 服务, 启动审计服务:
# service auditd start
# chkconfig auditd on
1.6 系统内核参数配置
编号
默认值(如非特殊需要,不应修改)
说明
1
vm.min_free_kbytes = 16384
最小内存水平线,free内存低于此值,系统会强制回收内存。建议最大设置不要超过:64000 KB。应使用默认值。
最小值:128K, 最大值:65536K
2
vm.vfs_cache_pressure = 100
vfs 层cache保留倾向,> 100表示系统尝试多回收vfs cache,< 100表示系统尽量多保留vfs cache。
3
vm.dirty_ratio = 40
Page cache 达到40% total memory(含swap)时,系统尝试将cache回写到磁盘,回收内存。
4
vm.page-cluster = 3
每次写入swap的最小页面数, 默认是2的3次方=8个页面。
5
( 需要根据内存大小使用计算公式来计算,例如8G内存:)
fs.file-max = 838860
kernel 允许的最大文件句柄数。系统启动时根据内存自动调节,打开一个文件大概需要1k,总数不应超过系统内存的10%:计算公式为:
Max(N, NR_FILE)
N=(mempages * 4)/10
NR_FILE=4096
例如内存为8G的设置为(8*1024*1024/4)*4/10=838860
6
kernel.shmmax
共享内存的最大值,系统启动时根据内存自动调节,如非特殊需要,不应修改。此值最大设置为物理内存的90%。
7
kernel.shmmni = 4096
共享内存的最小值,系统默认值为4096,如非特殊需要,不应修改。
8
kernel.core_uses_pid = 0 ( 默认为1 )
kernel.core_pattern = corefile/core-%e
应用程序core文件的命名设置,为防止应用程序生成大量core文件占用系统空间,应用程序core文件应设置为仅生成一个。其中core_pattern的路径可修改为其他路径。默认路径为应用用户家目录,且没有完全开启,如需完全开启,只需在应用用户家目录下创建corefile目录即可( 但需注意home目录空间比应用程序所用内存要大 )。
9
kernel.sysrq = 1
系统hung住时,可以使用Alt+Sysrq+c来收集vmcore
注: 以上设置选项在 /etc/sysctl.conf 中修改,执行 : sysctl -p 生效。
1.7 物理安全设置
应禁止使用 usb 存储设备,防止物理 usb 设备引入木马文件。
# echo "install usb-storage /bin/true" >>/etc/modprobe.d/usb-storage.conf
必须禁止 Control+Alt+Delete 直接重启服务器 :
# sed -i 's/^start oncontrol-alt-delete/#start on control-alt-delete/g' /etc/init/control-alt-delete.conf
1.8 口令策略设置
口令复杂度规定
密码复杂性配置应满足如下要求
l 密码长度至少为8位,且含有如下字符类型中的四种:
英语大写字母 A, B, C, … Z
英语小写字母 a, b, c, … z
西方阿拉伯数字 0, 1, 2, … 9
非字母数字字符,如标点符号,@, #, $, %, &, *等
l 密码历史为10次,是指修改口令时禁止使用最近10次已使用过的密码口令(己使用过的口令会被保存在 /etc/security/opasswd 下面)。
在 RedHat Enterprise Linux Server 5 和 6 上 :
# sed -i'/^password[[:space:]]\{1,\}requisite[[:space:]]\{1,\}pam_cracklib.so/a\password required pam_pwhistory.so use_authtok remember=10enforce_for_root' /etc/pam.d/system-auth-ac
口令有效期规定
所有用户应满足如下用户口令策略,对于其他用户,如无特殊要求,建议采用。修改 /etc/login.defs 文件,修改如下参数的值:
l PASS_MAX_DAYS 90 (最长期限 90 天)
l PASS_MIN_DAYS 1 (最短期限 1 天)
l PASS_MIN_LEN 8 (最少 8 个字符)
l PASS_WARN_AGE 7 (提前 7 天提示密码修改)
在 RedHat Enterprise Linux Server 5 和 6 上 :
# sed -i"s/^\(password[[:space:]]*requisite[[:space:]]*pam_cracklib.so\).*/\1try_first_pass retry=6 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1enforce_for_root/g" /etc/pam.d/system-auth-ac
2 .1 UID 0用户设置
系统应禁止除 root 用户及 qadmsom 之外 UID 为 0 的用户。
系统中每一个用户都被分配一个用户 ID 号, ID 号为 0 是为 root 保留的, UID 号 1-499 是为系统其它预定义的帐号保留的, UID 为 0 拥有系统的最高特权,为了系统安全需要封存 root 账号,采用 qadmsom 账户进行日常管理,应保证只有 root 和 qadmsom 用户的 UID 为 0 。
检查方法:
# awk -F: '($3 == 0) {print $1 }' /etc/passwd
返回值包括“ root ”和 “qadmsom” 以外的条目,则应修正。
2.2 系统登录安全设置
针对系统登录进行加固,提升系统安全性。具体修改如下:
l 避免记录不存在用户的登录信息,避免用户误输入导致密码泄露
# echo"LOG_UNKFAIL_ENAB yes">> /etc/login.defs
l 配置用户密码尝试次数为 6 次,超过 6 次后用户锁定,避免暴力破解
# echo"LOGIN_RETRIES 6" >> /etc/login.defs
l 记录用户上次登录时间,用户登录时给予提示
# echo "LASTLOG_ENAB yes" >> /etc/login.defs
2.3 系统全局PROFILE安全设置
l 配置系统超时自动退出,建议配置成 300 秒
# echo "exportTMOUT=300" >> /etc/profile
l 配置命令历史记录条数为 5000
# echo "exportHISTFILESIZE=5000 " >> /etc/profile
l 连续 6 次输错密码禁用一段时间,建议配置成 300 秒
在 RedHat Enterprise Linux Server 6 上 :
# sed -i'/auth[[:space:]]*required[[:space:]]*pam_env.so/a\auth required pam_tally2.so onerr=fail deny=6unlock_time=300 even_deny_root root_unlock_time=300' /etc/pam.d/system-auth-ac
# sed -i '/account[[:space:]]*required[[:space:]]*pam_unix.so/i\account required pam_tally2.so' /etc/pam.d/system-auth-ac
# sed -i'/auth[[:space:]]*required[[:space:]]*pam_env.so/a\auth required pam_tally2.so onerr=fail deny=6unlock_time=300 even_deny_root root_unlock_time=300'/etc/pam.d/password-auth-ac
# sed -i'/account[[:space:]]*required[[:space:]]*pam_unix.so/i\account required pam_tally2.so'/etc/pam.d/password-auth-ac
l 用户默认的 umask 值为 022 ,不应修改
2 .4 删除rhost相关高风险文件
rcp,rsh,rlogin等远程拷贝和登录命令会使用rshost相关文件,这些命令存在较高风险,应禁止使用,并在实际使用中用scp, ssh等命令替代。其相关配置文件应该删除。
删除命令如下:
# rm /root/.rhosts /root/.shosts /etc/hosts.equiv /etc/shosts.equiv
如非特殊需要,应用管理员需要以应用账号登陆,需要使用特权指令时,使用 sudo 权限。使用以下方法来配置 sudo 权限:
# visudo
例如:赋予 oracle 用户使用 fdisk 命令的权限,在 visudo 命令打开的配置文件最后添加:
# 创建 alias PRIVUSERS 然后添加 sudo 用户 oracle ,这样可以使多个用户有相同的权限
User_AliasPRIVUSERS = oracle
# 创建 alias PRIVSERVICES 这样便于以后可以添加多个命令
Cmnd_AliasPRIVSERVICES = /sbin/fdisk
# 指定之前创建的 alias 给指定的用户 / 用户组
PRIVUSERSALL=(ALL) PRIVSERVICES
sudo 使用方法 :
以 oracle 用户在运行命令前加 sudo ,然后输入 oracle 用户的密码(非 root 密码)
oracle$sudo /sbin/fdisk -l
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com