2016-04-24
晚上19:34
by:FHT
原因:由于网络上面无聊的人或许是别有用心的人太多,总是会在恶意扫描的你的主机尝试登录,由于本人服务器被黑,网上一直有很多这样安全登录,和防止被攻击等博客,
这次由于是我的亲身经历所以我决定要写一篇关于安全登录ssh的文章。
IP地址:
主机一.101.200.163.78
主机二. 101.200.182.81
1.不让普通用户直接登录系统。
2.更改登录端口。
3.一直使用sudo命令来代替root用户。
4.使用普通用户登录,使用秘药登录(linux主机之间为了安全登录使用秘钥登录)。
5.在/etc/profile中添加一段命令串,即使有人入侵了你的服务器也会详细记录他的所有操作。
6. 101.200.163.78主机ssh 101.200.182.81实现秘钥登录方式
下面要在两台服务器上面做同样的操作
[root@fanhongtao1 ~]# vim /etc/ssh/sshd_config #修改配置文件
1.修改下面几处:
PubkeyAuthentication yes #启用PublicKey认证。
AuthorizedKeysFile .ssh/authorized_keys #PublicKey文件路径。
PasswordAuthentication no #不适用密码认证登录。
PermitRootLogin no 不允许root用户登录。
2.修改登录的端口,因为谁都知道ssh端口号是22,改成一个只有自己知道的端口即可。
[root@fanhongtao1 ~]# vim /etc/ssh/sshd_config
#Port 22 #默认状态,解掉注释修改为你想要登录ssh时候使用的端口。
Port 11209 #在这里我改的是11209
第一步和第二部配置文件已经修改完成,保存退出即可。
[root@fanhongtao1 ~]# /etc/init.d/sshd restart #改完配置之后一定要记得重启sshd服务。
3.创建普通用户,设置用户使用sudo。
它的所有者是root,所以普通用户可以像root那样执行该程序注意的是更改其他用户密码只有root才可以其他都不好使。
创建普通用户为普通用户设置密码
[root@fanhongtao1 ~]# useradd tom
[root@fanhongtao1 ~]# echo 123456 |passwd --stdin tom
visudo
添加如下信息,tom用户可以使用sudo来代替root执行一些超级用户才可以执行的程序或权限 注意的是更改其他用户密码只有root才可以,其他都不好使。
tom ALL=(ALL) ALL
保存退出
sudo常用的几个命令
[tom@fanhongtao1 root]$ sudo -l #查看sudo的权限
Matching Defaults entries for tom on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="CO
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/u
User tom may run the following commands on this host:
(ALL) ALL 代表所有权限
使用sudo的一个验证过程。 sudo默认有个时间戳是5分钟,在输入tom用户密码是在这五分钟内你使用sudo命令将不会在提示你输入密码,直接使用命令即可,
[tom@fanhongtao1 root]$ sudo -k 而sudo -k 命令是 为了安全着想,在你不需要使用sudo命令时杀掉这个时间戳,再次使用时候重新输入密码。
截图是在五分钟之内默认是不用在提示输入密码的,但是由于使用sudo -k 杀死了时间戳,挡在执行命令时系统会提示再次输入密码。
4.生成一个秘钥对在这里我是用的工具是xshell
,创建一个新的密钥对。
RSA算法好在网络容易实现密钥manage,便进行数字签名,算法复杂,加/解速度慢,采用非对称加密
DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多
点击下一步
为密钥设置密码,即使别人得到了你的公钥不知道你秘钥的密码也是无计可施。设置密码的时候要尽量的复杂,越复杂越是对自己负责,这里不多说了。
将生成的公钥添加到tom用户目录下
[tom@fanhongtao1 ~]$ touch /home/tom/.ssh/authorized_keys
将公钥复制到 [tom@fanhongtao1 ~]$ /home/tom/.ssh/authorized_keys
[tom@fanhongtao1 ~]$ vim /home/tom/.ssh/authorized_keys #添加的结果
下面测试登陆方式
(1.)使用22号端口登陆失败,说明修改的端口已经生效。
(2.) 修改登录端口为11209
使用tom用户登录,选择key登陆,密码是生成key是填写的密码。
使用key登陆成功。
用户使用密钥登陆到此圆满结束。
方便记录每个用户在什么时间登陆linux服务器在上面操作了什么都会记录在/tmp/history/登陆用户名目录/文本中。
/etc/profile中添加如下变量
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null|awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" ="" ]; then
USER_IP=`hostname`
fi
if [ ! -d /tmp/history/${LOGNAME} ];then
mkdir /tmp/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date+"%Y-%m-%d_%H:%M:%S"`
export HISTFILE=/tmp/history/${LOGNAME}/${USER}@${USER_IP}_history.$DT
这些记录会产生在/tmp/history/目录中/生成的目录是以登陆用户名称定义的,经本人多次测试肯定好使。
mkdir -p /tmp/history/
###################################################################################################################################
6. 101.200.163.78主机ssh 101.200.182.81实现秘钥登录方式
[tom@fanhongtao1 home]$ ssh-keygen -t rsa #在101.200.163.78主机上面生成密钥对
一路回车就可以了,在这里我没有给秘钥设置密码。
用 ssh-copy-id 把公钥复制到 101.200.182.81远程主机上
[tom@fanhongtao1 home]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
第一次传输密钥的时候需要填写密码,之后从101.200.182.78 登录到 101.200.182.81的时候不需要密码直接可以登录