一、登录安全
1.1 修改ssh端口
修改SSH默认端口,可以降低各种暴力攻击的风险。
SSH端口默认为22,编辑/etc/ssh/sshd_config
, 修改Port,然后重启sshd服务。
1 | # Port 22 |
1.2 设置最大登录尝试次数
设置较低的最大登录场是次数,可以降低SSH服务器被暴力攻击成功的风险。
编辑/etc/ssh/sshd_config
,取消MaxAuthTries注释符号#,设置最大密码尝试失败次数3-6,建议为4:
1 | MaxAuthTries 4 |
1.3 SSHD强制使用V2安全协议
编辑/etc/ssh/sshd_config
,文件以按如下方式设置参数:
1 | Protocol 2 |
1.4 设置SSH空闲超时退出时间
设置SSH空闲超时退出时间,可降低未授权用户访问其他用户ssh会话的风险。
编辑/etc/ssh/sshd_config
,将ClientAliveInterval 设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0-3。
1 | ClientAliveInterval 600 |
1.5 确保SSH LogLevel设置为INFO
确保SSH LogLevel设置为INFO,记录登录和注销活动。
编辑/etc/ssh/sshd_config
,取消LogLevel注释符号#,将其设置为INFO:
1 | LogLevel INFO |
1.6 禁用root登录
root用户权限太高,不小心可能引起误操作。可以禁用root登录,以拥有sudo权限的用户登录。
1.6.1 创建sudo用户:
1 | useradd username |
1.6.2 禁用root登录:
编辑/etc/ssh/sshd_config
,将PermitRootLogin配置为no:
1 | PermitRootLogin no |
1.7 采用密钥对登录,禁用密码登录
1.7.1 设置sshkey登录:
在客户端本地创建sshkey,将公钥id_rsa.pub内容拷贝到远程服务器用户目录下~/.ssh/authorized_keys文件中。
1 | #客户端本地操作 |
1.7.2 禁用密码登录:
编辑/etc/ssh/sshd_config
,将PasswordAuthentication配置为no:
1 | PasswordAuthentication no |
二、密码安全
2.1 禁用空密码登录
编辑/etc/ssh/sshd_config
,将PermitEmptyPasswords配置为no:
1 | PermitEmptyPasswords no |
2.2 密码复杂度检查
使用非密码登陆方式如密钥对,请忽略此项。
编辑/etc/security/pwquality.conf
,把minlen(密码最小长度)设置为9-32位,把minclass设置为3或4。如:
1 | minlen=10 |
【minlen=密码最小长度,minclass=密码至少包含小写字母、大写字母、数字、特殊字符等4类字符中的种类数)】
2.3 设置密码失效时间
使用非密码登陆方式如密钥对,请忽略此项。
编辑/etc/login.defs
,将 PASS_MAX_DAYS 参数设置为 60-180之间,如:
1 | PASS_MAX_DAYS 90 |
同时执行命令使root用户设置生效:
1 | chage --maxdays 90 root |
2.4 设置密码修改最小间隔时间
使用非密码登陆方式如密钥对,请忽略此项。
编辑/etc/login.defs
,将 PASS_MIN_DAYS 参数设置为7-14之间,建议为7:
1
PASS_MIN_DAYS 7
同时执行命令使root用户设置生效:
1 | chage --mindays 7 root |
2.5 确保密码到期警告天数为7或更多
使用非密码登陆方式如密钥对,请忽略此项。
编辑/etc/login.defs
,将 PASS_WARN_AGE 参数设置为7-14之间,建议为7:
1 | PASS_WARN_AGE 7 |
同时执行命令使root用户设置生效:
1 | chage --warndays 7 root |
三、系统权限管理
3.1 设置用户权限配置文件的权限
建议执行以下5条命令:
1 | chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow |
四、配置安全组策略
- 待整理。
五、服务和辅助工具
- 禁用不需要的服务:
1
systemctl disable service_name
- 安装fail2ban, 监控服务器攻击。
六、应用服务安全
6.1 mysql安全
- 修改mysql端口:mysql默认端口为3306,编辑
/etc/my.cnf
(查看自己mysql配置文件位置), 找到端口修改,然后重启mysqld服务。