拿到一个新的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. Reading Task 2 —— by12061154Joy

    关于Silver Bullet: Brooks在“No Silver Bullet”主张并断言在未来的十年之内(从1986年文章发表后开始计算),不会有任何单一的软件工程上的突破,能够让程序设计的生产 ...

  2. C#【结对编程作业】小学数学习题助手

    一.软件成品展示 软件本体下载(包括程序及其更新日志,源码工程包,UML图,API接口文档,算法介绍文档,算式计算excel实例,浅查重程序) 链接: http://pan.baidu.com/s/1 ...

  3. linux内核分析第六周学习笔记

    LINUX内核分析第六周学习总结 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.c ...

  4. (Alpha)Let's-M1后分析报告

    Chronos团队Let's项目 Postmortem结果 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 在最初的用户需求和市场调研方面,团队进 ...

  5. python 协程库gevent学习--gevent数据结构及实战(四)

    一不留神已经到第四部分了,这一部分继续总结数据结构和常用的gevent类,废话不多说继续. 1.Timeout错误类 晚上在调试调用第三方接口的时候,发现有些接口耗时非常多,觉得应该有个超时接口来限制 ...

  6. [转]ubuntu ssh登陆显示系统信息

    Welcome to Ubuntu LTS (GNU/Linux --generic i686) * Documentation: https://help.ubuntu.com/ System in ...

  7. Ideal test 不执行main方法了

    参考:idea 导入项目后不能执行main方法 用了ideal之后,发现自己的项目里面没有test文件夹,自己建了一个,发现竟然不能执行main函数, 后来经过点播之后,才知道,光建立文件夹是没用的, ...

  8. Maven 3-Maven依赖版本冲突的分析及解决小结

    我自己遇到了一个问题: 我需要使用一个api,这个api已经引入包:slf4j-log4j12 所以,在自己的pom中,如果引入了这个包,需要exclude掉: 因为在pom.xml中查询是找不到的, ...

  9. python之itemgetter函数:对字典列表进行多键排序

    itemgetter函数:对字典列表进行多键排序 from operator import itemgetter list_people = [ {'name': 'Mike', 'age': 22, ...

  10. codeforces710B

    Optimal Point on a Line CodeForces - 710B You are given n points on a line with their coordinates xi ...