拿到一个新的linux系统需要做的安全和内核优化,主要是为了提升系统安全和提升性能,满足后续的应用需要。这里简单记录一下拿到一个新的系统需要做的一些事情,仅此抛砖引玉,具体可根据自己实际情况进行设置。

一,入口安全优化。
毫无疑问,我们拿到以后登录做的第一件事便于入口的安全优化,相信做运维的基本都可以理解:最小的权限就是最大的安全。主要优化ssh入口。比如:
(1)ssh配置优化。修改之前,需要将/etc/ssh/sshd_config备份一个,比如/etc/ssh/sshd_config.old, 主要优化如下参数:

  1. Port 12011
  2. PermitRootLogin no
  3. UseDNS no
  4. #防止ssh客户端超时#
  5. ClientAliveInterval 30
  6. ClientAliveCountMax 99
  7. GSSAuthentication no

主要目的更改ssh远程端口、禁用root远程登录(本地还是可以root登录的)、禁用dns、防止ssh超时、解决ssh慢,当然也可以启用密钥登录,这个根据公司需求。
注意:修改以后需重启ssh生效,另外需要iptables放行最新ssh端口。

(2)iptables优化。原则:用到哪些放行哪些,不用的一律禁止。
建议模板可以参考《线上centos linux服务器iptables防火墙简易配置模板》。
举下简单的例子:敏感服务比如mysql这种3306控制,默认禁止远程,确实有必要可以放行自己指定IP连接或者通过vpn拨号做跳板连接,不可直接放置于公网; 如单位有自己的公网IP或固定IP,那只允许自己的公网IP进行连接ssh或者指定服务端口就更好了。

二,用户权限以及系统安全优化。

(1)非root用户添加以及sudo权限控制。通过groupadd 以及useradd建立普通用户以后,需要配置对应的sudo权限,授权不同登录人员的可执行命令权限。此时建议普通用户禁止sudo su -切换root的权限。

sudo控制可以参考《通过shell脚本实现批量添加用户和设置随机密码以及生产环境如何批量添加》,这里也只是抛砖引玉,具体权限可以根据自己公司实际情况进行权限分配。一般是root都在管理人员手中,而运维或者开发都划分其他对应权限,但建议都不能切换root,同时取消useradd、userdel、passwd以及chattr命令的授权。
比较大的sudo权限分配:

  1. username ALL=NOPASSWD:ALL,!/usr/bin/passwd,/usr/bin/passwd[a-zA-Z]*,!/usr/bin/passwd root

(2)用户配置文件锁定。针对/etc/passwd  、/etc/shadow 、/etc/group和/etc/gshadow进行chattr +i保护,进一步提供系统用户管理安全。
操作办法:

  1. [root@21yunwei ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow

需要进行用户管理的时候,以root身份进行chattr -i取消保护即可。

(3)服务控制。默认无关服务都禁止运行并chkconfig xxx off,只保留有用服务。这种如果是云计算厂商提供的,一般都是优化过。如果是自己安装的虚拟机或者托管的机器,那就需要优化下,默认只保留network、sshd、iptables、crond、以及rsyslog等必要服务,一些无关紧要的服务就可以off掉了,比如我自己的博客的服务器记录是这样保留服务的:

  1. for service in `chkconfig --list | grep "3:on" |awk '{print $1}' | grep -Ev "sshd|crond|nginxd|network|mysqld|php-fpm|rsyslog|iptables|zabbix-agent|salt-minion"` ;do chkconfig $service off ;done

这是根据系统当前,后期的服务的运行建议以非root、非bash用户运行,比如常见的nginx、tomcat、mysql等等,避免某一个服务被黑导致整个系统被黑掉。
(4)主机名更改以及selinux优化。ssh登录以后,势必会看到主机名,这个主机名建议根据业务需要进行命名,这个命名同时也方便于我们后续的监控自动添加以及saltstack等批量化管理有帮助。
另外部分厂商提供的服务器selinux不一致,有很多开启的,建议关闭,否则影响个别正常使用,比如安装zabbix-agent以后会提示权限失败。操作方法:
修改/etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled后重启机器即可。可以参考文章《linux如何查看 SELinux状态及关闭SELinux

三,内核参数优化。

(1) 进程级文件以及系统级文件句柄数量参数优化。 默认ulinit -n看到的是1024,这种如果系统文件开销量非常大,那么就会遇到各种报错比如:
localhost kernel: VFS: file-max limit 65535 reached 或者too many open files  等等,那就是文件句柄打开数量已经超过系统限制,就需要优化了。

1,这个参数我们进程级优化文件如下:
vim /etc/security/limits.conf

  1. # End of file
  2. * soft nofile 65535
  3. * hard nofile 65535
  4. * soft nproc 65535
  5. * hard nproc 65535

好了,退出当前终端以后重新登录可以看到ulimit -n已经改成了65535。另外需要注意,进程级参数优化还需要修改文件:
/etc/security/limits.d/90-nproc.conf 这个会影响到参数。查看某一个进程的limits可以通过cat  /proc/pid/limits查看。默认这个文件参数推荐设置:

  1. [root@21yunwei 9001]# cat /etc/security/limits.d/90-nproc.conf
  2. * soft nproc 65535
  3. root soft nproc unlimited

2,系统级文件句柄优化,修改/etc/sysctl.conf添加如下参数:

  1. fs.file-max=65535

(2)内核参数优化(这个是非常重要的)。具体优化的文件为/etc/sysctl.conf,后尾追加优化参数:

  1. net.ipv4.neigh.default.gc_stale_time=120
  2. net.ipv4.conf.all.rp_filter=0
  3. net.ipv4.conf.default.rp_filter=0
  4. net.ipv4.conf.default.arp_announce = 2
  5. net.ipv4.conf.all.arp_announce=2
  6. net.ipv4.tcp_max_tw_buckets = 6000
  7. net.ipv4.tcp_syncookies = 1
  8. net.ipv4.tcp_max_syn_backlog = 262144
  9. net.core.netdev_max_backlog = 32768
  10. net.core.somaxconn = 32768
  11. net.core.wmem_default = 8388608
  12. net.core.rmem_default = 8388608
  13. net.core.rmem_max = 16777216
  14. net.core.wmem_max = 16777216
  15. net.ipv4.tcp_synack_retries = 2
  16. net.ipv4.conf.lo.arp_announce=2
  17. net.ipv4.tcp_timestamps = 0
  18. net.ipv4.tcp_synack_retries = 1
  19. net.ipv4.tcp_syn_retries = 1
  20. net.ipv4.tcp_tw_recycle = 1
  21. net.ipv4.tcp_tw_reuse = 1
  22. net.ipv4.tcp_mem = 94500000 915000000 927000000
  23. net.ipv4.tcp_fin_timeout = 1
  24. net.ipv4.tcp_keepalive_time = 600
  25. net.ipv4.ip_local_port_range = 1024 65000
  26. fs.file-max=65535

设置完以后执行命令sysctl  -p使得配置新配置的内核参数生效。这个内核对系统本身安全以及高并发都非常的有效(可以解决大量TIME_WAIT带来的无法访问使用、系统文件句柄数量超出等等)。

核心优化基本就这么多,其他的优化诸如dns修改、yum源以及字符集之类的,一般用户本地虚拟机机器或者托管的机器拿到做优化,像阿里ECS、aws的EC2等,基本都没必要做这些了。

Linux新系统的安全优化和内核参数优化的更多相关文章

  1. linux下TCP/IP及内核参数优化调优(转)

    Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...

  2. Linux(Centos )的网络内核参数优化来提高服务器并发处理能力【转】

    简介 提高服务器性能有很多方法,比如划分图片服务器,主从数据库服务器,和网站服务器在服务器.但是硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题 ...

  3. Linux 内核参数 优化

    Linux 内核参数 优化 目录 Linux 内核参数 优化 1.编辑内核配置文件 2.参数及简单说明 3.客户端的典型状态转移参数 4.TCP重传参数 5.实现Nginx高并发的内核参数优化 生效配 ...

  4. [效果不错] nginx 高并发参数配置及linux内核参数优化,完整的内核优化设置。PHP-FPM高负载解决办法。

    背景:对vps小资源的实践中对,https://justwinit.cn/post/7536/ 的再优化,再实践,再优化,特别是Nginx,PHP,内核: 零)Nginx: error_log /da ...

  5. TCP三次握手与Linux的TCP内核参数优化

    感谢各位技术大佬的资料分享,这里我把我理解的内容做一个整理 一:TCP的三次握手 1.TCP简述 TCP是一个面向连接的协议,在连接双方发送数据之前,首先需要建立一条连接.TCP建立连接可以简单称为: ...

  6. 内核参数优化/etc/sysctl.conf

    net.nf_conntrack_max = 65536000net.netfilter.nf_conntrack_tcp_timeout_established = 1200net.ipv4.tcp ...

  7. TCP/IP及内核参数优化调优

    Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等.如下配置是写在sysctl.conf ...

  8. TCP/IP及内核参数优化调优(转)

    Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等.如下配置是写在sysctl.conf ...

  9. Centos内核参数优化

    关于内核参数优化 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.ip_local_port_range = 1024 65000  net.ipv4.tcp_ ...

随机推荐

  1. B. Equations of Mathematical Magic

    思路 打表找规律,发现结果是,2的(a二进制位为1总数)次方 代码 #include<bits/stdc++.h> using namespace std; #define ll long ...

  2. Echo团队便利记事本项目终审报告

    一.团队成员简介 http://www.cnblogs.com/echo-buaa/p/3991968.html 二.团队项目的目标,预期的典型用户,预期的功能描述,预期的用户数量在哪里? 项目的目标 ...

  3. M2事后总结

    照片     设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? "北航"Clubs旨在于解决北航校内社团管理与学生参与社团活动的困难的 ...

  4. LINUX内核分析第八周总结:进程的切换和系统的一般执行过程

    一.进程调度与进程切换 1.不同的进程有不同的调度需求 第一种分类: I/O密集型(I/O-bound) 频繁的进行I/O 通常会花费很多时间等待I/O操作的完成 CPU密集型(CPU-bound) ...

  5. 第三个Sprint冲刺第九天(燃尽图)

  6. 06-java学习-方法的学习

    方法定义 方法类型 方法涉及的知识: 修饰符.返回类型,命名规则,参数列表 方法常见错误 方法概念的深入理解 为什么会有方法? 方法帮助解决哪些问题? 方法可以简化复杂问题的解决

  7. debug网页时小问题The source attachment does not contain the source for the file

    第一次debug总是出现下图问题,提示我没加源码... The source attachment does not contain the source for the file ... 解决方法: ...

  8. Qt__绘制系统

    Qt绘制系统简介 Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制.整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类. QPaint ...

  9. HTTP协议整理

    一.概念 1.HTTP协议:即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和Web服务器之间互相通信的规则,它允许将超文本标记语言(HTML)文档从 ...

  10. MyBatis是如何解决Sql注入的

    转:[转]mybatis如何防止sql注入 java中预处理PrepareStatement为什么能起到防止SQL注入的作用??!! 一.SQL注入 sql注入大家都不陌生,是一种常见的攻击方式,攻击 ...