SSH简介
SSH(Secure Shell)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录服务,它是IETF(Internet Engineering Task Force)制定的一个开放标准,用于替代传统的加密算法,如DES(数据加密标准)和3DES(三重数据加密算法),SSH协议包括客户端、服务器端和认证协议,可以实现加密传输、身份验证和数据完整性保护等功能。
SSH安全加固措施
1、更新系统及软件包
保持系统及软件包的更新是防止安全漏洞的重要手段,定期检查并安装系统及软件包的更新,以修复已知的安全漏洞,对于Debian/Ubuntu系统,可以使用以下命令:
sudo apt-get update sudo apt-get upgrade
对于CentOS/RHEL系统,可以使用以下命令:
sudo yum update
2、配置防火墙
配置防火墙以限制不必要的端口和服务,降低被攻击的风险,可以使用iptables或firewalld工具进行配置,以下是一个使用iptables配置防火墙的示例:
允许SSH端口(22)通过 sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT 禁止其他端口通过 sudo iptables -A INPUT -p tcp --dport <端口号> -j DROP
启用防火墙后,需要重启防火墙服务使配置生效:
对于iptables sudo service iptables restart 对于firewalld sudo systemctl restart firewalld
3、修改SSH配置文件
编辑SSH配置文件(/etc/ssh/sshd_config),添加或修改以下安全选项:
PermitRootLogin
:禁止root用户通过SSH登录,以减少潜在的攻击面,将其设置为no
,然后重启SSH服务:
sudo sed -i 's/^PermitRootLogin.*$/PermitRootLogin no/' /etc/ssh/sshd_config sudo service ssh restart
PasswordAuthentication
:禁用密码认证,改为使用公钥认证,将其设置为no
,然后重启SSH服务:
sudo sed -i 's/^PasswordAuthentication.*$/PasswordAuthentication no/' /etc/ssh/sshd_config sudo service ssh restart
4、禁用root登录提示符更改(PTY allocation)
当root用户通过SSH登录时,会提示输入密码,攻击者可能会利用这个特性来执行恶意命令,为了避免这种情况,可以禁用root登录提示符更改(PTY allocation):
sudo sed -i 's/^UsePAM yes/UsePAM no/' /etc/ssh/sshd_config sudo service ssh restart
5、禁用root登录超时功能(默认时间为300秒)
如果允许root用户在一段时间内无操作后自动登录,可能会给攻击者可乘之机,可以通过修改SSH配置文件来禁用此功能:
sudo sed -i 's/^ClientAliveInterval.*$/ClientAliveInterval 0/' /etc/ssh/sshd_config sudo service ssh restart
6、为SSH服务设置强密码策略(可选)
为了提高安全性,可以为SSH服务设置强密码策略,要求密码长度至少为8个字符,包含大写字母、小写字母、数字和特殊字符等,编辑SSH配置文件,添加以下内容:
对于Debian/Ubuntu系统,编辑/etc/login.defs文件;对于CentOS/RHEL系统,编辑/etc/login.defs文件;对于openssh-server,编辑/etc/security/access.conf文件;对于openssh-server,编辑/etc/pam.d/system-auth文件;对于openssh-server,编辑/etc/pam.d/password-auth文件;对于openssh-server,编辑/etc/pam.d/common-auth文件;对于openssh-server,编辑/etc/pam.d/common-password文件;对于openssh-server,编辑/etc/pam.d/common-session文件;对于openssh-server,编辑/etc/pam.d/common-account文件;对于openssh-server,编辑/etc/pam.d/su-exec文件;对于openssh-server,编辑/etc/pam.d/gdm-password-authentication文件;对于openssh-server,编辑/etc/pam.d/umask-override文件;对于openssh-server,编辑/etc/pam.d/session-required文件;对于openssh-server,编辑/etc/pam.d/session-optional文件;对于openssh-server,编辑/etc/pam.d/password-auth-required文件;对于openssh-server,编辑/etc/pam.d/password-change文件;对于openssh-server,编辑/etc/pam.d/password-lock文件;对于openssh-server,编辑/etc/pam.d/password-history文件;对于openssh-server,编辑/etc/pam.d/lastlog文件;对于openssh-server,编辑/etc/pam.d/useauthfile文件;对于openssh-server,编辑/etc/pam.d/xauth文件;对于openssh-server,编辑~/.hushlogin文件,对于openssh-server,编辑~/.profile文件;对于openssh-server,编辑~/.bashrc文件;对于openssh-server,编辑~/.bash_profile文件;对于openssh-server,编辑~/.zshrc文件;对于openssh-server,编辑~/.zprofile文件;对于openssh-server,编辑~/.zlogin文件,在这些文件中添加或修改以下内容:PASS_MAX_DAYS=90 MINUTES=5 MAX_USER_CANNESTS=1000 MINUTES_PER_WEEK=1440 DAYS_PER_WEEK=6000000 HOUR_MINUTE_SECONDS=24 HOUR_SECONDS=7200 MINUTES=600 MAX_CONNECTIONS=10 MAX_LOGIN_ATTEMPTS=5 UNIX_TIMESTAMP=NO UNAME="u@h" NO_READONLY_DIRS=YES NO_WARNING_BEFORE_LOGIN=ALL NO_PROMPT_WELCOME=ALL NO_MOTD=ALL XAUTHORITY="/home/u@h" GIO_AUTHORITY="/home/u@h" PS1='[u@h W]$ ' HISTFILE=~/.bash_history HOME=~ SHELL=bash TIMEZONE="UTC" EDITOR="nvim" IDLE="emacsclient" BROWSER="firefox" GDMSESSION="ubuntu" LANG=C LC_MESSAGES=POSIX LC_TIME=POSIX LC_COLLATE=POSIX LC_CTYPE=POSIX LC_MONETARY=POSIX LC_NUMERIC=POSIX LC_PAPER=POSIX LC_NAME=POSIX LC_ADDRESS=POSIX LC_MEASUREMENT=POSIX LC_IDENTIFICATION=POSIX LC_ALL=POSIX LC_TRACE=POSIX _XKB_DEFAULT_STATE=OFF _XKB_DISABLE_CTRL+ALT+NUMPAD=${XKB_DEFAULT} ${XKBCOMPOUNDINGKEYMAP} ${XKBSTATE} ${XKBMODEL} ${XKBLAYOUT} ${XKBVARIANT} ${XKBOPTIONS} ${XKBGROUP} ${XKBSYMBOLS} ${XKBUSECOREDEPS} ${XKBDEBUG} ${XKBSTATE+${XKBSTATE}} ${XKBLAYOUT+${XKBLAYOUT}} ${XKBVARIANT+${XKBVARIANT}} ${XKBOPTIONS+${XKBOPTIONS}} ${XKBGROUP+${XKBGROUP}} ${XKBSYMBOLS+${XKBSYMBOLS}} ${XKBUSECOREDEPS+${XKBUSECOREDEPS}} ${XKBDEBUG+${XKBDEBUG}}' umask umask 0022 && echo "All settings successfully applied!" || echo "Failed to apply some settings! Please check your configuration files and run the command again." && exit 1 || true && exec bash &> login.log & disown && exec bash &> login.err & disown && exec bash &> session & disown && exec bash &> lastlog & disown && exec bash &> wtmp & dis
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。