Linux等级保护2.0笔记
RedHat/CentOS 查看版本 1 2 3 4 5 6 7 8 9 10 cat /proc/version uname –a uname –r lsb_release –a cat /etc/redhat-release cat /etc/centos-release rpm -q redhat-release rpm -q centos-release
身份鉴别 密码策略 口令复杂度
使用pam_pwquality.so
或pam_cracklib.so
模块检查口令强度 文件位置:/etc/pam.d/system-auth
参数
说明
difok=N
口令历史,默认值为5
minlen=N
最短口令长度
dcredit=N
新口令允许使用有的数字的数量,N=-1是至少有一个数字
ucredit=N
新口令允许使用的大写字母的数量,N=-1是至少有一个大写字母
lcredit=N
新口令允许使用的小写字母的数量,N=-1是至少有一个小写字母
ocredit=N
新口令允许使用的特殊字符的数量,N=-1是至少有一个特殊字符
minclass=N
新口令中使用的字符种类,即大小写字母、数字和字符,默认值为0
maxrepeat=N
拒绝包含超过N个相同连续字符的口令,默认值为0
maxsequence=N
拒绝包含大于N的单调字符序列的密码,如‘123456’或‘fedcba’,默认值为0。
maxclassrepeat=N
拒绝包含同一类中超过N个连续字符的密码,默认值为0。
reject_username
检查新密码中是否包含直接或反向形式的用户名称,如root/toor
enforce_for_root
对root用户进行检查
authtok_type=XXX
提示输入密码的文本内容。默认是”New UNIX password: “ and “Retype UNIX password: “,可以自定义
retry=N
返回错误前最多提示用户N次。默认值为1。
dictpath=/path
密码字典路径,centos7.2版本的默认字典路径在/usr/share/cracklib下
示例配置 1 2 3 4 5 6 7 password requisite pam_pwquality.so enforce_for_root minlen=8 minclass=3 difok=3 reject_username password requisite pam_pwquality.so enforce_for_root minlen=8 difok=3 reject_username ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 password requisite pam_cracklib.so enforce_for_root minlen=8 minclass=3 difok=3 reject_username password requisite pam_cracklib.so enforce_for_root minlen=8 difok=3 reject_username ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
口令更换周期
1 2 3 4 5 6 7 8 9 10 11 PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 PASS_MAX_DAYS 90 PASS_MIN_DAYS 1 PASS_MIN_LEN 8 PASS_WARN_AGE 7
注意:login.defs仅对新添加的用户生效,不会影响现有账户。
查看单个用户的口令更改策略 1 2 3 4 5 6 7 Last password change : Dec 12, 2018 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
口令更改时间 1 2 3 cat /etc/shadow date -u -d "1970-01-01 UTC $((16749 * 86400 ) ) seconds"
设置账户口令定期更改策略 1 2 3 chage -m 1 username chage -M 90 username chage -W 7 username
登录失败
使用pam_tally2.so
或pam_faillock.so
模块配置登录失败
选项
说明
onerr=[fail|succeed]
失败或者成功,默认为失败
file=/path/to/counter
在哪里保存计数文件。默认值是/var/log/tallylog
audit
如果找不到用户,则会将用户名登录到系统日志中
silent
关闭信息提示
no_log_info
不要通过syslog(3)记录信息性消息
deny=N
如果此用户的计数超过n,则拒绝访问
lock_time=n
尝试失败后n秒内始终拒绝
unlock_time=n
尝试失败n秒后允许访问。如果使用此选项,则在用户超过允许的最大尝试次数后,将在指定的时间段内被锁定。否则,帐户将被锁定,直到系统管理员手动干预解除锁定
magic_root
如果uid=0的用户调用模块,则计数器不会递增。系统管理员应将此参数用于用户启动的服务(如su),否则应忽略此参数
even_deny_root
拒绝root用户
root_unlock_time=n
此选项意味着甚至可以拒绝根选项。尝试失败后,允许在n秒后访问根帐户。如果使用此选项,则在根用户超过其允许的最大尝试次数后,将在指定的时间内被锁定
serialize
使用锁序列化对计数文件的访问。此选项只能用于非多线程服务,因为它依赖于tally文件的fcntl锁定。另外,仅在身份验证阶段与帐户或setcred阶段之间的时间不依赖于身份验证客户端的配置中使用此选项也是一个好主意。否则,身份验证客户端将能够通过简单地人为地延长文件记录锁的保持时间来防止同一用户同时进行身份验证
可设置文件路径 1 2 3 /etc/pam.d/sshd #默认仅对ssh登录有效 /etc/pam.d/system-auth #默认仅对本地登录有效 /etc/pam.d/login #默认仅对本地登录有效
示例配置 1 2 3 4 5 # 注意,CentOS8已淘汰tally2.so # pam_tally2.so auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=600 # pam_faillock.so auth required pam_faillock.so deny=5 unlock_time=600 even_deny_root root_unlock_time=600
auth 是 authentication (认证) 的缩写,所以这种类别主要用来检验使用者的身份验证,这种类别通常是需要口令来检验的, 所以后续接的模块是用来检验用户的身份。
account account (账号) 则大部分是在进行 authorization (授权),这种类别则主要在检验使用者是否具有正确的权限, 举例来说,当你使用一个过期的口令来登陆时,当然就无法正确的登陆了。
session session 是会议期间的意思,所以 session 管理的就是使用者在这次登陆 (或使用这个命令) 期间,PAM 所给予的环境配置。 这个类别通常用在记录用户登陆与注销时的信息!例如,如果你常常使用 su 或者是 sudo 命令的话, 那么应该可以在 /var/log/secure 里面发现很多关于 pam 的说明,而且记载的数据是『session open, session close』的信息!
password password 就是口令嘛!所以这种类别主要在提供验证的修订工作,举例来说,就是修改/变更口令啦!
required 此验证若成功则带有 success (成功) 的标志,若失败则带有 failure 的标志,但不论成功或失败都会继续后续的验证流程。 由于后续的验证流程可以继续进行,因此相当有利于数据的登录 (log) ,这也是 PAM 最常使用 required 的原因。
requisite 若验证失败则立刻回报原程序 failure 的标志,并终止后续的验证流程。若验证成功则带有 success 的标志并继续后续的验证流程。 这个项目与 required 最大的差异,就在于失败的时候还要不要继续验证下去?由于 requisite 是失败就终止, 因此失败时所产生的 PAM 信息就无法透过后续的模块来记录了。
sufficient 若验证成功则立刻回传 success 给原程序,并终止后续的验证流程;若验证失败则带有 failure 标志并继续后续的验证流程。 这玩意儿与 requisits 刚好相反!
optional 这个模块控件目大多是在显示信息而已,并不是用在验证方面的。
include 包括指定为该控件参数的配置文件中给定类型的所有行。
substack 包括指定为该控件参数的配置文件中给定类型的所有行。这与包含的不同之处在于,评估子堆栈中的完成和死亡操作不会导致跳过完整模块堆栈的其余部分,而只会跳过子堆栈。子栈中的跳转也不能使求值跳出子栈,在父栈中跳转时,整个子栈都计为一个模块。重置操作会将模块堆栈的状态重置为子堆栈评估开始时的状态。
关于pam.d第二个字段:验证的控制旗标(control flag)
使用者的特殊shell 与PAM 模组
登录超时
1 2 ClientAliveInterval 60 #每隔60秒向客户端发送消息 ClientAliveCountMax 3 #3次未响应则关闭连接
ssh_config方式基于网络,即使不操作客户端也会发送消息
远程管理协议 1 2 service sshd status service telnetd status
双因子身份鉴别
访问控制 强制访问控制/selinux 相关知识点
查看selinux的配置文件 1 2 3 4 5 6 7 8 9 10 11 12 more /etc/selinux/config SELINUX=enforcing SELINUXTYPE=targeted
selinux相关命令 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 getenforce sestatus sestatus -v sestatus -b getsebool -a setenforce [0|1] setsebool [-P] 『规则名称』 [0|1] chcon [-R] [-t type ] [-u user] [-r role] 文件 chcon [-R] --reference=范例文件 restorecon [-Rv] 文件或目录
查看当前标记类型 1 2 3 ls -Z netstat -lntpZ ps -eZ
安全审计 审计进程 系统日志服务 1 2 3 4 5 6 7 service rsyslog status service auditd status service --status-all | grep running PS -ef | grep syslog ps -ef | grep auditd
auditd命令 1 2 3 auditctl -l ausearch aulastlog
日志配置文件
/etc/rsyslog.conf、/etc/syslog.conf
rsyslog.conf文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 *.info;mail.none;authpriv.none;cron.none /var/log /messages authpriv.* /var/log /secure mail.* -/var/log /maillog cron.* /var/log /cron *.emerg * uucp,news.crit /var/log /spooler local7.* /var/log /boot.log
日志类别
说明
auth(security),
主要与认证/授权有关的机制,例如login、ssh、su等需要帐号/密码的
authpriv
与auth类似,但记录较多帐号私人的信息,包括pam模组的运作等
kern(kernel)
就是核心(kernel) 产生的信息,大部分都是硬体侦测以及核心功能的启用
mail
由mail子系统产生的消息
cron
就是例行性工作cron/at等产生信息记录的地方
daemon
主要是系统的服务所产生的信息,例如systemd就是这个有关的信息!
news
网络消息子系统的信息
lpr
打印相关的日志信息
user
用户进程相关的信息
uucp
全名为Unix to Unix Copy Protocol,早期用于unix 系统间的程序资料交换
ftp
与FTP通信协定有关的信息输出
local0 to local7
保留给本机用户使用的一些登录文件信息,较常与终端机互动
日志级别
说明
none
不进行记录
debug
包含详细的开发情报的信息,通常只在调试一个程序时使用。
info
情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。
notice
不是错误情况,也不需要立即处理。
warning(warn)
警告信息,不是错误,比如系统磁盘使用了85%等。
err(error)
错误,不是非常紧急,在一定时间内修复即可。
crit
重要情况,如硬盘错误,备用连接丢失。
alert
应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失。
emerg(panic)
紧急情况,需要立即通知技术人员。
.
代表『比后面还要严重的等级(含该等级) 都被记录下来』的意思,例如:mail.info代表只要是mail的信息,而且该信息等级严重于info(含info本身)时,就会被记录下来的意思。.=
代表所需要的等级就是后面接的等级而已, 其他的不要!.!
有点反向选择的感觉,代表忽略大于等于这个等级的讯息!亦即是低于这个等级的才会被纪录的意思!与.
相反
如何对rsyslog进行配置 rsyslog.service:记录登录档的服务
日志文件
日志文件
说明
/var/log/boot.log
开机的时候系统核心会去侦测与启动硬件,接下来开始各种核心功能启动等。这些流程都会记录在/var/log/boot.log 里面哩!不过这个档案只会存在这次开机启动的信息,前次开机的信息并不会被保留下来!
/var/log/cron
系统定时任务相关信息
/var/log/cups
打印信息
/var/log/dmesg
系统在开机时内核自检的信息
/var/log/btmp
错误登录信息(二进制文件,使用lastb命令查看)
/var/log/lastlog
系统中所有用户最后一次登录时间信息(二进制文件,使用lastlog命令查看)
/var/log/mailog
邮件信息
/var/log/message
系统重要信息(Linux绝大多数重要信息)
/var/log/secure
登录和授权方面的信息(登录、切换用户、sudo授权、添加用户、修改密码)
/var/log/wtmp
永久记录所有用户登录,注销信息,系统启动、重启、关机事件(二进制文件,使用last查看)
/var/log/utmp
当前已登录用户信息(二进制文件,使用who、w、users查看)
日志存储时间 /etc/logrotate.conf 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 32 33 34 35 weekly rotate 4 create dateext include /etc/logrotate.d /var/log /wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log /btmp { missingok monthly create 0600 root utmp rotate 1 }
Linux日志切割神器logrotate原理介绍和配置详解 登录档的轮替(logrotate)
入侵防范 系统服务 1 2 3 4 5 6 7 systemctl list-units --type =service | grep running systemctl list-unit-files --type =service service --status-all ps -ef setup chkconfig --list who –r
可能的多余服务
portmap/rpcbind,TCP111,文件共享
端口 1 2 3 netstat -lntp netstat -lnup netstat -ano
地址限制
/etc/hosts.allow、/etc/hosts.deny
参数 1 2 sshd:192.168.1.0/24:allow sshd:*:deny
参数 1 2 AllowUsers root test @192.168.1.1 DenyUsers root test @192.168.1.1
1 2 firewall-cmd --state firewall-cmd --list-all
命令
补丁包
Solaris 查看版本
身份鉴别 密码策略
参数 1 2 3 4 5 6 MINWEEKS=1 MAXWEEKS=13 WARNWEEKS=4 PASSLENGTH=8 MINALPHA=2 MINDIFF=1
登录失败 1 2 3 4 5 /etc/security/policy.conf /etc/default/login LOCK_AFTER_RETRIES=YES RETRIES=5
远程协议 Solaris 1 2 svcs | grep ssh svcs | grep telnet
访问控制 安全审计 Solaris 1 2 3 4 /etc/default/login SYSLOG=YES svcs |grep auditd
审计内容 Solaris 1 2 3 4 5 6 7 8 9 10 11 /etc/syslog.conf *.info;mail.none;news.none;authpriv.none;cron.none /var/log /messages /etc/security/audit_control dir: /var/audit flags:1o minfree:20 naflags:lo *审计事件类型至少应包括:lo、fw、fm、fd。
日志文件 RadHat/CentOS 1 2 3 /var/log /messages /var/log /secure /var/log /audit/audit.log
Solaris 1 2 3 /var/adm/messages; /var/adm/wtmpx; /var/adm/utmpx;
入侵防范 端口 1 2 3 netstat -lntp netstat -lnup netstat -ano
服务 Solaris
补丁 Solaris
地址限制 Solaris 1 2 3 /etc/default/login CONSOLE=/dev/console