我有一个项目要尽可能地保护 Ubuntu Server。该服务器是网络托管服务器。该服务器将运行 LAMP 、邮件和 DNS。
答案1
以下是我为保护服务器安全所采取的措施的列表。
- 打开 UFW(
sudo ufw enable
)然后仅允许实际使用的端口。(sudo ufw allow 80
) - 确保 MySQL 仅允许来自本地主机的连接。
- 在邮件服务上启用 TLS。即使它是自签名证书。您不希望密码以明文形式发送。
- 安装 ssh 暴力破解阻止程序,例如denyhosts 或fail2ban。(
sudo apt-get install denyhosts
) - 研究仅进行基于 ssh 密钥的登录。
- 学习 AppArmor。如果你使用相当普通的配置,那么它非常简单。只要确保它已打开即可。它将有助于减少零日漏洞。
- 根据对服务器的物理访问,您甚至可能想要考虑加密硬盘上的数据。
- 遵循其他建议https://help.ubuntu.com/18.04/serverguide/security.html。
- 永远不要相信你的用户。如果你有多个用户有权访问系统,请锁定他们。如果你必须授予他们 sudo 访问权限,请只授予他们需要的权限。
- 运用常识。认真思考一下如果你被锁在门外,你会如何进入。然后堵住那些洞。
还有几件事需要考虑。大多数人都忘记了物理访问。如果我能拿着 LiveCD 走进来窃取你的数据,世界上所有的软件配置都毫无意义。小心社交工程。问问题以核实谁在打电话,并确保他们有权限提出他们正在提出的请求。
您可以在https://help.ubuntu.com/18.04/serverguide/index.html并特别注意https://help.ubuntu.com/18.04/serverguide/security.html。
答案2
既然你说过这是网站托管服务器...我想分享我的最佳实践和经验漫长的五年在网络托管行。
根据我过去的经验,您不应该直接进入配置地狱,而应该首先按照给定文章中的指示组装低垂的安全葡萄。
由于您有 LAMP,因此您必须非常谨慎地对待 PHP及其 php.ini 设置。这是一个很好的关联用于保护 PHP。PHP 具有超能力,如果配置不当,可能会陷入安全循环。
您可以使用计划任务检查你的文件何时在未经你许可的情况下被修改,并可能被黑客入侵;使用这个 cron 任务。 我更喜欢记事本++比较 cron 结果(直接从您的网络服务器下载 cron 电子邮件并在 Notepad++ 中打开)。
如果您想安装一些 SEM,那么 cPanel 是最好的选择(无论是否付费)。网页管理和面板都是非常好的免费替代品。Webmin 更好,因为它至少使用自签名证书并增加了安全性。
如果你想要一些开箱即用的东西,那么你可以选择交钥匙 Linux。它基于 Ubuntu,非常容易实现,并且可以根据您的需求灵活调整。只需付出很少的努力,您就可以获得开箱即用的安全性。这是他们的LAMP 堆栈。我个人只使用并且喜欢这个。
如果您是从头开始,那么您也可以安装 ISPconfig3。说明这里。
您可以通过以下方式测试您的安全性试图渗透你的安全使用回溯Linux。
保持复杂长久随机密码。不要保存它们在 PC 上。把它们写下来。使用实时 CD 访问这些登录信息。
得到暴力破解保护像 fail2ban 这样的软件。
不要运行那些你不需要的守护进程。
阻止所有不必要的端口. 请特别小心 SSH 端口 (22)。
在系统上获取一个静态 IP,通过该 IP 来管理服务器。阻止大多数 IP,只允许特定 IP 访问那些配置位置,例如端口 22。
一天结束时,全心全意地工作,不要情绪化通过安装和运用常识,您可以获得更大的进步。
**My heartiest best wishes to you. good luck.**
答案3
安全共享内存
/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 附带各种服务(apache、courier、ftp、ssh 等)的过滤器。
打开终端并输入以下内容:
sudo apt-get install fail2ban
安装后编辑配置文件/etc/fail2ban/jail.local 并根据需要创建过滤规则。
要编辑设置,请打开终端窗口并输入:
sudo vi /etc/fail2ban/jail.conf
通过更改来激活您希望 fail2ban 监控的所有服务enabled = false 至*已启用=真*
例如,如果你想启用 SSH 监控和禁止监狱,找到下面的行并将启用从假变为真。 就是这样。
[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 和创建各种过滤器的详细说明,可以在这里找到如何锻造-点击此处查看示例
完成 Fail2Ban 的配置后,请使用以下命令重新启动服务:
sudo /etc/init.d/fail2ban restart
您还可以使用以下方式检查状态。
sudo fail2ban-client status
检查rootkit——RKHunter 和 CHKRootKit。
两个都RK猎人和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
分析系统日志文件-LogWatch
Logwatch 是一个可自定义的日志分析系统。Logwatch 会解析您系统的日志并创建一份分析您指定领域的报告。Logwatch 使用起来很简单,在大多数系统上都可以直接从软件包中运行。
打开终端并输入以下内容:
sudo apt-get install logwatch libdate-manip-perl
要查看 logwatch 输出,请使用 less :
sudo logwatch | less
要将过去 7 天的日志监控报告通过电子邮件发送到电子邮件地址,请输入以下内容并替换[电子邮件保护]并附上所需的电子邮件。:
sudo logwatch --mailto [email protected] --output mail --format html --range 'between -7 days and today'
审计您的系统安全 - Tiger。
Tiger 是一种安全工具,既可以用作安全审计,也可以用作入侵检测系统。
打开终端并输入以下内容:
sudo apt-get install tiger
要运行 tiger,请输入:
sudo tiger
所有 Tiger 输出都可以在 /var/log/tiger 中找到
要查看老虎安全报告,请打开终端并输入以下内容:
sudo less /var/log/tiger/security.report.*
答案4
在机器上的所有接口上使用nmap
,这样您就知道机器上运行了哪些服务。这是确保安全的必备工具。
删除外部接口上不需要的所有服务。您可以将 MySQL 配置为仅监听特定接口,例如 localhost。
使用 ufw 保护您的 SSH 服务(以及可能的其他服务),这样它就不会允许同一台机器每分钟建立太多(失败的)连接。这将使暴力攻击变得更加困难。更改端口号没什么用,只是模糊而已,没有安全性。
限制计算机上的帐户数量。另外,不要安装比实际使用量更多的软件包/程序。仅安装 X11 客户端,而不是 X11 服务器。
仅允许使用数字证书通过 ssh 登录到计算机,不密码。这也将使暴力攻击变得困难/不可能。