• 服务安全grub\chattr


    一.基本系统安全

       Linux 是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 Linux 系统,或者盗取 Linux 系统上的重要信息。不过,只要我们仔细地设定 Linux 的各种系统功能,并且加上必要的安全措施,就能让黑客们无机可乘。一般来说,对 Linux 系统的安全设定包括取消不必要的服务、限制远程存取、隐藏重要资料、修补安全漏洞、采用安全工具以及经常性的安全检查等。

    建议替换:

    1.grub

    grub是啥:

    grub是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

    grub的作用

    1.负责引导硬盘分区中的操作系统,根据用户在启动菜单中选择的启动项不同,可以引导不同硬盘分区中的操作系统启动

    2.向这些内核传递启动参数

    3.root密码忘了可以用grub界面重置(Linux系统下root密码遗忘等系统故障的修复方法 - 运维总结 - 散尽浮华 - 博客园 (cnblogs.com)

    grub的重要性以及为啥要保护它:

    因为一旦grub损坏,那么系统也就被损坏了;grub是启动系统中的一步

    启动系统并不是表面的一步,背后有许多步骤,详细:

    (1条消息) Linux引导过程_三五瓶809的博客-CSDN博客

    grub常用命令

    另:硬盘引导用grub,u盘引导linux一般用syslinux。

    如何保护grub:

    在 /etc/inittab 中添加 sp:S:respawn:/sbin/sulogin,以确保当切换到单用户模式时 运行级的配置要求输入 root 密码

    先备个份

     2.关闭不使用服务

    chkconfig --list |grep '3:on'

     service netfs stop

    chkconfig netfs --level 2345 off

    回忆:了解你的系统(7级、查看系统基本信息、角色,进程) - 学习日志羁旅 - 博客园 (cnblogs.com)

     

     3.增强特殊文件权限

    chattr   命令用于改变文件属性。

    a:让文件或目录仅供附加用途。

    b:不更新文件或目录的最后存取时间。

    c:将文件或目录压缩后存放。

    d:将文件或目录排除在倾倒操作之外。

    i:不得任意更动文件或目录。

    s:保密性删除文件或目录。

    S:即时更新文件或目录。

    u:预防意外删除。

     

            -R 递归处理,将指定目录下的所有文件及子目录一并处理。

      -v<版本编号> 设置文件或目录版本。

      -V 显示指令执行过程。

      +<属性> 开启文件或目录的该项属性。

      -<属性> 关闭文件或目录的该项属性。

      =<属性> 指定文件或目录的该项属性。

    用chattr命令防止系统中某个关键文件被修改:
    chattr +i /etc/resolv.conf
    
    
    让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
    chattr +a /var/log/messages
    

     

    给下面的文件加上不可更改属性,从而防止非授权用户获得权限

    [root@ns12422a951-b1a2-4893-ac16-5295c95f9c1c etc]# chattr +i /etc/passwd
    [root@ns12422a951-b1a2-4893-ac16-5295c95f9c1c etc]# chattr +i /etc/shadow
    [root@ns12422a951-b1a2-4893-ac16-5295c95f9c1c etc]# chattr +i /etc/group
    [root@ns12422a951-b1a2-4893-ac16-5295c95f9c1c etc]# chattr +i /etc/services #给系统服务端口列表加锁
    [root@ns12422a951-b1a2-4893-ac16-5295c95f9c1c etc]# chattr +i /etc/pam.d/su
    [root@ns12422a951-b1a2-4893-ac16-5295c95f9c1c etc]# chattr +i /etc/ssh/sshd_config


    取消只读权限 chattr -i /etc/passwd

     

     

    4.强制实行配额和限制

     Linux PAM(插入式认证模块,Pluggable Authentication Modules)可以强制实行一些实用的限制,在 /etc/security/limits.conf 文件中对此进行配置。

          谨记,这些限制适用于单个对话。您可以使用 maxlogins 来控制总额限制。limits.conf 中的条目有如下结构: username|@groupname type resource limit。

          为了与 username 区别,groupname 之前必须加 @。类型必须是 soft 或者 hard。软限制(soft-limit)可以 被超出,通常只是警戒线,而硬限制(hard-limit)不能被超出。resource 可以 是下面的关键字之一:

          core - 限制内核文件的大小(KB)

          data - 最大数据大小(KB)

          fsize - 最大文件大小(KB)

          memlock - 最大锁定内存地址空间(KB)

          nofile - 打开文件的最大数目

          rss - 最大持久设置大小(KB)

          stack - 最大栈大小(KB)

          cpu - 以分钟为单位的最多 CPU 时间

          nproc - 进程的最大数目

          as - 地址空间限制

          maxlogins - 此用户允许登录的最大数目

    * hard rss 10000
    * hard maxlogins 4
    * hard core 0
    bin -
    ftp hard maxlogins 10
    @managers hard nproc 40
    @developers hard memlock 64000
    @wwwusers hard fsize 50000  

    激活这些限制,您需要在 /etc/pam.d/login 底部添加下面一行: session required /lib/security/pam_limits.so:

    #%PAM-1.0
    auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
    auth       include      system-auth
    account    required     pam_nologin.so
    account    include      system-auth
    password   include      system-auth
    # pam_selinux.so close should be the first session rule
    session    required     pam_selinux.so close
    session    required     pam_loginuid.so
    session    optional     pam_console.so
    # pam_selinux.so open should only be followed by sessions to be executed in the user context
    session    required     pam_selinux.so open
    session    required     pam_namespace.so
    session    optional     pam_keyinit.so force revoke
    session    include      system-auth
    -session   optional     pam_ck_connector.so
    session required /lib/security/pam_limits.so   #添加
    tmpfs /dev/shm tmpfs   defaults 0 0
    devpts /dev/pts devpts  gid=5,mode=620  0 0
    sysfs /sys sysfs   defaults 0 0
    proc /proc proc    defaults 0 0
    
    系统的 tmpfs 分区被挂载在/dev/shm目录,文件系统是tmpfs。
    
    如果希望将新分区  tmpfs 挂载在 /home/new 目录下,则只需在fstab文件中加入一行:
    
     tmpfs      /home/new               tmpfs    default   0       0
    
    
    第四列是挂载的选项,用于设置挂载的参数。
    
    常见参数如下:
    
    auto: 系统自动挂载,fstab默认就是这个选项
    defaults: rw, suid, dev, exec, auto, nouser, and async.
    noauto 开机不自动挂载
    nouser 只有超级用户可以挂载
    ro 按只读权限挂载
    rw 按可读可写权限挂载
    user 任何用户都可以挂载
    请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto
    
    第五列是dump备份设置。
    
    当其值设置为1时,将允许dump备份程序备份;设置为0时,忽略备份操作;
    
    第六列是fsck磁盘检查设置。
    
    其值是一个顺序。当其值为0时,永远不检查;而 / 根目录分区永远都为1。其它分区从2开始,数字越小越先检查,如果两个分区的数字相同,则同时检查。
    

      

     

     

     

    二.用户安全

    1.禁用不使用的用户

    注释掉系统不需要的用户和用户组
    注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦

    [root@ns12422a951-b1a2-4893-ac16-5295c95f9c1c ~]# cp /etc/passwd{,.bak}
    [root@ns12422a951-b1a2-4893-ac16-5295c95f9c1c ~]# vi /etc/passwd 

     

    2.ssh登陆安全

    1.SSH

    SSH是什么:

    由 IETF 的网络工作小组(Network Working Group)所制定。

    SSH 是建立在应用层和传输层基础上的一种安全协议。用于计算机之间的加密登录。

    SSH功能:

    SSH传输数据是加密的,可以有效防止传输过程被截取数据保障安全。

    SSH的数据是经过压缩的,所以可以加快传输的速度

    为什么要修改SSH端口?

    从服务器的安全角度来看,VPS(服务器)安装成功后,请立即修改SSH默认端口号,这样减少黑客入侵服务器的可能,保证网站能够很好地发展下去。现在网站服务器越来越多,VPS的价格也越来越便宜,许多站长都在选择使用VPS建站,所以一定要注重服务器安全,不然损失是无法挽回的。

    如何修改SSH端口:

    输入

    vi /etc/ssh/sshd_config

    在下方找到默认ssh端口22,输入“i"进入编辑默认,把#Port 22前面的#删掉,在下方输入

    Port+修改的端口

    输入命令service sshd restart进行重启

    2.只允许wheel用户组的用户su切换

     其他用户切换root,即使输对密码也会提示 su: incorrect password

     添加

    3.登录超时

    4.禁止root用户远程登录

    第一步:先增加一个普通权限的用户

    #useradd ssh_user
    #passwd ssh_user

    //设置密码,确认密码

    第二步:禁止root远程ssh登录:

    vi /etc/ssh/sshd_config

    PermitRootLogin yes
    改为
    PermitRootLogin no

    保存并重启ssh服务

    service sshd restart (或者/etc/init.d/sshd restart)

    使用普通用户ssh_user登录,然后用su root切换到root用户操作

    5.限制登录失败次数并锁定

     在/etc/pam.d/login后添加:

     

    3.减少history命令记录

    执行过的历史命令记录越多,从一定程度上讲会给维护带来简便,但同样会伴随安全问题。

          vi /etc/profile

          找到 HISTSIZE=1000 改为 HISTSIZE=50。

          执行 source /etc/profile生效

          或每次退出时清理history命令:history –c。

     

    三.网络安全

    1.禁用ipv6

    1.修改/etc/sysconfig/network,追加:

    NETWORKING_IPV6=no

    2.修改/etc/hosts,把ipv6的那句本地主机名解析的也注释掉:

    #::1localhostlocalhost6localhost6.localdomain6

    3.在/etc/modprobe.d/dist.conf结尾添加:

    alias net-pf-10 off
    alias ipv6 off

    然后重启系统。

    执行lsmod|grep-iipv6 和 ifconfig|grep-iinet6,如果什么都没有则说明成功禁用。

     

     

     

    2.防止一般网络攻击

    1.阻止ping

       如果没有人能ping通用户的系统,安全性自然增加,可以有效的防止ping洪水。为此,可以在/etc/rc.d/rc.local文件中增加如下一行。

      echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all

    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    # echo 1 > /proc/sys/net/ipv4/icmp_ecgo_ignore_all   #添加
    touch /var/lock/subsys/local

      保存文件后重启计算机,这时就没有人能ping通该计算机了。

     

    2.防止IP欺骗

    编辑/etc/host.conf文件并增加如下几行来防止IP欺骗攻击。

    multi on
    order hosts,bind
    multi on
    nospoof on
    

     

    3.防止DOS攻击

    DOS:

    磁盘操作系统,是人给机器下达命令的集合,是存储在操作系统中的命令集

    DoS攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃,而在此攻击中并不包括侵入目标服务器或目标网络设备。这些服务资源包括网络带宽,文件系统空间容量,开放的进程或者允许的连接。这种攻击会导致资源的匮乏,无论计算机的处理速度多快、内存容量多大、网络带宽的速度多快都无法避免这种攻击带来的后果

    另:DDOS

    DDOS的全称是Distributed Denial of Service,即"分布式拒绝服务攻击",是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求、耗尽目标主机资源或网络资源,从而使被攻击的主机不能为合法用户提供服务。

    DDOS攻击的本质是:
    利用木桶原理,寻找利用系统应用的瓶颈;阻塞和耗尽;当前问题:用户的带宽小于攻击的规模,噪声访问带宽成为木桶的短板。

    Linux下防御DDOS攻击的操作梳理 - 散尽浮华 - 博客园 (cnblogs.com)

    DOS攻击与DDOS区别:

    DOS攻击和DDOS攻击有啥区别啊?_百度知道 (baidu.com)

     对系统所有的用户设置资源限制可以防止DOS类型攻击,如最大进程数和内存使用量等。例如,可以在/etc/security/limits.conf文件中添加如下几行。

    * soft core 0
    * soft nproc 2084
    * hard nproc 16384
    * soft nofile 1024
    * hard nofile 65536


    core 0 表示禁止创建core文件;nproc 128 把最多的进程数限制到20;
    nofile 64 表示把一个用户同时打开的最大文件数限制为64;
    * 表示登录到系统的所有用户,不包括root。

    然后必须编辑/etc/pam.d/login文件,检查在该文件中是否存在下面这行数据。

     session required /lib/security/pam_limits.so

     

    3.定期做日志检查

     1、查询资料了解更多关于linux系统加固的知识。

    • 一律禁用Firewire和Thunderbolt模块。
    • 检查防火墙,确保所有入站端口已被过滤。
    • 确保root邮件转发到你核查的帐户。
    • 设立操作系统自动更新时间表,或者更新提醒内容
    • 设置屏幕保护程序,在闲置一段时间后自动锁定。
    • 安装logwatch。
    • 安装和使用rkhunter
    • 安装入侵检测系统

    Linux工作站加固的6个方法 | 《Linux就该这么学》 (linuxprobe.com)

     2、查询资料了解iptables有哪些用途

    有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置

    防止DoS攻击  

    端口转发

    记录丢弃的数据表

    25个iptables常用示例 | 《Linux就该这么学》 (linuxprobe.com)

      

     

     

  • 相关阅读:
    python_论优点&缺点
    Python_正则表达式指南
    python学习
    Linux命令之basename 命令
    mysqlpython模块的内存泄露和中文字符编码问题
    python:ip地址转换
    程序员技术练级攻略转
    常用python代码
    shell export 作用转载
    python_文本文件里面随机抽取若干行,写入新的文本文件里面
  • 原文地址:https://www.cnblogs.com/studydate/p/15266277.html
Copyright © 2020-2023  润新知