2015年(68)
分类: 系统运维
2015-08-31 18:41:48
以下均以redhat 为例,其他的发行版没测过,没把握的千万不要在正式机上玩,登录不上就麻烦了。
一、限制终端登陆
/etc/securetty文件限制“root”用户可以从那个TTY设备登录。登录程序(通常是“/bin/login”)需要读取“/etc/securetty”文件。它的格式是:列出来的tty设备都是允许登录的,注释掉或是在这个文件中不存在的都是不允许root登录,这个只针对root用户。
[root@localhost ~]#vi /etc/securetty
console
vc/1
--------略-------
vc/11
tty1
tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8
#tty9
#tty10
#tty11
这个只是限制终端登录,简单的说就是直接在服务器上连上显示器、键盘来本地操作的那种,对ssh(ssh使用pts)远程登录没有影响;如上修改完后就只能通过终端tty1和tty2登录了,如果你按ALT+F[3-6]切换终端登录会报login incorrect错误。
默认情况下是允许root从6个终端登陆,可以修改文件/etc/init/start-ttys.conf更改。
二、限制ssh登录
[root@localhost ~]#vi /etc/ssh/sshd_config
1)限制root用户通过ssh登录: PermitRootLogin no
2) 设定允许/拒绝个别组通过ssh登录:AllowGroups/DenyGroups remote 允许/拒绝remote这个组的用户远程登陆
3) 设定允许/拒绝个别用户通过ssh登录:AllowUsers/DenyUsers user1 user2 user3 允许/拒绝user[123] 三个用户访问, 这个可以用正则表达式,如:
AllowUsers/DenyUsers user* 以^user开头的用户
AllowUsers/DenyUsers [^user] 非以user开头的用户名
此外更严格一点还可以只限制/允计从某台服务器过来的用户
AllowUsers user1@192.168.1.100
4)修改配置文件后重启sshd(/etc/init.d/sshd restart)服务后生效
三、 限制用户登陆的时间
需用到pam模块pam_time.so
1) ssh
[root@localhost ~]#vi /etc/pam.d/sshd
#%PAM-1.0
auth include system-auth
account required pam_nologin.so
account required /lib64/security/pam_time.so //添加这一行
----- 略------
2) 终端登录
[root@localhost ~]#vi /etc/pam.d/login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
account required pam_nologin.so
account required /lib64/security/pam_time.so //添加这一行
----- 略------
3)配置time.conf
[root@localhost ~]# vi /etc/security/time.conf
time.conf配置文件格式:services;ttys;users;times
services — pam服务名列表,可以ls /etc/pam.d查看
tty —终端名.
users —用户名
times —可以使用services 的时间段
示例如下:
sshd;*;apptest;Al1400-2000 //限制apptest用户只能在中午2点到晚上8点这段时间通过ssh登录
login;*;user01;Al1400-2000 //限制user01用户只能在中午2点到晚上8点这段时间通过终端登录
sshd;*;!root;!Al0000-2400 //除了root用户外,其他用户都不能登录
time.conf的详细配置方法请 man time.conf
四、 限制同一用户登陆的数量
linux是个多用户系统,同一个用户名可以多个人使用且同时登录,如果想限制只能有一个用户登录系统,可以做如下设置
[root@localhost ~]#vi /etc/security/limits.conf
添加:
abc - maxlogins 1
设置后,用户名abc的最大登录数量为1,不管是通过本地终端或是SSH等远程登录,如果登录的数量超过1个即会拒绝,如