在寻找更多保护 Linux 服务器的方法时,我发现了以下/etc/sysctl.conf
配置。它按原样提供,没有太多解释。在生产环境中使用它(使用 Ubuntu 12.04 LTS)之前,我想知道它在 Web 服务器上的影响。
# Avoid a smurf attack
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Turn on protection for bad icmp error messages
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Turn on syncookies for SYN flood attack protection
net.ipv4.tcp_syncookies = 1
# Turn on and log spoofed, source routed, and redirect packets
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
# No source routed packets here
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Turn on reverse path filtering
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Make sure no one can alter the routing tables
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
# Don't act as a router
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# Turn on execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# Tune IPv6
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1
- 什么是 smurf 攻击?
- 为什么糟糕的 icmp 错误消息是糟糕的?换句话说,禁用此功能有什么好处?
- 什么是 syncookies 或 SYN 洪水攻击?
- 为什么要打开并记录欺骗、源路由和重定向数据包?为什么重定向和源路由数据包是不好的?
- 什么是反向路径过滤?
- execshild 和 randomize_va_space 是什么?
- 总体而言,您是否想为您的服务器添加更多设置或删除一些设置?为什么?
如果有人能对这里的每个设置给出解释(或提供资源来解释),我们将非常感激。
更新:
我发现此文档对于理解 IP 相关设置非常有帮助:http://www.frozentux.net/ipsysctl-tutorial/ipsysctl-tutorial.html
答案1
smurf 攻击是指某人向广播地址发送数据包(通常使用欺骗源),以诱骗您发送大量回复。
错误消息会堵塞您的日志。忽略它们可使日志保持整洁。无论如何,您都无法修复互联网。
SYN 洪水攻击是指攻击者使用大量 TCP 连接请求攻击服务器。其目的是消耗服务器的内存,迫使其跟踪所有连接请求。SYN cookie 允许服务器在不使用任何内存的情况下处理连接请求。
源路由数据包是有害的,因为它们可能被外部人员利用,导致您的内部网络策略被忽略或违反。记录欺骗、源路由或重定向数据包是有意义的,因为与不良 ICMP 错误消息不同,这些数据包通常表示有人故意为之,而不是配置错误或路由器损坏。
如果数据包是在你不会用来向该源发送数据包的接口上接收的,则反向路径过滤会导致路由器丢弃该数据包。就我个人而言,我总是禁用它。根据我的经验,它造成的问题比它解决的问题多得多,例如破坏 IP 多路径。