zoukankan      html  css  js  c++  java
  • CentOS系统安全配置

    一、账号安全及权限

    1.1、禁用root以外的超级用户

    1.1.1、检测方法

    Cat /etc/passwd 查看口令文件,文件格式如下:

    Login_name : password: user_ID: group_ID: comment: home_dir: command

    若user_ID = 0,则该用户拥有超级用户的权限,查看此处是否有多个ID=0

    1.1.2、检测命令:

    [root@localhost ~/shell]# cat /etc/passwd | awk -F ':' '{print$1,$3}' | grep ' 0$'
    root 0

    1.1.3、备份方法:

    [root@localhost ~/shell]# cp -p /etc/passwd /etc/passwd_bak
    [root@localhost ~/shell]# ll /etc/pass*
    -rw-r--r--. 1 root root 941 4月  22 14:34 /etc/passwd
    -rw-r--r--. 1 root root 883 4月  22 13:14 /etc/passwd-
    -rw-r--r--. 1 root root 941 4月  22 14:34 /etc/passwd_bak

    1.1.4、加固方法:

    使用命令passwd -l <username> 锁定不必要的超级账户
    使用命令passwd -u <username> 解锁需要恢复的超级账户
    或把用户shell 改为 /sbin/nologin

    1.2、删除不必要的账号

    1.2.1、应该删除所有默认的被操作系统本身启动的并且不必要的账号,Linux提供了很多默认账号,而且账号越多,系统就越容易受到攻击。

    1.2.2、可删除的用户,如:

    adm 、lp 、sync、shutdown、halt、mail、operator、ftp等
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin

    1.2.3、可删除的组,如:

    adm、lp、games、mail等
    [root@localhost ~/shell]# cat /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:
    sys:x:3:
    adm:x:4:
    tty:x:5:
    disk:x:6:
    lp:x:7:
    mem:x:8:
    kmem:x:9:
    wheel:x:10:
    cdrom:x:11:
    mail:x:12:postfix

    1.2.4、删除命令:

    userdel username
    groupdel groupname

    1.3、用户口令设置:

    用户口令是Linux/Unix安全的一个基本起点,很多人使用的用户口令过于简单,这是相当于给侵入者敞开了大门,虽然理论上来说,只要有足够的时间和资源可以利用,就没有不能破解的用户口令,但选取得当的口令是难于破解的,较好的用户口令是那些只有他自己容易记得并理解的一串字符,最好不要把密码记录出来,如果有需要的话,也要保管好记录密码的文件,或者将这个文件加密。

    生产环境口令要求:包含大小写字母、数字和特殊字符四种,并且口令整体长度大于10位,每台服务器的口令不能相同。

    修改密码长度/etc/login.defs

    [root@localhost ~/shell]# vim /etc/login.defs 
    [root@localhost ~/shell]# cat /etc/login.defs | grep "PASS_MIN_LEN"
    PASS_MIN_LEN    10

    1.4、检查空口令账号

    如果发现有账号口令为空,需要强制加入符合规格的口令

    检查方法:

    awk -F : '{$2 == ""} { print $1}' /etc/shadow

    1.5、口令文件加锁

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

    [root@localhost ~/shell]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
    [root@localhost ~/shell]# lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow
    ----i----------- /etc/passwd
    ----i----------- /etc/shadow
    ----i----------- /etc/group
    ----i----------- /etc/gshadow
    lsattr只显示文件属性

    1.6、设置root账户自动注销时限:

    修改环境引导文件/etc/profile 中的TMOUT参数,TMOUT参数按秒计算
    ​
    HISTFILESIZE=__ //在这一行下面添加登出参数
    TMOUT=300

    改变这项设置后,必须先注册用户,在用该用户登录才能激活这个功能

    如果想修改某个用户的自动注销时限,可以在用户目录下的 “.bashrc” 文件中添加这个值,以便系统对该用户实行特殊的自动注销时间

    1.7、限制su命令

    禁止任何人能够su 切换到 root ,编辑/etc/pam.d/su 文件,增加如下行

    auth            sufficient      /lib/security/pam_rootok.sodebug
    auth            required        /lib/security/pam_wheel.sogroup=isd

    这时,进wheel组的用户可以su作为root。此后,如果希望用户admin能够作为root,可以运行如下命令:

    usermod -G 10 admin

    1.8、限制普通用户无法执行关机、重启、配置网络等敏感操作

        删除/etc/security/console.apps下的halt、reboot、poweroff、shutdown等程序的访问控制文件,以禁止普通用户执行该命令
    [root@Huawei /etc/security/console.apps]# pwd
    /etc/security/console.apps
    [root@Huawei /etc/security/console.apps]# ll -la
    total 8
    drwxr-xr-x. 2 root root 4096 Mar 22  2017 .
    drwxr-xr-x. 6 root root 4096 Mar 27  2018 ..

    1.9、禁用 Ctrl+Alt+Delete组合键重新启动机器命令

    以下是限制快捷键重启
    [root@Huawei ~]# cat /etc/init/control-alt-delete.conf 
    # control-alt-delete - emergency keypress handling
    #
    # This task is run whenever the Control-Alt-Delete key combination is
    # pressed.  Usually used to shut down the machine.
    #
    # Do not edit this file directly. If you want to change the behaviour,
    # please create a file control-alt-delete.override and put your changes there.
    ​
    start on control-alt-delete  //注释这一行和下一行
    ​
    exec /sbin/shutdown -r now "Control-Alt-Delete pressed" //注释

    1.10、设置开机启动服务文件权限

    设置/etc/rc.d/init.d目录下所有文件的许可权限,此目录下文件为开机启动项,运行如下命令:
    chmod +R 700 /etc/rc.d/init.d/
    只允许root读写执行上述所有脚本文件

    1.11、避免login时显示系统和版本信息

    删除信息文件:(按照实际情况)

    /etc/issue            /etc/issue.net

    二、限制网络访问

    2.1、NFS访问

    使用NFS网络文件系统服务,应该确保/etc/exports 具有最严格的访问权限设置,也就是意味着不要使用任何通配符、不允许root写权限并且只能安装为只读文件系统,编辑文件/etc/exports 并加入如下两行

    /dir/to/exporthost1.mydomain.com(ro,root_squash)
    /dir/to/exporthost2.mydomain.com(ro,root_squash)

    /dir/to/export 是我们想输出的目录, host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,root_squash禁止root写入该目录,最后生效此改动,运行如下命令:

    /usr/sbin/exportfs-a

    2.2、登录终端设置

    /etc/securetty 文件指定了允许root登录的tty 设备,有/bin/login/程序读取,其格式是一个被允许的名字列表,可以编辑/etc/securetty ,注释掉不想让登录的行:

    [root@Huawei ~]# cat /etc/securetty 
    console
    vc/1
    vc/2
    vc/3
    vc/4
    vc/5
    vc/6
    vc/7
    vc/8
    vc/9
    vc/10
    vc/11

    三、防止攻击

    3.1、防止IP 欺骗

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

    order hosts.bind    #名称解释顺序
    multi on            #允许主机拥有多个IP地址
    nospoof on          #禁止IP地址欺骗

    3.2、防止DOS攻击

    对系统所有的用户设置资源限制可以防止DOS类型攻击。如最大进程数和内存使用数量等

    可以在/etc/security/limits.conf 中添加如下几行:
    *       hard    core    0
    *       hard    rss     5000
    *       hard    nproc   50

    然后必须编辑/etc/pam.d/login 文件检查下面一行是否存在

    session    required    /lib/security/pam_limits.so

    命令为禁止调试文件,限制进程数为 50 并且限制内存使用为 5 MB。

    3.3、禁止ping,抵御SYN:

    较安全性来看,如果没人能ping通系统,安全性自然增加了。

    在 /etc/rc.d/rc.local 文件中增加:
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

    SYN 攻击是利用TCP/IP 协议 3次握手的原理,发送大量的建立连接的网络包,但不实际连接,最终导致被攻击服务器的网络队列被占满,无法被正常用户访问。

    Linux内核提供了若干SYN相关的配置,命令:

    sysctl -a | grep syn

    tcp_max_syn_backlog 是 SYN 队列的长度,tcp_syncookies 是一个开关,是否打开SYN Ciikie的功能,
    该功能可以防止部分SYN 攻击,tcp_synack_retries和tcp_syn_retries定义SYN的重试次数。

    加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie 功能可以组织部分SYN攻击,降低重试次数也有一定效果。

    调整上述设置的方法是:

    vim /etc/rc.d/rc.local
    ​
    sysctl -w net.ipv4.tcp_max_syn_backlog=2048 #增加SYN队列长度到2048
    sysctl -w net.ipv4.tcp_syncookies=l         #打开SYN COOKIE功能
    sysctl -w net.ipv4.tcp_synack_retries=3     #降低重试次数
    sysctl -w net.ipv4.tcp_syn_retries=3
  • 相关阅读:
    如何给工科生做一个演讲DEMO
    JAVA事务处理系列 值得看
    今天开通了博客,准备开始写点东西或者记录点东西!或者转载点东西!
    屌丝程序员如何打造日PV百万的网站架构
    拥抱大数据时代 DB架构设计
    根据并发请求id查找相应trace信息
    FRM30187: Size of CHAR column in record group must be between 1 and 2000
    10046 SQL trace 的做法
    Oracle 表空间不足的处理办法
    LoadRunner在EBS R12上运行需更改服务器为Socket模式
  • 原文地址:https://www.cnblogs.com/security-guard/p/13163822.html
Copyright © 2011-2022 走看看