配置

配置

作为一名严肃的安全研究人员,我正在寻找一种解决方案来保护 Ubuntu 安装免受不必要的入侵。这应该包括我可以如何做到:

  • 记录并警告远程连接尝试,
  • 当文件发生变化时记录并发出警报,以及根据请求恢复这些文件,
  • 是否需要强化机器的 TCP/IP 堆栈?

我的最终用例场景将在 Virtualbox 中以便于恢复,因此知道我需要做什么才能启动图像就好了。

以下iptables定义是否与 fail2bans 目的相同?:

  • $ iptables -N IN_SSH

  • $ iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -j IN_SSH

  • $ iptables -A IN_SSH -m recent --name sshbf --rttl --rcheck --hitcount 3 --seconds 10 -j DROP
  • $ iptables -A IN_SSH -m recent --name sshbf --rttl --rcheck --hitcount 4 --seconds 1800 -j DROP
  • $ iptables -A IN_SSH -m recent --name sshbf --set -j Accept
  • $ iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -j IN_SSH

PS:有人可以提供正确阻止脚本的代码吗?

答案1

我很想将此标记为重复,因为已经一些 问题 像这样之前,但你要求的是具体的以安全为中心的事情。因此,本着帮助的精神:

有一个活跃的安全审计这是在每个发布周期中都会进行的。它还包含一些关于一些基本安全措施的良好建议,这些措施已经到位,专门用于强化和测试您的系统以防止不必要的外部访问。

配置

没有开放端口密码哈希 SYN cookies

子系统

  • 可配置防火墙
  • 文件系统功能
  • 设定安全组件

强制访问控制(MAC)

  • 应用装甲
  • SELinux

文件系统加密

  • 加密 LVM
  • 加密文件系统

用户空间强化

  • 堆栈保护器
  • 堆保护器
  • 指针混淆
  • 地址空间布局随机化 (ASLR)
  • 作为 PIE 构建
  • 使用 Fortify Source 构建
  • 采用 RELRO 构建
  • 使用 BIND_NOW 构建
  • 不可执行内存
  • /proc/$pid/maps 保护
  • 符号链接限制
  • 硬链接限制
  • ptrace 范围

内核强化

  • 0 地址保护
  • /dev/mem 保护
  • /dev/kmem 已禁用
  • 阻止模块加载
  • 只读数据部分
  • 堆栈保护器
  • RO/NX 模块
  • 内核地址显示限制
  • 将罕见协议列入黑名单
  • 系统调用过滤

根据现有保护措施的列表,让我们来检查一下您的其余问题:

  • 关于记录连接尝试,这已被覆盖,如果您想要更简单的配置,那么总有fail2ban或denyhosts。
  • 当观察配置的修改时,应用装甲
  • 至于 TCP/IP 堆栈强化,你需要数据来验证执行此操作的必要性,但对于偏执狂来说,有一篇很好的文章阻止 SYN 泛洪的优点。但正如您从上面的安全审计链接中注意到的那样,SYN Cookies 默认是启用的,并且有助于缓解这种情况。

因此,目前看来您真正需要做的就是确保您可能/可能不会安装的额外应用程序正在接受主动安全审核,并且您已安装所有最新补丁。已安装任何额外的 AppArmor 配置文件来保护您的自定义设置。(或 SELinux 附加功能,具体取决于您的特定配置)

如何检测 SYN 攻击

It is very simple to detect SYN attacks. The netstat command shows us how many connections are currently in the half-open state. The half-open state is described as SYN_RECEIVED in Windows and as SYN_RECV in Unix systems.



# netstat -n -p TCP tcp        0      0 10.100.0.200:21            
237.177.154.8:25882     SYN_RECV    - tcp        0      0 10.100.0.200:21            
236.15.133.204:2577     SYN_RECV    - tcp        0      0 10.100.0.200:21            
127.160.6.129:51748     SYN_RECV    - tcp        0      0 10.100.0.200:21            
230.220.13.25:47393     SYN_RECV    - tcp        0      0 10.100.0.200:21            

We can also count how many half-open connections are in the backlog queue at the 
moment. In the example below, 769 connections (for TELNET) in the SYN RECEIVED state 
are kept in the backlog queue.



 # netstat -n -p TCP | grep SYN_RECV | grep :23 | wc -l 769 

The other method for detecting SYN attacks is to print TCP statistics and 
look at the TCP parameters which count dropped connection requests. While under 
attack, the values of these parameters grow rapidly.



 # netstat -s -P tcp | grep tcpHalfOpenDrop         tcpHalfOpenDrop     =   473 

It is important to note that every TCP port has its own backlog queue, but only
one variable of the TCP/IP stack controls the size of backlog queues for all ports.

答案2

答案3

这些链接可能会对你有帮助:

一些软件可能会有用:

  • Nmap——网络映射器。
  • Kismet——无线 802.11b 监控工具。
  • Chkrootkit——检查本地系统上是否存在rootkit的迹象。
  • Rkhunter——rootkit、后门、嗅探器和漏洞扫描器。
  • GnuPG——GNU隐私卫士。
  • Snort——灵活的网络入侵检测系统。

相关内容