linux系统加固脚本

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版 50资产 7天
简介:
#########################################//以下是锁定系统不需要登录的账号
cp /etc/passwd /etc/passwd.`date +%F`
zhanghao="adm lp mail uucp operator games gopher ftp nobody nobody4 noaccess listen webservd rpm dbus avahi mailnull smmsp nscd vcsa rpc rpcuser nfs sshd pcap ntp haldaemon distcache apache webalizer squid xfs gdm sabayon named "
for zh in $zhanghao
do
passwd -l $zh
done
echo "Lock useless users.......................OK"
sleep 1
#################################################################
cp /etc/profile /etc/profiel.`date +%F`
echo "TMOUT=1800" >>/etc/profile  #设置30分钟无活动自动退出,可自行设置
echo "set autologout=30 >> /etc/csh.cshrc"
sleep 1
###############################
cp /etc/sysctl.conf /etc/sysctl.conf.`date +%F` 
cat >> /etc/sysctl.conf << endf  #优化内核参数调整
net.ipv4.tcp_max_syn_backlog = 3000
net.ipv4.conf.lo.accept_source_route = 0
net.ipv6.conf.usb0.accept_redirects = 0
net.ipv6.conf.bond0.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.lo.accept_redirects = 0
net.ipv4.conf.usb0.accept_redirects = 0
net.ipv4.conf.bond0.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.usb0.send_redirects = 0
net.ipv4.conf.bond0.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.usb0.log_martians = 1
net.ipv4.conf.bond0.log_martians = 1
net.ipv4.conf.lo.log_martians = 1
net.ipv4.conf.default.log_martians = 1
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.usb0.arp_filter = 1
net.ipv4.conf.bond0.arp_filter = 1
net.ipv4.conf.lo.arp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.all.rp_filter = 1
endf
sysctl -p
echo "Adjust the kernel parameters!......................OK!"
sleep 1
#############################################
#关闭不必要的服务
SERVICES="amanda chargen chargen-udp cups cups-lpd daytime daytime-udp echo echo-udp eklogin ekrb5-telnet finger gssftp imap imaps ipop2 ipop3 klogin
krb5-telnet kshell ktalk ntalk rexec rlogin rsh rsync talk tcpmux-server telnet tftp time-dgram time-stream uucp nfslock"

for serv in $SERVICES
do
chkconfig --level 345 $serv off
done
echo "Close useless services.........................ok"
sleep 1
#################################################################
#口令策略
cp /etc/login.defs /etc/login.defs.`date +%F`
DIR=/etc
echo "正在修改/etc/login.defs..."
sleep 1
#检查用户口令最长有效时间
max=`cat DIR/login.defs |grep ^PASS_MAX_DAYS |awk '{printDIR/login.defs |grep ^PASS_MAX_DAYS |awk '{print2}'`
if [ $max != 90 ];then
    sed -i '/^PASS_MAX_DAYS/s/'"max"/90/gDIR/login.defs
fi

##PASS_MIN_DAYS 检查用户口令最短有效时间
min=`cat DIR/login.defs |grep ^PASS_MIN_DAYS |awk '{print2}'`
if [ $min != 30 ];then
    sed -i '/^PASS_MIN_DAYS/s/'"min"/30/gDIR/login.defs
fi

##PASS_MIN_LEN 检查用户口令最短长度
len=`cat DIR/login.defs |grep ^PASS_MIN_LEN |awk '{print2}'`
if [ $len != 8 ];then
    sed -i '/^PASS_MIN_LEN/s/'"len"/8/gDIR/login.defs
fi

##PASS_WARN_AGE
warn=`cat DIR/login.defs |grep ^PASS_WARN_AGE | awk '{print2}'`
if [ $warn != 30 ];then
    sed -i '/^PASS_WARN_AGE/s/'"warn"/30/gDIR/login.defs
fi
##口令策略
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.`date +%F`
PASSREQU=$(cat /etc/pam.d/system-auth |grep password |grep requisite)
NEWPASSREQU='password    requisite     pam_cracklib.so dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 minclass=2 minlen=6'
sed -i 's/'"PASSREQU"/"NEWPASSREQU"'/g' /etc/pam.d/system-auth
PASSSUFF='password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok'
NEWPASSSUFF='password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5'
sed -i 's/'"PASSSUFF"/"NEWPASSSUFF"'/g' /etc/pam.d/system-auth
AUTH='auth        required      pam_env.so'
NEXTAUTH='auth        required      pam_tally2.so deny=6 onerr=fail no_magic_root unlock_time=120'
sed -i '/'"AUTH"/a\'"NEXTAUTH"'' /etc/pam.d/system-auth

 ###############################################
sleep 1
echo "正在修改禁止管理员远程登录..."
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.`date +%F`
sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
###############################################
#####检查关键敏感文件的权限是否恰当
chmod 400 /etc/shadow
chmod 644 /etc/group
chmod 644 /etc/group
chmod 600 /etc/security
chmod 600 /etc/security
chmod 750 /etc/rc6.d
chmod 750 /etc/rc0.d/
chmod 750 /etc/rc1.d/
chmod 750 /etc/
chmod 750 /etc/rc4.d
chmod 750 /etc/rc5.d/
chmod 750 /etc/rc3.d
chmod 750 /etc/rc.d/init.d/
#帐号与口令-检查是否存在除root之外UID为0的用户
#echo "#检查系统中是否存在其它id为0的用户"
echo "Check if the system have other user's id is 0"
echo "#-------------------------------------"
mesg=`awk -F: '(3 == 0) { print1 }' /etc/passwd|grep -v root`
if [ -z $mesg ]
then
echo "There don't have other user uid=0"
else
echo
echo "$mesg uid=0"
fi
#禁止用户使用ctlraltdel组合键
sed -i 's/^start on control-alt-delete/#start on control-alt-delete/g' /etc/init/control-alt-delete.conf
#检查ssh协议设置,禁止使用不安全的ssh协议1,只使用协议2
sed -i 's/#Protocol 2/Protocol 2/g' /etc/ssh/sshd_config
#设置ssh警告Banner
touch /etc/sshbanner
chown bin:bin /etc/sshbanner
chmod 644 /etc/sshbanner
echo " Authorized users only. All activity may be monitored and reported "   >/etc/sshbanner
echo "Banner /etc/sshbanner" >>/etc/ssh/sshd_config
#设置登录成功后警告Banner
echo " Authorized users only. All activity may be monitored and reported " > /etc/motd
##################################################################################
#配置远程日志保存
cp /etc/syslog.conf /etc/syslog.conf.`date +%F`
echo "*.*       @192.168.0.1" >>/etc/syslog.conf
#记录帐户登录日志
touch /var/log/authlog
echo "auht.info       /var/log/authlog" >>/etc/syslog.conf
#存在类似*.err;kern.debug;daemon.notice;       /var/log/messages
echo "*.err;auth.info        /var/adm/messages" >>/etc/syslog.conf
#存在authpriv.info              /var/log/authlog配置
echo "uthpriv.*   /var/log/authlog" >>/etc/syslog.conf
#####################################################################
########################################################
#只允许wheel组使用su
#sed -i 'N;2iauth sufficient pam_rootok.so' /etc/pam.d/su
#sed -i 'N;2iauth required pam_wheel.so ' /etc/pam.d/su
#################################################################
#echo "umask 027" >>/etc/login.defs
#锁定禁止账号交互式登录:修改/etc/shadow文件,用户名后密码列为两个感叹号“!!”;
#sed -ri '/mail|lp/s@([[:lower:]]):.*:(1)@\1:!!:\2@gp' /etc/shadow
#chattr +i /etc/passwd 
#chattr +i /etc/shadow 
#chattr +i /etc/group 

#chattr +i /etc/gshadow 


本文转自 穿越防火墙 51CTO博客,原文链接:http://blog.51cto.com/sjitwant/1692172


目录
打赏
0
1
0
0
344
分享
相关文章
|
13天前
|
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
86 27
|
17天前
|
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
80 10
|
2月前
|
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
113 24
Linux系统之whereis命令的基本使用
|
29天前
|
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
94 8
|
2月前
|
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
124 32
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
linux应急响应检查脚本
通过这个脚本,可以快速收集系统的关键信息,有助于在发生问题时进行及时的应急响应和分析。
126 34
|
19天前
|
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
50 0
|
4月前
|
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
350 78
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
224 23
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等