Linux系统安全调优、系统调优

本文详细介绍了如何加强Linux系统的SSH访问控制,包括修改SSH配置文件以增强安全性,如更改端口、限制登录次数和用户,以及使用密钥对认证。同时,讨论了用户账号的安全管理,如密码策略、账号锁定和有效期设置。此外,还涉及了防火墙黑名单、禁用不必要的服务、防暴力破解措施以及SELinux的配置与管理。通过对这些安全措施的实施,可以有效提高Linux服务器的安全性。
摘要由CSDN通过智能技术生成

- SSH访问控制

SSH:是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能 
- /etc/ssh/ssh-config          客户端配置文件
- /etc/ssh/sshd_config         服务器端配置文件

1、服务器端常用配置项
    Port 22        # ssh服务端口,建议改为不常用的端口
    Protocol       # 启用SSH V2版协议
    ListenAddress 1.1.1.1    # 设置允许访问此主机的IP地址。如果不设定,可以通过此主机所有的网卡的IP地址进行访问ssh服务
    PermitRootLogin no       # 禁止root登录
    UseDNS no      # 不解析客户机地址 
    MaxAuthTries 3           # 连接输入密码认证次数,超过三次,禁止登录
    LoginGraceTime 1m        # 登录失败超时时间,等待一分钟后重新尝试连接

2、黑白名单
    vim /etc/ssh/sshd_config    (Shift+g跳到文件末尾)
        AllowUsers root@123.123.123.123 test        # 仅允许123这个主机上使用root用户登录,以及所有主机使用test用户登录
        DenyUsers root@123.123.123.123 test         # 仅不允许123这个主机上使用root用户登录,以及所有主机禁止使用test用户登录,其他用户不受限制
        AllowGroups    允许组
        DenyGroups     不允许组

3、SSH认证登录(口令、密钥对)
     65 PasswordAuthentication yes        # 密码认证登录,默认开启
     43 #PubkeyAuthentication yes         # 密钥对认证登录,默认注释的(公钥加密,私钥解密)
     47 AuthorizedKeysFile      .ssh/authorized_keys        # 客户端存放的密钥文件

    ssh-keygen        # 创建密钥文件,全部回车
    cd /root/.ssh/    # 创建密钥后的文件路径
        id_rsa(私钥文件)        id_rsa.pub(公钥文件)
    ssh-copy-id root@1.1.1.1        # 将自己的公钥文件传送给服务器

- 用户账号安全

1、使用chage工具设置账号有效期
   chage -E 2022-12-31 test1
   chage -l test1                # 查看test1用户的密码有效期等信息
   -d 0    强制修改密码,将最近日期时间更改为0,表示第一次登陆时必须强制修改密码
   -E yyyy-mm-dd 指定失效日期,-1取消

   其他选项:
      -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
      -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
      -h, --help                    显示此帮助信息并推出
      -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
      -l, --list                    显示帐户年龄信息
      -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
      -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
      -R, --root CHROOT_DIR         chroot 到的目录
      -W, --warndays 警告天数       将过期警告天数设为“警告天数”

2、使用passwd命令对账号进行锁定、解锁
    passwd -l test1        # 将test1用户锁定
    -l  锁定;        -u  解锁;        -S  查看状态;

3、设置默认添加用户的配置
   文件路径:/etc/login.defs
   grep -v "#" /etc/login.defs        # 显示文件内除注释行以外的行
        MAIL_DIR        /var/spool/mail    # 用户的邮箱目录
        PASS_MAX_DAYS   99999              # 密码最大有效期
        PASS_MIN_DAYS   0                  # 密码最小有效期
        PASS_MIN_LEN    5                  # 密码最小长度
        PASS_WARN_AGE   7                  # 密码的警告天数
        UID_MIN                  1000      # uid号最小值
        UID_MAX                 60000      # uid号最大值
        SYS_UID_MIN               201      
        SYS_UID_MAX               999
        GID_MIN                  1000      # gid号最小值
        GID_MAX                 60000      # gid号最大值
        SYS_GID_MIN               201
        SYS_GID_MAX               999
        CREATE_HOME     yes                # 创建家目录
        UMASK           077                # 默认权限,相反的是700
        USERGROUPS_ENAB yes                # 创建同名的用户组
        ENCRYPT_METHOD SHA512              # 用户密码的加密算法

4、伪装登陆提示
    配置文件路径:/etc/issue、/etc/issue.net,可隐藏操作系统版本和系统内核版本

5、文件系统安全
    chattr-增、删属性、lsattr-查看属性
    控制方式:+、-、=
    属性i:不可变(immutable)        属性a:仅可追加(append only)
    例:
    chattr +i /etc/hosts        # 给/etc/hosts/文件赋予不可变属性

6、禁用非必要的服务
    RHEL5/RHEL6版本管理服务:chkconfig httpd on|off
                            service httpd start|stop|restart|status
    RHEL7版本管理服务:systemctl start|stop|restart|status|enable|disable httpd

- 防暴力破解SSH

1、修改SSHD配置文件
vim /etc/pam.d/sshd           # 这是Centos7版本命令 
    增加如下内容:
    auth required pam_tally2.so deny=3 unlock_time=60 even_deny_root root_unlock_time=60
    # pam_tally2.so 模块名称
    # deny=3 设置普通用户和root用户连续错误登录的最大次数,超过最大次数,则锁定该用户
    # unlock_time=60 用户锁定时间,单位s
    # even_deny_root 也限制root用户
    # root_unlock_time=60 root用户锁定时间,单位s
服务器端用户解锁方法:
    pam_tally2 -u root -r
    pam_tally2 --user 用户名 --reset        # 清空指定用户的错误登录次数

2、Centos8版本禁用账号
vim /etc/pam.d/system-auth
    增加如下内容,必须添加至指定行:
    auth required pam_faillock.so even_deny_root preauth silent audit deny=3 unlock_time=300
    auth sufficient pam_unix.so nullok try_first_pass
    auth [default=die] pam_faillock.so even_deny_root authfail audit deny=3 unlock_time=300
    account required pam_faillock.so

    faillock        # 查看所有用户的尝试失败登录次数,valid值,v表示有效,i表示无效
    faillock --user admin        # 只查看admin用户
    faillock --user 用户名 --reset    # 解锁一个用户账户
    faillock --reset                  # 解锁所有用户

3、修改ssh端口号和限制登入次数
   vim /etc/ssh/sshd_config
       Port 22     # 更改默认的ssh端口
       MaxAuthTries=6    # 将默认的6次改为3,即登入3次就断开

---Centos8版本的system-auth配置如图:

 - 防火墙黑名单

last -f /var/run/utmp 或者 last            # 查看登入成功的用户日志
last -f /var/log/btmp 或者 lastb           # 查看登入失败的用户日志

使用firewall封禁IP:
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='1.1.1.1' reject"        # 封禁1.1.1.1这个IP地址
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='1.1.1.0/24' reject"        # 封禁1.1.1.0-1.1.1.255之间的IP
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.10' port port=80 protocol=tcp accept"        # 只允许这个IP的80端口进行访问

firewall-cmd --reload        # 重新载入生效
firewall-cmd --list-rich-rules        # 查看封禁的IP

- 服务器禁PING

1、修改配置文件
vim /etc/sysctl.conf
    net.ipv4.icmp_echo_ignore_all = 1  # 表示禁Ping
    net.ipv4.icmp_echo_ignore_all = 0  # 表示启用Ping

sysctl -p        # 查看

2、使用防火墙禁ping
    firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'
    firewall-cmd --reload          # 重启生效
    firewall-cmd --list-all        # 查看防火墙规则
    firewall-cmd --permanent --remove-rich-rule='rule protocol value=icmp drop'    # 取消禁ping规则

3、使用iptables禁ping
    iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP    # 禁用ping
    iptables -D INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP    # 启用ping
        --icmp-type 8:指定ICMP类型为8
        -s:指定IP和掩码,“0/0”表示此规则针对所有IP和掩码

- 用户切换与提权

1、su
    su - 用户    # 切换用户的同时也切换环境变量,su 用户是只切换用户,不切换环境变量
    su - -c "命令" 用户        # 以目标用户身份去执行某条命令

    cat /var/log/secure        # 安全日志文件,可以查看su验证和shell终端的开启与关闭

2、sudo提权
    主配置文件:/etc/sudoers
    查看当前用户允许执行哪些命令:sudo -l
    提权格式:普通用户名  主机名列表=命令列表(用户名前面加%的话,表示用户组;命令必须填写绝对路径)
    案例:
    test     localhost,testserver=/sbin/ifconfig,/sbin/yum,!/sbin/iptables,!/sbin/useradd
        (第一个test是普通用户,第二个testserver是主机名;允许ifconfig,yum,不允许iptables,useradd)
    test     localhost,testserver=/sbin/ifconfig,/sbin/yum,NOPASSWD:ALL
        (NOPASSWD:ALL表示切换用户以及查看权限等不需要输入自己的命令)
    test    localhost,testserver=/usr/bin/systemctl * httpd,/usr/bin/vim /var/www/html/index.html
        (允许test用户启动,停止,重启httpd服务;以及允许更改httpd服务首页内容)

3、启用日志文件,记录用户的提权操作
    vim /etc/sudoers        # 按shift+g跳转至文件末尾输入
        Default logfile="/var/log/sudo.log"

4、使用别名做用户提权(别名名称必须使用大写字母)
    User_Alias    定义用户别名
    Host_Alias    定义主机别名
    Cmnd_Alias    定义命令别名
    案例:
    User_Alias    USERS=test,test1,test2,test3,test4
    Host_Alias    HOSTNAME=localhost,testserver
    Cmnd_Alias    COMMAND=/usr/bin/yum,/usr/bin/cd,/usr/sbin/useradd,/usr/sbin/userdel
    

- SELINUX

SELinux是一套强化Linux安全的扩展模块,美国国家安全局主导开发;运作机制:集成到Linux2.6内核以上,操作系统提供可定制的策略,管理工具
主要软件包:
    selinux-policy,selinux-policy-targeted,libselinux-utils,libselinux-utils,coreutils,policycoreutils

sestatus        # 查看selinux的状态,参数有enabled,enforcing,targeted
touch /.autorelabel     # 开启SELinux服务的需先创建文件,然后重启服务器,
getenforce      # 查看状态
setenforce 0    # 设置selinux的状态为Permissive(宽松模式)
setenforce 1    # 设置selinux的状态为Enforcing(启用模式)

1、安全上下文
    参数-Z
    ls -lZ /etc/passwd        # 查看文件的安全上下文
    ls -ldZ    /home/         # 查看目录的安全上下文
    ps -aux -Z                # 查看进程的安全上下文

    安全上下文属性构成
    用户:角色:访问类型:选项...
    例:
     system_u:object_r:net_conf_t:s0
     system_u:object_r:root_t:s0
     system_u:system_r:virt_qemu_ga_t:s0
     system_u:system_r:httpd_t:s0
注意:
    在开启SELinux时,一般操作规律
    - 移动的文件,原有的上下文属性不变
    - 创建、复制的文件,自动继承目标位置的上下文

2、修改访问类型,-t指定访问类型,-R递归修改
    chcon -t httpd_sys_content_t /var/www/html/test.html     # 修改文件的访问类型
    chcon -R -t httpd_sys_content_t /var/www/html/    # 修改目录的访问类型
    restorecon /var/www/html/test.html                # 恢复文件的访问类型为默认的
    restorecon -R /var/www/html/                      # 恢复目录的访问类型为默认的

    小技巧
    touch /.autorelabel
    reboot
    # 这个方法可以恢复系统内所有访问类型不正确的文件,重启后,autorelabel文件消失

3、SELinux布尔值(功能开关)
    getsebool -a    # 列出所有的布尔值,-P 永久更改
    setsebool -P ftpd_anon_write on        # 开启布尔值状态为on
    setsebool -P ftpd_full_access on       # 设置状态为on;在开启SELinux的时候同样允许上传下载

4、查看日志进行排错
    yum -y install setroubleshoot*        # 安装日志软件
    grep setroubleshoot /var/log/messages | tail -1    # 重启服务失败的话,可查看最新的报错
        "run"关键字后面就是建议执行的命令
        执行之后,再次执行"Do"后面的建议的命令,即可
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值