Linux主机加固

摘要:
前言Linux系统被应用于大部分企业的服务器上,因此在等保测评中主机加固也是必须要完成的一项环节。由于在之后项目开始要进行主机加固,因此对linux的加固流程进行总结学习。Linux的主机加固主要分为:账号安全、认证授权、协议安全、审计安全。

​前 言

Linux系统被应用于大部分企业的服务器上,因此在等保测评中主机加固也是必须要完成的一项环节。

由于在之后项目开始要进行主机加固,因此对linux的加固流程进行总结学习。

Linux的主机加固主要分为:账号安全、认证授权、协议安全、审计安全。简而言之,就是4A(统一安全管理平台解决方案)。

这边就使用我自己kali的虚拟机进行试验学习。

一、账户安全

1、口令生存期

gedit /etc/login.defs

1600708089_5f68ddf996484f612e5b1.png!small

在此处对密码的长度、时间、过期警告进行修改

PASS_MAX_DAYS 90 #密码最长过期天数

PASS_MIN_DAYS 10 #密码最小过期天数

PASS_WARN_AGE 7 #密码过期警告天数

如果修改设置有最小长度也需要修改

PASS_MIN_LEN 8 #密码最小长度

2、口令复杂度(很重要)

password requisite pam_cracklib.so

在文件中找到

password requisite pam_cracklib.so

将其修改为:

password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8

备注:至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、且密码长度>=8

3、版本信息

cat /proc/version

1600708103_5f68de07b8641d2b6151f.png!small

4、限制xx用户登录

/etc/hosts.deny

1600708116_5f68de148d8306434203b.png!small

添加内容:

sshd : 192.168.1.1

禁止192.168.1.1对服务器进行ssh的登陆

5、检查是否有其他uid=0的用户

awk -F “:” '($3==0) {print $1} ' /etc/passwd

6、登陆超时限制

cp -p /etc/profile /etc/profile_bak(备份)

gedit /etc/profile

1600708129_5f68de21abd0883b97e5a.png!small

增加

TMOUT=300

export TMOUT

或者

echo 'export TMOUT=300'>>/etc/profile

echo 'readonly TMOUT' >>/etc/profile

source /etc/profile

7、检查是否使用PAM认证模块禁止wheel组之外的用户su为root

gedit /etc/pam.d/su

新增

auth  sufficient pam_rootok.so

auth  required pam_wheel.so use_uid

备注:auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开

8、禁用无用账户

cat /etc/passwd #查看口令文件,确认不必要的账号。

1600708173_5f68de4db64d0470ba885.png!small

passwd -l user #锁定不必要的账号

9、账户锁定

gedit /etc/pam.d/system-auth

在文件中修改或者添加

auth required pam_tally.so onerr=fail deny=3 unlock_time=7200

锁定账户举例:

passwd -l bin

passwd -l sys

passwd -l adm

10、检查系统弱口令

john /etc/shadow --single

john /etc/shadow --wordlist=pass.dic

我这边有报错 就不展示了

使用passwd 用户 命令为用户设置复杂的密码

二、协议安全

1、openssh升级(按需做)

yum update openssh

2、定时任务(防止病毒感染)

定时任务检查:

crontab -l

一次性任务检查:

at -l

3、限制ssh登录(看是否需要)

首先cat /etc/ssh/sshd_config

查看PermitRootLogin是否为no

1600708194_5f68de62d6497a7e615e6.png!small

gedit /etc/ssh/sshd_config

PermitRootLogin no不允许root登陆

Protocol 2 修改ssh使用的协议版本

MaxAuthTries 3 修改允许密码错误次数

或echo "tty1" > /etc/securetty

hmod 700 /root

4、限制su为root用户

gedit /etc/pam.d/su

1600708222_5f68de7ea6790a364d64c.png!small

在头部添加auth required /lib/security/pam_wheel.so group=wheel

5、禁止root用户登录ftp

因为我的kali下没有这个文件,因此借鉴一下网上的

cat /etc/pam.d/vsftpd

Auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

#其中file=/etc/vsftpd/ftpusers即为当前系统上的ftpusers文件.

echo “root” >> /etc/vsftpd/ftpusersv

6、防止flood攻击

gedit /etc/sysctl.conf

1600708236_5f68de8cbd6e2020bdb53.png!small

增加net.ipv4.tcp_syncookies = 1

然后sysctl -p

7、禁ping

echo 0 > /proc/sys/net/ipv4/icmp_echo_igore_all

8、检查异常进程

ps aux|sort -rn -k +3|head

#检查cpu占用前10

ps aux|sort -rn -k +4|head

#检查内存占用前10

9、关闭无效的服务及端口

比如邮箱

service postfix status

chkconfig --del postfix

chkconfig postfix off

比如cpus

service cups status

chkconfig --del cups

chkconfig cups off

10、设置防火墙策略

或者用防火墙策略:

service iptables status

echo '请根据用户实际业务端口占用等情况进行设置!'

例如:

gedit /etc/sysconfig/iptables添加如下策略

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 8080 -j ACCEPT

以下举例:

iptables -I INPUT -s 22.48.11.11 -j DROP

# 22.48.11.11的包全部屏蔽

iptables -I INPUT -s 22.48.11.0/24 -j DROP

#22.48.11.1到22.48.11.255的访问全部屏蔽

iptables -I INPUT -s 192.168.1.1 -p tcp --dport 80 -j DROP

# 192.168.1.1的80端口的访问全部屏蔽

iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j DROP

#192.168.1.1到192.168.1.255的80端口的访问全部屏蔽

service iptabels restart

#重启防火墙

11、设置历史记录数量

cp /etc/profile /etc/profile_xu_bak(备份)

sed -i s/'HISTSIZE=1000'/'HISTSIZE=5000'/g /etc/profile(修改)

cat /etc/profile |grep HISTSIZE|grep -v export(检查)

三、认证权限

1、配置用户最小权限

chmod 644 /etc/passwd

chmod 400 /etc/shadow

chmod 644 /etc/group

2、文件与目录缺省权限控制

cp /etc/profile /etc/profile.bak(备份)

gedit /etc/profile

增加

umask 027

source /etc/profile

四、日志审计

1、启用远程日志功能

gedit /etc/rsyslog.conf

1600708259_5f68dea320430c824d957.png!small

*.* @Syslog日志服务器IP

###注意:*和@之间存在的是tab键,非空格。

2、检查是否记录安全事件日志

gedit /etc/syslog.conf或者/etc/rsyslog.conf

在文件中加入如下内容:

*.err;kern.debug;daemon.notice /var/log/messages

chmod 640 /var/log/messages

service rsyslog restart

3、日志保留半年以上

cp/etc/logrotate.conf /etc/logrotate.conf_xu_bak(备份)

sed -i s/'rotate 4'/'rotate 12'/g /etc/logrotate.conf(修改)

service syslog restart(重启)

cat /etc/logrotate.conf |grep -v '#' |grep rotate(检查)

转 FreeBuf.COM

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

上篇BZOJ4237 稻草人 【CDQ分治】html页面跳转下篇

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

相关文章

Linux系统修改用户gid和uid

假设用户的原始UID和GID如下: zebracall old UID: 1001 zebracall old GID: 1001 用户修改之后的UID和GID如下: zebracall new UID: 1002 zebracall new GID: 1002 修改前准备 1、杀掉需要修改用户的所有进程,有如下几种杀掉用户进程的方法,一般建议使用ro...

linux安装chrome及chromedriver(转)

1、chrome: curl https://intoli.com/install-google-chrome.sh | bash 1.1.centos安装chrome: 從 Google 下載最新版的 Chrome: $ wget https://dl.google.com/linux/direct/google-chrome-stable_curren...

LXC/KVM虚拟化基本概念

LXC:其名称来自Linux软件容器(Linux Containers)的缩写.LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操作系统环境。LXC不需要Hypervisor这个软件层,软件容器(Container)本身极为轻量化,提升了创建虚拟机的速度。严格来说不算是虚拟化技术,只是进程隔离和资源限制,软件Docker被用来管理LXC的环...

Ubuntu上交叉编译valgrind for Android 4.0.4的过程与注意事项

编译环境:Ubuntu x86_64(Linux root 2.6.32-45-generic #101-Ubuntu SMP Mon Dec 3 15:39:38 UTC 2012 x86_64 GNU/Linux) 运行环境:Android 4.0.4 (Linux kernel 3.0.21 OMAP4460) 一、下载NDK9和valgrind...

[Linux内核]软中断与硬中断

转自:http://blog.csdn.net/zhangskd/article/details/21992933 本文主要内容:硬中断 / 软中断的原理和实现 内核版本:2.6.37 Author:zhangskd @ csdn blog 概述 从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。...

Linux头文件和库文件添加环境变量与GCC编译器添加INCLUDE与LIB环境变量

  对所有用户有效在/etc/profile增加以下内容。只对当前用户有效在Home目录下的 .bashrc或.bash_profile里增加下面的内容: (注意:等号前面不要加空格,否则可能出现 command not found) #在PATH中找到可执行文件程序的路径。 export PATH =$PATH:$HOME/bin #gcc找到头文件的...