SSH服务常常用于远程访问服务器。但是,对于暴露在公网的服务器来说,使用默认的配置十分不安全,看ssh日志便可看见,基本每天都会收到大量的登录请求,如果登录密码使用的是弱密码,指不定哪天就被攻破了。这里推荐一些配置,可有效提高服务器的安全性
| service sshd restart //重启服务 |
| ufw allow PORT //放行端口 |
- 修改
/etc/sudoers
文件
在最后一行找到,在行头加上#注释即可。
| ubuntu ALL=(ALL:ALL) NOPASSWD: ALL |
- 禁止ubuntu用户登录
修改 /etc/passwd
文件
找到ubuntu用户,在该行的最后面加上 /nologin
| ubuntu:x:500:500:ubuntu,,,:/home/ubuntu:/bin/bash |
| //改为 |
| ubuntu:x:500:500:ubuntu,,,:/home/ubuntu:/bin/bash/nologin |
安装 ssmtp 和 mailutils 套件
| sudo apt-get install ssmtp mailutils |
修改 ssmtp 配置/etc/ssmtp/ssmtp.conf
| # 接收系統郵件的 Email |
| root=example@email.com |
| |
| # 使用 GMail 的 MTA 送信 |
| #mailhub=smtp.gmail.com:587 |
| # 或者使用163邮箱 |
| #mailhub=smtp.163.com:465 |
| # 設定 hostname |
| hostname=YourHostname |
| |
| # 允許使用者設定 Email 的 From 欄位 |
| FromLineOverride=YES |
| |
| # 邮箱账户和密码 |
| AuthUser=example@email.com |
| #谷歌应用专用密码,如果是其他邮箱则是授权码 |
| AuthPass=YOUR_PASSWORD |
| |
| # 启用安全加密 |
| UseSTARTTLS=YES #如果使用163邮箱,注释掉该行 |
| UseTLS=YES |
| |
| |
| Debug=YES |
修改revaliases
| sudo vim /etc/ssmtp/revaliases |
| //添加以下内容 User改为你的用户名 |
| // 如果使用谷歌邮箱 |
| root:example@gmail.com:smtp.gmail.com:587 |
| User:example@gmail.com:smtp.gmail.com:587 |
| |
| // 如果使用163邮箱 |
| root:example@163.com:smtp.163.com:465 |
| User:example@163.com:smtp.163.com:465 |
测试可否正常使用
| echo "This is a test" | ssmtp recipient@your.domain.com |
- 为root用户添加登录邮箱通知
- 编辑
vim /root/.bashrc
。将下面内容添加到最后。recipient@gmail.com
改为个人邮箱
| echo 'ALERT - SSH root shell access found on '$HOSTNAME' on:' `date` `who` | mail -s "Alert: SSH root shell access" recipient@gmail.com |
- 执行
source /root/.bashrc
生效配置
- 为其他用户添加登录邮箱通知
- 编辑
vim /home/USER/.bashrc
。将下面内容添加到最后。recipient@gmail.com
改为个人邮箱
| echo 'ALERT - '$USER' shell access found on '$HOSTNAME' on:' `date` `who` | mail -s "Alert: User shell access" recipient@gmail.com |
- 执行
source /home/ $USER/.ashrc
生效配置
- 为所有用户添加登录邮箱通知
- 编辑
vim /etc/bashrc
。将下面内容添加到最后。recipient@gmail.com
改为个人邮箱
| vim /etc/bashrc |
| echo 'ALERT - '$USER' shell access found on '$HOSTNAME' on:' `date` `who` | mail -s "Alert: User shell access" recipient@gmail.com |
- 安装 Fail2ban
| sudo apt-get install fail2ban |
- Debian 12 及以上的版本需要手动安装 rsyslog
| sudo apt-get install rsyslog |
- 启动 Fail2ban 服务
| sudo systemctl start fail2ban |
- 开机自启动
| sudo systemctl enable fail2ban |
- 查看 Fail2ban 服务状态。
| sudo systemctl status fail2ban |