Linux安全加固手册

摘要:
1身份鉴别1.1密码安全策略操作系统和数据库系统管理用户身份鉴别信息应具有不易被冒用的特点,口令应有复杂度要求并定期更换。删除或禁用临时、过期及可疑的帐号,防止被非法利用。也可以用iptables进行访问控制5.2超时锁定应根据安全策略设置登录终端的操作超时锁定。如果有需要,开启屏幕保护功能设置屏幕保护:设置-˃系统设置-˃屏幕保护程序,进行操作6最佳经验实践对Linux系统的安全性提升有一定帮助。
1 身份鉴别

1.1 密码安全策略

操作系统和数据库系统管理用户身份鉴别信息应具有不易被冒用的特点,口令应有复杂度要求并定期更换。

设置有效的密码策略,防止攻击者破解出密码

1)查看空口令帐号并为弱/空口令帐号设置强密码

# awk -F: '($2 == ""){print $1}' /etc/shadow

可用离线破解、暴力字典破解或者密码网站查询出帐号密钥的密码是否是弱口令

2)修改vi /etc/login.defs配置密码周期策略

pic_4ee8aa41.png

此策略只对策略实施后所创建的帐号生效, 以前的帐号还是按99999天周期时间来算。

3)/etc/pam.d/system-auth配置密码复杂度:

在文件中添加如下一行:

password requisite  pam_cracklib.so retry=3 difok=2 minlen=8 lcredit=-1 dcredit=-1

pic_2965ffb8.png

参数含义如下所示:

difok:本次密码与上次密码至少不同字符数

minlen:密码最小长度,此配置优先于login.defs中的PASS_MAX_DAYS

ucredit:最少大写字母

lcredit:最少小写字母

dcredit:最少数字

retry:重试多少次后返回密码修改错误

【注】用root修改其他帐号都不受密码周期及复杂度配置的影响。

1.2 登录失败策略

应启用登录失败处理功能,可采取结束会话、限制非法登录次数和自动退出等措施。

遭遇密码破解时,暂时锁定帐号,降低密码被猜解的可能性

1)方法一:/etc/pam.d/login中设定控制台;/etc/pam.d/sshd中设定SSH

/etc/pam.d/sshd中第二行添加下列信息

auth required  pam_tally2.so deny=5 lock_time=2 even_deny_root unlock_time=60

pic_418ee0b6.png

###########参数解释############

查看用户登录失败次数

# pam_tally2 --user root

解锁用户

# pam_tally2 -r -u root

even_deny_root 也限制root用户(默认配置就锁定root帐号);
deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;

root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;

1.3 安全的远程管理方式

当对服务器进行远程管理时,应采取必要措施,防止鉴别信息在网络传输过程中被窃听。

防止远程管理过程中,密码等敏感信息被窃听

执行如下语句,查看telnet服务是否在运行

pic_7b71a375.png

禁止telnet运行,禁止开机启动,如下图:

pic_b328f7e8.png

2 访问控制

应及时删除多余的、过期的帐户,避免共享帐户的存在。

删除或禁用临时、过期及可疑的帐号,防止被非法利用。

主要是管理员创建的普通帐号,如:test

# usermod -L user 禁用帐号,帐号无法登录,/etc/shadow第二栏显示为!开头

# userdel user 删除user用户

# userdel -r user将删除user用户,并且将/home目录下的user目录一并删除

pic_634bdd9f.png

加固后如图

pic_7263d250.png

3 安全审计

3.1 审核策略开启

审计范围应覆盖到服务器和重要客户端上的每个操作系统用户和数据库用户;

开启审核策略,若日后系统出现故障、安全事故则可以查看系统日志文件,排除故障、追查入侵者的信息等。

查看rsyslog与auditd服务是否开启

pic_e8cd2775.png

pic_06c71eb4.png

rsyslog一般都会开启,auditd如没开启,执行如下命令:

# systemctl start auditd

auditd服务开机启动

# systemctl start auditd

pic_08e64afa.png

pic_299469d2.png

3.2 日志属性设置

应保护审计记录,避免受到未预期的删除、修改或覆盖等。

防止重要日志信息被覆盖

让日志文件转储一个月,保留6个月的信息,先查看目前配置,

# more /etc/logrotate.conf | grep -v "^#|^$"

需要修改配置为下图所示:

pic_9df4993f.png

4 入侵防御

操作系统遵循最小安装的原则,仅安装需要的组件和应用程序,并通过设置升级服务器等方式保持系统补丁及时得到更新。

关闭与系统业务无关或不必要的服务,减小系统被黑客被攻击、渗透的风险。

禁用蓝牙服务

# systemctl stop bluetooth

禁止蓝牙开机启动

pic_af148c5c.png

5 系统资源控制

5.1 访问控制

应通过设定终端接入方式、网络地址范围等条件限制终端登录。

对接入服务器的IP、方式等进行限制,可以阻止非法入侵。

  1. 在/etc/hosts.allow和/etc/hosts.deny文件中配置接入限制

最好的策略就是阻止所有的主机在“/etc/hosts.deny”文件中加入“ ALL:ALL@ALL, PARANOID ”,然后再在“/etc/hosts.allow” 文件中加入所有允许访问的主机列表。如下操作:

编辑 hosts.deny文件(vi /etc/hosts.deny),加入下面该行:

# Deny access to everyone.  
ALL: ALL@ALL, PARANOID

编辑hosts.allow 文件(vi /etc/hosts.allow),加入允许访问的主机列表,比如:

ftp: 202.54.15.99 foo.com //202.54.15.99是允许访问 ftp 服务的 IP 地址

//foo.com 是允许访问 ftp 服务的主机名称。

pic_078366d3.png

  1. 也可以用iptables进行访问控制

5.2 超时锁定

应根据安全策略设置登录终端的操作超时锁定。

设置登录超时时间,释放系统资源,也提高服务器的安全性。

/etc/profile中添加如下一行

exprot TMOUT=900  //15分钟
# source /etc/profile

改变这项设置后,必须先注销用户,再用该用户登录才能激活这个功能。

如果有需要,开启屏幕保护功能

设置屏幕保护:设置 -> 系统设置 -> 屏幕保护程序,进行操作

pic_345ec6ff.png

6 最佳经验实践

对Linux系统的安全性提升有一定帮助。

6.1 DOS攻击防御

防止拒绝服务攻击

TCP SYN保护机制等设置

1)打开 syncookie:

# echo“1”>/proc/sys/net/ipv4/tcp_syncookies //默认为1,一般不用设置

表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

2)防syn 攻击优化

用vi编辑/etc/sysctl.conf,添加如下行:

net.ipv4.tcp_max_syn_backlog = 2048

进入SYN包的最大请求队列.默认1024.对重负载服务器,增加该值显然有好处.可调整到2048.

pic_34248234.png

6.2 历史命令

为历史的命令增加登录的IP地址、执行命令时间等

1)保存1万条命令

# sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

2)在/etc/profile的文件尾部添加如下行数配置信息:

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}' |sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"

##source /etc/profile让配置生效

pic_eb326b7d.png
原文:https://www.cnblogs.com/skkip/p/10074096.html

免责声明:文章转载自《Linux安全加固手册》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇自定义Struts2实现Docker制作tomcat镜像之Dockerfile下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mysql报错java.sql.SQLException:null,message from server:"Host '27,45,38,132' is not allowed to connect

Mysql报错java.sql.SQLException:null,message from server:"Host '27,45,38,132' is not allowed to connect 远程连接mysql数据库,出现异常: null,message from server:"Host '27,45,38,132' is not allowe...

linux开启MySql远程连接功能

MySql默认只有本机(127.0.0.1)能够访问,要开启主要有两步骤:配置MySql绑定IP和建立允许远程访问的账户。 一、修改IP绑定 需要修改MySql的配置文件my.cnf 如果你使用Debian Linux,文件位置在: /etc/mysql/my.cnf 如果你使用Red Hat Linux/Fedora/Centos Linux,文件位置...

【转】Linux 下从命令行打开pdf文件和html文件的命令

【转】 Linux 下从命令行打开pdf文件和html文件的命令 转自:http://hipercomer.blog.51cto.com/4415661/900926 如果你经常工作在终端下,某个时刻需要查看一些文档的时候(比如pdf或者html文档),是不是经常需要切换到文件系统中打开这些文件。事实上,你只需要敲一个命令就可以打开这个文件了,完全没有必要...

DNS(BIND)服务搭建

一、DNS 1.负责将域名解析为IP(正向解析);将IP解析为域名(反向解析) 2.DNS查询过程 如客户端访问www.baidu.com 1)客户端查看本地是否存有DNS缓存 2)客户端查看本地hosts文件是否有域名对应IP地址 3)客户端向首选DNS服务器请求指定域名的IP地址,如果首选DNS本地缓存指定域名 4)首选DNS服务器向根(.)发送查询请...

在CentOS上安装和配置Guacamole

一、环境说明 操作系统:CentOS 6.4 x86_64 主机IP:192.168.38.20 登录账户:root 二、安装编译和运行环境 1. 关闭防火墙 在Shell中运行以下命令: chkconfig iptables off service iptables stop 2. 修改SELinux运行模式 在Shell中运行以下命令: se...

Linux 能ping通ip但ping不通域名

Linux里 能ping通ip,但ping不通域名(如 baidu.com),查看相关资料后发现是DNS的配置问题 修改 配置文件: /etc/resolv.conf 修改为: 1 nameserver 114.114.114.114 其中ip可选择: 114.114.114.114 119.29.29.29 223.5.5.5 参考资料:https://...