服务器安全考虑

服务器操作系统安全考虑

1.口令安全策略

建议系统化设置密码最短和最长使用期限,密码长度,修改文件前先做好文件备份:
cp /etc/login.defs /etc/login.defs.bak
修改/etc/login.defs中如下参数:
PASS_MAX_DAYS  180
PASS_MIN_DAYS  0
PASS_MIN_LEN  8

说明
配置login.defs,这个文件主要是配置密码有效期
PASS_MAX_DAYS 99999 #密码的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密码,0可修改,非0多少天后可修改
PASS_MIN_LEN 5 #密码最小长度,使用pam_cracklib module,该参数不再有效
PASS_WARN_AGE 7 #密码失效前多少天在用户登录时通知用户修改密码

root用户不受pam认证规则限制,可以随便设置密码的
login.defs文件也对root用户无效,root用户修改密码的生命周期可以通过chage命令来修改

2.限制超级管理员远程登录
linux系统中root用户无所不能,为了系统安全ssh禁止root用户远程登录,必要的话使用sudo机制也是不错的选择

应禁止root账号远程登录策略,以root账号编辑/etc/ssh/sshd_config, 去掉以下注释“#”,参考配置如下:
PermitRootLogin no
如果业务操作必须要求采用root账号,建议先以普通账号登录系统,然后再通过“su”命令切换至“root”账号权限。

如何禁止ROOT用户通过SSH方式远程登录

首先创建一个ghf普通用户加入到相应的组
这里必须要新建一个用户,否则将会造成无法通过远程ssh登录服务器
# groupadd ghf
# useradd -g ghf ghf
更改用户 ghf 的密码
# passwd ghf
然后修改
/etc/ssh/sshd_config,
去掉以下行注释“#”,并将yes 改为no ,参考配置如下:
PermitRootLogin no
最后重启ssh服务
# service sshd restart
或/etc/init.d/sshd restart
这样即使root用户密码泄漏,别人也无法通过root用户直接连接服务器。

---------------------------------
普通用户如何拥有root用户权限

赋予root权限
方法一: 修改 /etc/sudoers 文件,找到下面行
#visudo

##Allows people in group wheel to run all commands
#%wheel    ALL=(ALL)    ALL     //取消“#”注释
然后修改用户,使其属于root组(wheel),命令如下:
#usermod  -g  root test
修改完毕,现在可以用test帐号登录,然后用命令 su - ,即可获得root权限进行操作。

方法二: 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

##Allow root to run any commands anywhere

root   ALL=(ALL)     ALL
test   ALL=(ALL)     ALL     //添加行
修改完毕,现在可以用test帐号登录,然后用命令 su - ,即可获得root权限进行操作。

方法三:普通用户登录,登录后用# su – 提升root权限。

方法四: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:

test:x:500:500:test:/home/test:/bin/bash
修改后如下
test:x:0:500:tommy:/home/test:/bin/bash
保存,用test账户登录后,直接获取的就是root帐号的权限。

小结:
在实际操作当中,发现方法一二与三也没有什么区别,建议常用方法三;
方法四看上去简单方便,考虑安全性,一般不推荐使用。

---------------------------------

linux如何查看所有的用户和组信息的方法:

1、cat /etc/passwd
2、cat /etc/group


cat /etc/passwd查看所有的用户信息

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

username:password:User ID:Group ID:comment:home directory:shelll
用户名,密码,用户id,用户所在组id,备注,用户家目录,shell 命令所在目录


cat /etc/passwd|grep 用户名
cat /etc/passwd|grep 用户名,用于查找某个用户,


cat /etc/group
cat /etc/group查看所有组信息

mail:x:12:postfix
用户组(Group)、用户组口令、GID及该用户组所包含的用户(User)

cat /etc/group|grep 组名
cat /etc/group|grep 组名,用于查找某个用户组

groups 查看当前登录用户的组内成员
groups test 查看test用户所在的组,以及组内成员
whoami 查看当前登录用户名
---------------------------------
linux中的conf文件中每行的#是干什么用的
每行开头的#是注释用的,表示那一行的内容是注释,脚本执行时不读取。

当然特殊地方的#就要看具体情况了。
#后面的内容是注释,用来说每个配置参数的含义,让你可以很快知道如何使用对应的参数。
同样#号后的内容去掉不影响配置。
---------------------------------



3.配置空口令账号登录策略

安全策略里应包括禁用允许空口令账号登录策略。以root账号编辑/etc/ssh/sshd_config文件,去掉以下注释“#”:
PermitEmptyPasswords no

4.用户试图登录时警示信息
应该加强对系统Banner信息的管理,剔除版本信息,换成警告信息,
如"System login has been monitored, illegal log in as soon as possible to exit from legal sanctions"等字样的信息。
#cat /etc/ssh/sshd_config 查看文件中是否存在Banner字段,或banner字段为NONE
  #cat /etc/motd 查看文件内容,该处内容将作为banner信息显示给登录用户。
  #vi /etc/ssh/sshd_config
  banner NONE
  #vi /etc/motd
  删除全部内容或更新成自己想要添加的内容

5.超时登录自动注销

编辑/etc/profile
TMOUT=600(秒)

6.剩余信息报告
限制Shell命令记录大小
实施方法如下,进入Linux系统,执行如下命令:
Vi  /etc/profile
设置HISTSIZE=50

数据库安全考虑

1.升级Oracle数据库补丁程序

2.配置安全性高的口令安全策略
【实施方案】
启用登录密码失败限制功能和自动锁定功能,启用密码最大生存时间,启用密码复杂性验证,操作如下:
sqlplus "/ as sysdba";
SQL>ALTER PROFILE "DEFAULT" LIMIT FAILED_LOGIN_ATTEMPTS 15  #失败登录限制设置15次
SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_LOCK_TIME 1;  #超过失败登录限制账户自动锁定
SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION DEFAULT;   #启用密码复杂性验证                    
SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_LIFE_TIME 360;  #启用密码最大生存时间360天

注意:以上定义的值为建议参考值,管理员可根据业务情况自行更改,但不要使用系统默认密码策略,如果对应用有影响,建议采用回退措施恢复默认值。

【回退措施】
sqlplus "/ as sysdba"
SQL>ALTER PROFILE "DEFAULT" LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;              #恢复默认无限制
SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_LOCK_TIME UNLIMITED;                 #恢复默认无限制
SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION NULL;                  # 恢复默认无限制                
SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_LIFE_TIME UNLIMITED;                    #恢复默认无限制

3.设置监听器身份验证超时

【加固方法】
设置身份验证超时值30秒。编辑listener.ora文件,添加以下参数:
INBOUND_CONNECT_TIMEOUT_LISTENER = 30
【回退方法】
在listener.ora文件内去掉以下参数:
INBOUND_CONNECT_TIMEOUT_LISTENER = 30

4.设置会话连接超时自动处理功能

【实施方案】
在sqlnet.ora文件中检查有无下列语句。
sqlnet.expire_time = X
SQL> shutdown immediate
SQL> startup
【回退方法】
sqlnet.ora文件中删除下面的语句
sqlnet.expire_time = X
SQL> shutdown
SQL> startup


5.修改默认监听端口
【实施方案】
在listener.ora中更改端口号为其它。
【回退方法】
还原listener.ora文件配置.

备注:随笔中内容来源于网上资料整理,仅供参考。

原文地址:https://www.cnblogs.com/Alanf/p/8032799.html