一、声明、警告、建议
- 以下所有介绍为本人学习记录,会随我的认知及测试不断调整修改,仅供参考;
- 数据无价,谨慎操作;
- 修改文件前进行备份就线下测试;
- linux手册页
二、配置密码及验证策略
设置密码周期
chage -M 90 -W 30 用户名
vim /etc/login.defs
修改以下内容
# 密码有效期90天
PASS_MAX_DAYS 90
# 密码最短0天
PASS_MIN_DAYS 0
#密码长度最小10位(最终以pam配置为准)
PASS_MIN_LEN 10
# 密码过期前30天通知
PASS_WARN_AGE 30
# 加密密码算法
ENCRYPT_METHOD SHA512
密码强度要求
修改/etc/pam.d/system-auth和/etc/pam.d/password-auth
vim /etc/pam.d/system-auth
vim /etc/pam.d/password-auth
增加以下内容
password required pam_pwquality.so minlen=10 minclass=4 maxrepeat=4 maxrepeat=4 enforce_for_root
password required pam_pwhistory.so use_authtok enforce_for_root remember=5
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
配置登录验证策略
修改/etc/pam.d/system-auth和/etc/pam.d/password-auth
vim /etc/pam.d/system-auth
vim /etc/pam.d/password-auth
增加以下内容
auth required pam_env.so
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=1800 fail_interval=900 even_deny_root
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=1800 fail_interval=900 even_deny_root
auth required pam_deny.so
account required pam_faillock.so
相关连接
- linux-pam:http://www.linux-pam.org/
- linux-pam:https://github.com/linux-pam/linux-pam/tree/master/doc/sag
- libpwquality:https://github.com/libpwquality/libpwquality
三、用户管理
根据情况分组及分配所需最低权限
添加用户组
// 添加管理组
// 添加安全组
// 添加审计组
添加用户
// 添加用户HTZ_admin并指定到administrators组
// 添加用户HTZ_SillyBoy并指定到security组
// 添加用户anquan并指定到security组
// 或者修改用户到指定用户组
分配sudo权限
运行"visodo"增加配置或者在“/etc/sudoers.d”目录下新建文件
# 使用visudo修改sudoers
visudo
# 或者在/etc/sudoers.d/下增加文件,my-sudoers为我增加的配置文件名
vim /etc/sudoers.d/my-sudoers
配置如下
Cmnd_Alias AUDIT=/usr/sbin/ausearch , /usr/sbin/aureport
Cmnd_Alias CHECK_CMD=/usr/bin/cat, /usr/bin/tail,/usr/bin/awk,/usr/bin/nl,/usr/bin/less,/usr/bin/more,/usr/bin/ls,/usr/bin/getfacl
Cmnd_Alias FIND_CMD= /usr/bin/find, /usr/bin/grep,/usr/bin/which,/usr/bin/oscap
HTZ_admin ALL=(ALL) ALL
%security ALL=SECURITY
%audit ALL=AUDIT
相关链接
禁用root登录
禁止root登录
- 编辑/etc/passwd文件
vim /etc/passwd
- 将root的“/bin/bash”修改为“sbin/nologin”
root:x:0:0:root:/root:/sbin/nologin
四、日志审计
rsyslog日志服务
安装开启服务
#安装rsyslog(默认已安装)
yum install rsyslog
# 查看审计服务状态
service rsyslog.service status
# 开启审计服务
service rsyslog.service start
audit审计服务
安装开启服务
yum install audit
service auditd status
service auditd start
配置审计规则
修改“/etc/audit/audit.rules”或者在“/etc/audit/rules.d/”下增加“.rules”文件,参考如下,或者参考“/usr/share/doc/audit-2.8.5/rules/”下文件
## 审计规则
## 路径:/etc/audit/rules.d/my-audit.rules
## loginuid不可变
## --loginuid-immutable
# 删除之前的所有规则
-D
# 设置缓冲区大小
-b 8192
-f 2
## 审计账号访问
-w /var/run/faillock -p wa -k logins
-w /var/log/lastlog -p wa -k logins
## 审计用户用户组修改
-w /etc/group -p wa -k audit_rules_usergroup_modification
-w /etc/passwd -p wa -k audit_rules_usergroup_modification
-w /etc/gshadow -p wa -k audit_rules_usergroup_modification
-w /etc/shadow -p wa -k audit_rules_usergroup_modification
-w /etc/security/opasswd -p wa -k audit_rules_usergroup_modification
## 审计对selinux的修改
-w /etc/selinux/ -p wa -k MAC-policy
## 审计文件创建失败
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&0100 -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&0100 -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b32 -S open -F a1&0100 -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b64 -S open -F a1&0100 -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&0100 -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&0100 -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b32 -S open -F a1&0100 -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b64 -S open -F a1&0100 -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b32 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b64 -S creat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b32 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-create
-a always,exit -F arch=b64 -S creat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-create
## 审计文件修改失败
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&01003 -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&01003 -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b32 -S open -F a1&01003 -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b64 -S open -F a1&01003 -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&01003 -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&01003 -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b32 -S open -F a1&01003 -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b64 -S open -F a1&01003 -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b32 -S truncate,ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b64 -S truncate,ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b32 -S truncate,ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-modification
-a always,exit -F arch=b64 -S truncate,ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-modification
## 审计文件访问失败
-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-access
-a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-access
-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-access
-a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-access
## 审计文件删除失败
-a always,exit -F arch=b32 -S rmdir,unlink,unlinkat,rename,renameat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-delete
-a always,exit -F arch=b64 -S rmdir,unlink,unlinkat,rename,renameat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-delete
-a always,exit -F arch=b32 -S rmdir,unlink,unlinkat,rename,renameat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-delete
-a always,exit -F arch=b64 -S rmdir,unlink,unlinkat,rename,renameat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-delete
## 审计文件权限修改失败
-a always,exit -F arch=b32 -S chmod,fchmod,fchmodat,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-perm-change
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-perm-change
-a always,exit -F arch=b32 -S chmod,fchmod,fchmodat,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-perm-change
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-perm-change
## 审计所有权修改失败
-a always,exit -F arch=b32 -S lchown,fchown,chown,fchownat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-perm-change
-a always,exit -F arch=b64 -S lchown,fchown,chown,fchownat -F exit=-EACCES -F auid>=1000 -F auid!=unset -k unsuccesful-perm-change
-a always,exit -F arch=b32 -S lchown,fchown,chown,fchownat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-perm-change
-a always,exit -F arch=b64 -S lchown,fchown,chown,fchownat -F exit=-EPERM -F auid>=1000 -F auid!=unset -k unsuccesful-perm-change
## 审计用户添加删除修改
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -k user-modify
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -k user-modify
-a always,exit -F arch=b32 -S open -F a1&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -k user-modify
-a always,exit -F arch=b64 -S open -F a1&03 -F path=/etc/passwd -F auid>=1000 -F auid!=unset -k user-modify
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -k user-modify
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -k user-modify
-a always,exit -F arch=b32 -S open -F a1&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -k user-modify
-a always,exit -F arch=b64 -S open -F a1&03 -F path=/etc/shadow -F auid>=1000 -F auid!=unset -k user-modify
## 审计组添加删除修改
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&03 -F path=/etc/group -F auid>=1000 -F auid!=unset -k group-modify
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&03 -F path=/etc/group -F auid>=1000 -F auid!=unset -k group-modify
-a always,exit -F arch=b32 -S open -F a1&03 -F path=/etc/group -F auid>=1000 -F auid!=unset -k group-modify
-a always,exit -F arch=b64 -S open -F a1&03 -F path=/etc/group -F auid>=1000 -F auid!=unset -k group-modify
-a always,exit -F arch=b32 -S openat,open_by_handle_at -F a2&03 -F path=/etc/gshadow -F auid>=1000 -F auid!=unset -k group-modify
-a always,exit -F arch=b64 -S openat,open_by_handle_at -F a2&03 -F path=/etc/gshadow -F auid>=1000 -F auid!=unset -k group-modify
-a always,exit -F arch=b32 -S open -F a1&03 -F path=/etc/gshadow -F auid>=1000 -F auid!=unset -k group-modify
-a always,exit -F arch=b64 -S open -F a1&03 -F path=/etc/gshadow -F auid>=1000 -F auid!=unset -k group-modify
## 审计内核模块加载卸载事件
-a always,exit -F arch=ARCH -S init_module,finit_module,delete_module -F -k modules
## 审计时间修改
-a always,exit -F arch=b32 -S adjtimex,clock_settime,settimeofday,stime -F -k audit_time_rules
-a always,exit -F arch=b64 -S adjtimex,clock_settime,settimeofday -F -k audit_time_rules
-w /etc/localtime -p wa -k audit_time_rules
## 审计部分命令的使用.
-a always,exit -F path=/usr/sbin/usernetctl -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/sbin/seunshare -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/mount -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/newgrp -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/newuidmap -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/gpasswd -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/newgidmap -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/umount -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/crontab -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/at -F perm=x -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/sbin/unix_chkpwd -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/sbin/setfiles -F auid>=1000 -F auid!=unset -k special-config-changes
-a always,exit -F path=/usr/bin/chcon -F auid>=1000 -F auid!=unset -k special-config-changes
## 审计读取审计日志
-a always,exit -F dir=/var/log/audit/ -F perm=r -F auid>=1000 -F auid!=unset -k access-audit-trail
## 审计文件挂载
-a always,exit -F arch=ARCH -S mount -F auid>=1000 -F auid!=unset -F -k export
## 使配置不可变 -- 需要重启才能更改审计规则
-e 2
配置轮循保存
修改审计配置文件/etc/audit/auditd.conf;
vim /etc/audit/auditd.conf
将“max_log_file_action”值修改为“ignore”,“num_logs” 值修改为"180";
...
num_logs = 180
max_log_file_action = ignore
...
运行systemctl reload auditd使配置生效;
systemctl reload auditd
修改"/etc/logrotate.conf/"或者在“/etc/logrotate.d/”修改添加配置文件;
vim /etc/logrotate.conf/
#或者新增配文件(my-logrotate为我配置文件名)
vim /etc/logrotate.d/my-logrotate
下面配置原本 /etc/logrotate.d/下的文件进行了修改,目录下其他相同的配置文件可备份删除,根据实际备份策略进行修改;
rotate 180
daily
missingok
sharedscripts
compress
dateext
notifempty
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
olddir /backup/log/syslogd
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
/var/log/chrony/*.log
{
olddir /backup/log/chrony
postrotate
/usr/bin/chronyc cyclelogs > /dev/null 2>&1 || true
endscript
}
/var/log/firewalld
{
copytruncate
olddir /backup/log/firewalld
}
/var/log/yum.log
{
olddir /backup/log/yum
}
/var/log/audit/audit.log
{
olddir /backup/log/audit
postrotate
/sbin/service auditd restart > /dev/null 2>&1 || true
endscript
}
修改“/etc/anacrontab”调整每天备份时间区间;
vim /etc/anacrontab
设置运行时间仅在0点到8点之间;
...
START_HOURS_RANGE=0-8
...
相关链接
五、防火墙
安装开启服务
yum install firewalld
systemctl status firewalld
systemctl start firewalld
配置防火墙
配置网络接口分区
配置规则可通过“firewall-cmd”命令或者“/etc/firewalld/zones”目录下对应分区xml文件;
ip add
firewall-cmd --zone=public --add-interface=eth0
firewall-cmd --set-default-zone=public
配置规则
方法一:firewall-cmd
修改内容如下
firewall-cmd --zone=public --add-port=8080/tcp
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --remove-service=http
相关链接
- firewall-cmd:https://firewalld.org/documentation/man-pages/firewall-cmd.html
- Firewalld:https://fedoraproject.org/wiki/Firewalld
方法二:修改/etc/firewalld/zones下的xml文件
# 修改public分区配置
vim /etc/firewalld/zones/public.xml
修改内容如下
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<port port="80" protocol="tcp"/>
</zone>
相关链接
重新加载防火墙配置
firewall-cmd --reload
firewall-cmd --list-all
六、其他配置
关闭无用端口
netstat -pan -A inet,inet6
kill -9 pid
删除无用服务
#查看开机自启的服务
systemctl list-unit-files|grep enabled
# 禁用开机自启并关停无用服务
systemctl disable -now 服务名
#卸载软件包
yum remove 软件包名
删除不安全的服务
# 删除不安全的服务
yum remove telnet-server vsftpd tftp-server ypserv rsh-server
环境变量
修改“/etc/profile”或在“/etc/profile.d/”下新建修改sh文件
vim /etc/profile.d/my-env.sh
配置如下
#记录历史命令条数
HISTSIZE=30
#退出不保留历史命令记录文件
HISTFILE=/dev/null
#退出不保留mysql历史命令记录
MYSQL_HISTFILE=/dev/null
#设置默认创建的文件夹权限 700 ,文件权限600
#umask 0027 允许文件所有者读取、写入和执行权限,允许文件组成员读取和执行权限,禁止其他人读取、写入和执行权限
# umask 0077 允许文件所有者读取、写入和执行权限,禁止其他人读取、写入和执行权限
umask 0077
|