Linux内核/etc/sysctl.conf安全加固
时间:2020-01-09 10:41:41 来源:igfitidea点击:
如何设置TCP/IP堆栈和虚拟内存的高级安全性选项,以提高基于Linux的系统的安全性和性能?
如何使用/etc/sysctl.conf配置Linux内核以防止某些类型的攻击?
如何设置Linux内核参数?
sysctl是允许您更改正在运行的Linux内核的接口。
使用/etc/sysctl.conf,您可以配置各种Linux网络和系统设置,例如:
- 限制网络传输的IPv4配置
- 限制IPv6的网络传输配置
- 开启execshield保护
- 防止常见的Syn Flood攻击
- 打开源IP地址验证
- 防止黑客对服务器的IP地址使用欺骗攻击。
- 记录几种类型的可疑数据包,例如欺骗性数据包,源路由数据包和重定向。
Linux内核/etc/sysctl.conf使用sysctl加强安全性
sysctl命令用于在运行时修改内核参数。
/etc/sysctl.conf是一个文本文件,其中包含要在引导时由sysct读取和设置的sysctl值。
要查看当前值,请执行:
# sysctl -a # sysctl -A # sysctl mib # sysctl net.ipv4.conf.all.rp_filter # sysctl -a --pattern 'net.ipv4.conf.(eth|wlan)0.arp'
要加载设置,请执行:
# sysctl -p
用于Linux服务器强化的示例/etc/sysctl.conf
编辑/etc/sysctl.conf或/etc/sysctl.d/99-custom.conf并进行如下更新。
该文件带有注释。
但是,我建议阅读官方的Linux内核sysctl调优帮助文件(如下所示):
# The following is suitable for dedicated web server, mail, ftp server etc. # -------------------------------------- # BOOLEAN Values: # a) 0 (zero) - disabled / no / false # b) Non zero - enabled / yes / true # ------------------------------------- # Controls IP packet forwarding net.ipv4.ip_forward = 0 # Do not accept source routing net.ipv4.conf.default.accept_source_route = 0 # Controls the System Request debugging functionality of the kernel kernel.sysrq = 0 # Controls whether core dumps will append the PID to the core filename # Useful for debugging multi-threaded applications kernel.core_uses_pid = 1 # Controls the use of TCP syncookies # Turn on SYN-flood protections net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_synack_retries = 5 ########## IPv4 networking start ############## # Send redirects, if router, but this is just server # So no routing allowed net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 # Accept packets with SRR option? No net.ipv4.conf.all.accept_source_route = 0 # Accept Redirects? No, this is not router net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 # Log packets with impossible addresses to kernel log? yes net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.secure_redirects = 0 # Ignore all ICMP ECHO and TIMESTAMP requests sent to it via broadcast/multicast net.ipv4.icmp_echo_ignore_broadcasts = 1 # Prevent against the common 'syn flood attack' net.ipv4.tcp_syncookies = 1 # Enable source validation by reversed path, as specified in RFC1812 net.ipv4.conf.all.rp_filter = 1 # Controls source route verification net.ipv4.conf.default.rp_filter = 1 ########## IPv6 networking start ############## # Number of Router Solicitations to send until assuming no routers are present. # This is host and not router net.ipv6.conf.default.router_solicitations = 0 # Accept Router Preference in RA? net.ipv6.conf.default.accept_ra_rtr_pref = 0 # Learn Prefix Information in Router Advertisement net.ipv6.conf.default.accept_ra_pinfo = 0 # Setting controls whether the system will accept Hop Limit settings from a router advertisement net.ipv6.conf.default.accept_ra_defrtr = 0 #router advertisements can cause the system to assign a global unicast address to an interface net.ipv6.conf.default.autoconf = 0 #how many neighbor solicitations to send out per address? net.ipv6.conf.default.dad_transmits = 0 # How many global unicast IPv6 addresses can be assigned to each interface? net.ipv6.conf.default.max_addresses = 1 ########## IPv6 networking ends ############## #Enable ExecShield protection #Set value to 1 or 2 (recommended) #kernel.exec-shield = 2 #kernel.randomize_va_space=2 # TCP and memory optimization # increase TCP max buffer size setable using setsockopt() #net.ipv4.tcp_rmem = 4096 87380 8388608 #net.ipv4.tcp_wmem = 4096 87380 8388608 # increase Linux auto tuning TCP buffer limits #net.core.rmem_max = 8388608 #net.core.wmem_max = 8388608 #net.core.netdev_max_backlog = 5000 #net.ipv4.tcp_window_scaling = 1 # increase system file descriptor limit fs.file-max = 65535 #Allow for more PIDs kernel.pid_max = 65536 #Increase system IP port limits net.ipv4.ip_local_port_range = 2000 65000 # RFC 1337 fix net.ipv4.tcp_rfc1337=1
内核崩溃后不久重新启动计算机
kernel.panic=10
mmap基本,堆,堆栈和VDSO页面的地址是随机的
kernel.randomize_va_space=2
忽略严重的ICMP错误
net.ipv4.icmp_ignore_bogus_error_responses=1
防止在某些情况下创建或跟踪链接
fs.protected_hardlinks=1 fs.protected_symlinks=1