可以做些什么来保护Ubuntu服务器?
我有一个项目来尽可能多地保护Ubuntu Server。 该服务器是一个Web托管服务器。 服务器将运行LAMP,Mail和DNS。
以下列出了我为保护服务器所做的事情。
- 打开UFW(
sudo ufw enable
),然后只允许实际使用的端口。 (sudo ufw allow 80
) - 确保MySQL仅允许来自localhost的连接。
- 在邮件服务上启用TLS。 即使它是自签名证书。 您不希望明确发送密码。
- 安装ssh bruteforce阻止程序,如denyhosts或fail2ban。 (
sudo apt-get install denyhosts
) - 查看仅基于密钥的登录。
- 学习AppArmor。 如果你使用相当普通的配置,那么它非常容易。 只要确保它已打开。 它将有助于减少零日攻击。
- 根据对服务器的物理访问,您甚至可能希望查看加密硬盘上的数据。
- 请遵循此链接中的其他建议。 编辑:当我没有足够的声誉来添加更多链接时,我忘了编辑它。 这里的链接是下面的最后一个链接。
- 绝不相信您的用户。 如果您有多个用户可以访问系统,请将其锁定。 如果你必须给他们sudo访问权限,只给他们所需要的东西。
- 使用常识。 如果你被封锁了,那就认真考虑如何进入。 然后关闭那些洞。
还有一些事情需要考虑。 大多数人忘记了物理访问。 如果我可以使用LiveCD实际操作并窃取您的数据,那么世界上所有的软件配置都没有任何意义。 谨防社会工程。 提出问题以确认谁在通电话,并确保他们有权提出他们正在提出的要求。
由于我仍然是一个“新”用户,我不能发布超过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文件并取消注释或添加以下行:
# 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
防止DDOS(拒绝服务)攻击 – ModEvasive
扫描日志并禁止可疑主机 – 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带有各种服务的filter(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和创建各种filter的良好说明可以在HowtoForge上找到 – 点击此处查看示例
完成Fail2Ban配置后,重启服务:
sudo /etc/init.d/fail2ban restart
您还可以查看状态。
sudo fail2ban-client status
检查rootkit – RKHunter和CHKRootKit。
RKHunter和CHKRootkit基本上都做同样的事情 – 检查你的系统是否有rootkit。 使用两者都没有害处。
打开终端并输入以下内容:
sudo apt-get install rkhunter chkrootkit
要运行chkrootkit,请打开一个终端窗口并输入:
sudo chkrootkit
更新并运行RKHunter。 打开终端并输入以下内容
sudo rkhunter --update sudo rkhunter --propupd sudo rkhunter --check
扫描开放端口 – Nmap
Nmap(“网络映射器”)是一个免费的开源实用程序,用于网络发现和安全审计。
打开终端并输入以下内容:
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.*
获得更多帮助
既然你说这是网络托管服务器 …我想在网络托管行分享我5年的最佳实践和经验。
-
根据我过去的经验,你不应该直接进入配置地狱,而应该首先组装给定文章中指出的低悬的安全葡萄。
-
因为你有LAMP,所以你必须非常小心PHP和它的php.ini设置。 这是保护PHP安全的好链接 。 PHP具有超级权限,在未正确配置时可能会成为安全循环。
-
您可以使用cron作业来检查您的文件何时未经您的许可进行修改且可能被黑客攻击; 使用这个cron工作 。 我更喜欢Notepad ++来比较cron结果(直接从你的web服务器下载cron电子邮件,在Notepad ++中打开)。
-
如果你想安装一些SEM,那么cPanel是最好的选择(无论如何支付)。 Webmin和zpanel是非常好的免费替代品。 Webmin更适合它至少使用自签名证书并增加安全性。
-
如果您希望开箱即用,那么您可以选择Turnkey Linux。 它基于Ubuntu,非常易于实现并且可以灵活地满足您的需求。 只需很少的努力,您就可以获得开箱即用的安全性。 这是他们的LAMP堆栈 。 我个人使用并且只喜欢这个。
-
如果您从划痕开始,那么您也可以安装ISPconfig3。 说明在这里 。
-
您可以尝试使用Back-Track-Linux 渗透您的安全性来测试您的安全性。
-
保持复杂的长而随机的密码。 不要将它们存储在PC上。 记下来。 使用Live CD访问这些登录。
-
得到像fail2ban这样的powershell保护软件。
-
不要运行那些你不需要的守护进程。
-
阻止所有不必要的端口 。 小心SSH端口(22)。
-
在您将通过其管理服务器的系统上获取静态IP。 使大多数IP阻塞,只允许您的特定IP访问端口22等配置位置。
在一天结束的时候……完全放心, 不要对安装感到情绪化 ,应用常识会让你远远超出。
**My heartiest best wishes to you. good luck.**
利用Bastille Linux项目。
它提供了一个交互式工具来执行额外的安全强化措施,以提高整体安全性,并降低Ubuntu系统(来自Bastille Linux )的妥协易感性。
它提供评估和报告function,以便它可以告诉您系统的哪些部分未被锁定。 它以只读方式检查系统,报告每个加固项的状态。 例如,Bastille可能会检查DNS服务器是否在chroot监狱中被锁定,telnet是否已关闭,或者即使密码需要长度合适。 您可以通过此链接查看此网络演示(更多信息 )。
您可以在此处预览Web(仅)演示。
在计算机上的所有接口上使用nmap
,以便了解您在计算机上运行的服务。 这是安全的重要工具。
删除外部接口上不需要的所有服务。 您可以将MySQL配置为仅侦听特定接口,例如localhost。
使用ufw保护您的SSH服务(以及可能的其他服务),使其不允许每分钟从同一台计算机上进行太多(失败)连接。 这将使暴力攻击变得更加困难。 更改端口号并不是那么有用,只是默默无闻,没有安全性。
对计算机上的帐户数量有限制。 另外,不要安装比实际使用的更多的程序包/程序。 仅安装X11客户端,而不是X11服务器。
只允许使用数字证书ssh登录到机器, 没有密码。 这也将使暴力攻击变得困难/不可能。
我还将参考CIS Debian基准测试文档,它有大量的程序和流程来加强适用于Ubuntu的操作系统,因为它是Debian的衍生产品。 我也会咨询:
- 保护Debian Howto
- Debian强化演练
- 使用Grsecurity加强Linux内核(Debian)
安全始终需要付出代价。 设定一些现实的界限将有助于您实现目标。 我会考虑以下几个方面:
- 反对你保护自己(哪种恶棍,他的预算是多少)?
- 你的攻击媒介是什么?
检查此处发布的所有链接,我认为应该添加此链接。 它不仅详细介绍了如何设置软件,还考虑了安全计划。 作为一个加号,每个要执行的命令都用它来源解释。
在Xenial 16.04上保护Ubuntu Web服务器