需要安装的包:
openssh-clients-6.6.1p1-22.el7.x86_64
openssh-server-6.6.1p1-22.el7.x86_64
配置文件中常用参数的介绍:
vim /etc/ssh/sshd_conf
Port 22
ListenAddress 0.0.0.0 #监听所有ipv4地址
Protocol 2 #版本2
SyslogFacility AUTHPRIV #日志级别
查看ssh日志存放位置:vim /etc/rsyslog.conf
/authprive.* 查看这个级别的日志的存放路径,/var/log/secure
LoginGraceTime 2m #ssh后,连接过程中等待的时间,超过这个时间将断开,默认是秒
PermitRootLogin yes #允许root用户登录
PasswordAuthentication yes #允许密码认证
PermitEmptyPasswords no #不允许空密码登录
PrintMotd yes #是否在登录后弹出特定的信息,在/etc/motd中定义信息
vim /etc/motd
警告!从现在开始,你所有的操作将被记录
PrintLastLog yes #登录后,显示上次登录本机的时间
UsePrivilegeSeparation sandbox #这个参数是yes时, 如果远程以student登录,那ssh进程的用户就是student,如果是no,则是root用户
UseDNS yes #是否进行域名解析,在内网中,可以设为no,登录较快
GSSAPIAuthentication no #与UseDNS no同时设置
PidFile /var/run/sshd.pid #进程pid文件路径
注意:配置文件中,选项前面以"#"开头的,选项值为默认值。
通过密钥认证登录:
客户端:
ssh-keygen 一路回车
ls /root/.ssh
该目录下的id_rsa 是私钥 id_rsa.pub 是公钥
将公钥拷贝到要远程登录的服务端上
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.142.161 回车输入.161的root密码
若要用student无密码登录.161
ssh-copy-id -i /root/.ssh/id_rsa.pub student@192.168.142.161 回车输入student的密码
在服务机上就会生成一个文件 /root/.ssh/authorized_keys,可以通过删除这个文件来解除无密码登录
----防止ssh暴力破解
通过lastb命令可以查看谁登录过本台主机,如果输出的结果较多,或发现不明登录记录,就该提高警惕了,可能正在被暴力破解,不断的认证用户,虽然没有成功,但会导致系统负载很高,公司网站访问速度下降
日志文件/var/log/btmp ,是登录失败的记录,所以也可以查看这个文件的大小,太大了就说明有问题
对应方法:
1、密码尽量复杂
给root账户设置24位随机密码:
rootpass=`date +%s | sha256sum | base64 | head -c 24` && echo root:$rootpass | chpasswd && echo $rootpass
2、修改默认端口号
登录:ssh -p 220 192.168.142.161 # -p 指定端口号
3、使用普通用户登录,不使用root登录
服务机上
vim /etc/passwd
root:x:0:0:root:/root:/sbin/nologin
student:x:0:0:student:/home/student:/bin/bash #判断用户是否是超级管理员,看的是UID是否为0
这样student就是此台机器的超级管理员,我们平时用student来登录就好了,依然是root权限,而且黑客破解的时候,需要先猜出student用户,再猜出密码才能破解
4、禁用掉登录失败的用户
fail2ban 监视系统日志,匹配错误信息并执行相应的屏蔽动作,(一般通过防火墙),而且可以发送邮件给系统管理员
原理:通过分析一定时间内的相关服务日志,将满足条件的IP利用iptables加入到dorp列表中
fail2ban安装:
-------------------------------
1)、源码包安装
官网:http://www.fail2ban.org
解压,进入目录
查看readme文件,可以看怎么安装
python setup.py install
安装完成后, 拷贝启动脚本,怎么查看是哪一个脚本呢
在这个目录下过滤chkconfig
grep chkconfig ./* -R #其他服务也可以这样查看
./files/redhat-initd: # chkconfig: - 92 08
可以看到是redhat-initd文件
cp files/redhat-initd /etc/init.d/fail2ban #fail2ban 是自定义的服务名称
启动服务
/etc/rc.d/init.d/fail2ban
chkconfig --add fail2ban #设置开机自启
----------------------------------
2)、也可以用yum安装
系统自带的源中没有fail2ban的包,先更新yum源
rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
如果报错,可能是又更新了最新的版本,浏览器打开http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e
查看最新版本,重新更新就好了
yum instll -y fail2ban
配置文件说明:
/etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d #条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值
配置:
vim /etc/fail2ban/jail.conf
[DEFAULT] #全局设置
ignoreip = 127.0.0.1/8 #忽略的IP列表
bantime = 600 #屏蔽时间,即多长时间内不能登录
findtime = 600 #这个时间内超过规定次数后,会被ban掉
maxretry = 3 #最大尝试次数
[sshd] #局部配置,优先级大于全局配置
enabled = true #是否开启
filter = sshd #过滤规则filter的名字,对应filter.d目录下的sshd.conf
action = iptables[name=ssh,port=ssh,protocol=tcp] #动作相关的参数,对应action.d/iptables.conf文件
logpath = /var/log/secure 检测的依据,日志文件的路径
bantime = 3000
findtime = 300
maxretry = 3
[sshd]这部分的含义:ssh登录,在300s内连续出错3次,将被禁止登录3000s
启动fail2ban
systemctl start fail2ban
查看fail2ban已启用的项
fail2ban-client status
详细查看某一项:fail2ban-client status sshd
测试:
用160登录161,故意输错密码3次,再次登录时会被拒绝
查看被禁用的主机
cat /var/log/fail2ban.log
如何解除对这个IP的限制:
fail2ban-client set sshd unbanip 192.168.142.160 场景:自己忘记了密码,登陆时输错了3次后,被ban掉了
如有错误,敬请指正~~