CentOS 7 设置-Step5.在 CentOS 7 上进行一些高级设置


=Start=

缘由:

记录如何利用PAM中的某些模块做一些额外的安全设置;一些可能会用到的安全知识。

正文:

1.设置Linux系统的密码强度策略
$ sudo vi /etc/pam.d/system-auth
password   requisite   pam_cracklib.so retry=3 difok=3 minlen=10
$ sudo vi /etc/pam.d/system-auth
password   requisite   pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
$ sudo vi /etc/login.defs
PASS_MAX_DAYS   150
PASS_MIN_DAYS   0
PASS_WARN_AGE   7
2.设置Linux系统的密码重用策略
Step:1 – Linux如何限制密码的重用?
    # vim /etc/pam.d/common-auth
    password sufficient pam_unix.so use_authtok md5 shadow remember=13
    
    password sufficient pam_unix2.so use_authtok md5 shadow remember=13
Step:2 – Linux设置密码周期
    # vi /etc/login.defs
    PASS_MIN_DAYS=7
Step:3 – Linux的历史密码存在哪?
    /etc/security/opasswd
3.保持 /boot 只读

Linux内核和他的相关的文件都保存在/boot目下,默认情况下是可以读写的。把它设为了只读可以减少一些由于非法修改重要boot文件而导致的风险。

# vim /etc/fstab

在文件最后增加下面的行,然后保存:

LABEL=/boot /boot ext2 defaults,ro 1 2

如果你今后需要升级内核的话,你需要修改为读写模式(ro → rw)。

4.SELinux(谨慎使用)

查看SELinux状态:

# sestatus

如果是关闭状态,则可以通过下面的命令打开:

# setenforce enforcing
5.锁定 Cron任务

Cron有它自己内建的特性,这特性允许定义哪些人能哪些人不能跑任务。这是通过两个文件/etc/cron.allow 和 /etc/cron.deny 控制的。要锁定在用Cron的用户时可以简单的将其名字写到cron.deny里,而要允许用户跑cron时将其名字加到cron.allow即可。如果你要禁止所有用户使用cron,那么可以将“ALL”作为一行加到cron.deny里。

# echo ALL >>/etc/cron.deny

=END=

, ,

《 “CentOS 7 设置-Step5.在 CentOS 7 上进行一些高级设置” 》 有 18 条评论

  1. Linux基线加固
    https://mp.weixin.qq.com/s/0nxiZw1NUoQTjxcd3zl6Zg
    https://github.com/myh0st/scripts/blob/master/linuxsec.sh
    `
    #设置密码复杂度
    #设置连续登录失败暂锁机制
    #检查密码重复使用次数
    #设置操作超时锁定
    #修改密码时效
    #修改默认访问权限
    #设置重要文件目录权限
    #启动了nscd服务导致设置权限以后无法登陆
    #检查用户umask设置
    #检查是否设置ssh登录前告警banner
    #FTP安全设置#检查重要文件属性设置
    #日志审计检查
    #禁止wheel组以外的用户su为root
    #关闭不必要的服务和端口
    #检查core dump 设置
    #删除潜在危险文件
    #检查系统内核参数配置,修改只当次生效,重启需重新设置
    #检查拥有suid和sgid权限文件并修改文件权限为755
    `

  2. 如何让Tomcat更强壮
    https://www.freebuf.com/column/199893.html
    `
    NO 1 不安全的http请求方法
    NO 2 慢速dos攻击
    NO 3 目录文件列出漏洞
    NO 4 敏感信息泄漏之默认管理路径
    NO 5 敏感信息泄漏之未定义错误页面
    NO 6 敏感信息泄漏之版本号泄漏
    NO 7 War 包自动部署
    `

  3. JShielder:一款自动化Linux服务器安全增强工具
    https://www.freebuf.com/sectool/209603.html
    https://github.com/Jsitech/JShielder
    `
    JSHielder是一款开源的Bash脚本,旨在帮助系统管理员和开发人员增强Linux服务器的安全性,以更好地开发任何Web应用程序或在线服务。该工具可以自动化安装托管Web应用程序所必须的包,并在少量用户交互的情况下完成Linux服务器的安全增强配置。新增加的脚本遵循CIS Benchmark指南来为Linux服务器建立安全配置。

    配置步骤如下:
    1、 配置主机名
    2、 重新配置时区
    3、 更新整个系统
    4、 创建新的管理员用户,无需通过root远程连接来管理服务器
    5、 帮助用户生成安全RSA密钥,避免使用传统密码
    6、 配置、优化和增强SSH服务器的安全性(某些设置遵循CIS Benchmark)
    7、 配置IPTABLE规则,保护服务器免受常见攻击影响
    8、 禁用冗余的文件系统和网络协议
    9、 通过安装fail2ban保护服务器免受爆破攻击的威胁
    10、以蜜罐、监控、屏蔽和警告工具安装并配置Artillery
    11、安装PortSentry
    12、安装、配置和优化MySQL
    13、安装Apache Web服务器
    14、通过配置文件和安装Modules ModSecurity增强Apache安全性
    15、通过安装ModSecurity NginX模块和OWASP ModSecurity Core规则集增强NginX
    16、安装RootKit Hunter
    17、增强Root Home和Grub配置文件
    18、安装Unhide以帮助检测隐藏进程
    19、安装Tiger(严重安全审计与入侵防御系统)
    20、限制Apache配置文件访问
    21、禁用编译器
    22、创建系统更新的每日Corn任务
    23、通过sysctl配置文件增强内核安全性
    24、/tmp目录增强
    25、安装PSAD入侵检测系统
    26、禁用USB支持
    27、配置默认UMASK
    28、配置和启用Auditd
    29、遵循CIS Benchmark配置Auditd规则
    30、安装Sysstat
    31、安装ArpWatch
    32、自动配置GRUB Bootloader密码
    33、安全Boot设置
    34、设置安全文件权限
    `

  4. 解决CentOS更改ssh端口后报错的问题
    https://blog.ixnet.work/2016/05/05/change-centos-ssh-port/
    `
    sudo vim /etc/ssh/sshd_config
    -> Port 34567

    sudo firewall-cmd –add-port=34567/tcp –permanent
    sudo firewall-cmd –reload

    systemctl restart sshd
    # check sshd status from log
    systemctl status sshd
    journalctl -xe

    yum whatprovides semanage
    yum install -y policycoreutils-python

    semanage port -l | grep ssh
    semanage port -a -t ssh_port_t -p tcp 34567

    ssh -p 34567 root@server1
    `
    https://kifarunix.com/how-to-configure-ssh-to-use-a-different-port-on-centos-7/
    https://www.tecmint.com/change-ssh-port-in-linux/
    https://blog.tinned-software.net/change-ssh-port-in-centos-with-selinux/
    https://www.liberiangeek.net/2014/11/change-openssh-port-centos-7/

  5. centos 7 远程连接 ssh connection refused
    https://www.chengkaiblog.com/technology/centos-7-remote-connection-ssh-connection-refused.html
    `
    1. 首先查看ssh服务是否安装或启动
    2. 如果ssh服务已启动,依旧无法使用连接,先测试一下本地是否可以连接
    3. 如果还是connection refused,则查看ssh配置 /etc/ssh/sshd_config (Port + ListenAddress)
    4. 再检查是否是防火墙的问题
    `

    https://stackoverflow.com/questions/24756240/how-can-i-use-iptables-on-centos-7
    `
    # 使用原生的 firewalld 服务
    # add ssh port as permanent opened port
    firewall-cmd –zone=public –add-port=34567/tcp –permanent
    firewall-cmd –reload

    # 使用习惯的 iptables 命令(可能需要先安装)
    yum install iptables-services
    systemctl enable iptables
    systemctl [stop|start|restart] iptables

    /sbin/iptables -I INPUT -p tcp –dport 34567 -j ACCEPT

    service iptables save
    `
    解决CentOS7关闭/开启防火墙出现Unit iptables.service failed to load: No such file or directory.
    https://blog.csdn.net/c233728461/article/details/52679558

    How to Find All Failed SSH login Attempts in Linux
    https://www.tecmint.com/find-failed-ssh-login-attempts-in-linux/
    https://superuser.com/questions/1224688/where-to-find-ssh-login-log-files-on-centos
    `
    # Debian/Ubuntu
    /var/log/auth.log
    # RedHat/CentOS
    /var/log/secure
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注