# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=30
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[内容] Linux SSH ECDSA 码的管理
内容一:SSH ECDSA 码介绍
1.1 什么是 ECDSA 码
ECDSA 是 SSH 服务为自己生成的唯一识别,通常一旦生成便不会改变
当 SSH 客户端访问 SSH 服务端时会尝试识别此 SSH 服务端 (以此 SSH 服务端的 IP 地址或者域名为判断依据) 的 SSH ECDSA 码:
如果当 SSH 客户端没有记录过此 SSH 服务端的 SSH ECDSA 码时,SSH 客户端会给出提示并让用户选择是否信任并记录此 SSH ECDSA 码
如果当 SSH 客户端记录过此 SSH 服务端的 SSH ECDSA 码且和过去的记录匹配时,SSH 客户端会直接 SSH 登录此 SSH 服务端
如果当 SSH 客户端记录过此 SSH 服务端的 SSH ECDSA 码且和过去的记录不一致时,SSH 客户端会给出提示此 IP 地址或者域名的 SSH ECDSA 码已发生改变,此时 SSH 客户端无法通过密码 SSH 登录 SSH 客户端,但是可以通过密码登录 SSH 客户端
1.2 SSH ECDSA 码存放位置
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ecdsa_key
内容二:管理 SSH ECDSA 码
2.1 查看 SSH 服务端的 SSH ECDSA 码
# ssh-keyscan -t ecdsa <SSH Server IP address>
或者:
# ssh-keyscan -t ecdsa <SSH Server IP domain>
2.2 将现在 SSH 服务端的 SSH ECDSA 码替换记录里的 SSH ECDSA 码
2.2.1 通过使用 ssh-keygen 命令将现在 SSH 服务端的 SSH ECDSA 码替换记录里的 SSH ECDSA 码
# ssh-keygen -R <SSH Server IP address>
或者:
# ssh-keygen -R <SSH Server IP domain>
2.2.2 通过修改 ~/.ssh/known_hosts 配置文件将现在 SSH 服务端的 SSH ECDSA 码替换记录里的 SSH ECDSA 码
# vim ~/.ssh/known_hosts
删除对应的记录:
(步骤略)
2.3 在本服务器上生成新的 SSH ECDSA 码
# ssh-keygen -t ecdsa -f ssh_host_ecdsa_key
[内容] Linux 功能的限制
正文:通过 /etc/security/access.conf 文件实现 Linux 功能使用的限制
# vim /etc/security/access.conf
添加以下内容:
......
+ : root : LOCAL
+ : zhumingyu : ALL
+ : @cron : ALL
- : ALL : ALL
(
补充:这里以
1) 允许 root 用户使用本地的所有功能
2) 允许 zhumingyu 用户使用所有功能
3) 允许 cron 功能被所有用户使用
4) 其它所有的功能或用户都被禁止
为例
)
补充:使 /etc/security/access.conf 文件的配置失效
# vim /etc/pam.d/crond
将部分内容修改如下:
......
#account required pam_access.so
......
[CONTENT] Linux maximum number of processes setting
Case One: Set the maximum number of processes for all users
# vim /etc/security/limits.conf
Add the following
......
* soft nofile 10240
* hard nofile 10240
(Add: Take maximum number of processes is 10240 for everyone as an example here)
Case Two: Set the maximum number of processes for one group
# vim /etc/security/limits.conf
Add the following
......
@mingyuzhu soft nofile 10240
@mingyuzhu hard nofile 10240
(Add: Take maximum number of processes is 10240 for group mingyuzhu as an example here)
Case Two: Set the maximum number of processes for one user
# vim /etc/security/limits.conf
Add the following
......
mingyuzhu soft nofile 10240
mingyuzhu hard nofile 10240
(Add: Take maximum number of processes is 10240 for user mingyuzhu as an example here)
[内容] auditd 使用 (监控文件或目录的变化)
内容一:auditd 的管理
1.1 启动 auditd
1.1.1 启动 auditd
# service auditd restart
1.1.2 查看 auditd 状态
# auditctl -s
1.1.3 设置 auditd 开机自启
# chkconfig auditd on
1.1.4 查看 auditd 开机自启状态
# chkconfig --list auditd
1.2 查看 auditd 的规则
# auditctl -l
1.3 删除 auditd 的规则
1.3.1 永久删除 auditd 的所有规则
1.3.1.1 清空 /etc/audit/audit.rules 文件里的所有内容
# vi /etc/audit/audit.rules
删除里面的所有内容
1.3.1.2 让刚刚的设置生效
# service auditd restart
或者:
# augenrules
1.3.2 临时删除 auditd 的规则
1.3.2.1 临时删除 auditd 的所有规则
# auditctl -D
(补充:此操作重启后失效)
1.3.2.2 临时删除 auditd 的普通规则 (以 -w 开头的规则)
# auditctl -W <policy>
(补充:此操作重启后失效)
1.3.2.3 临时删除 auditd 的使用系统调用和过滤条件的监控规则 (以 -a 开头的规则)
# auditctl -d <policy>
(补充:此操作重启后失效)
1.4 显示 auditd 日志
1.4.1 显示 auditd 的所有日志
# cat /var/log/audit/audit.log
1.4.2 显示某文件或目录的日志
# ausearch -f <file/directory>
1.4.3 显示某关键词的日志
# ausearch -k <key_name>
1.5 生成 auditd 日志报告
# aureport -k
内容二:auditd 的规则
2.1 普通监控规则
2.1.1 普通监控规则的格式
2.1.1.1 普通监控规则的格式
-w <file/directory> -p <previlege> -k <key_name>
(
补充:
1) 文件名或目录名,需要绝对路径
2) 监控的权限,可以是 rwxa 其中的任意 1 个或多个,r 代表读权限、w 代表写权限,x 代表执行权限,a 代表文件类型
3) 此类日志的关键词
)
2.1.1.2 添加普通监控规则的格式
2.1.1.2.1 临时添加普通监控规则的格式
# auditctl -w <file/directory> -p <previlege> -k <key_name>
2.1.1.2.2 永久添加普通监控规则的格式
# vim /etc/audit/audit.rules
添加以下内容:
......
-w <file/directory> -p <previlege> -k <key_name>
(
注意:永久添加的规则后要重启 auditd 服务后才会生效
# service auditd restart
或者:
# augenrules
)
2.1.2 添加普通监控规则的案例
2.1.2.1 案例一:添加监控 /etc/nginx/nginx.conf 文件的读、写、执行和文件属性变化的规则
# auditctl -w /etc/nginx/nginx.conf
(补充:这里以临时添加监控 /etc/nginx/nginx.conf 文件的读、写、执行和文件属性变化的规则为例)
2.1.2.2 案例二:添加监控 /etc/nginx/nginx.conf 文件的读、写、执行和文件属性变化,并设置关键词为 nginx 的规则
# auditctl -w /etc/nginx/nginx.conf -p rwxa -k 'nginx'
(补充:这里以临时添加监控 /etc/nginx/nginx.conf 文件的读、写、执行和文件属性变化,并设置关键词为 nginx 的规则为例)
2.2 使用系统调用和过滤条件的监控规则
2.2.1 使用系统调用和过滤条件的监控规则的格式
2.2.1.1 使用系统调用和过滤条件的监控规则的格式
-a <action>,<filter> -S <system_call> -F <field>=<value> -k <key_name>
(
补充:
1) 和 用于确定事件被记录, 的值可以是 always 或者 never, 的值可以是 task、exit、user 或者 exclude
2) 是系统调用,Linux 系统调用的名称在 /usr/include/asm/unistd_64.h 文件中,可以将多个系统调用放在一个规则里,例:-S <system_call> -S <system_call> ……,或者 -S <system_call>,<system_call>……
3) 和 是过略条件,可以将多个过略条件放在一个规则里,-F <field>=<value> -F <field>=<value> ……
4) 是此类日志的关键词
)
2.2.1.2 添加使用系统调用和过滤条件的监控规则的格式
2.2.1.2.1 临时添加使用系统调用和过滤条件的监控规则的格式
# auditctl -a <action>,<filter> -S <system_call> -F <field>=<value> -k <key_name>
2.2.1.2.2 永久添加使用系统调用和过滤条件的监控规则的格式
# vim /etc/audit/audit.rules
添加以下内容:
......
-a <action>,<filter> -S <system_call> -F <field>=<value> -k <key_name>
(
注意:永久添加的规则后要重启 auditd 服务后才会生效
# service auditd restart
或者:
# augenrules
)
2.2.2 使用系统调用和过滤条件的监控规则的案例
2.2.2.1 案例一:监控所有 UID 大于 1000 的用户的删除操作,并设置关键词为 delete
# auditctl -a always,exit -S rmdir -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=unset -F auid!=4294967295 -k delete
(补充:这里以临时监控所有 UID 大于 1000 的用户删除操作为例)
(注意:这里的 -F auid!=4294967295 是为了排除 login UID 没有被设置的用户)
2.2.2.2 案例二:监控所有 UID 大于 1000 的用户的文件删除操作,并设置关键词为 delete
# auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=unset -F auid!=4294967295 -k delete
(补充:这里以临时监控所有 UID 大于 1000 的用户删除操作为例)
(注意:这里的 -F auid!=4294967295 是为了排除 login UID 没有被设置的用户)
2.2.2.3 案例三:监控所有网络连接
# auditctl -a always,exit -F arch=b64 -S socket
# auditctl -a always,exit -F arch=b64 -S connect
# auditctl -a always,exit -F arch=b64 -S sendmmsg
# auditctl -a always,exit -F arch=b64 -S sendmsg
# auditctl -a always,exit -F arch=b64 -S bind
# auditctl -a always,exit -F arch=b64 -S recvmsg
# auditctl -a always,exit -F arch=b64 -S close
(补充:这里以监控所有网络连接为例)