可以做些什么来保护 Ubuntu 服务器?

One*_*ero 37 server lamp security dns hosting

我有一个项目可以尽可能多地保护 Ubuntu Server。该服务器是一个网络托管服务器。服务器将运行 LAMP 、 Mail 和 DNS。

Pat*_*gan 44

这是我为保护我的服务器所做的事情的列表。

  1. 打开 UFW ( sudo ufw enable),然后只允许实际使用的端口。( sudo ufw allow 80)
  2. 确保 MySQL 只允许来自 localhost 的连接。
  3. 在邮件服务上启用 TLS。即使它是自签名证书。您不希望以明文形式发送密码。
  4. 安装 ssh 蛮力拦截器,如 denyhosts 或 fail2ban。( sudo apt-get install denyhosts)
  5. 考虑仅进行基于 ssh 密钥的登录。
  6. 学习 AppArmor。如果您使用相当普通的配置,那么它非常容易。只要确保它已打开。它将有助于减少零日漏洞。
  7. 根据对服务器的物理访问,您甚至可能需要考虑加密硬盘上的数据。
  8. 遵循https://help.ubuntu.com/18.04/serverguide/security.html 中的其他建议。
  9. 永远不要相信你的用户。如果您有多个用户可以访问系统,请将其锁定。如果你必须给他们 sudo 访问权限,只给他们他们需要的东西。
  10. 使用常识。仔细想想,如果你被锁在外面,你将如何进入。然后关闭这些孔。

还有一些事情需要考虑。大多数人忘记了物理访问。如果我可以随身携带 LiveCD 并窃取您的数据,那么世界上所有的软件配置都没有任何意义。小心社会工程学。提出问题以验证谁在打电话,并确保他们有权提出他们提出的请求。

您可以在https://help.ubuntu.com/18.04/serverguide/index.html上阅读有关此主题的更多信息,并特别注意https://help.ubuntu.com/18.04/serverguide/security.html

  • 使用 UFW 的另一种方法(在 Ubuntu 中仍然使用内置的开箱即用防火墙)是使用非常具体的“iptables”规则锁定您的系统,以禁止外部访问您不打算使用的任何服务,如果您有一个奇怪的设置,需要高级路由和东西。 (2认同)
  • @LordofTime 同意。我实际上自己使用 iptables,但 ufw 对于大多数基本安装来说都很好。无论如何,UFW 或多或少只是大多数常见 iptables 配置的包装器。底层系统仍然相同。 (2认同)
  • +1 ufw,您不是新用户,您是 1 年的会员:p (2认同)

Bha*_*wan 14

既然你说这是网络托管服务器……我想分享我在网络托管领域长达 5 年的最佳实践和经验。

  1. 根据我过去的经验,与其立即进入配置地狱,您应该首先按照给定文章中的指示组装安全的低垂葡萄。

  2. 由于您使用的是 LAMP,因此您必须非常小心 PHP及其 php.ini 设置。这是保护 PHP的好链接。PHP 具有超能力,如果配置不当,可能会成为安全循环。

  3. 您可以使用cron 作业来检查您的文件何时在未经您许可的情况下被修改并可能被黑客入侵;使用这个 cron 作业。我更喜欢Notepad++来比较 cron 结果(直接从您的 Web 服务器下载 cron 电子邮件并在 Notepad++ 中打开)。

  4. 如果你想安装一些 SEM,那么 cPanel 是最好的选择(但要付费)。Webminzpanel是非常好的免费替代品。Webmin 更好,因为它至少使用自签名证书并增加了安全性。

  5. 如果您想要开箱即用的东西,那么您可以选择Turnkey Linux。它基于 Ubuntu,非常容易实现并且可以灵活地满足您的需求。只需很少的努力,您就可以获得开箱即用的安全性。这是他们的LAMP 堆栈我个人只使用并更喜欢这个。

  6. 如果你是从头开始,那么你也可以安装 ISPconfig3。说明在这里

  7. 您可以通过使用Back-Track-Linux尝试渗透您的安全来测试您的安全。

  8. 保留复杂的长密码随机密码。不要将它们存储在 PC 上。记下来。使用 Live CD 访问这些登录信息。

  9. 获得像fail2ban这样的蛮力保护软件。

  10. 不要运行那些你不需要的守护进程。

  11. 阻止所有不必要的端口。使用 SSH 端口 (22) 时要格外小心。

  12. 在您要管理服务器的系统上获得一个静态 IP。尽量使用 IP 块,只允许您的特定 IP 访问那些配置位置,例如端口 22。

归根结底……全神贯注地工作,不要对安装感到情绪化,应用常识会让你远远超越。

**My heartiest best wishes to you. good luck.**
Run Code Online (Sandbox Code Playgroud)

  • #9:不,随机密码不好,关键在于**长度**,即。“D0g .....................”比“PrXyc.N(n4k77#L!eVdAfp9”强。解释在http://www.explainxkcd.com /2011/08/10/密码强度/ (2认同)
  • @papukaija 我建议你在“蛮力攻击”和“字典攻击”上搜索 .. 随机长密码是保护自己免受此类攻击的唯一方法。 (2认同)

One*_*ero 13

安全共享内存

/dev/shm 可用于攻击正在运行的服务,例如 httpd。修改 /etc/fstab 使其更安全。

打开终端窗口并输入以下内容:

sudo vi /etc/fstab
Run Code Online (Sandbox Code Playgroud)

添加以下行并保存。您需要重新启动此设置才能生效:

tmpfs     /dev/shm     tmpfs     defaults,noexec,nosuid     0     0
Run Code Online (Sandbox Code Playgroud)

使用 sysctl 设置强化网络

/etc/sysctl.conf 文件包含所有 sysctl 设置。防止传入数据包的源路由并记录格式错误的 IP 在终端窗口中输入以下内容

sudo vi /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)

编辑/etc/sysctl.conf文件并取消注释或添加以下行:

# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0 
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0 
net.ipv6.conf.default.accept_redirects = 0

# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1
Run Code Online (Sandbox Code Playgroud)

要使用最新更改重新加载 sysctl,请输入:

sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)

防止 IP 欺骗

打开终端并输入以下内容:

sudo vi /etc/host.conf
Run Code Online (Sandbox Code Playgroud)

添加或编辑以下几行:

order bind,hosts
nospoof on
Run Code Online (Sandbox Code Playgroud)

强化 PHP 以确保安全

编辑 php.ini 文件:

sudo vi /etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

添加或编辑以下几行:

disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On
Run Code Online (Sandbox Code Playgroud)

Web 应用程序防火墙 - ModSecurity

http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

防止 DDOS(拒绝服务)攻击 - ModEvasive

http://www.thefanclub.co.za/how-to/how-install-apache2-modsecurity-and-modevasive-ubuntu-1204-lts-server

扫描日志并禁止可疑主机 - DenyHosts 和 Fail2Ban

@DenyHosts

DenyHosts 是一个 python 程序,它通过向 /etc/hosts.deny 添加条目来自动阻止 SSH 攻击。DenyHosts 还将通知 Linux 管理员有关违规主机、受攻击用户和可疑登录的信息。

打开终端并输入以下内容:

sudo apt-get install denyhosts
Run Code Online (Sandbox Code Playgroud)

安装后编辑配置文件/etc/denyhosts.conf 并根据需要更改电子邮件和其他设置。

要编辑管理员电子邮件设置,请打开终端窗口并输入:

sudo vi /etc/denyhosts.conf
Run Code Online (Sandbox Code Playgroud)

根据需要在您的服务器上更改以下值:

ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES 
Run Code Online (Sandbox Code Playgroud)

@Fail2Ban

Fail2ban 比 DenyHosts 更先进,因为它将日志监控扩展到其他服务,包括 SSH、Apache、Courier、FTP 等。

Fail2ban 会扫描日志文件并禁止显示恶意迹象的 IP——密码失败次数过多、寻找漏洞利用等。

通常,Fail2Ban 然后用于更新防火墙规则以在指定的时间内拒绝 IP 地址,尽管也可以配置任意其他操作。开箱即用的Fail2Ban 带有用于各种服务(apache、courier、ftp、ssh 等)的过滤器。

打开终端并输入以下内容:

sudo apt-get install fail2ban
Run Code Online (Sandbox Code Playgroud)

安装后编辑配置文件/etc/fail2ban/jail.local 并根据需要创建过滤规则。

要编辑设置,请打开终端窗口并输入:

sudo vi /etc/fail2ban/jail.conf
Run Code Online (Sandbox Code Playgroud)

通过将enabled = false更改* enabled = true *激活您希望 fail2ban 监控的所有服务

例如,如果您想启用 SSH 监控和禁止 jail,请找到下面的行并将 enabled 从false更改为 true。就是这样。

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
Run Code Online (Sandbox Code Playgroud)

如果您想在主机被禁止的情况下接收来自 Fail2Ban 的电子邮件,请将以下行更改为您的电子邮件地址。

destemail = root@localhost
Run Code Online (Sandbox Code Playgroud)

并将以下行更改为:

action = %(action_)s
Run Code Online (Sandbox Code Playgroud)

到:

action = %(action_mwl)s
Run Code Online (Sandbox Code Playgroud)

您还可以为希望 fail2ban 监视但默认情况下未提供的各种服务创建规则过滤器

sudo vi /etc/fail2ban/jail.local
Run Code Online (Sandbox Code Playgroud)

可以在HowtoForge上找到有关如何配置 fail2ban 和创建各种过滤器的良好说明-单击此处查看示例

完成 Fail2Ban 的配置后,使用以下命令重新启动服务:

sudo /etc/init.d/fail2ban restart
Run Code Online (Sandbox Code Playgroud)

您还可以查看状态。

sudo fail2ban-client status
Run Code Online (Sandbox Code Playgroud)

检查 rootkit - RKHunter 和 CHKRootKit。

无论RKHunterchkrootkit的基本上做同样的事情-检查你的系统的rootkit。两者都用没有坏处。

打开终端并输入以下内容:

sudo apt-get install rkhunter chkrootkit
Run Code Online (Sandbox Code Playgroud)

要运行 chkrootkit,请打开终端窗口并输入:

sudo chkrootkit
Run Code Online (Sandbox Code Playgroud)

更新和运行 RKHunter。打开终端并输入以下内容

sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
Run Code Online (Sandbox Code Playgroud)

扫描开放端口 - Nmap

Nmap(“网络映射器”)是一个免费的开源实用程序,用于网络发现和安全审计。

打开终端并输入以下内容:

sudo apt-get install nmap
Run Code Online (Sandbox Code Playgroud)

使用以下命令扫描系统的开放端口:

nmap -v -sT localhost
Run Code Online (Sandbox Code Playgroud)

SYN 扫描如下:

sudo nmap -v -sS localhost
Run Code Online (Sandbox Code Playgroud)

分析系统日志文件 - LogWatch

Logwatch 是一个可定制的日志分析系统。Logwatch 解析您系统的日志并创建一个报告分析您指定的区域。Logwatch 易于使用,并且可以在大多数系统上直接使用。

打开终端并输入以下内容:

sudo apt-get install logwatch libdate-manip-perl
Run Code Online (Sandbox Code Playgroud)

要查看 logwatch 输出使用 less :

sudo logwatch | less
Run Code Online (Sandbox Code Playgroud)

要将过去 7 天的 logwatch 报告通过电子邮件发送到电子邮件地址,请输入以下内容并将 mail@domain.com 替换为所需的电子邮件。:

sudo logwatch --mailto mail@domain.com --output mail --format html --range 'between -7 days and today' 
Run Code Online (Sandbox Code Playgroud)

审核您的系统安全性 - Tiger。

Tiger 是一种安全工具,可用作安全审计和入侵检测系统。

打开终端并输入以下内容:

sudo apt-get install tiger
Run Code Online (Sandbox Code Playgroud)

要运行老虎输入:

sudo tiger
Run Code Online (Sandbox Code Playgroud)

所有 Tiger 输出都可以在 /var/log/tiger 中找到

要查看 Tiger 安全报告,请打开终端并输入以下内容:

sudo less /var/log/tiger/security.report.*
Run Code Online (Sandbox Code Playgroud)

更多帮助


pl1*_*1nk 6

利用 Bastille Linux 项目。

它提供了一个交互式工具来执行额外的安全加固措施,以提高整体安全性,并降低 Ubuntu 系统(来自Bastille Linux)的易受攻击性。

它提供了评估和报告功能,因此它可以告诉您系统的哪些部分没有被锁定。它以只读方式检查系统,报告每个加固项目的状态。例如,Bastille 可能会检查 DNS 服务器是否被锁定在 chroot 监狱中,telnet 是否关闭,或者密码是否需要足够长。您可以通过此链接(更多信息)查看此仅在 Web 上的演示。

您可以在此处预览 Web(仅限)演示。

巴士底狱Linux