一、sshd_config文件说明
sshd_config 是 OpenSSH SSH 服务器守护进程配置文件,主要用于设置ssh server服务的相关参数,包括监听地址、监听端口、允许验证次数、是否允许root账户登录等等。sshd服务从/etc/ssh/sshd_config(或命令行中用-f指定的文件)读取配置数据。该文件包含关键字参数对,每行一对。以“#”开头的行和空行被解释为注释。参数可以用双引号(“)括起来,以表示包含空格的参数。改配置文件,只有root账户或者拥有root权限的账户可以配置和修改,配置文件修改后,重启sshd服务后参数生效。
二、使用实践
1、修改默认监听端口
ssh server服务默认监听端口为22,为了系统安全,我们可以修改默认端口号。对应参数为Port,默认值为22,我们可以根据规划设置为指定端口。
[root@s142 ~]# cd /etc/ssh/ [root@s142 ssh]# vim sshd_config … Port 22222 … [root@s142 ssh]# systemctl restart sshd [root@s142 ssh]# netstat -tnpl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22222 0.0.0.0:* LISTEN 15808/sshd
2、指定监听地址
[root@s142 ssh]# vim sshd_config … ListenAddress 192.168.0.142 … [root@s142 ssh]# systemctl restart sshd [root@s142 ssh]# netstat -tnpl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.0.142:22222 0.0.0.0:* LISTEN 15819/sshd …
3、禁止root账户登录
[root@s142 ssh]# vim sshd_config … PermitRootLogin no …
4、设置每个连接最大允许的认证次数
[root@s142 ssh]# vi sshd_config … MaxAuthTries 2 … …[root@s142 ssh]# ssh wuhs@192.168.0.142 -p 22222 wuhs@192.168.0.142’s password: Permission denied, please try again. wuhs@192.168.0.142’s password: Received disconnect from 192.168.0.142 port 22222:2: Too many authentication failures Authentication failed.
5、设置Banner语
[root@s142 ssh]# vi sshd_config … Banner /tmp/hi … [root@s142 ssh]# systemctl restart sshd [root@s142 ssh]# cat /tmp/hi 欢迎登陆s142 [root@s142 ssh]# systemctl restart sshd [root@s142 ssh]# ssh wuhs@192.168.0.142 -p 22222 欢迎登陆s142 wuhs@192.168.0.142’s password:
6、登录后显示上次登录信息
PrintLastLog参数控制是否显示上一次登录信息,默认是yes,即显示。通过登录信息我
们可以了解上一次是否登录成功或者失败,会显示上一次登录的IP地址。这个信息有利有弊,
利是可以显示上一次登录信息记录,如果显示陌生地址登录失败,说明有人在尝试登录服务器。
弊端自然就是会暴露一些你实际的使用源地址信息。
Last failed login: Mon Sep 19 16:38:42 CST 2022 from s142 on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Mon Sep 19 16:38:25 2022 from 192.168.0.32
三、sshd_config配置文件参数说明
1、常见参数说明
2、相关重要文件说明
~/.ssh/known_hosts文件
ssh 会把每个你访问过的计算机的公钥(public key)都记录到~/.ssh/known_hosts文件中,
当你下次访问该计算机时,openss会核对公钥。如果公钥不同,那openssh就会发出警告,避
免你收到DNSHijack等攻。
/etc/host.allow和/etc/hosts.deny
这两个文件时控制远程访问设置的,通过该设置可以允许或者拒绝某个ip或者ip段访问linux的
某项服务。我们可以用于限制访问服务器sshd服务的源地址,host.allow文件对应白名单,
hosts.deny文件对应黑名单。
3、sshd_config配置文件验证
[root@s142 ~]# sshd -t /etc/ssh/sshd_config: line 15: Bad configuration option: semanage /etc/ssh/sshd_config: terminating, 1 bad configuration options
四、sshd_config其他说明
1、检查项目 : 设置密码失效时间
加固建议: 在 /etc/login.defs 中将 PASS_MAX_DAYS 参数设置为 60-180之间,如 PASS_MAX_DAYS 90。需同时执行命令设置root密码失效时间: chage –maxdays 90 root。
2、检查项目 : 设置密码修改最小间隔时间
加固建议: 在 /etc/login.defs 中将 PASS_MIN_DAYS 参数设置为5-14之间,建议为7:
PASS_MIN_DAYS 7 需同时执行命令为root用户设置:
chage –mindays 7 root
3、检查项目 : 密码复杂度检查
加固建议: 1、安装PAM的cracklib模块,执行命令: apt-get update&&apt-get install libpam-cracklib 2、编辑/etc/pam.d/common-password,在”password requisite pam_cracklib.so”开头的这一行配置minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中的3类或4类)设置为3或4,即在行末尾加上参数minclass=3;在”password [success=1 default=ignore] pam_unix.so”开头的这一行增加配置minlen(密码最小长度)设置为9-32位,建议为9,即在行末尾加上参数minlen=9
4、检查项目 : 检查密码重用是否受限制
加固建议: 编辑/etc/pam.d/common-password,在”password [success=1 default=ignore] pam_unix.so”开头的这一行增加配置remember设置为5-24之间,建议为5,即在行末尾加上参数remember=5
5、检查项目 : 禁止SSH空密码用户登录
加固建议: 在/etc/ssh/sshd_config中取消PermitEmptyPasswords no注释符号#
6、检查项目 : 确保SSH MaxAuthTries设置为3到6之间
加固建议: 在/etc/ssh/sshd_config中取消MaxAuthTries注释符号#,设置最大密码尝试失败次数3-6,建议为5:MaxAuthTries 5
7、检查项目 : 设置SSH空闲超时退出时间
加固建议: 编辑/etc/ssh/sshd_config,将ClientAliveInterval 设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0。
ClientAliveInterval 300
ClientAliveCountMax 0
8、检查项目 : 确保SSH LogLevel设置为INFO
加固建议: 编辑 /etc/ssh/sshd_config 文件以按如下方式设置参数(取消注释):
LogLevel INFO
9、检查项目 : 设置用户权限配置文件的权限
加固建议: 执行以下5条命令
chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow
chmod 0644 /etc/group
chmod 0644 /etc/passwd
chmod 0400 /etc/shadow
chmod 0400 /etc/gshadow
10、对应以上建议相关修改:
1.sudo vi /etc/login.defs PASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 10 2.设置 sudo chage --maxdays 90 root sudo chage --mindays 7 root sudo apt-get update&&sudo apt-get install libpam-cracklib 3.sudo vi /etc/pam.d/common-password password requisite pam_cracklib.so retry=3 minlen=8 difok=3 minclass=3 password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 minlen=9 remember=5 4.sudo vi /etc/ssh/sshd_config MaxAuthTries 5 ClientAliveInterval 900 ClientAliveCountMax 0 PermitEmptyPasswords no LogLevel INFO 5.sudo chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow sudo chmod 0644 /etc/group sudo chmod 0644 /etc/passwd sudo chmod 0400 /etc/shadow sudo chmod 0400 /etc/gshadow
参考: