sshd_config

There are 1 entries for the tag sshd_config

Linux下的用户管理及SSH禁止用户登录和IP连接的配置

MitchellChu 2014-01-14 Unix & Linux

     MitchellChu从零开始学Linux,用户管理会在各种配置中显示其强大的作用。当我们在不太会配置Linux的时候,配置了一个运行在不同用户下的网站,另一个帐户下的数据库,当我们网站被黑之后,至少让别人在黑数据库的过程中没有那么顺当——增加被攻击的复杂度就是在增加自己站点的安全性。好吧,不得不说,我是这个思路的。那毫不犹豫的就开始了用户管理的操作。 在Linux中,用户的管理分为组和用户两种。这个Windows下也是这个样子,组是一类用户的统称。组和用户的关系是:多对多的关系。即用户可以存在于多个组中,组中也可以有多个用户。组的权限会被赋予组中的用户,用户可以从多个组中继承权限。 对于组的管理命令有: #组管理命令 groupadd #添加组 groupdel #删除用户组 groupmod #修改用户组 groups #显示当前用户所属的用户组 grpck #检查用户组及密码文件的完整性(etc/group以及/etc/gshadow文件) grpconv #通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建; grpunconv #通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。 对于用户的管理命令有: #用户管理相关的命令 useradd #添加用户 adduser #添加用户 passwd #为用户设置密码 usermod #修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等 pwcov #同步用户从/etc/passwd 到/etc/shadow pwck #pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整; pwunconv #是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件; finger #查看用户信息工具 id #查看用户的UID、GID及所归属的用户组 chfn #更改用户信息工具 su #用户切换工具 sudo #sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现 visudo #visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的 sudoedit #和sudo 功能差不多 这些命令可以完成绝大部分的用户和组的管理操作,下面的代码中,就完成了添加组和用户的功能,如果还有不能达到的地方——使用强大的文本编辑吧,各种用户和组的文件等待你去发掘(后面就有要修改文件的case)。 #如果你不想使用现有用户组,那么你可以新建一个用户组 groupadd GROUPNAME #GROUPNAME是新用户组的名称。这里使用的GID是默认的 #添加了用户组之后,我们可以将用户添加到用户组中。 useradd username -G GROUPNAME #添加用户username到GROUPNAME中,注意没有添加密码 #修改用户密码 passwd username #设置用户密码 #其他各种操作... 在Linux下,root是个非常特别的帐户,而且权限非常大,对于生产环境中,root的帐户保护就非常重要,其中一点就是远程SSH连接的时候,我们最好能够将root的远程连接功能关闭。这个就需要修改配置文件来进行了。在/etc/ssh下面有个sshd_config文件,这个文件中,会有一个PermitRootLogin 配置,默认是被#注释掉的,要禁止SSH登录,就需要将这个注释去掉,并且将值改成no(默认值是yes)。 #修改/etc/ssh/sshd_config文件内容 vi /etc/ssh/sshd_config #找到内容 #PermitRootLogin yes这行,修改成下面这行 PermitRootLogin no #保存内容,并退出 #重启sshd服务 service sshd restart 此时我们关闭putty之后,再重新连接之后,输入root,并提供密码之后,远程的返回将会是:Access denied。这就禁止了root帐户的SSH连接。如果在SSH时,需要使用root帐户的执行权限执行命令,只需要用su/sudo来做即可。 对于一般用户,网上找到的禁用的方式有很多,至于那种处理方式会比较优就看个人爱好了,这里列出其中的一部分: #直接禁用用户,让用户不能登录,方法有以下这些: #1.修改/etc/shadow的第二列内容为*,这种方式是让用户不能登陆系统 username:*:15864:0:99999:7::: #这种方式处理的用户不能再登录系统,同时该用户的密码也丢失了,如果要再次登录时,需要重新设置密码 #2.类似第一种,这种方式是直接修改/etc/passwd中的用户路径那一行的最后一列,将/bin/bash改成/sbin/nologin username:x:501:500::/home/username:/sbin/nologin #这种方式修改之后,用户同样不能登录,效果和上面类似,但是如果恢复/bin/bash之后,用户可以直接输入密码登录。 #3.当然,不想修改文件,直接使用usermod也是可以的 usermod -L username ##锁定username这个账户 #这种方式如果要解锁的时候,使用usermod -U username 即可。不用再修改文件了 #4.修改shell类型,可以禁止用户,还能让用户知道原因 chsh username -s /sbin/nologin #修改username的shell #修改 /etc/nologin.txt(如果没有,可创建) #在文件中添加被禁止的原因。 #这个方法和第二种效果差不多,不过这个方法可以让用户知道自己不能登录的原因 #5.禁止多用户登录 #首先需要在/etc下建立nologin文档 touch /etc/nologin ##文件存在之后,除了root之外的所有用户都无法登陆,这个文件可以写上禁止登陆的原因,以便用户无法登录时看到原因 ## 如果不要禁止所有用户,只需要将/etc/nologin文件删除即可。 #6.修改/etc/ssh/sshd_config文件,修改AllowUsers的值 #在文件中查找AllowUsers,如果没有,在文件末尾加上即可。 AllowUsers username root #仅允许username,root通过SSH登录 #修改文件保存之后,需要重启sshd服务 #如果要显示提示信息,可以修改/etc/issue.net,在文件中添加信息。同时修改sshd_config文件中加入Banner参数 Banner /etc/issue.net #这个Banner是提示在用户登录之前。 #如果要输入密码之后提示,可以将提示信息放入/etc/motd中 ################################################# #来自网上关于motd和issue.net(issue的网络版)的区别: #/etc/motd,即messageoftoday,每次用户登录时,/etc/motd文件的内容会显示在用户的终端。系统管理员可以在文件中编辑系统活动消息,如:管理员通知用户系统何时进行软件或硬件的升级、何时进行系统维护等。/etc/motd在用户进入的是图形界面时,可能看不到提示。 #/etc/issue.net与/etc/motd文件类似,区别在于:当一个网络用户登录系统时,/etc/issue.net的文件内容显示在login提示符之前,而/etc/motd内容显示在用户成功登录系统之后。 #7. 还有一种方法是修改/etc/pam.d/sshd文件 #在文件的第一行添加: auth required ...

关于博主

  一枚成分复杂的网络IT分子,属于互联网行业分类中的杂牌军。