目录
一、禁止root登录系统
1.禁止root用户登录
[root@Rz ~]# vim /etc/ssh/sshd_config //进入到sshd配置文件修改yes 为 no
[root@Rz ~]# systemctl restart sshd //重启sshd服务器
2.创建一个用户
[root@Rz ~]# useradd 用户1 //举例创建一个用户1
[root@Rz ~]# passwd 用户1 //为用户1设置登录密码
3.测试远程
[root@Rz ~]# ssh 用户1@x.x.x.x //测试以用户1远程登录
二、设置服务器登录邮件报警
[root@Rz ~]# vim /etc/ssh/sshrc
#!/bin/bash
#获取登录者的用户名
user=$USER
#获取登录者的IP地址
ip=${SSH_CLIENT%% *}
#获取登录的时间
time=$(date +%F%t%k:%M)
#服务器的IP地址
hostname=$(hostname)
echo "content=$time,$user,$ip,$hostname" > log
python /etc/ssh/testEmail.py "$time" "$user" "$ip" "$hostname"
[root@Rz ~]# chmo 777 /etc/ssh/sshrc
[root@Rz ~]# vim /etc/ssh/testEmail.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import sys
def send_mail(dtime,duser,dip,dhostname):
#基础信息
# from_addr = input("From:")
from_addr = "xiahediyijun@163.com" #需要修改
password = "OLTKYLPJJPNOAFCV" #需要修改
#to_addr = from_addr
to_addr = "xiahediyijun@163.com" #需要修改
# password = raw_input("Password:")
# to_addr = input("To:")
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
smtp_server = "smtp.163.com" #需要修改
mimetex = '您的机器:',dhostname,',于:',dtime,',被IP:',dip,'以账号',duser,'进行登录,请确认是否为您授权。'
#构造邮件
msg = MIMEText(''.join(mimetex), 'plain', 'utf-8')
msg['From'] = _format_addr("zhentianxiang") #需要修改
msg['To'] = _format_addr("xiahediyijun@163.com") #需要修改
msg['Subject'] = Header("来自zhentianxiang", 'utf-8').encode() #需要修改
#发送邮件
server = smtplib.SMTP_SSL(smtp_server, 465)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
if __name__ == "__main__":
send_mail(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
[root@Rz ~]# chmo 777 /etc/ssh/testEmail.py
##测试:ssh连接服务器,并成功登录
三、系统登录日志
1.lastlog 列出所有用户最近登录的信息
[root@Rz ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/0 一 12月 28 08:23:23 +0800 2020
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
shutdown **从未登录过**
halt **从未登录过**
mail **从未登录过**
operator **从未登录过**
games **从未登录过**
ftp **从未登录过**
nobody **从未登录过**
systemd-bus-proxy **从未登录过**
systemd-network **从未登录过**
dbus **从未登录过**
polkitd **从未登录过**
tss **从未登录过**
sshd **从未登录过**
postfix **从未登录过**
chrony **从未登录过**
ntp **从未登录过**
nscd **从未登录过**
tcpdump **从未登录过**
apache **从未登录过**
mysql pts/0 三 5月 6 14:24:51 +0800 2020
named **从未登录过**
mysqld **从未登录过**
zabbix **从未登录过**
nginx **从未登录过**
zhen pts/0 111.206.214.26 一 12月 28 08:23:13 +0800 2020
2.列出当前和曾经登入系统的用户信息
它默认读取的是/var/log/wtmp文件的信息。输出的内容包括:用户名、终端位置、登录源信息、开始时间、结束时间、持续时间。注意最后一行输出的是wtmp文件起始记录的时间。当然也可以通过last -f参数指定读取文件,可以是last /var/log/btmp、last /var/run/utmp
[root@Rz ~]# last
zhen pts/0 111.206.214.26 Mon Dec 28 08:23 still logged in
zhen pts/1 111.196.212.1 Sun Dec 27 17:56 - 19:18 (01:22)
zhen pts/0 111.196.212.1 Sun Dec 27 17:23 - 17:25 (00:02)
zhen pts/1 111.196.212.1 Sun Dec 27 15:49 - 16:25 (00:35)
zhen pts/0 111.196.212.1 Sun Dec 27 15:11 - 15:15 (00:04)
zhen pts/1 111.196.212.1 Sun Dec 27 10:50 - 11:02 (00:12)
zhen pts/0 111.196.212.1 Sun Dec 27 10:28 - 10:29 (00:01)
zhen pts/0 111.196.212.1 Sun Dec 27 00:21 - 00:54 (00:33)
zhen pts/1 111.196.212.1 Sat Dec 26 15:51 - 22:46 (06:54)
zhen pts/0 111.196.212.1 Sat Dec 26 02:28 - 03:41 (01:13)
zhen pts/2 111.196.212.1 Sat Dec 26 01:27 - 02:07 (00:39)
zhen pts/1 111.196.212.1 Sat Dec 26 01:01 - 03:14 (02:13)
语法:last [-R] [-num] [ -n num ] [-adiowx] [ -f file ] [ -t YYYYMMDDHHMMSS ] [name…] [tty…]
例子:last -x :显示系统关闭、用户登录和退出的历史
last -i:显示特定ip登录的情况
last -t 20181010120101: 显示20181010120101之前的登录信息
3.列出失败尝试的登录信息
和last命令功能完全相同,只不过它默认读取的是/var/log/btmp
文件的信息。当然也可以通过last -f参数指定读取文件,可以是/var/log/btmp
、/var/run/utmp
[root@Rz ~]# lastb
test2 ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
root ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
shr ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
user1 ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
samba ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
zzk ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
root ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
pengfan ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
testuser ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
vagrant ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
root ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)
test2 ssh:notty 104.131.43.102 Fri Dec 11 18:59 - 18:59 (00:00)