前言

环境:CentOS7.9
安装好Linux后,为了系统的安全性,我们需要为系统调优和安全设置,下面介绍一些企业实际生产环境中常用的调优及安全设置。

1、禁用SELinux

SELinux是美国国家安全局对于强制访问控制的实现,这个功能让系统管理员又爱又恨,这里就把他关了吧,至于安全访问,可通过防火墙来实现,这也是大多数生产环境的做法。

1)永久禁用SELinux

vim /etc/selinux/config
SELINUX=disabled

必须重启系统才能生效

2)临时禁用SELInux

getenforce                       #查看SELInux当前状态
setenforce 0                    #数字0表示Permissive,即给出警告但不会阻止操作,相当于disabled,数字1表示Enforcing,即开启SELinux

生产环境中可以先临时禁用SELinux,即设置setenforce 0,再去修改selinux的配置文件永久禁用,这样就不用立即重启系统也能禁用SELinux了,等下次系统需要重启时就能实现永久禁用selinux了,之所以这样做,是因为线上的系统不能说能随便立即重启的。

3、精简开机自启动服务

精简开机自启动是为了节省系统资源,只开启必须的服务。以下是几个必要的开机自启动的服务:
sshd(远程连接服务)、rsyslog(系统的日志服务)、network(网络网卡服务)、crond(计划任务服务,使用crontab命令创建计划任务)、sysstat(一个软件包,包含检测系统性能和吞吐率的一组工具)
centos5.x和centos 6.x版本使用chkconfig 命令来设置开机自启动服务

chkconfig --list                             #查看所有的开机自启动服务
chkconfig --del service_name                    #删除开机自启动的服务
chkconfig --add service_name                    #添加服务开机自启动
chkconfig --level 35 service_name  on|off       #表示35级别下默认启动|关闭
chkconfig --level 5 service_name  off           #表示5级别下开机不启动

centos7.x版本后不再使用chkconfig命令来管理,改用systemctl 命令来管理

systemctl list-unit-files                        #查看所有的服务,其中enable就表示开机自启动,disable表示禁止开机自启动
systemctl enable service_name                   #开机自启动
systemctl disable service_name                  #禁止开机自启动

4、系统安全最小原则

安装的Linux系统最小化,Yum 安装软件也最小化,无用的包不安装;开机自启动服务最小化,即无用的服务不开启;命令最小化,如能用“rm -f tets.txt”就不用“rm -rf tets.txt”;登录最小化,禁用root远程登录,使用普通用户登录即可;普通用户授权最小化,只给用户必要的管理系统的命令;文件及目录权限最小化,禁止随意创建、更改、删除文件。

5、更改SSH服务远程登录配置

修改ssh默认的22端口;禁用root远程登录;禁止空密码登录;只监听必要的网卡地址而不是所有的网卡地址,如服务器存在内网和外网时,如果禁止外部远程登录只允许内网远程登录,则可以设置ssh只监听内网网卡地址。

6、利用sudo 控制用户对系统命令的使用权限

执行 visudo 命令即可快速打开编辑/etc/sudoes文件,找到 root ALL=(ALL)ALL 这行,在这行下面添加需要提升为root权限的普通用户名及权限即可,其格式为:
用户或组 机器=(表示以谁的身份执行)命令
示例:guo ALL=(ALL) /usr/sbin/reboot,/usr/sbin/useadd
说明:

root   ALL=(ALL)ALL

root表示用户名,如果是用户组,这样写 :%组名
ALL :表示允许登录的主机为任意主机
(ALL):表示以谁的身份执行,ALL表示root身份
ALL: 表示当前用户可以执行全部命令,如果指定多个命令需要使用英文道号分割

7、设置Linux服务器时间同步

服务器的时间是至关重要的,如果服务器的时间不对,那么数据就有可能出现问题,因为前端记录的数据,往数据库插入记录时,一般都是取服务器的时间,所以说服务器的时间不对就很有可能造成订单的时间出现问题,所以服务器的时间准确性是至关重要;同步,顾名思义就是把服务器的时间同步到另外一台服务器,这里指的另外一台服务器就是指网络上或者本地内网的时间服务器。同步的命令有ntpdate等命令,一般使用定时任务结合ntpdate命令来实现定时同步时间。

8、调整系统文件描述符数量

每个用户能打开的文件数量是有限的,使用命令ulimit -n查看,默认是1024,使用ulimit -SHn 102400 命令来修改限制,但这时临时的退出登录会话后就失效了,如果想永久变更就修改/etc/security/limits.conf 文件,如下:

vi /etc/security/limits.conf
Oracle  hard nofile 102400
Oracle soft nofile 102400

这只是修改用户级的最大文件描述符限制,也就是说每一个用户登录后执行的程序占用文件描述符的总数不能超过这个限制。
系统级的限制是限制所有用户打开文件描述符的总和,可以通过修改内核参数来更改该限制:

sysctl -w fs.file-max=102400

使用sysctl命令更改也是临时的,如果想永久更改需要在/etc/sysctl.conf添加

fs.file-max=102400

保存退出后使用sysctl -p 命令使其生效。

9、Linux服务器内核参数优化

内核参数文件是 /etc/sysctl.conf,打开此文件编辑
vim /etc/sysctl.conf
编辑之后重新读取内核参数生效:sysctl -p

10、锁定系统关键文件,防止被提权篡改

要锁定关键系统文件,必须对账号密码及启动文件加锁,防止被篡改,上锁命令如下:

chattr +i /etc/passwd /etc/shadow /etc/group /etc/inittab

上锁后所有用户都不能对文件修改删除
解锁 命令:chattr -i /etc/passwd /etc/shadow /etc/group /etc/inittab
想要为了更安全防止被黑客利用,可以将chattr 改名:mv /usr/bin/chatrr usr/bin/xxx

11、为grub菜单加密码

为grub菜单加密码的目的是防止他人修改grub进行内核等启动设置,以及用单用户默认启动进行破解root密码等操作,实际上加密码可以在安装系统的过程中设置,安装系统后的具体步骤如下:
执行命令:/sbin/grub2-set-password 生成密码

重启系统,正常启动话就不需要密码,但当出现grub菜单时按下e进入编辑,此时就需要输入用户和密码了,

实际上,在执行/sbin/grub2-set-password 生成密码时系统就生成了一个密码文件 ,即/boot/grub2/user.cfg,删除这个文件,就相当于取消grub菜单加密码了。

12、禁止Linux被ping

此项不是必须的,因为有时候我们需要ping服务器查看网络是否正常,当然设置禁止ping也可以,从安全的角度来看,禁止ping还会增加系统的安全性。
永久设置禁止ping :

echo "net.ipv4.icmp_echo_ignore_all=1"  >> /etc/sysctl.conf     #0表示允许,1表示禁止
sysctl -p                                                       #重新加载内核参数

在客户端ping服务器就会出现请求超时

临时设置禁止ping :

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all              #0表示允许,1表示禁止

还原,使Linux服务器能ping,删除 /etc/sysctl.conf 下刚才添加的那行 net.ipv4.icmp_echo_ignore_all=1 ,vim /proc/sys/net/ipv4/icmp_echo_ignore_all 改为0

以上这样禁止ping并不是最优的方案,实际生产环境中最常用的做法是通过防火墙来设置让指定的IP可以ping,如下:
iptables -t filter -I INPUT -p icmp --icmp-type 8 -s 192.168.0.0/24 -j ACCEPT

如何优化及安全设置Linux系统相关推荐

  1. 使用SecureCRT设置linux系统登录的ssh公钥认证

    使用SecureCRT设置linux系统登录的ssh公钥认证 linux系统环境:CentOS 5.8 1.修改ssh配置文件/etc/ssh/sshd_config RSAAuthenticatio ...

  2. Problem 64 如何设置Linux系统内存回收的阀值?

    Problem 64 如何设置Linux系统内存回收的阀值? Ans: Linux内核的策略是最大程度的利用内存cache 文件系统的数据,提高IO速度,虽然在机制上是有进程需要更大的内存时,会自动释 ...

  3. 设置Linux系统的开机画面和登录画面

    首先,说明一下开机画面和登录画面的区别. 开机画面是Linux开机后在虚拟机上显示的画面. 登录画面是用远程连接工具,比如Xshell,连接Linux系统后,Xshell上显示的画面. 以上是本人虚拟 ...

  4. linux锁定系统时间设置,设置linux系统时间的方法

    尝试了好多,都是因为权限问题失败,但是总结出了几种思路: 1 通过linux指令进行设置: date -s "20091112 18:30:50" &&hwcloc ...

  5. 如何在高并下设置Linux系统及kernel参数

    众所周知在默认参数情况下Linux对高并发支持并不好,主要受限于单进程最大打开文件数限制.内核TCP参数方面和IO事件分配机制等.下面就从几方面来调整使Linux系统能够支持高并发环境. iptabl ...

  6. java linux 时区_java同步/设置Linux系统时间

    java设置/同步Linux系统时间 在网上看了很多,试了很多,不知道是他们的环境不同还是啥原因,很少成功 下面我就把我的测试成功的代码贴出来,让同行们少走弯路,如果实验不成功,可以给我留言 我帮助你 ...

  7. Linux 目录所属组设置,Linux系统用户与组管理命令及配置文件总结

    一.Linux系统用户及组分类 1.用户类别 Linux系统中的用户大致可分为三类:root用户.系统用户.普通用户.每一个用户都拥有一个唯一的身份标识UID. 2.组分类 与用户信息对应的,Linu ...

  8. linux 临时文件夹设置,Linux 系统 tmp 目录的安全设置

    在Linux系统中,至少有两个目录保存着系统的临时文件,一个就是 /tmp,另外一个是 /var/tmp.这两个目录有一个共同点就是所有用户在该目录下拥有可读写,可执行的权限,参考截图: 因为两个目录 ...

  9. c语言linux系统时间,【整理】C语言设置Linux系统时间 | 勤奋的小青蛙

    今晚完成一个小功能,C语言设置下Linux系统时间.代码如下: #include #include #include #include using namespace std; using std:: ...

  10. 怎么设置linux系统定时关机,Linux系统定时关机

    Linux系统定时关机 shutdown命令关机 各参数功能: -c 取消前一个shutdown命令. -f 重新启动时不执行fsck(注:fsck是Linux下的一个检查和修复文件系统的程序). - ...

最新文章

  1. 机器学习笔记:反向传播
  2. 今日的你,上班了吗?
  3. XML基本知识(三)
  4. python矩阵赋值提高速度_Numpy大规模矩阵运算优化加速技巧
  5. C++面向对象高级编程(上) 第一周笔记 GeekBand
  6. 提高信息技术课堂教学实效研究 课题论证报告
  7. 思考怎么成为一名合格的技术总监?
  8. chmod u+s权限理解
  9. 航空中的QNH QNE QFE分别都是什么
  10. Python 实现 双人五子棋对局
  11. linux音源管理 二维表,Oracle【二维表管理:约束】
  12. 乔布斯的简历120万被拍卖,HR看了想打人……
  13. java开源论坛学习(一)
  14. laravel开源php棋牌,Simpla: Simpla 是基于 Laravel 的 PHP 框架进行开发的一款开源免费的内容管理系统(CMS)...
  15. 触摸IC TTP229学习笔记
  16. 树莓派OMV-NAS-docker下载机
  17. 报错解决:selenium.common.exceptions.WebDriverException: Message: An unknown server-side error
  18. Web前端期末大作业-生活服务平台购物商城模板html源码(HTML+CSS)
  19. java桌面日历系统的设计与实现
  20. Ubuntu16.04、22.04下xfce中使用expect在su时免密码输入切换到root账户

热门文章

  1. java+log日志实例_java.util.log,使用3个不同的记录器实例/日志文件,获得.1.2等
  2. Redis 的操作为什么是的原子性的详解
  3. springboot过滤器配置
  4. [BZOJ4872][六省联考2017]分手是祝愿(期望DP)
  5. BUPT复试专题—密码(2009)
  6. Mac下命令行发邮件【搭配php(shell_exec...)等脚本语言,轻松发邮件,告别各种依赖库】...
  7. 系统设计2:数据库设计
  8. apache恢复服务器文件,apache服务器的配置文件是
  9. 为什么我创建了一个计算机用户名 再打开计算机时 我打不开以前的文件,电脑中office文件无法打开的三种解决方法...
  10. Netty自带的心跳机制——IdleStateHandler