如何使用/etc/sysctl.conf进行Linux内核安全性强化
Sysctl是一个强大的Linux命令,它充当动态更改内核参数的接口。
在此命令的帮助下,我们可以在不重新编译内核或者重新启动计算机的情况下修改内核参数。
可以在/proc/sys目录下找到可用于修改的参数。
因此,procfs(文件系统仿真通过文件系统能够与内核通信)是"sysctl"的。
只有超级用户(root)可以执行此命令。
使用sysctl命令进行内核参数修改
可以临时或者永久修改内核参数。
临时修改内核参数是:
1.阅读当前的内核参数,
sysctl -a
2.使用'-w'切换将值写入变量:
例子:
sysctl –w net.ipv4.icmp_echo_ignore_all=1
此命令将指示服务器忽略ICMP数据包(Ping请求)。
值'0'表示'关闭'和'1'表示'开'。
这些更改是临时的,并将在重新启动时重置。
对内核参数的永久修改
一种。直接修改procfs中的值
我们可以直接修改procfs(/proc/sys目录)中的文件以更改内核参数。
例子:
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
上面的命令将禁用ICMP数据包。
湾修改配置文件/etc/sysctl.conf
这是改变内核参数的最推荐的方法。
我们需要将以下行添加到/etc/sysctl.conf for ICMP数据包过滤。
net.ipv4.icmp_echo_ignore_all = 1
修改Sysctl配置文件后,我们需要执行以下命令以从文件/etc/sysctl.conf文件加载sysctl设置。
sysctl -p
使用SYSCTL的安全性和性能调整
1.控制IP数据包转发
只有在充当路由器或者网关的服务器上只需要启用IP数据包转发。
在所有其他服务器中,需要禁用此功能。
net.ipv4.ip_forward = 0
2.源地址验证
这种"理智检查"有助于避免欺骗攻击。
net.ipv4.conf.all.rp_filter = 1
3.启用ExecShield Protection
ExecShield是一个安全Linux内核补丁,以避免蠕虫和其他问题。
将以下行添加到/etc/sysctl.conf以启用ExecShield保护。
kernel.exec-shield = 1 kernel.randomize_va_space = 1
4. SYN防洪
在此攻击中,系统被一系列SYN数据包淹没。
每个数据包都会导致系统发出SYN-ACK响应。
然后,系统等待遵循SYN + ACK(3 WAID握手)的ACK。
由于攻击再次从未发送回ACK,因此整个系统资源都会填充AKA Backlog队列。
一旦队列完整系统,将忽略来自合法用户的传入请求(http/mail等)。
要停止此操作,我们需要在Sysctl.conf中启用Syncookies。
net.ipv4.tcp_syncookies = 1
5.防止SMURF攻击
SMURF攻击是对互联网协议(IP)广播寻址的利用,以创建拒绝服务。
SMURF程序构建了一个似乎源自另一个地址的网络数据包(这称为欺骗IP地址)。
该数据包包含一个ICMP Ping消息,其被寻址到IP广播地址,即给定网络中的所有IP地址。
对Ping消息的回声响应被发送回"受害者"地址。
足够的乒乓和产生的回声可以泛滥网络使其无法使用真正的交通。
击败偷窥的一种方法是禁用IP广播寻址。
net.ipv4.icmp_echo_ignore_broadcasts = 1
6.记录所有martian数据包
Martian Packet是一个IP数据包,用于指定用于由Internet分配的号码权限(IANA)的特殊用途保留的源或者目的地地址,无法实际起源于声明或者交付。
Martian数据包通常来自IP地址欺骗拒绝服务攻击,
net.ipv4.conf.all.log_martians = 1