0


linux安全配置

一、简介

Linux种类较多,常见的有Redhat、Ubuntu、Centos、SUSE等

根据不同版本,其安全配置都不太相同,主要体现在以下三点

①配置文件所存放的路径

②操作系统的命令

③操作系统自身的安全特性或工具

我们以Centos7为例,进行安全配置讲解,其它版本Linux可能存在安全配置方式不同,但整体配置

的维度和原则是一致的。

二、Centos 安全配置维度

①安装配置(默认配置即可)

②服务配置(默认配置即可)

③网络配置

④日志和审计

⑤访问、授权和认证系统运维

三、Centos 安全配置原则

①最小安全(最小安装、最小权限)

②不影响业务可用(安全与业务的矛盾)

③职责分离

④审计记录

因为Centos安全配置较多,本文仅列举部分典型代表,更多具体配置,可以参照相关国内或国际

标准,如等保、CIS等。

四、网络配置

①禁用不使用的网络协议

②禁用IPv6,,执行以下命令

查看配置是否生效

sysctl net.ipv6.conf.all.disable_ipv6

③禁用不使用的无线设备,因为Linux作为服务器工作时,无需使用无线

④查看无线设备 iw list

⑤查看当前连接ip link show up

⑥关闭网络连接ip link set <interface>down

这里以本地环回口lo为例,进行关闭

⑦当Linux作为独立主机使用时,配置网络关闭

关闭IP转发,默认即关闭

查看IP转发配置 sysctl net.ipv4.ip_forward

关闭IP转发 sysctl -w net.ipv4.ip_forware=0

⑧关闭数据包重定向

查看重定向设置sysctl net.ipv4.conf.all.send_redirects

关闭重定向设置sysctl -w net.ipv4.confall.send_redirects=0

⑨开启TCP SYN Cookies功能

TCP SYN功能某种程度上可以防止TCP的SYN DDOS攻击

查看TCP SYN Cookies功能 sysctl net.ipv4.tcp_syncookies

开启TCP SYN Cookies功能 sysctl -w net.ipv4.tcp_syncookies=1

五、防火墙配置

在Centos 较新的版本中,引入了nftables内核取代传统netfilter内核

通常nftables和netfilter只用安装一种即可

基于netfilter,又有两种前端操作工具,即firewalld和iptables

本节我们以netfilter+firewalld进行操作

①确定安装了firewalld和iptables管理工具 rpm -q firewalld iptables

如果显示找不到命令可以尝试以下两种方式:尝试使用完整路径来执行

rpm

命令

/bin/rpm -q firewalld iptables

/usr/bin/rpm -q firewalld iptables

①安装firewalld和iptables yum install firewalld iptables

②查看iptables服务

关闭iptables的服务管理(因为同时开启iptables与firewald会冲突)

如果已安装,可以使用以下命令停止

systemctl stop iptables

yum remove iptables-services

③确保没有安装nftables

查看安装nftables的状态 rpm -q nftables

如果安装,可以删除 yum remove nftables

④确保防火墙服务自动启动,并正在运行

查看firewalld状态 systemctl is-enabled firewalld

查看firewalld状态(第二种方式) firewall-cmd --state

⑤开启firewalld systemctl unmask firewalld systemctl enable firewalld

开启防火墙,可能会导致网络中断,所以一定要分析清楚,当前网络连接与网络配置,再来开启防

火墙。

⑥确定防火墙区域配置

默认firewalld会创建一个名为public的区域

区域代表防火墙中的信任等级,每一个接口都应该属于区域

查看当前区域,默认是public

firewall-cmd --get-default-zone

⑦防火墙默认区域配置

设置默认区域为public

firewall-cmd --set-default-zone=public

查看当前活动的区域和接口

firewall-cmd --get-active-zones

设置接口到区域 firewall-cmd --zone=public --change-interface=ens33

⑧查看当前允许的端口和服务 firewall-cmd --ist-all--zone=public

六、关闭不需要的端口和服务

关闭端口

firewall-cmd --remove-port=<port-number>/<port-type>

如:firewall-cmd--remove-port=25/tcp关闭服务

firewal-cmd --remove-service=<service>

如:firewall-cmd--remove-service=smtp

七、系统审核

查看系统是否安装审核服务

rpm -q audit audit-libs

如果没有安装,而进行安装 yum install audit audit-libs

查看审核服务是否开启 systemctl is-enabled auditd

查看服务状态 systemctl status auditd

八、日志和审计

配置审计数据大小

查看audit日志最大空间,默认单位为M

如图,显示为8M

cat /etc/audit/auditd.conf |grep max

审计用户和用户组的操作

查看当前用户和用户组相关的操作记录 grep identity /etc/audit/rules.d/*.rules

当前没有任何相关配置

配置记录如下:

vi /etc/audit/rules.d/identity.rules

加入下图内容,同样,也可以输入其他命令路径

配置rsyslog日志

rsyslog是取代syslog的新版本。rsyslog有一些优秀的特性,比如使用tcp连接,可以将日志存储到

数据库,可以加密传输目志等。

确保系统安装了rsyslog

rpm -q rsyslog

查看rsyslog服务状态 systemctl is-enabled rsyslog

确保日志正常输入

查看当前日志目录及日志权限,日志权限应该为600(仅root可读写)

ls-l /var/log

查看日志归档处理

Linux系统使用logrotate按定期或指定大小进行归档处理

确保logrotate正常的处理syslog日志

查看是否存在文件 Is /etc/logrotate.d/syslog

九、访问、认证,授权

查看计划任务的访问授权 stat /etc/crontab

如图展示了,仅root可以访问计划任务,且相关访问时间。

同理还应检查文件daily hourly monthly weekly

查看SSH配置文件权限

因为SSH可以使用密钥直接登录,如果SSH配置文件权限限制不严格,则造成SSH提权

检查/etc/ssh/sshd_config的权限

配置允许通过SSH访问的用户

使用以下命令查看当前允许SSH访问的用

sshd -T | grep -E '^\s*(allow|deny)(users|groups)\s+\S+'

如果输出为空,说明没有配置

编辑文件/etc/ssh/sshd config,配置仅允许sangfor用户访问在文件中加入以下行

allowusers sangfor

保存,退出,并重启SSH服务。验证生效。

配置SSH验证失败次数

查看SSH验证失败次数 sshd -T|grep maxauthtries

默认为6次,建议改为4次或更低

编辑SSH配置文件修改即可

vi /etc/ssh/sshd_config

禁止空密码登录SSH sshd -T|grep permitemptypasswords

查看SSH支持的加密方式,确保不要出现如desmd5这类已经不再安全的算法

sshd -T|grep ciphers

PAM模块配置

PAM(Pluggable Authentication Modules)是Linux中的认证管理模块,所有认证相关可由PAM处

理。

密码要求

由/etc/security/pwquality.conf管理

minlen=14,最小密码长度

mincalss =4密码复杂度,分别是是大写字母、小写字母、数字、符号

用户账户和环境

查看密码过期时间,建议设为60,如图为99999,显然不合适

grep ^\S*PASS MAX DAYS /etc/login.defs

查看用户的过期时间
grep -E '^([^:]+):[^!*]' /etc/shadow | cut -d: -f1,5

修改用户过期时间

方法一:编辑默认文件,中的PASSMAXDAYS值 vi /etc/login.defs

方法二:chage --maxdays 365 <user>

用户账户和环境

查看密码最小天数(原理同windows密码最小天数),建议设为1

grep ^\S*PASS _MIN _DAYS /etc/login.defs

提示密码过期时间,建议设置为7或更多查看方法如下:

用户账户和环境

自动禁用账号,建议设置为30天或更少

当用户指定时间没有使用时,自动禁用用户

查看 useradd -D|grep INACTIVE

配置方法 useradd -D -f 30

检查文件/etc/passwd的权限,应为644,同理应检查/etc/group

检查文件/etc/shadow的权限,应为0,同理应检查/etc/gshadow

stat /etc/passwd

stat /etc/shadow

学习Linux的安全基线配置,理解Linux安全设置:Linux安全配置远比windows复杂,因为Linux相对

的开放性,配置方式多种多样,如果一个地方配置不好,容易让整个安全基线工作失去意义。

Linux安全基线配置需要深入理解Linux原理,才能得心应手,融会贯通!

标签: linux 服务器 安全

本文转载自: https://blog.csdn.net/qq_52712762/article/details/139238608
版权归原作者 橘子w的猫 所有, 如有侵权,请联系我们删除。

“linux安全配置”的评论:

还没有评论