系统安全检测脚本
############################################################ # File Name: sec_check.sh # Author: 寻音 # E-mail: lnhxzwb@126.com # Created Time: Tue 27 Feb 2019 03:06:07 PM CST #================================================================== #本脚本运行环境为Centos 7以上版本,其它系统请参照修改 #!/bin/bash #备份相关配置文件 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak cp /etc/login.defs /etc/login.defs.bak cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak cp /etc/pam.d/sshd /etc/pam.d/sshd.bak cp /etc/rsyslog.conf /etc/rsyslog.conf.bak cp /etc/profile /etc/profile.bak #创建用户 useradd admin echo "Qunniao.net" | passwd --stdin admin &>/dev/null set -x #帐号检查 user_check() { echo "特殊帐号及无用帐号检查中....." none_passwd=$(awk -F: '($2 == "") { print $1 }' /etc/shadow) root_check=$(awk -F: '($3==0) {print $1}' /etc/passwd) if [ `$none_passwd|wc -l` == 0 ];then if [ $root_check == root ];then cut -d: -f1 /etc/passwd |egrep -v "root|bin" |xargs passwd -l echo "检查已完成,帐号符合要求" echo "===========================================" else echo "UUID为0的帐号为:$root_check" fi else echo "存在空口令帐号: $none_passwd" fi } #密码复杂度设置 passwd_set() { echo "密码复杂度设置中....." echo "password requisite pam_cracklib.so ucredit=-1 lcredit=-1 dcredit=-1" >>/etc/pam.d/system-auth sed -i 's/PASS_MAX_DAYS[ \t]*99999/PASS_MAX_DAYS 90/' /etc/login.defs sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config systemctl restart sshd } #登陆失败次数限制 login_out() { echo "分录相关限制设置中....." #限制用户远程登录 # sed -i '/#%PAM-1.0/a\auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=10' /etc/pam.d/sshd #root同时限制 sed -i '/#%PAM-1.0/a\auth required pam_tally2.so deny=5 unlock_time=300' /etc/pam.d/sshd #限制用户从tty登录 #sed -i '/#%PAM-1.0/a\auth required pam_tally2.so deny=5 lock_time=300 even_deny_root root_unlock_time=10' /etc/pam.d/login #root同时限制 sed -i '/#%PAM-1.0/a\auth required pam_tally2.so deny=5 lock_time=300 ' /etc/pam.d/login } #文件设置访问权限 file_chmod() { echo "用户密码文件设置访问权限......" chmod 644 /etc/passwd chmod 400 /etc/shadow chmod 644 /etc/group chmod 644 /etc/services } #日志安全审计 log_check() { echo "日志安全审计检查中......" log_service=$(ps -ef | grep rsyslogd|grep -v "grep" |wc -l) auditd_service=$(ps -ef | grep auditd |egrep -v "grep|kauditd"|wc -l) if [ $log_service == 1 ];then echo "日志服务已开启" else systemctl start rsyslog systemctl enable rsyslog fi if [ $auditd_service == 1 ];then echo "auditd服务已开启" else systemctl start auditd systemctl enable auditd fi #日志 sed -i '/authpriv.\*/a\*.err;kern.debug;daemon.notice /var/adm/messages' /etc/rsyslog.conf sed -i '/authpriv.\*/a\*.warning /var/log/rsyslog' /etc/rsyslog.conf touch /var/adm/messages chmod 666 /var/adm/messages cat << EOF >>/etc/logrotate.conf { monthly #按月存储 rotate 6 #循环日志数量为6 maxsize 100M #文件大小为100M } EOF sed -i 's/num_logs = 5/num_logs = 6/' /etc/audit/auditd.conf sed -i 's/max_log_file = 8/max_log_file = 20/' /etc/audit/auditd.conf read -p "请输入日志服务器地址:" log_ip echo "*.* @${log_ip}" >>/etc/rsyslog.conf systemctl restart rsyslog systemctl restart auditd sed -i 's/HISTSIZE=1000/HISTSIZE=50/' /etc/profile #保留历史命令的条数 echo "export TMOUT=180" >> /etc/profile #系统超时登录时间 source /etc/profile } #时间服务检查 ntp_service() { echo "时间服务检查....." ntp_server=$(ps -aux |grep ntpd |grep -v grep|wc -l) if [ $ntp_server == 1 ];then echo "server ntp1.aliyun.com" >> /etc/ntp.conf systemctl restart ntpd else systemctl enable ntpd echo "server ntp1.aliyun.com" >> /etc/ntp.conf systemctl restart ntpd fi } #禁止生成core文件 lim() { echo "* hard core 0" >>/etc/security/limits.conf echo "* soft core 0" >>/etc/security/limits.conf } #增强TCP/IP协议安全配置 tcp_sec() { echo "增强TCP/IP协议安全配置......" cat << EOF >> /etc/sysctl.conf net.ipv4.conf.default.secure_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 EOF sysctl -p } #路由协议安全增强配置 route_sec() { echo "路由协议安全增强配置....." #启动tcp_syncookies echo 1 > /proc/sys/net/ipv4/tcp_syncookies #禁止数据包转发: echo 0 > /proc/sys/net/ipv4/ip_forward #启用IP Spoofing echo 1 > /proc/sys/net/ipv4/conf/lo/rp_filter echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter } main () { user_check passwd_set login_out file_chmod log_check ntp_service lim tcp_sec route_sec } main echo "安全相关检测完成!!!!"
温馨提示:如无特殊说明,本站文章均为作者原创,转载请注明出处!