1.概述
本文主要从用户设置、如何开放服务、系统优化等方面进行系统的安全配置,以到达使Linux服务器更安全、稳定。
2.用户管理
在Linux系统中,用户帐号是用户的身份标志,它由用户名和用户口令组成。
系统将输入的用户名存放在/etc/passwd文件中,而将输入的口令以加密的形式存放在/etc/shadow文件中。
2.1 删除系统特殊的的用户帐号和组帐号:

以上所删除用户为系统默认创建,但是在常用服务器中基本不使用的一些帐号,但是这些帐号常被黑客利用和攻击服务器。

同样,以上删除的是系统安装是默认创建的一些组帐号。这样就减少受攻击的机会。
2.2用户密码设置:
安装linux时默认的密码最小长度是5个字节,但这并不够,要把它设为8个字节。修改最短密码长度需要编辑login.defs文件(vi /etc/login.defs) ,设置为:
PASS_MAX_DAYS 90 ##密码设置最长有效期
PASS_MIN_DAYS 6 ##密码设置最短有效期
PASS_MIN_LEN 8 ##设置密码最小长度
PASS_WARN_AGE 30 ##提前多少天警告用户密码即将过期
设置用户目录缺省访问权限
vi /etc/login.defs
在文件中设置
UMASK 027
2.3 修改自动注销帐号时间:
自动注销帐号的登录,在Linux系统中root账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销root账户,那将会带来很大的安全隐患,应该让系统会自动注销。通过修改账户中“TMOUT”参数,可以实现此功能。TMOUT按秒计算。编辑你的profile文件(vi /etc/profile),在"HISTSIZE="后面加入下面这行:
export TMOUT=1200
300,表示300秒,也就是表示5分钟。这样,如果系统中登陆的用户在5分钟内都没有动作,那么系统会自动注销这个账户。
2.4限制Shell命令记录大小
默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。
您可以编辑/etc/profile文件,修改其中的选项如下:
HISTFILESIZE=5或HISTSIZE=5
#vi /etc/profile
export HISTSIZE=100
export HISTFILESIZE=100
2.5 设置密码复杂度策略和锁定多次登陆失败的用户
# vi /etc/pam.d/system-auth
修改:
password requisite pam_cracklib.so try_first_pass retry=3 type= ocredit=-1 lcredit=-1 dcredit=-1 ucredit=-1
说明(参数-1为包含):
type:提示为空;ocredit:特殊字符个数;lcredit:小写字母个数;dcredit:数字个数;ucredit:大写字母个数
增加:
centos 5 以下
auth required pam_tally.so deny=5 unlock_time=600
centos 6 以上
auth required pam_tally2.so deny=5 unlock_time=600
centos 8以上
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
2.6 不允许root直接登陆和ssh认证次数限制
vi /etc/ssh/sshd_config
修改:
PermitRootLogin yes ##将前面的“#”去掉,短尾“Yes”改为“No”,并保存文件。
MaxAuthTries 5 ##超过5次验证错误断开连接
vi /etc/pam.d/sshd
centos 5 以下
auth required pam_tally.so deny=5 unlock_time=600
centos 6 以上
auth required pam_tally2.so deny=5 unlock_time=600
centos 8以上
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
3.服务管理
在Linux系统的服务管理方面,如果想做到服务的最好安全,其中主要的就是升级服务本身的软件版本,另外一个就是关闭系统不使用的服务,做到服务最小化。
3.1 关闭系统不使用的服务:

在这里有两个方法,可以关闭init目录下的服务,一、将init目录下的文件名mv成*.old类的文件名,即修改文件名,作用就是在系统启动的时候找不到这个服务的启动文件。二、使用chkconfig系统命令来关闭系统启动等级的服务。
注:在使用以下任何一种方法时,请先检查需要关闭的服务是否是本服务器特别需要启动支持的服务,以防关闭正常使用的服务。
第一种:修改文件名的方法

第二种:使用chkcofig命令来关闭不使用的系统服务

注:以上chkcofig 命令中的3和5是系统启动的类型,3代表系统的多用启动方式,5代表系统的X启动方式。
3.2修改ssh服务的sshd 端口
ssh默认会监听在22端口,你可以修改至6022端口以避过常规的扫描。
注意:修改端口错误可能会导致你下次连不到服务器,可以先同时开着22和6022两个端口,然后再关掉22端口;
重启sshd不会弹掉你当前的连接,可以另外开一个客户端来测试服务;
#vi /etc/ssh/sshd_config
#增加修改
#Port 22 #关闭22端口
Port 6022 #增加6022端口
#重启sshd服务
service sshd restart
6.日志管理
6.1 系统引导日志:
dmesg
使用 dmesg 命令可以快速查看最后一次系统引导的引导日志。通常它的
内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。
6.2 系统运行日志:
A、Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有 root 才可以读,不过只需要修改文件的访问权限就可以让其他人可读。
以下是常用的系统日志文件名称及其描述:

可以通过编辑 /etc/logrotate.conf 文件来配置 logrotate 的自动行为。
定制日志
1安装sudo和syslog服务
使用yum等命令在在线安装sudo和syslog服务(在centos6.4中syslog为rsyslog服务)
2配置/etc/sudoers
在/etc/sudoers中配置下面这一行配置
Defaults logfile=/var/log/sudo.log
3配置系统日志/etc/(r)syslog.conf
在/etc/syslog.conf中添加下面一行的配置文件
*.* /var/log/sudo.log
4重启syslog服务
/etc/init.d/rsyslog restart
然后在/var/log/sudo.log 中就可以发现使用sudo命令的用户。
5.为审计产生的数据分配合理的存储空间和存储时间
检查方法:
#cat /etc/logrotate.conf 查看系统轮询配置,
# rotate log files weekly
weekly
#这里代表每个日志文件是每个星期循环一次,一个日志文件保存一个星期的内容。
# keep 4 weeks worth of backlogs
rotate 26
#这里代表日志循环的次数是26次,即可以保存26个日志文件。
日志配置参考:
/opt/logtest/*.log {
daily # 每天分割一次
rotate 30 # 保留最近30个分割后的日志文件
copytruncate
missingok
dateext # 切割后的文件添加日期作为后缀
dateyesterday # 配合dateext使用,添加前一天的日期作为分割后日志的后缀
dateformat -%Y-%m-%d # 格式为2022-02-08
}
添加 crontab 计划任务
01 01 * * * /usr/sbin/logrotate -f /etc/logrotate_d/xxx
