基本配置
可以从以下选项中修改ssh配置,
ssh
配置文件路径/etc/ssh/sshd_config
- 修改默认端口号
- 禁用ROOT用户SSH登录
- 禁用密码登录
注意:修改端口前一定保证服务器防火墙开启相应的端口号,如
firewlld
或iptables
编辑配置文件以下几个配置项
## 设置ssh端口号
Port 21234
## 是否密码登录:yes/no
PasswordAuthentication no
## 设置使用密钥登录
PubkeyAuthentication yes
RSAAuthentication yes
## 存放公钥的文件
AuthorizedKeysFile .ssh/authorized_keys
## 是否运行root登录:yes/no
PermitRootLogin no
使用公钥登录需要更改authorized_keys文件的用户权限,
.ssh/
文件夹需要700的权限,而authorized_keys
文件需要600的权限
修改之后重启sshd
服务:
systemctl restart sshd
## 或者
service sshd restart
使用denyhosts
简介:DenyHosts 是 Python 语言写的一个程序软件,运行于 Linux 上预防 SSH 暴力破解的,它会分析 sshd 的日志文件(/var/log/secure),当发现重复的攻击时就会记录 IP 到 /etc/hosts.deny 文件,从而达到自动屏 IP 的功能。
下载并解压
wget http://jaist.dl.sourceforge.net/project/denyhosts/denyhosts/2.6/DenyHosts-2.6.tar.gz
tar -zxvf DenyHosts-2.6.tar.gz
也可以解压到指定目录 tar -zxvf DenyHosts-2.6.tar.gz -C /usr/local/bin
安装并配置
注意:需要有python环境
python setup.py install
默认安装到 /usr/share/denyhosts/
目录下
重命名配置文件
cp denyhosts.cfg-dist denyhosts.cfg
cp daemon-control-dist daemon-control
根据需求编写配置文件中的内容
部分配置如下:
## 登录日志文件地址
SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
## ip被禁止之后,多久可以释放(w表示周,d表示天,h表示小时,m表示分钟)
PURGE_DENY = 4w
BLOCK_SERVICE = sshd
## 无效用户尝试次数之后即被锁定
DENY_THRESHOLD_INVALID = 5
## 有效普通用户尝试次数
DENY_THRESHOLD_VALID = 10
## root用户尝试次数
DENY_THRESHOLD_ROOT = 1
## 设定denyhosts将数据写入到/etc/hosts.deny文件中
DENY_THRESHOLD_RESTRICTED = 1
## denyhosts工作数据目录
WORK_DIR = /var/lib/denyhosts
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
## 域名解析
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/lock/subsys/denyhosts
ADMIN_EMAIL = root
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
## 普通有效用户登陆计数清零时间
AGE_RESET_VALID=5d
##root用户登陆计数清零时间
AGE_RESET_ROOT=25d
## /etc/hosts.deny文件清除数据时间
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h
启动与停止服务
添加自启动服务
cd /etc/init.d/
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts
chkconfig denyhosts on
启动服务
systemctl start denyhosts
停止服务
systemctl stop denyhosts
查看服务状态
systemctl status denyhosts
查看黑白名单
注意:白名单优先级大于黑名单
## 查看白名单
cat /etc/hosts.allow
## 查看黑名单
cat /etc/hosts.deny