linux 系统的安全设定

Linux 安全设定:
1.
禁止 Ctrl+Alt+Delete 重新启动机器命令
 修改 /etc/inittab 文件,将 "ca::ctrlaltdel:/sbin/shutdown -t3 -r now" 一行注释掉。

2.
禁止在 ssh 下直接用 root 登录
 编辑 /etc/ssh/sshd_config 文件
 把 PermitRootLogin yes 前面的 “#” 去掉,把 “yes” 改为 “no”
 
有关 ssh 登录的安全设定还有很多,更详细的 ssh 安全配配置请参考我的《 SSH 服务简介》。

3.
限制 su 名单
 编辑 /etc/pam.d/su 文件,加入:
  auth required /lib/security/$ISA/pam_wheel.so use_uid
 (不少 linux 发行版中可能省略 pam_wheel.so 文件的路径名,为节省篇幅,下文也可能省略路径,但使用绝对路径是不会错的!)
 执行下面语句将用户 user1 加入 wheel 组:
  #gpasswd -a user1 wheel
 
这将使 wheel 组中的用户才可以执行 su 命令, root 例外。

  auth       sufficient   /lib/security/$ISA/pam_wheel.so trust use_uid
 
此行使 wheel 组的用户在执行 su 时不用输入密码,很方便,但是很危险!!慎用!

 
说明: pam_wheel.so 是专门用于 su 的模块,用来阻止非指定组成员执行 su ,默认为 GID 0 ,可使用选项 group group_name 来指定某个组的用户可以 su ,或再加上选项 deny 取反 ,即禁止某些组使用 su 。上文中的 “use_uid” 是系统中就定义好的,具体什么意思 /etc/pam.d/su 文件里有说明。

4.
限制 ssh 使用者名单
 编辑 /etc/pam.d/sshd 文件,(其中 /etc/ssh_users 为使用者名单的文件名)
  auth required pam_listfile.so item=user sense=allow file=/etc/ssh_users onerr=fail
 建立 /etc/ssh_users 文件,执行以下语句:
  echo user1 >> /etc/ssh_users
 
只有 /etc/ssh_users 文件中列出的用户能用 ssh 登录主机。
 
说明:
  item
选项表示指定文件中数据的类型。可用值为: user,group,tty,shell,ruser,rhost 。一般用 user group ,四个值不常用,有兴趣自己测试。
  sense
选项表示对指定文件中的数据的访问权限。可用值为 deny allow ,不用介绍了吧。
  file
选项表示存放相关数据的文件位置。
  onerr=fail
表示本 pam 模块的认证出现任何错误,则返回拒绝访问。注意:返回值不是 访问失败 ,而且返回 拒绝访问 不一定能阻止或允许用户登录,还要看第二个字段的参数。本例中使用了 required ,如果返回值为拒绝访问,则直接阻止用户登录。
 
该模块常用于 ssh rlogin ftp 等认证:
  ssh
:直接放入 /etc/pam.d/sshd 文件。
  rlogin
:需要放入 /etc/pam.d/rlogin /etc/pam.d/remote /etc/pam.d/login 。配置 rlogin 必须注意下面内容!(这是 redhat 官方回答,测试发现不需要修改 login 文件即可实现)



 
上文中已经提到 2 pam 的实例了,下面解释一下 pam 配置文件中第二个字段的参数:
  sufficient    
如果该模块允许用户访问,则跳过栈中的其余任何模块,并返回认证成功值给服务。
  requisite    
如果该模块拒绝访问,则返回认证失败值给服务,并跳过栈中的其余模块。
  required    
该模块必须允许访问,才能使整个认证过程成功。
  optional    
如果没有其他模块起决定作用,则该模块的结果将用于决定是否可以访问。
 
前面两个关键词很容易理解,它们直接允许或拒绝访问,并当即终止认证过程。该模块必须有一个允许访问,且其他 required 的模块都没有拒绝,才能使整个认证过程成功。最后两个关键词表示是否为认证的基本和必须部分。如果栈中已执行的模块没有拒绝或允许访问,则认证成功与否由综和所有所需模块的结果来决定。如果至少其中一个模块允许访问,且其他模块都没有拒绝,则认证成功。若所需模块没有达成明确决定时,则使用可选模块。
 
例如 /etc/pam.d/rlogin 文件的前几行是这样的话:
  auth       required     pam_nologin.so
  auth       required     pam_securetty.so
  auth       required     pam_env.so
  auth       required     pam_listfile.so item=user sense=allow file=/etc/rlogin_users onerr=fail
  auth       sufficient   pam_rhosts_auth.so
 

  auth       required     pam_nologin.so
  auth       required     pam_securetty.so
  auth       required     pam_env.so
  auth       sufficient   pam_rhosts_auth.so
  auth       required     pam_listfile.so item=user sense=allow file=/etc/rlogin_users onerr=fail
 
这会有很大区别,使用后者的话,如果需要服务器上有 /etc/hosts.equiv 文件,且该文件里包含客户端的主机名,则最后一句将无法禁止该客户端上的所有用户登录!即使那个用户列在 /etc/rlogin_users 文件中,因为前一句指示 只要远程主机在信任主机列表里,就不再继续下面的认证,直接放行!

5.
登录终端设置
  /etc/securetty 文件指定了允许 root 登录的 tty 设备,由 /bin/login 程序读取,
 其格式是一个被允许的名字列表,你可以编辑 /etc/securetty 且注释掉如下的行。
  # tty1
 这时, root 就不可在 tty1 终端登录。

你可能感兴趣的:(linux,职场,系统,休闲)