TH小破站

  • 首页
  • 容器
    • 认识Docker
    • DockerFile详解
  • k8s
    • 认识Kubernetes
    • Kubernetes部署--(kubeadm方式)
    • kubeasz部署k8s集群
    • Ansible-binary部署k8s集群-1.31.2
  • Ceph
    • 认识分布式存储
    • CPEH部署
  • CI/CD
    • DevOps认识
    • 部署--Gitlab
  • ELK
    • ELK简介
    • Elasticsearch
    • Kibana部署
    • Logstash
    • ELK--收集 tomcat 日志(实战)
  • HD
    • 认识--大数据
    • Hadoop-单机部署
    • Hadoop-伪分布部署
    • Hadoop-完全分布部署
    • Hadoop-(HA)完全分布部署
    • Ambari自动部署--Hadoop
  • Nginx
    • Nginx功能介绍
    • Nginx安全选项
    • Nginx配置文件简单介绍
    • 网站服务器部署
  • 监控
    • ZABBIX-部署(yum)
    • ZABBIX-编译安装
  • 云计算
    • KVM 概述
    • OpenStack企业级部署(T版)
    • OpenStack之dashboard部署
    • OpenStack-controller的高可用
    • openstack(Caracal版_ubuntu版本)部署
  • 数据库
    • mariadb与mysql
    • mysql主从
    • MySQL--冷备(实战)
    • MySQL--热备(dump表)
    • MySQL--热备(dump库)
    • 数据恢复实战案例
    • Xtrabackup实现MySql8.x全量备份
    • MyCat实现数据库读写分离
    • MHA实现数据库高可用
    • Percona XtraDB(PXC)实现数据库集群高可用
    • 数据库压力测试
    • PostgreSQL 基操
    • PostgreSQL备份恢复
    • PostgreSQL高可用
    • MongDB安装配置基础使用
    • MongoDB实现复制集
    • MongoDB备份还原
  • 自动化
    • ssh远程服务原理及配置
    • Ansible剧本文件应用
    • Ansible管理服务介绍
    • Ansible自动化部署node_exporter(包含升级,回滚)
    • Saltstack-部署安装
  • 脚本
    • 一键查看服务器资源利用率
    • 一键生成SSL证书
    • 保存指定数量的文件/目录
    • 初始化服务器
    • 扫描可用IP
    • 批量分发SSH密钥
    • 监控多主机磁盘脚本
    • 一键安装MySQL8.x脚本
    • Python脚本监控ES集群
    • 资源巡检脚本
    • 查看各用户使用的cpu占比
热衷于分享
架构师成长之路 !!!
  1. 首页
  2. 系统
  3. 正文

操作系统加固说明

2023年11月13日 1065点热度 0人点赞 0条评论

以下加固应自己环境而定不是所有都适用

SSH加固

  1. 设置/etc/ssh/sshd_config文件不受非特权用户的未授权更改

    chown root:root /etc/ssh/sshd_config  
    chmod 600 /etc/ssh/sshd_config
  2. /etc/ssh/sshd_config文件中参数的加固项

    使用更加安全的openssh v2协议:
    Protocol 2
    关闭不必要的功能,禁止X11、TCP端口和代理转发:
    X11Forwarding no 
     AllowTcpForwarding no 
    AllowAgentForwarding no
    禁止使用用户环境变量,防止用户通过自定义脚本绕过鉴权:
    PermitUserEnvironment no
    禁止使用DNS查询,缩短用户登录时间:
    UseDNS no
    禁止TCP保持连接:
    TCPKeepAlive no
    禁止“root”用户直接登录,减少密码泄漏风险:
    PermitRootLogin no
    使用推荐密码算法和散列算法,减少被攻击的风险:
    MACs hmac-sha2-512,hmac-sha2-256
    当openssh版本低于6.5时: 
    Ciphers aes256-ctr,aes192-ctr,aes128-ctr 
    当openssh版本等于或高于6.5时: 
    Ciphers aes256-ctr,aes192-ctr,aes128-ctr,chacha20-poly1305@openssh.com
    禁止ssh服务端和ssh客户端的端口转发功能:
    /etc/ssh/sshd_config GatewayPorts no 
    /etc/ssh/ssh_config GatewayPorts no
    禁止在每一次交互式登录时打印 /etc/motd 文件的内容:
    PrintMotd no
    设置banner信息,用于在用户连接ssh时,显示相关警告信息:
    Banner /etc/issue.net
    设置ssh日志等级:
    LogLevel VERBOSE
    配置使用sftp功能,并设置日志级别,以记录用户登录信息:
    Subsystem  sftp  /usr/lib64/ssh/sftp-server -f LOCAL5 -l INFO
    参数IgnoreRhosts指定在RhostsRSAAuthentication或HostbasedAuthentication中不使用.rhosts 和.shosts文件:
    IgnoreRhosts yes
    尽管禁用/etc/pam.conf支持,.rhosts文件也会失效,禁用SSH的.rhosts文件提供了额外保护:
    HostbasedAuthentication no
    不允许远程shell登录到无密码的帐户可以减少未授权登录的可能性:
    PermitEmptyPasswords no
    设置空闲ssh连接超时断开:
    ClientAliveInterval 300  
    ClientAliveCountMax 0
    设置认证失败重试次数,防止暴力破解:
    MaxAuthTries 2
    不使用Kerberos认证方式:
    KerberosOrLocalPasswd no
    由RFC-4252变为RFC-4256定义的登录认证机制:
    PasswordAuthentication no 
    ChallengeResponseAuthentication yes
    仅允许特定组和用户登录(为了不影响安全加固执行前已存在的帐户的正常登录,加固脚本会把现有可登录用户都加入AllowUsers):
    AllowUsers 当前系统现有用户可登录用户 hcp 
    AllowGroups 当前系统现有用户可登录用户所在组 hcp

网络加固

  1. TCP/IP相关内核参数加固(以下步骤需要打开/etc/sysctl.conf文件,查找以下参数,如果文件原本有这个参数,则修改,如果没有,则直接增加参数信息)

    禁止从其他网口回应ARP:
    net.ipv4.conf.all.arp_ignore = 1
    ​
    net.ipv4.conf.default.arp_ignore = 1
    ​
    net.ipv4.conf.default.arp_announce = 2
    ​
    net.ipv4.conf.lo.arp_announce = 2
    ​
    net.ipv4.conf.lo.arp_ignore = 1
    ​
    net.ipv4.conf.all.arp_announce =2
    ​
    net.ipv4.conf.ethX.arp_announce = 2(其中ethX为系统中实际的网口名称,可使用“ifconfig -a”命令查询获得,对每个网口都进行了设置。)
    ​
    禁用IP转发功能:
    net.ipv4.ip_forward = 0
    ​
    net.ipv4.conf.all.forwarding = 0
    ​
    net.ipv4.conf.default.forwarding = 0
    ​
    禁止系统响应广播请求,防止“广播风暴”攻击:
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    ​
    禁止转发源路由包和源IP路由,不接收源路由信息包可以防止内部网络被探测:
    net.ipv4.conf.default.arp_filter = 1
    ​
    net.ipv4.conf.all.accept_source_route = 0
    ​
    net.ipv4.conf.default.accept_source_route = 0
    ​
    禁止接收和转发ICMP重定向消息避免恶意用户使用IP重定向来修改远程主机中的路由表,影响系统正常运行:
    net.ipv4.conf.default.accept_redirects = 0
    ​
    net.ipv4.conf.all.accept_redirects = 0
    ​
    net.ipv4.conf.default.send_redirects = 0
    ​
    net.ipv4.conf.all.send_redirects = 0
    ​
    禁止从默认网关接受ICMP重定向消息,可以有效防止ARP实行跨网段欺骗:
    net.ipv4.conf.all.secure_redirects = 0
    ​
    net.ipv4.conf.default.secure_redirects = 0
    ​
    防止IP欺骗:
    net.ipv4.conf.all.rp_filter = 1
    ​
    net.ipv4.conf.default.rp_filter = 1
    ​
    net.ipv4.conf.lo.rp_filter = 1
    ​
    关闭tcp_timestamps支持,否则可能遭受拒绝服务攻击:
    net.ipv4.tcp_timestamps = 0
    ​
    确保伪造ICMP包被丢弃,避免恶意ICMP包影响系统正常运行:
    net.ipv4.icmp_ignore_bogus_error_responses = 1
    ​
    仅在必要时开启ARP代理,避免ARP报文攻击影响系统正常运行:
    net.ipv4.conf.all.proxy_arp = 0
    ​
    net.ipv4.conf.default.proxy_arp = 0
    ​
    设置从客户端连接请求等候确认的连接数,减少系统遭受SYN Flooding攻击受到的影响:
    net.ipv4.tcp_max_syn_backlog = 4096
    ​
    设置socket序列,降低系统遭受SYN Flooding攻击的几率:
    net.ipv4.tcp_syncookies = 1
    ​
    设置TCP协议中等待超时时间,避免由于等待时间过长遭受拒绝服务攻击:
    net.ipv4.tcp_fin_timeout = 60
    ​
    固化别名IP:
    net.ipv4.conf.all.promote_secondaries = 1
    ​
    关闭路径MTU探测:
    net.ipv4.ip_no_pmtu_disc = 1
    ​
    设置合适的TCP数据接收缓冲:
    net.core.rmem_max = 3072000
    ​
    记录可疑的Socket报文,方便查看服务器是否收到伪造的报文:
    net.ipv4.conf.all.log_martians = 1
    ​
    net.ipv4.conf.default.log_martians = 1
    ​
    内核异常时panic并打印调用者信息,并且设置panic后5秒重启系统:
    kernel.panic_on_oops = 1
    ​
    kernel.panic = 5
    ​
    启用系统魔术键,系统异常时打印关键信息:
    kernel.sysrq = 1
    ​
    启用地址随机化机制,减少栈溢出攻击的可能性:
    kernel.randomize_va_space = 2
    ​
    禁止带有S位的程序进行内存转储,防止敏感信息泄漏:
    fs.suid_dumpable = 0
    ​
    开启并记录欺骗,源路由和重定向包:
    net.ipv4.conf.all.log_martians=1
    ​
    net.ipv4.conf.default.log_martians=1
    ​
    设置需要限定速率的ICMPv4包类型:
    net.ipv4.icmp_ratemask=344096
  2. /etc/host.conf文件中参数加固。

    防止IP地址欺骗,减少网络攻击的风险:
    nospoof on
    ​
    优先使用本地DNS,减少DNS攻击风险:
    order hosts, bind
  3. 删除危险的网络文件,防止恶意用户接入系统

    rm -rf /root/.rhosts  
    rm -rf /root/.shosts  
    rm -rf /etc/hosts.equiv  
    rm -rf /etc/shosts.equiv  
    ln -s /dev/null /root/.shosts  
    ln -s /dev/null /etc/shosts.equiv

用户鉴权

  1. 删除和创建指定文件

    rm /etc/cron.deny  
    rm /etc/at.deny  
    touch /etc/cron.allow  
    touch /etc/at.allow
  2. 设置文件权限

    chmod 400 /etc/cron.allow  
    chown -R root:root /etc/cron.allow  
    chmod 400 /etc/at.allow  
    chown -R root:root /etc/at.allow  
    chmod og-rwx /etc/cron.d  
    chmod og-rwx /etc/crontab  
    chmod og-rwx /etc/cron.hourly  
    chmod og-rwx /etc/cron.daily  
    chmod og-rwx /etc/cron.weekly  
    chmod og-rwx /etc/cron.monthly  
    chown root:root /usr/bin/crontab  
    chown root:root /usr/bin/at
  3. 单用户模式要求输入密码,防止随意进入系统。修改/etc/inittab文件,增加修改以下配置

    ~~:S:respawn:/sbin/sulogin
  4. 开启用户的投影密码

    执行pwconv命令,将 /etc/passwd内的帐户与密码移动到/etc/shadow中,只允许系统管理者读取,同时把原密码置换为“x”字符,有效的强化了系统的安全性:
  5. 禁止非法终端登录,减少非授权用户登录系统的风险,去掉/etc/securetty中以下字母开头的配置项:

    vc

日志审计

加固目的

  • 将操作系统的命令执行或者操作信息记入日志,以便在系统受到攻击时进行审计。

  • 对日志审计的配置做安全加固,防止恶意用户绕过日志记录。

  1. 修改/etc/profile.local文件记录用户登录信息,并且将与历史记录相关的环境变量设置成只读

    shopt -s cdspell
    
    shopt -s cmdhist
    
    shopt -s histappend
    
    export PROMPT_COMMAND='history -a'
    
    HISTFILESIZE=200000; export HISTFILESIZE
    
    HISTCONTROL=ignoredups; export HISTCONTROL
    
    HISTIGNORE="&:ls:[bf]g:ps:history:exit"; export HISTIGNORE
    
    HISTSIZE=10000;export HISTSIZE
    
    export TMOUT=60
    
    MYTTY="$(echo $tty|sed 's#/dev/##g')"
    
    WHOISTHIS="$(who | grep "$MYTTY"|sed 's/ \{2,\}/ /g')"
    
    if [ ! -z "$HISTFILE" ] && [ ! -z "$WHOISTHIS" ]; then
    
    echo "#$(date +%s)" >> $HISTFILE
    
    echo " #Login: $WHOISTHIS" >> $HISTFILE
    
    fi
  2. 修改/etc/login.defs文件记录登录鉴权失败时记录相应的信息

    FAILLOG_ENAB yes

文件系统

加固目的

配置文件系统的挂载选项,可以防止系统挂载特殊设备、包含可执行二进制文件等,提高操作系统安全性

加固项说明

禁止普通用户挂载可移动设备,设置可移动设备挂载属性。修改/etc/fstab文件,增加修改以下配置:

/dev/cdrom /media/ udf,iso9660 noexec,noauto,nouser,nodev,nosuid 1 2

文件权限

加固目的

设置敏感文件的权限,减少普通用户获取其他用户的敏感信息,以及防止恶意用户修改敏感文件。

  1. 设置敏感文件的文件权限,减少普通用户获取其他用户的敏感信息。

    chmod 440 /etc/sysctl.conf
    
    chmod 751 /etc/ssh
    
    chmod 644 /etc/passwd
    
    chmod 600 /etc/shadow
    
    chmod 1777 /tmp
    
    chmod 644 /etc/fstab
    
    chmod 600 /etc/pam.d/common-password
    
    chmod 640 /etc/login.defs
    
    chmod 640 /etc/syslog-ng/syslog-ng.conf
    
    chmod 640 /etc/logrotate.d/*
    
    chmod 644 /etc/logrotate.d/iscsiuiolog
    
    chmod 600 /etc/pam.d/*
    
    chmod 644 /etc/pam.d/su
    
    chmod 644 /etc/pam.d/su-l
    
    chmod 644 /etc/security/pam_pwcheck.conf
    
    chmod 600 /etc/security/opasswd
    
    chmod 644 /etc/hosts.allow
    
    chmod 644 /etc/hosts.deny
    
    chmod 600 -R /etc/ssl/certs/
    
    chmod og-rwx /boot/grub/menu.lst
    
    chmod 750 /var/run/dbus
    
    chmod 750 /var/run/PolicyKit
    
    chmod 700 /var/log/miniOS/
    
    chmod 600 /var/log/miniOS/usrRpm.log
    
    chmod 600 /var/log/miniOS/setup.log
    
    chmod 600 /var/log/miniOS/sysconfig.log
    
    chmod 600 /var/log/YaST2/mkinitrd.log
    
    chmod 600 /var/log/secure.log
    
    chmod -s -R /usr/lib/PolicyKit/*
    
    chmod -s /usr/lib64/pt_chown
    
    chmod -s /usr/bin/opiepasswd
    
    chmod -s /usr/bin/opiesu
    
    chmod -s /sbin/unix2_chkpwd
    
    chmod -s /lib/libachk.so
    
    chmod -s /lib64/libachk.so
    
    chmod -s /lib64/dbus-1/dbus-daemon-launch-helper
    
    chown root:root /etc/passwd
    
    chown root:root /etc/shadow
    
    chown root:root /var/log/news
    
    chown root:root /etc/fstab
    
    chown root:root /etc/ssh/*key
    
    chown root:root /etc/ssh/*key.pub
    
    chown root:root /var/lib/wwwrun
    
    chown root:messagebus /var/run/dbus
    
    chown polkituser:polkituser /var/run/PolicyKit
  2. 设置系统默认umask值为077,减少文件被篡改的风险。打开/etc/profile文件,查找umask参数项,如果没有则增加,如果有则修改为以下信息:

    umask 077
  3. 执行source /etc/profile命令使修改生效。

删除ipv6服务

加固目的

当前操作系统加固方案,都是针对ipv4做的。对于ipv6没有特别针对性的进行加固,所以会有潜在的风险。鉴于当前eBackup备份服务不适用ipv6协议,所以在服务器上删除ipv6服务。

  1. 删除/etc/hosts中关于ipv6信息的行。

  2. 在/etc/modprobe.d/目录下创建一个叫做ipv6off.conf的文件,输入以下信息:

    alias net-pf-10 off options ipv6 disable=1
  3. 执行以下命令,修改文件的权限:

    chmod 600 /etc/modprobe.d/ipv6off.conf
  4. /boot/grub2/grub.cfg中加入ipv6.disable=1

  5. 在/etc/sysctl.conf中加入net.ipv6.conf.default.disable_ipv6 = 1和net.ipv6.conf.all.disable_ipv6 = 1

设置警示消息

加固目的

警告消息通知尝试登录到系统的用户在系统中的法律地位。

  1. 执行如下命令,设置相关文件的权限

    touch /etc/motd
    
    chown root:root /etc/motd
    
    chmod 644 /etc/motd
    
    chown root:root /etc/issue
    
    chmod 644 /etc/issue
    
    chown root:root /etc/issue.net
    
    chmod 644 /etc/issue.net
  2. 设置警示消息

    echo "Authorized users only. All activity may be monitored and reported." > /etc/issue
    
    echo "Authorized users only. All activity may be monitored and reported." > /etc/issue.net
  3. 从文件/etc/motd, /etc/issue和/etc/issue.net中删除包含\m、\r、\s或\v的所有行。

端口监听项加固

加固目的

禁止rpcbind服务监听端口

  1. 执行systemctl stop rpcbind.socket命令停止rpcbind服务。

  2. 执行systemctl disable rpcbind.socket命令把rpcbind服务从启动列表删除

Iptables加固

加固目的

防火墙禁止指定消息类型的ICMP数据包

iptables -I INPUT -p icmp -m icmp --icmp-type redirect -j DROP

iptables -I INPUT -p icmp -m icmp --icmp-type timestamp-reply -j DROP

iptables -I INPUT -p icmp -m icmp --icmp-type address-mask-reply -j DROP

iptables -I INPUT -p icmp -m icmp --icmp-type 16 -j DROP

iptables -I OUTPUT -p icmp -m icmp --icmp-type redirect -j DROP

iptables -I OUTPUT -p icmp -m icmp --icmp-type timestamp-reply -j DROP

iptables -I OUTPUT -p icmp -m icmp --icmp-type address-mask-reply -j DROP

iptables -I OUTPUT -p icmp -m icmp --icmp-type 16 -j DROP

其他加固

加固目的

由于易用性,或者防止非受信任用户误操作、敏感信息泄露等,本节介绍操作系统做的一些其他的加固项。

  1. 易用性增强

    允许插入自研内核模块。修改/etc/modprobe.d/unsupported-modules:
    allow_unsupported_modules 1
    
    将console加入securetty,允许“root”用户登录终端。打开/etc/securetty文件,加入以下一行:
    console
    
    设置系统默认编码,使系统可以显示中文。打开/etc/sysconfig/language文件,添加或修改以下配置项:
    RC_LANG="en_US.UTF-8"
    
    设置硬件时钟使用utc时间。打开/etc/sysconfig/clock文件,添加或修改以下配置项:
    HWCLOCK="-u"
  2. 禁止产生core文件。修改/etc/security/limits.conf文件,添加以下两行内容:

    * soft core 0
    
    * hard core 0
  3. 将表示登录用户名和登录终端的环境变量设为只读。打开/etc/profile.local文件,添加以下两行内容

    readonly SSH_CLIENT
    
    readonly LOGNAME
标签: 暂无
最后更新:2023年11月13日

tanghao946

这个人很懒,什么都没留下

点赞
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • 以下加固应自己环境而定不是所有都适用
    • SSH加固
    • 网络加固
    • 用户鉴权
    • 日志审计
      • 加固目的
    • 文件系统
      • 加固目的
      • 加固项说明
    • 文件权限
      • 加固目的
    • 删除ipv6服务
      • 加固目的
    • 设置警示消息
      • 加固目的
    • 端口监听项加固
      • 加固目的
    • Iptables加固
      • 加固目的
    • 其他加固
      • 加固目的

COPYRIGHT © 2025 TH小破站. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2023013789号

渝公网安备50011702500926号