当前位置: 首页>>技术教程>>正文


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

, , , , ,

问题描述

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

最佳解决方案

以下列出了我为保护服务器所做的事情。

  1. 打开UFW(sudo ufw enable),然后只允许实际使用的端口。 (sudo ufw allow 80)

  2. 确保MySQL仅允许来自localhost的连接。

  3. 在邮件服务上启用TLS。即使它是自签名证书。您不希望明确发送密码。

  4. 安装ssh bruteforce阻止程序,如denyhosts或fail2ban。 (sudo apt-get install denyhosts)

  5. 请查看仅使用ssh key-based登录。

  6. 学习AppArmor。如果你使用相当普通的配置,那么它非常容易。只要确保它已打开。它将有助于减少zero-day攻击。

  7. 根据对服务器的物理访问,您甚至可能希望查看加密硬盘上的数据。

  8. 请遵循此链接中的其他建议。编辑:当我没有足够的声誉来添加更多链接时,我忘了编辑它。这里的链接是下面的最后一个链接。

  9. 绝不相信您的用户。如果您有多个用户可以访问系统,请将其锁定。如果你必须给他们sudo访问权限,只给他们所需要的东西。

  10. 使用常识。如果你被关在门外,那就认真思考一下你是如何进入的。然后关闭那些洞。

还有一些事情需要考虑。大多数人忘记了物理访问。如果我可以使用LiveCD进行实际操作并窃取您的数据,那么世界上所有的软件配置都没有任何意义。谨防社会工程。提出问题以确认谁在通电话,并确保他们有权提出他们正在提出的要求。

由于我仍然是’new’用户,我不能发布超过2个链接。你可以在这里阅读更多关于这个主题的信息:https://help.ubuntu.com/12.04/serverguide/index.html并特别注意https://help.ubuntu.com/12.04/serverguide/security.html

次佳解决方案

安全共享内存

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

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

sudo vi /etc/fstab

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

tmpfs     /dev/shm     tmpfs     defaults,noexec,nosuid     0     0

使用sysctl设置强化网络

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

sudo vi /etc/sysctl.conf

编辑/etc/sysctl.conf文件和un-comment或添加以下行:

# 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

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

sudo sysctl -p

防止IP欺骗

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

sudo vi /etc/host.conf

添加或编辑以下行:

order bind,hosts
nospoof on

加强PHP的安全性

编辑php.ini文件:

sudo vi /etc/php5/apache2/php.ini

添加或编辑以下行:

disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On

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

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

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

sudo vi /etc/denyhosts.conf

根据服务器上的要求更改以下值:

ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES 

@ Fail2Ban

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

Fail2ban扫描日志文件并禁止显示恶意迹象的IP – 密码失败太多,寻求漏洞利用等。

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

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

sudo apt-get install fail2ban

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

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

sudo vi /etc/fail2ban/jail.conf

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

例如,如果要启用SSH监视和禁止jail,请找到下面的行并将false从false更改为true。而已。

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3

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

destemail = root@localhost

并从以下位置更改以下行:

action = %(action_)s

至:

action = %(action_mwl)s

您还可以为您希望fail2ban监视的各种服务创建规则筛选器,默认情况下不提供这些服务。

sudo vi /etc/fail2ban/jail.local

有关如何配置fail2ban和创建各种过滤器的详细说明,请参见HowtoForgeclick here for an example

完成Fail2Ban配置后,重启服务:

sudo /etc/init.d/fail2ban restart

您还可以查看状态。

sudo fail2ban-client status

检查rootkit – RKHunter和CHKRootKit。

RKHunterCHKRootkit基本上都做同样的事情 – 检查你的系统是否有rootkit。使用两者都没有害处。

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

sudo apt-get install rkhunter chkrootkit

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

sudo chkrootkit

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

sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check

扫描开放端口 – Nmap

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

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

sudo apt-get install nmap

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

nmap -v -sT localhost

使用以下内容进行SYN扫描:

sudo nmap -v -sS localhost

分析系统LOG文件 – LogWatch

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

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

sudo apt-get install logwatch libdate-manip-perl

要查看logwatch输出,请使用less:

sudo logwatch | less

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

sudo logwatch --mailto mail@domain.com --output mail --format html --range 'between -7 days and today' 

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

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

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

sudo apt-get install tiger

要运行老虎输入:

sudo tiger

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

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

sudo less /var/log/tiger/security.report.*

For More Help

第三种解决方案

既然你说这是web-hosting-server ……我想分享我在web-hosting系列中长达5年的最佳实践和经验。

  1. 根据我过去的经验,你不应该直接进入配置地狱,而应该首先组装给定文章中指出的低悬的安全葡萄。

  2. 因为你有LAMP,所以你必须非常小心PHP和它的php.ini设置。这是一个很好的link用于保护PHP。 PHP具有超级权限,如果配置不正确,可能会成为安全循环。

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

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

  5. 如果您希望开箱即用,那么您可以选择Turnkey Linux.它基于Ubuntu,非常易于实施并且可以灵活满足您的需求。只需很少的努力即可获得开箱即用的安全性。这是他们的LAMP stack。我个人使用并且只喜欢这个。

  6. 如果您从划痕开始,那么您也可以安装ISPconfig3。说明Here

  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.**

第四种方案

利用Bastille Linux项目。

它提供了一个交互式工具来执行额外的安全强化措施,以提高over-all的安全性,并降低Ubuntu系统(来自Bastille Linux)的危害。

它提供评估和报告功能,以便它可以告诉您系统的哪些部分未被锁定。它以read-only方式检查系统,报告每个加固项的状态。例如,Bastille可能会检查DNS服务器是否在chroot监狱中被锁定,telnet是否被关闭,或者即使密码需要很长。您可以通过此链接查看Web-only演示(更多info)。

您可以预览Web(仅)演示程序here

server,security,dns,lamp,hosting,ubuntu

第五种方案

在机器上的所有接口上使用nmap,以便了解您在计算机上运行的服务。这是安全的重要工具。

删除外部接口上不需要的所有服务。您可以将MySQL配置为仅侦听特定接口,例如localhost。

使用ufw保护您的SSH服务(以及可能的其他服务),使其不允许每分钟从同一台计算机上进行太多(失败)连接。这将使暴力攻击变得更加困难。更改端口号并不是那么有用,只是默默无闻,没有安全性。

对计算机上的帐户数量有限制。另外,不要安装比实际使用的更多的程序包/程序。仅安装X11客户端,而不是X11服务器。

只允许ssh-login使用数字证书,没有密码。这也将使蛮力攻击变得困难/不可能。

第六种方案

我还会参考CIS Debian Benchmarks文档,它有大量的程序和流程来加强适用于Ubuntu的操作系统,因为它是Debian的衍生产品。我也会咨询:

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2326.html,未经允许,请勿转载。