AI 能否應對越來越多的勒索軟件攻擊?
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量敏捷方法来管理项目的开发。Taiga是一个非常强大且完全可定制的应用程序。Taiga的后端使用Django框架以Python编写。前端是使用CoffeeScript和AngularJS框架以JavaScript编写的。Taiga包括项目协作,看板,漏洞跟踪,报告,时间跟踪,积压,Wiki等功能。
在本教程中,我们将使用taiga.example.com
指向服务器的域名作为域名。taiga.example.com
用您的实际域名替换所有出现的。
使用指南如何更新Ubuntu 16.04更新基本系统。系统更新后,继续安装PostgreSQL。
PostgreSQL是一个对象关系数据库系统,以其稳定性和速度而闻名。Taiga使用PostgreSQL来存储其数据库。将PostgreSQL存储库添加到系统中。
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
导入GPG签名密钥并更新软件包列表。
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
安装PostgreSQL数据库服务器。
sudo apt -y install postgresql
启动PostgreSQL服务器,并使其在启动时自动启动。
sudo systemctl start postgresql
sudo systemctl enable postgresql
更改默认PostgreSQL用户的密码。
sudo passwd postgres
以PostgreSQL用户身份登录。
sudo su - postgres
为Taiga创建一个新的PostgreSQL用户。
createuser taiga
PostgreSQL提供了psql
在数据库上运行查询的外壳。切换到PostgreSQL shell。
psql
为新创建的Taiga数据库用户设置密码。
ALTER USER taiga WITH ENCRYPTED password 'DBPassword';
替换DBPassword
为安全密码。创建新数据库以进行Taiga安装。
CREATE DATABASE taiga OWNER taiga;
从psql
外壳退出。
\q
切换到sudo
用户。
exit
Taiga需要Python 3.4或更高版本,并且Python 3.5预先安装在Ubuntu 16.04发行版中。安装更多所需的软件包。
sudo apt -y install python3 python3-pip python3-dev python3-dev virtualenvwrapper
Python虚拟环境用于为Python项目创建隔离的虚拟环境。虚拟环境包含其自己的安装目录,并且不与全局和其他虚拟环境共享库。成功安装Python 3后,您应该可以检查其版本。
python3 -V
您将看到以下内容。
user@vultr:~$ python3 -V
Python 3.5.2
Upgrade pip
,这是一个依赖项管理器应用程序。
sudo pip3 install --upgrade setuptools pip
另外,安装一些构建工具,稍后将需要使用这些工具来编译依赖关系。
sudo apt -y install build-essential binutils-doc autoconf flex bison libjpeg-dev libfreetype6-dev zlib1g-dev libzmq3-dev libgdbm-dev libncurses5-dev automake libtool libffi-dev curl git tmux gettext
Taiga使用RabbitMQ处理消息队列。RabbitMQ需要使用Erlang库才能工作。安装Erlang。
sudo apt -y install erlang
添加RabbitMQ存储库。
echo 'deb http://www.rabbitmq.com/debian/ stable main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list
导入RabbitMQ GPG签名密钥。
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
更新存储库信息。
sudo apt update
安装RabbitMQ。
sudo apt -y install rabbitmq-server
启动并启用RabbitMQ服务器。
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
添加RabbitMQ用户和虚拟主机。另外,通过主机向用户提供权限。
sudo rabbitmqctl add_user taiga StrongMQPassword
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"
确保StrongMQPassword
用安全密码替换。
需要Node.js 7或更高版本来编译Taiga的前端。添加Node.js版本8存储库。
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
安装Node.js和pwgen
实用程序。
sudo apt install -y nodejs pwgen npm
pwgen
稍后将用于生成强秘密字符串。安装CoffeeScript,因为它将用于编译以CoffeeScript框架编写的Taiga文件。
sudo npm install -g coffee-script gulp
为Taiga添加新的系统用户,以确保Taiga进程以非特权用户身份运行。
sudo adduser taiga
sudo su - taiga
注意:从现在开始,所有命令都必须以非特权用户身份运行,taiga
直到要求您切换回该用户为止sudo
。
创建一个新目录来存储日志文件。
mkdir -p ~/logs
从GitHub克隆Taiga后端存储库,并签出最新的稳定分支。
git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back
git checkout stable
现在,使用Python 3为Taiga创建新的虚拟环境。
mkvirtualenv -p /usr/bin/python3 taiga
pip3 install --upgrade setuptools
使用安装所需的Python依赖项pip
。
pip3 install -r requirements.txt
用必要的初始数据填充数据库。
python3 manage.py migrate --noinput
python3 manage.py loaddata initial_user
python3 manage.py loaddata initial_project_templates
python3 manage.py compilemessages
python3 manage.py collectstatic --noinput
上面的命令会将数据写入PostgreSQL数据库。Taiga还提供了一些演示或样本数据,可用于评估产品。如果要安装示例数据,请运行以下命令。
python3 manage.py sample_data
注意:安装样本数据是可选的,仅用于评估产品。
在继续为Taiga后端创建配置文件之前,我们需要生成一个秘密字符串。该字符串将用于加密会话数据。
生成64个字符的随机字符串。
pwgen -s -1 64
您应该将输出视为随机字符串。
(taiga) taiga@vultr:~/taiga-back$ pwgen -s -1 64
fhDfyYVJ4EH3tvAyUzmfWSeCXuf5sy5EEWrMQPaf9t3JSFrpiL6yvUEOWsFOTscP
为Taiga后端创建一个新的配置文件。
nano ~/taiga-back/settings/local.py
将下面的代码填充到文件中。
from .common import *
MEDIA_URL = "https://taiga.example.com/media/"
STATIC_URL = "https://taiga.example.com/static/"
SITES["front"]["scheme"] = "https"
SITES["front"]["domain"] = "taiga.example.com"
SECRET_KEY = "Generated_Secret_Key"
DEBUG = False
PUBLIC_REGISTER_ENABLED = True
DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL
#CELERY_ENABLED = True
EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga"}
# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
#EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
#EMAIL_USE_TLS = False
#EMAIL_HOST = "mail.example.com"
#EMAIL_HOST_USER = "[email protected]"
#EMAIL_HOST_PASSWORD = "SMTPPassword"
#EMAIL_PORT = 25
# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"
请确保example domain name
将上述代码替换为实际的代码。另外,用Taiga消息队列用户Generated_Secret_Key
的实际密钥和StrongMQPassword
实际密码替换。如果您已准备好SMTP服务器,并且希望立即使用电子邮件发送功能,则可以取消注释电子邮件选项并设置适当的值。如果尚未准备好邮件服务器,则可以暂时跳过设置电子邮件功能,稍后再在此配置文件中进行设置。
如果要启用GitHub登录,请在GitHub中创建一个应用程序,并提供API客户端ID和客户端密码。
要立即检查Taiga后端是否可以启动,请运行内置的Django服务器。
workon taiga
python manage.py runserver
如果服务器已成功启动,您将看到以下输出。
(taiga) taiga@vultr:~/taiga-back$ workon taiga
(taiga) taiga@vultr:~/taiga-back$ python manage.py runserver
Trying import local.py settings...
Trying import local.py settings...
Performing system checks...
System check identified no issues (0 silenced).
October 28, 2017 - 10:29:38
Django version 1.10.6, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
要验证是否可以访问该API,请打开另一个终端会话并运行以下命令。
curl http://127.0.0.1:8000/api/v1/
您将看到API调用返回的类似输出。
user@vultr:~$ curl http://127.0.0.1:8000/api/v1/
{"webhooks": "http://127.0.0.1:8000/api/v1/webhooks", "invitations": "http://127.0.0.1:8000/api/v1/invitations", "severities": "http://127.0.0.1:8000/api/v1/severities", "memberships": "http://127.0.0.1:8000/api/v1/memberships", "user-storage": "http://127.0.0.1:8000/api/v1/user-storage", "epics/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/epics/(?P<resource_id>\\d+)/voters", "wiki": "http://127.0.0.1:8000/api/v1/wiki", "priorities": "http://127.0.0.1:8000/api/v1/priorities", "userstories/attachments": "http://127.0.0.1:8000/api/v1/userstories/attachments", "epics/(?P<epic>[^/.]+)/related_userstories": "http://127.0.0.1:8000/api/v1/epics/(?P<epic>[^/.]+)/related_userstories", "timeline/user": "http://127.0.0.1:8000/api/v1/timeline/user", "userstories/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/userstories/(?P<resource_id>\\d+)/voters", "wiki-links": "http://127.0.0.1:8000/api/v1/wiki-links", "epics/attachments": "http://127.0.0.1:8000/api/v1/epics/attachments", "issues/custom-attributes-values": "http://127.0.0.1:8000/api/v1/issues/custom-attributes-values
按下“ ctrl + C
” 停止Taiga后端服务器,然后停用虚拟环境。
deactivate
Taiga前端是Taiga的组件,可为Web用户界面提供服务。从Github克隆Taiga前端存储库,并签出最新的稳定分支。
cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
cd taiga-front-dist
git checkout stable
为Taiga前端创建一个新的配置文件。
nano ~/taiga-front-dist/dist/conf.json
填充文件。
{
"api": "https://taiga.example.com/api/v1/",
"eventsUrl": "wss://taiga.example.com/events",
"eventsMaxMissedHeartbeats": 5,
"eventsHeartbeatIntervalTime": 60000,
"eventsReconnectTryInterval": 10000,
"debug": true,
"debugInfo": false,
"defaultLanguage": "en",
"themes": ["taiga"],
"defaultTheme": "taiga",
"publicRegisterEnabled": true,
"feedbackEnabled": true,
"privacyPolicyUrl": null,
"termsOfServiceUrl": null,
"maxUploadFileSize": null,
"contribPlugins": [],
"tribeHost": null,
"importers": [],
"gravatar": true
}
请确保将替换example domain
为实际域。您也可以在上述配置中更改默认语言和其他参数。
除了前端和后端之外,我们还需要安装Taiga事件。Taiga事件是一个Web套接字服务器,它使Taiga前端能够显示积压,看板等模块中的实时更改。它还使用RabbitMQ服务器进行消息处理。
从Github克隆Taiga事件存储库。
cd ~
git clone https://github.com/taigaio/taiga-events.git taiga-events
cd taiga-events
使用安装Node.js依赖项npm
。
npm install
为Taiga事件创建一个新的配置文件。
nano ~/taiga-events/config.json
填充文件。
{
"url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga",
"secret": "Generated_Secret_Key",
"webSocketServer": {
"port": 8888
}
}
替换Generated_Secret_Key
为您先前生成的实际64个字符的长密钥。密钥应与您在Taiga后端配置文件中提供的密钥完全相同。另外,StrongMQPassword
使用Taiga消息队列用户的实际密码更新。
Circus是Python应用程序的流程管理器。我们将使用马戏团来运行Taiga后端和事件。
切换回sudo
用户。
exit
注意:从现在开始,您将需要使用sudo
user 运行命令。
sudo apt -y install circus
创建一个新的马戏团配置文件以运行Taiga后端。
sudo nano /etc/circus/conf.d/taiga.ini
填充文件。
[watcher:taiga]
working_dir = /home/taiga/taiga-back
cmd = gunicorn
args = -w 3 -t 60 --pythonpath=. -b 127.0.0.1:8001 taiga.wsgi
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/gunicorn.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 4
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/gunicorn.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 4
[env:taiga]
PATH = /home/taiga/.virtualenvs/taiga/bin:$PATH
TERM=rxvt-256color
SHELL=/bin/bash
USER=taiga
LANG=en_US.UTF-8
HOME=/home/taiga
PYTHONPATH=/home/taiga/.virtualenvs/taiga/lib/python3.5/site-packages
创建新的马戏团配置以运行Taiga事件。
sudo nano /etc/circus/conf.d/taiga-events.ini
填充文件。
[watcher:taiga-events]
working_dir = /home/taiga/taiga-events
cmd = /usr/local/bin/coffee
args = index.coffee
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/taigaevents.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 12
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/taigaevents.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 12
重新启动马戏团并启用以在启动时自动启动。
sudo systemctl restart circusd
sudo systemctl enable circusd
检查马戏团的状态。
circusctl status
如果马戏团已正确启动所有Taiga进程,则您将看到以下输出。
user@vultr:~$ circusctl status
circusd-stats: active
plugin:flapping: active
taiga: active
taiga-events: active
如果您看到任何未激活的进程,请运行sudo chmod -R 777 /home/taiga/logs
并重新启动Circus。再次检查马戏团进程的状态,这一次您肯定会发现该服务正在运行。
现在,我们已经成功安装并运行了Taiga。在使用它之前,我们需要使用任何生产Web服务器公开安装。
我们将使用Nginx作为反向代理来为用户提供应用程序。我们还将从Let's Encrypt获取并安装SSL证书。
Certbot是Let's Encrypt CA的官方证书颁发客户端。将Certbot PPA存储库添加到系统中。
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
安装Nginx和Certbot。
sudo apt -y install nginx certbot
注意:要从Let's Encrypt CA获得证书,必须确保要为其生成证书的域指向服务器。如果不是,请对您域的DNS记录进行必要的更改,并等待DNS传播,然后再次提出证书请求。Certbot在提供证书之前会检查域权限。
现在,使用Certbot中的内置Web服务器为您的域生成证书。
sudo certbot certonly --standalone -d taiga.example.com
生成的证书很可能存储在/etc/letsencrypt/live/taiga.example.com/
目录中。SSL证书将保留为fullchain.pem
,私钥将另存为privkey.pem
。
让我们加密证书的有效期限为90天,因此建议使用Cron作业为证书设置自动续订。Cron是一项系统服务,用于运行定期任务。
打开cron作业文件。
sudo crontab -e
添加以下行。
0 0 * * * /usr/bin/certbot renew --quiet
上面的cron工作将每天在午夜运行。如果证书到期,它将自动续订证书。
生成一个强大的Diffie-Hellman参数。它为主机和服务器之间的数据交换提供了额外的安全性。
sudo openssl dhparam -out /etc/ssl/dhparam.pem 2048
创建一个新的Nginx服务器块来服务Taiga前端。
sudo nano /etc/nginx/sites-available/taiga
用以下内容填充文件。
server {
listen 80;
server_name taiga.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name taiga.example.com;
access_log /home/taiga/logs/nginx.access.log;
error_log /home/taiga/logs/nginx.error.log;
large_client_header_buffers 4 32k;
client_max_body_size 50M;
charset utf-8;
index index.html;
# Frontend
location / {
root /home/taiga/taiga-front-dist/dist/;
try_files $uri $uri/ /index.html;
}
# Backend
location /api {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8001/api;
proxy_redirect off;
}
location /admin {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8001$request_uri;
proxy_redirect off;
}
# Static files
location /static {
alias /home/taiga/taiga-back/static;
}
# Media files
location /media {
alias /home/taiga/taiga-back/media;
}
location /events {
proxy_pass http://127.0.0.1:8888/events;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
}
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';
ssl on;
ssl_certificate /etc/letsencrypt/live/taiga.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/taiga.example.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
}
请务必更改domain name
和path to the SSL certificates
。启用虚拟主机。
sudo ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/taiga
现在,您可以重新启动Nginx Web服务器,并使它能够在启动时自动启动。
sudo systemctl restart nginx
sudo systemctl status nginx
最后,修复Taiga文件的所有权和权限。
sudo chown -R taiga:taiga /home/taiga/
sudo chmod o+x /home/taiga/
现在,您可以访问进入Taiga安装https://taiga.example.com
。使用具有用户名“ admin
”和密码“ 123123
” 的初始管理员帐户登录。现在,您的安装已准备好用于生产。首先创建一个新项目或评估产品。如果您已经在Github,Jira或Trello上管理项目,则可以使用importers轻松地将项目导入Taiga 。
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。
Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+
閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。
最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息
大數據的13個商業數據提取工具
我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true
隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。
洞察 26 種大數據分析技術:第 1 部分
過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。