linux主机加固

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
运维安全中心(堡垒机),免费版 6个月
简介: linux主机加固


前 言


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

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

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


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


一、账户安全


1、口令生存期


gedit /etc/login.defs


2855df6b79d4de2d285b62be9dbc00d4_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


  • 在此处对密码的长度、时间、过期警告进行修改
  • PASS_MAX_DAYS   90  #密码最长过期天数
  • PASS_MIN_DAYS   10   #密码最小过期天数
  • PASS_WARN_AGE   7   #密码过期警告天数
  • 如果修改设置有最小长度也需要修改
  • PASS_MIN_LEN    8   #密码最小长度


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


/etc/pam.d/system-auth

在文件中找到

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


1939546561c6c74e8f7e086d9bf1f027_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


4、限制xx用户登录


/etc/hosts.deny


0db1248786ec30b5498a60a9fa4ae4e2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


添加内容:


sshd : 192.168.1.1

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


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


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


6、登陆超时限制


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


gedit /etc/profile


0db1248786ec30b5498a60a9fa4ae4e2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


增加

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 #查看口令文件,确认不必要的账号。


66e9de41178745ab8e995a27b33dcca6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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


4c940650902780c51887931a8d2e890c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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


54455af8e7dcaa217333f43ae208bcfd_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png



在头部添加 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/ftpusers


6、防止flood攻击


gedit  /etc/sysctl.conf


c8e79648ba8412945f658ad7de0f3890_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


增加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


f05ad72df96f85e740d9bcd2bf14ed19_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


*.*         @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(检查)


相关文章
|
3月前
|
存储 Ubuntu Linux
在Linux中,如何查看当前主机的主机名,如何修改主机名?要想重启后依旧生效,需要修改哪个配置文件?
在Linux中,如何查看当前主机的主机名,如何修改主机名?要想重启后依旧生效,需要修改哪个配置文件?
|
28天前
|
Linux 网络安全
Linux虚拟机与主机和Xshell的连接问题解决
Linux虚拟机与主机和Xshell的连接问题解决
63 1
|
3月前
|
存储 监控 网络协议
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
|
3月前
|
监控 安全 Linux
在Linux中,如何进行系统安全加固?
在Linux中,如何进行系统安全加固?
|
4月前
|
安全 Linux 网络安全
Linux 系统安全加固经验总结
Linux 系统安全加固经验总结
58 2
Linux 系统安全加固经验总结
|
3月前
|
网络协议 Linux 网络安全
在Linux中,如何将本地 80 端口的请求转发到 8080 端口?当前主机 IP 为10.0.0.104。
在Linux中,如何将本地 80 端口的请求转发到 8080 端口?当前主机 IP 为10.0.0.104。
|
3月前
|
存储 监控 Ubuntu
在Linux中,如何规划⼀台 Linux 主机,步骤是怎样?
在Linux中,如何规划⼀台 Linux 主机,步骤是怎样?
|
3月前
|
Shell Linux 网络安全
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
|
3月前
|
Linux 开发工具 文件存储
Linux修改主机名的两种方法
Linux修改主机名的两种方法
41 0
|
3月前
|
网络协议 Ubuntu Linux
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。