Linux CentOS发行版机安全加固——网络方面

目录

一、SSH安全配置

使用SSH V2协议

修改SSH服务默认端口号

设置禁用SSH X11转发

设置SSH最大认证尝试次数

禁止root账户通过SSH登录系统

禁止空口令账户进行SSH登录:

设置SSH会话超时时间与次数

设置SSH会话身份验证时间

二、禁用不必要服务

关闭Avahi服务

禁用不必要的IPv6协议

限制USB使用

三、禁用IP转发功能

四、禁止数据包发送重定向

五、预防ICMP重定向攻击

六、预防源路由选择欺骗攻击

七、开启记录可疑数据包功能

八、预防SMURF攻击

九、预防SYN洪泛攻击

十、iptables防火墙配置

配置环回网络规则


一、SSH安全配置

SSH(Secure Shell)是一种网络安全协议是对常见登录服务(Telnet、ftp、rlogin、rsh、rcp)的安全加密替代服务,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。所以建议不要使用等不安全的明文登录协议,使用SSH防止会话被劫持和从网络嗅探敏感数据。

现在系统一般都自带SSH功能,但一些默认配置需要确认:

SSH支持两种不同且不兼容的协议:SSH V1和SSH V2。而SSH V1老版协议存在安全问题,包含一些漏洞,会话容易受到中间人攻击,SSH V2暂未有安全影响,建议检查主机SSH配置文件,确保使用SSH V2协议

使用SSH V2协议

编辑/etc/ssh/sshd_config文件,写入以下内容:

修改SSH服务默认端口号

在Linux中,默认的SSH端口号为22,应当修改默认端口防止攻击者通过端口扫描得知SSH端口进行攻击。

编辑/etc/ssh/sshd_config文件,写入以下内容:

更新防火墙配置:

添加用户自定义端口到服务:

若出现报错:ValueError: Port tcp/2222 already defined请更换其他未使用的端口

使用systemctl restart sshd命令重启SSH服务后发现原先22端口已经连接不上服务器:

切换到2222端口成功连接说明配置成功:


 

设置禁用SSH X11转发

SSH X11可以通过SSH连接并运行Linux主机上有GUI需要的服务,如显示某些图片的服务。使用SSH X11 Forwarding远程登陆X11服务器的用户可能会收到X11服务器上其他用户的攻击,风险存在但较小,若无使用X11的需求,建议禁用此功能。

同样编辑/etc/ssh/sshd_config文件,写入以下内容:

设置SSH最大认证尝试次数

MaxAuthTries参数指定每个连接的最大身份验证尝试次数,当验证失败次数达到一半时,错误信息将被详细写入syslog文件中,将其设置为合理值可以将暴力攻击SSH服务器的风险降到最低,建议设置为3到6之间。

同样编辑/etc/ssh/sshd_config文件,写入以下内容:

禁止root账户通过SSH登录系统

不允许root账户直接登录,必须强制系统管理员使用自己的账户进行登录,用sudo或su使用root权限可以记录下系统管理的操作日志,增加不可抵赖性,在发生安全事件时可以更方便进行审计。

同样编辑/etc/ssh/sshd_config文件,写入以下内容:

禁止空口令账户进行SSH登录:

禁止后可降低未授权用户对系统的访问。

同样编辑/etc/ssh/sshd_config文件,写入以下内容:

设置SSH会话超时时间与次数

不设置会导致用户忘记结束SSH会话后用户主机被其他未授权用户使用,建议将ClientAliveInterval设置为300到900(以秒为单位),即5到15分钟,将ClientAliveCountMax设置为0-3

同样编辑/etc/ssh/sshd_config文件,写入以下内容:

设置SSH会话身份验证时间

LoginGraceTime参数限制用户必须在指定的时间内认证成功,将值设置较低可以将暴力攻击SSH服务器的风险降到最低。

同样编辑/etc/ssh/sshd_config文件,写入以下内容:

编辑完所有参数后,使用systemctl restart sshd命令重启SSH服务即可生效。

二、禁用不必要服务

关闭Avahi服务

Avahi是一个用于多播DNS/DNS-SD服务发现的服务,服务器通常不需要此功能,建议禁止减少受攻击面

使用systemctl status avahi-daemon可以看到此功能默认开启:

运行systemctl disable avahi-daemon.service命令后重启系统即可:

禁用不必要的IPv6协议

如果没有使用IPv6的硬性要求,建议将服务器IPv6协议禁用掉,减小系统的被攻击面。

加固方式:

编辑/etc/default/grub文件,给GRUB_CMDLINE_LINUX变量添加“ipv6.disable=1”参数:

更新grub配置:

运行以下命令检查系统具有”ipv6.disable=1”的配置:

看到有”ipv6.disable=1”,说明配置成功。

同理,CUPS服务、NFS服务、RPC服务、FTP服务、DNS服务、Samba服务用不到的也建议关闭

限制USB使用

有必要的情况下可以限制用户在服务器物理机上使用USB设备,防止内部人员泄露数据

编辑/etc/modprobe.d/CIS.conf文件,写入以下内容:

用以下命令验证设置是否生效:

设置成功后,lsmod命令将无usb-storage

三、禁用IP转发功能

服务器主机有一个接口或者有多个接口向外提供服务,但服务器主机不充当路由器向外转发数据包,建议禁用此功能

运行以下命令设置活动内核参数生效并刷新路由缓存:

用以下命令进行检验:

四、禁止数据包发送重定向

攻击者可以使用受攻击的主机将无效的ICMP数据包重定向发送到其他路由器设备且试图破坏路由设备,并让用户访问攻击者设置的系统,而不是有效的系统。ICMP重定向用于向其他主机发送路由信息。由于主机本身不充当路由器,因此不需要发送重定向,建议关闭此功能。

加固方式:

在CentOS中ICMP数据包发送重定向功能默认开启,通过编辑/etc/sysctl.conf文件,添加参数关闭此功能:

配置完成后保存退出,运行以下命令设置活动内核参数生效:

最后刷新路由缓存:

刷新后就禁止ICMP数据包重定向功能了,不放心的话可以使用以下四条命令分别进行检测,验证内核参数激活和网络配置参数生效:

内核参数与网络参数的net.ipv4.conf.all.send_redirects、net.ipv4.conf.default.send_redirects值被设置为“0”表明ICMP数据包发送重定向功能被禁用。

五、预防ICMP重定向攻击

ICMP重定向用于优化路由策略,始终让主机的路由表保持最新最快的状态,这本身是一个对网络有益的机制。但是这个更改路由的ICMP重定向特殊报文是可以伪造的,并且不需要经过一些校验,合法性检查。也就是说攻击者完全可以向他向受害主机发送ICMP重定向报文,迫使受害主机更改路由表。ICMP重定向攻击的数据包甚至可以迫使主机更改路由为攻击者的主机,主机的流量会被攻击者所劫持,进而提取、分析、修改、重放主机的数据包,造成多种安全威胁。

加固方式:

编辑/etc/sysctl.conf文件,写入以下内容:

运行以下命令来设置活动内核参数生效并更新路由缓存:

用以下命令进行检测:

六、预防源路由选择欺骗攻击

源路由选择欺骗(Source Routing spoofing):在通常的数据包中(非源路由包)只包括源地址和目的地址,即路由只需知道一个数据包是从那来的要到那去,中间所经过的路径全由路由器决定。

而源路由包会在数据包中规定所要经过的路由。某些路由器对源路由包的反应是使用其指定的路由,并使用其反向路由来传送应答数据。这就会使一个攻击者可以假冒一个主机的名义通过一个特殊的路径来获得某些被保护数据,就如使用服务器提供的服务时,可以通过服务器的ip地址访问到与其相连接的私有地址系统,对内网进行攻击。

加固方式:

同样通过编辑/etc/sysctl.conf文件,添加参数让服务器拒绝接受源路由包:

配置完成后保存退出,运行以下命令设置活动内核参数生效:

最后刷新路由缓存:

用以下4条命令进行检测:

net.ipv4.conf.all.accept_source_route、net.ipv4.conf.default.accept_source_route都被设置为“0”,接受源路由包被禁用

七、开启记录可疑数据包功能

启用此功能后系统将记录收到的可疑数据包,将不是路由发送的源地址包记录到内核日志,后续服务器管理员可以对可疑数据包其进行查看,进行攻击溯源。

加固方法:

同样编辑/etc/sysctl.conf文件添加以下参数:

配置完成后保存退出,运行以下命令设置活动内核参数生效:

最后刷新路由缓存:

用以下4条命令进行验证:

八、预防SMURF攻击

SMURF攻击是一种基于ICMP(Internet Control Message Protocol)协议的拒绝服务(DoS)攻击。攻击者利用ICMP Echo Request报文的特性,通过伪造源IP地址向目标网络中的广播地址发送大量的Echo Request报文,导致目标网络被淹没,无法正常工作。

SMURF攻击利用了两个重要概念:IP地址欺骗和ICMP回应放大。攻击者首先伪造自己的源IP地址为目标网络中的广播地址,然后向该广播地址发送大量的Echo Request报文。由于广播地址会将报文转发给目标网络内的所有主机,这导致目标网络中的所有主机都会向攻击目标发送Echo Reply报文。当目标网络中有大量主机响应时,网络带宽和系统资源将被消耗殆尽,从而使得网络服务无法正常运行。

加固方法:

设置服务器禁止响应ICMP广播请求,将net.ipv4.icmp_echo_ignore_broadcast参数设置为1后,系统将忽略所有ICMP echo和时间戳请求来广播和多播地址。

设置活动内核参数生效,并刷新路由缓存:

运行以下指令进行检测:

九、预防SYN洪泛攻击

SYN泛洪攻击主要利用TCP三次握手机制的缺陷。A(攻击者)发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当这个服务器返回ACK以后,A不再进行确认,那这个连接就处在了一个挂起的状态,也就是半连接的意思,那么服务器收不到再确认的一个消息,还会重复发送ACK给A。这样一来就会更加浪费服务器的资源。A就对服务器发送非法大量的这种TCP连接,由于每一个都没法完成握手的机制,所以它就会消耗服务器的内存最后可能导致服务器死机,就无法正常工作了。更进一步说,如果这些半连接的握手请求是恶意程序发出,并且持续不断,那么就会导致服务端较长时间内丧失服务功能——这样就形成了DoS攻击。这种攻击方式就称为SYN泛洪攻击。

加固方式:

启用TCP SYN Cookies,当设置tcp_syncookies后,内核将正常处理TCP SYN数据包,直到半打开的连接队列满了为止,这时SYN cookie功能就开始发挥作用了。SYN cookie通过完全不使用SYN队列来工作,相反,内核只使用SYN |ACK 响应SYN,但是将包含一个特殊编写的TCP序列号,该序列号编码源地址和目标IP地址、端口号以及数据包发送的时间。一个合法的连接将发送带有特定序列号的三方握手的ACK包,这允许系统验证它已接收到对SYN cookie的有效响应,并允许连接,即使队列中没有相应的SYN。

编辑/etc/sysctl.conf添加以下参数:

设置活动内核参数生效,并刷新路由缓存:

运行以下命令进行验证:

看到已启用TCP SYN Cookies功能。

十、iptables防火墙配置

确保防火墙使用默认拒绝策略

首先使用命令查看当前防火墙规则:

可以看到输入链(INPUT)和转发链(FORWARD)的默认策略设置为允许(ACCEPT)。使用默认的防火墙接受策略时,防火墙将接受任何不在黑名单中的数据包,会存在危险。建议配置为默认拒绝(DROP)然后配置允许规则,只开启特定服务。

注:INPUT、OUTPUT链更多的应用在“主机防火墙”中,即主要针对服务器本机进出数据的安全控制;而FORWARD、PREROUTING、POSTROUTING链更多的应用在“网络防火墙”中,特别是防火墙服务器作为网关使用时的情况。

用以下命令设置为默认拒绝,注意要先配置好允许SSH访问,不然配置为默认拒绝后将丢失与服务器的连接(这里提供SSH服务的端口为2222):

随后将输入链(INPUT)和转发链(FORWARD)设置为默认拒绝:

根据自己服务器主机上需要对外开放服务,用以下命令开启对应端口即可:

iptables -A INPUT -p tcp --dport (端口号) -j ACCEPT

配置环回网络规则

环回网络是在机器上的进程之间生成的,对系统的运行非常关键。环回接口是环回网络(127.0.0.0/8)流量唯一应该被看到的地方,其他所有接口都应该忽略该网络上的流量以作为反欺骗措施。需要配置环回接口以接受环回网络流量,配置所有其他接口来拒绝回送网络的流量。

运行以下命令配置防火墙:

运行以下命令进行检验:

  • 31
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值