Linux Kernel /etc/sysctl.conf Security Hardening

 

  
  
  
  
  1. How do I set advanced security options of the TCP/IP stack and virtual memory to improve security and performance of my system? How do I configure Linux kernel to prevent certain kinds of attacks using /etc/sysctl.conf? How do I set Linux kernel parameters? 
  2.  
  3. 怎样设置 TCP/IP 堆栈和虚拟内存的高级的安全选项,以提高我的系统的安全性和性能?如何配置以防止某些类型的攻击,使用 /etc/sysctl.conf 的 Linux 内核?如何设置 Linux 内核参数? 
  4.  
  5. sysctl is an interface that allows you to make changes to a running Linux kernel. With /etc/sysctl.conf you can configure various Linux networking and system settings such as: 
  6.  
  7. Limit network-transmitted configuration for IPv4 
  8. Limit network-transmitted configuration for IPv6 
  9. Turn on execshield protection 
  10. Prevent against the common ‘syn flood attack’ 
  11. Turn on source IP address verification 
  12. Prevents a cracker from using a spoofing attack against the IP address of the server. 
  13. Logs several types of suspicious packets, such as spoofed packets, source-routed packets, and redirects. 
  14.  
  15. sysctl 是允许您更改运行的 Linux 内核的一个借口。通过 /etc/sysctl.conf,您可以配置各种 Linux 网络和系统设置,如: 
  16.  
  17. 限制 IPv4 的网络传输配置 
  18. 限制 IPv6 的网络传输配置 
  19. 打开 execshield 保护 
  20. 防止常见 syn 洪水攻击 
  21. 打开源 IP 地址验证 
  22. 可以防止骇客使用服务器的 IP 地址欺骗攻击。 
  23. 记录几种类型的可疑的数据包,如伪造的数据包,源路由的数据包和重定向。 
  24. sysctl command 
  25.  
  26. The sysctl command is used to modify kernel parameters at runtime. /etc/sysctl.conf is a text file containing sysctl values to be read in and set by sysct at boot time. To view current values, enter: 
  27. # sysctl -a 
  28. # sysctl -A 
  29. # sysctl mib 
  30. # sysctl net.ipv4.conf.all.rp_filter 
  31.  
  32.   
  33.  
  34. To load settings, enter: 
  35. # sysctl -p 
  36. Sample /etc/sysctl.conf 
  37.  
  38. Edit /etc/sysctl.conf and update it as follows. The file is documented with comments. However, I recommend reading the official Linux kernel sysctl tuning help file (see below): 
  39.  
  40. # The following is suitable for dedicated web server, mail, ftp server etc. 
  41. # ————————————— 
  42. # BOOLEAN Values: 
  43. # a) 0 (zero) – disabled / no / false 
  44. # b) Non zero – enabled / yes / true 
  45. # ————————————– 
  46. # Controls IP packet forwarding 
  47. net.ipv4.ip_forward = 0 
  48.  
  49. # Controls source route verification 
  50. net.ipv4.conf.default.rp_filter = 1 
  51.  
  52. # Do not accept source routing 
  53. net.ipv4.conf.default.accept_source_route = 0 
  54.  
  55. # Controls the System Request debugging functionality of the kernel 
  56. kernel.sysrq = 0 
  57.  
  58. # Controls whether core dumps will append the PID to the core filename 
  59. # Useful for debugging multi-threaded applications 
  60. kernel.core_uses_pid = 1 
  61.  
  62. # Controls the use of TCP syncookies 
  63. #net.ipv4.tcp_syncookies = 1 
  64. net.ipv4.tcp_synack_retries = 2 
  65.  
  66. ########## IPv4 networking start ############## 
  67. # Send redirects, if router, but this is just server 
  68. net.ipv4.conf.all.send_redirects = 0 
  69. net.ipv4.conf.default.send_redirects = 0 
  70.  
  71. # Accept packets with SRR option? No 
  72. net.ipv4.conf.all.accept_source_route = 0 
  73.  
  74. # Accept Redirects? No, this is not router 
  75. net.ipv4.conf.all.accept_redirects = 0 
  76. net.ipv4.conf.all.secure_redirects = 0 
  77.  
  78. # Log packets with impossible addresses to kernel log? yes 
  79. net.ipv4.conf.all.log_martians = 1 
  80. net.ipv4.conf.default.accept_source_route = 0 
  81. net.ipv4.conf.default.accept_redirects = 0 
  82. net.ipv4.conf.default.secure_redirects = 0 
  83.  
  84. # Ignore all ICMP ECHO and TIMESTAMP requests sent to it via broadcast/multicast 
  85. net.ipv4.icmp_echo_ignore_broadcasts = 1 
  86.  
  87. # Prevent against the common ‘syn flood attack’ 
  88. net.ipv4.tcp_syncookies = 1 
  89.  
  90. # Enable source validation by reversed path, as specified in RFC1812 
  91. net.ipv4.conf.all.rp_filter = 1 
  92. net.ipv4.conf.default.rp_filter = 1 
  93.  
  94. ########## IPv6 networking start ############## 
  95. # Number of Router Solicitations to send until assuming no routers are present. 
  96. # This is host and not router 
  97. net.ipv6.conf.default.router_solicitations = 0 
  98.  
  99. # Accept Router Preference in RA? 
  100. net.ipv6.conf.default.accept_ra_rtr_pref = 0 
  101.  
  102. # Learn Prefix Information in Router Advertisement 
  103. net.ipv6.conf.default.accept_ra_pinfo = 0 
  104.  
  105. # Setting controls whether the system will accept Hop Limit settings from a router advertisement 
  106. net.ipv6.conf.default.accept_ra_defrtr = 0 
  107.  
  108. #router advertisements can cause the system to assign a global unicast address to an interface 
  109. net.ipv6.conf.default.autoconf = 0 
  110.  
  111. #how many neighbor solicitations to send out per address? 
  112. net.ipv6.conf.default.dad_transmits = 0 
  113.  
  114. # How many global unicast IPv6 addresses can be assigned to each interface? 
  115. net.ipv6.conf.default.max_addresses = 1 
  116.  
  117. ########## IPv6 networking ends ############## 
  118.  
  119. #Enable ExecShield protection 
  120. kernel.exec-shield = 1 
  121. kernel.randomize_va_space = 1 
  122.  
  123. # TCP and memory optimization 
  124. # increase TCP max buffer size setable using setsockopt() 
  125. #net.ipv4.tcp_rmem = 4096 87380 8388608 
  126. #net.ipv4.tcp_wmem = 4096 87380 8388608 
  127.  
  128. # increase Linux auto tuning TCP buffer limits 
  129. #net.core.rmem_max = 8388608 
  130. #net.core.wmem_max = 8388608 
  131. #net.core.netdev_max_backlog = 5000 
  132. #net.ipv4.tcp_window_scaling = 1 
  133.  
  134. # increase system file descriptor limit 
  135. fs.file-max = 65535 
  136.  
  137. #Allow for more PIDs 
  138. kernel.pid_max = 65536 
  139.  
  140. #Increase system IP port limits 
  141. net.ipv4.ip_local_port_range = 2000 65000 
  142.  
  143. This entry was posted in 内核参数, 系统性能 and tagged Iptables, systcl. Bookmark the permalink. 

 

  
  
  
  
  1. Sysctl是一个允许您改变正在运行中的Linux系统的接口。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项,这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。基于这 点,sysctl提供两个功能:读取和修改系统设置。vim /etc/sysctl.conf 
  2.  
  3. kernel.shmall = 268435456 
  4.  
  5. net.ipv4.tcp_syncookies = 1 
  6.  
  7. net.ipv4.tcp_tw_reuse = 1 
  8.  
  9. net.ipv4.tcp_tw_recycle = 1 
  10.  
  11. net.ipv4.tcp_fin_timeout = 30 
  12.  
  13. net.ipv4.tcp_keepalive_time = 1200 
  14.  
  15. net.ipv4.ip_local_port_range = 1024 65000 
  16.  
  17. net.ipv4.tcp_max_tw_buckets = 5000 
  18.  
  19. net.ipv4.tcp_max_tw_buckets = 5000 
  20.  
  21. net.ipv4.tcp_fin_timeout = 30 
  22.  
  23. net.ipv4.tcp_keepalive_time = 300 
  24.  
  25. net.ipv4.tcp_syncookies = 1 
  26.  
  27. net.ipv4.tcp_tw_reuse = 1 
  28.  
  29. net.ipv4.tcp_tw_recycle = 1 
  30.  
  31. net.ipv4.ip_local_port_range = 5000 65000 
  32.  
  33. net.ipv4.tcp_mem = 786432 1048576 1572864 
  34.  
  35. net.core.wmem_max = 873200 
  36.  
  37. net.core.rmem_max = 873200 
  38.  
  39. net.ipv4.tcp_wmem = 8192 436600 873200 
  40.  
  41. net.ipv4.tcp_rmem = 32768 436600 873200 
  42.  
  43. net.core.somaxconn = 256 
  44.  
  45. net.core.netdev_max_backlog = 1000 
  46.  
  47. net.ipv4.tcp_max_syn_backlog = 2048 
  48.  
  49. net.ipv4.tcp_retries2 = 5 
  50.  
  51. net.ipv4.tcp_keepalive_time = 500 
  52.  
  53. net.ipv4.tcp_keepalive_intvl = 30 
  54.  
  55. net.ipv4.tcp_keepalive_probes = 3 
  56.  
  57. net.ipv4.conf.lo.arp_ignore = 0 
  58.  
  59. net.ipv4.conf.lo.arp_announce = 0 
  60.  
  61. net.ipv4.conf.all.arp_ignore = 0 
  62.  
  63. net.ipv4.conf.all.arp_announce = 0 
  64.  
  65. 几个解释: 
  66.  
  67. net.ipv4.tcp_syncookies = 1 
  68.  
  69. #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; 
  70.  
  71. net.ipv4.tcp_tw_reuse = 1 
  72.  
  73. #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; 
  74.  
  75. net.ipv4.tcp_tw_recycle = 1 
  76.  
  77. #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。 
  78.  
  79. net.ipv4.tcp_fin_timeout = 30 
  80.  
  81. #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。 
  82.  
  83. net.ipv4.tcp_keepalive_time = 1200 
  84.  
  85. #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。 
  86.  
  87. net.ipv4.ip_local_port_range = 1024 65000 
  88.  
  89. #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。 
  90.  
  91. net.ipv4.tcp_max_tw_buckets = 5000 
  92.  
  93. #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字, 
  94.  
  95. #TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。 
  96.  
  97. #对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量, 
  98.  
  99. #但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。 

 

你可能感兴趣的:(linux,Security,kernel,etc,sysctl.conf,Hardening)