AI 能否應對越來越多的勒索軟件攻擊?
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
持续集成是一种DevOps软件开发实践,使开发人员每天可以多次频繁地将修改后的代码合并到共享存储库中。每次合并后,将执行自动构建和测试以检测代码中的问题。它使开发人员能够快速发现并解决错误,从而提高软件质量并提供连续的软件交付。从Concourse来回切换非常容易,因为它将所有配置保留在声明性文件中,可以将其检入版本控制中。它还提供了一个Web用户界面,可交互显示构建信息。
确保 用实际的Vultr公共IP地址和实际域名替换所有出现的 192.0.2.1
和 ci.example.com
。
使用指南如何更新Ubuntu 16.04更新基本系统 。系统更新后,继续安装PostgreSQL。
PostgreSQL是一个对象关系数据库系统。Concourse将其管道数据存储到PostgreSQL数据库中。添加PostgreSQL存储库。
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
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
为Concourse CI创建一个新的PostgreSQL用户。
createuser concourse
注意: 可以使用默认的PostgreSQL用户对数据库进行身份验证,但是建议在生产设置中使用专用的用户对Concourse数据库进行身份验证。
PostgreSQL提供了一个外壳程序来在数据库上运行查询。切换到PostgreSQL shell。
psql
为新创建的Concourse数据库用户设置密码。
ALTER USER concourse WITH ENCRYPTED password 'DBPassword';
重要提示:替换 DBPassword
为强密码。记下密码,因为稍后在本教程中将需要输入密码。
为Concourse创建一个新的数据库。
CREATE DATABASE concourse OWNER concourse;
退出 psql
外壳。
\q
从当前postgres
用户切换到sudo 用户。
exit
下载最新版本的Concourse可执行文件并将其存储在其中, /usr/bin
以便可以直接执行。可在Concourse下载页面上找到最新版本的Concourse和Fly二进制文件 。 新版本非常频繁。 将下面的链接替换为最新版本的新链接。
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/concourse_linux_amd64 -O /usr/bin/concourse
同样,下载最新版本的fly可执行文件并将其存储在中 /usr/bin
。
sudo wget https://github.com/concourse/concourse/releases/download/v3.10.0/fly_linux_amd64 -O /usr/bin/fly
Fly是用于连接到Concourse CI的ATC API的命令行界面。Fly可用于多种平台,例如Linux,Windows和MacOS。
分配执行权限下载 concourse
和 fly
二进制文件。
sudo chmod +x /usr/bin/concourse /usr/bin/fly
通过检查其版本来检查Concourse和Fly是否正常工作。
concourse -version
fly -version
RSA密钥对提供了一种加密场所组件之间的通信的方法。
为了使Concourse正常工作,必须至少生成三对密钥。为了加密会话数据,请生成一个 session_signing_key
。TSA还将使用此密钥对它向ATC发出的请求进行签名。要保护TSA SSH服务器,请生成一个 tsa_host_key
。最后,worker_key
为每个工人生成一个 。
创建一个新目录来存储与Concourse CI相关的键和配置。
sudo mkdir /opt/concourse
生成所需的密钥。
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/session_signing_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/tsa_host_key
sudo ssh-keygen -t rsa -q -N '' -f /opt/concourse/worker_key
通过将其内容复制到authorized_worker_keys
文件中来授权工人的公共密钥 。
sudo cp /opt/concourse/worker_key.pub /opt/concourse/authorized_worker_keys
Concourse提供了两个需要启动的独立组件:Web和Worker。启动Concourse网站。
sudo concourse web \
--basic-auth-username admin \
--basic-auth-password StrongPass \
--session-signing-key /opt/concourse/session_signing_key \
--tsa-host-key /opt/concourse/tsa_host_key \
--tsa-authorized-keys /opt/concourse/authorized_worker_keys \
--postgres-user=concourse \
--postgres-password=DBPassword \
--postgres-database=concourse \
--external-url http://192.0.2.1:8080
basic-auth
如果需要,请更改的用户名和密码 。确保密钥文件的路径正确,并确保在PostgreSQL数据库配置中提供了正确的用户名和密码值。
注意:ATC将监听默认端口 8080
,TSA将监听端口 2222
。如果不需要身份验证,请 --no-really-i-dont-want-any-auth
在删除基本身份验证选项后通过该选项。
Web服务器启动后,将显示以下输出。
{"timestamp":"1503657859.661247969","source":"tsa","message":"tsa.listening","log_level":1,"data":{}}
{"timestamp":"1503657859.666907549","source":"atc","message":"atc.listening","log_level":1,"data":{"debug":"127.0.0.1:8079","http":"0.0.0.0:8080"}}
现在停止服务器,因为还必须设置一些其他内容。
启动Concourse CI Worker。
sudo concourse worker \
--work-dir /opt/concourse/worker \
--tsa-host 127.0.0.1 \
--tsa-public-key /opt/concourse/tsa_host_key.pub \
--tsa-worker-private-key /opt/concourse/worker_key
上面的命令将假定TSA在本地主机上运行并且正在侦听默认端口 2222
。
尽管可以使用上面的命令轻松启动Concourse Web和worker,但是建议使用Systemd来管理服务器。
使用Systemd服务管理应用程序可确保在出现故障和引导时自动启动应用程序。Concourse服务器不从任何配置文件中获取数据,但是可以从环境变量访问数据。无需设置全局环境变量,而是创建一个新文件来存储环境变量,然后使用Systemd服务将变量传递给Concourse CI。
为Concourse网站创建一个新的环境文件。
sudo nano /opt/concourse/web.env
填充文件。
CONCOURSE_SESSION_SIGNING_KEY=/opt/concourse/session_signing_key
CONCOURSE_TSA_HOST_KEY=/opt/concourse/tsa_host_key
CONCOURSE_TSA_AUTHORIZED_KEYS=/opt/concourse/authorized_worker_keys
CONCOURSE_POSTGRES_USER=concourse
CONCOURSE_POSTGRES_PASSWORD=DBPassword
CONCOURSE_POSTGRES_DATABASE=concourse
CONCOURSE_BASIC_AUTH_USERNAME=admin
CONCOURSE_BASIC_AUTH_PASSWORD=StrongPass
CONCOURSE_EXTERNAL_URL=http://192.0.2.1:8080
BASIC_AUTH
如果需要,请更改的用户名和密码 。确保密钥文件的路径正确,并确保在PostgreSQL数据库配置中提供了正确的用户名和密码值。
同样,为工作程序创建环境文件。
sudo nano /opt/concourse/worker.env
填充文件。
CONCOURSE_WORK_DIR=/opt/concourse/worker
CONCOURSE_TSA_WORKER_PRIVATE_KEY=/opt/concourse/worker_key
CONCOURSE_TSA_PUBLIC_KEY=/opt/concourse/tsa_host_key.pub
CONCOURSE_TSA_HOST=127.0.0.1
由于环境文件包含用户名和密码,因此请更改其权限,以便其他用户无法访问它。
sudo chmod 600 /opt/concourse/*.env
现在为Concourse创建一个新用户以运行Web环境。这将确保Web服务器在隔离的环境中运行。
sudo useradd concourse
授予Concourse用户对Concourse CI文件目录的所有权。
sudo chown -R concourse:concourse /opt/concourse
为Concourse Web服务创建一个新的systemd服务文件。
sudo nano /etc/systemd/system/concourse-web.service
填充文件。
[Unit]
Description=Concourse CI web server
[Service]
Type=simple
User=concourse
Group=concourse
Restart=on-failure
EnvironmentFile=/opt/concourse/web.env
ExecStart=/usr/bin/concourse web
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_web
[Install]
WantedBy=multi-user.target
保存并关闭文件。为Concourse Worker服务创建一个新的服务文件。
sudo nano /etc/systemd/system/concourse-worker.service
填充文件。
[Unit]
Description=Concourse CI worker process
[Service]
Type=simple
Restart=on-failure
EnvironmentFile=/opt/concourse/worker.env
ExecStart=/usr/bin/concourse worker
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=concourse_worker
[Install]
WantedBy=multi-user.target
现在可以直接启动Web和辅助服务。
sudo systemctl start concourse-web concourse-worker
要使工作进程和Web进程在启动时自动启动,请运行以下命令。
sudo systemctl enable concourse-worker concourse-web
要检查服务的状态,请运行以下命令。
sudo systemctl status concourse-worker concourse-web
如果服务未启动或处于 FAILED
状态,请从/tmp
目录中删除缓存 。
sudo rm -rf /tmp/*
重新启动服务。
sudo systemctl restart concourse-worker concourse-web
请注意,这次服务已正确启动。验证服务状态后的输出将类似于以下内容。
[user@vultr ~]$ sudo systemctl status concourse-worker concourse-web
● concourse-worker.service - Concourse CI worker process
Loaded: loaded (/etc/systemd/system/concourse-worker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3037 (concourse)
CGroup: /system.slice/concourse-worker.service
└─3037 /usr/bin/concourse worker
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.934722900","source":"tsa","message":"t...""}}
Aug 26 07:27:42 vultr.guest concourse_worker[3037]: {"timestamp":"1503732462.941227913","source":"guardian","messag...0"}}
...
● concourse-web.service - Concourse CI web server
Loaded: loaded (/etc/systemd/system/concourse-web.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2017-08-26 07:27:37 UTC; 55s ago
Main PID: 3036 (concourse)
CGroup: /system.slice/concourse-web.service
└─3036 /usr/bin/concourse web
Aug 26 07:27:57 vultr.guest concourse_web[3036]: {"timestamp":"1503732477.925554752","source":"tsa","message":"tsa...ve"}}
Aug 26 07:28:02 vultr.guest concourse_web[3036]: {"timestamp":"1503732482.925430775","source":"tsa","message":"tsa...ve"}}
...
Hint: Some lines were ellipsized, use -l to show in full.
服务器启动后,可以通过http://192.0.2.1:8080
在任何浏览器中访问来访问Concourse CI的Web界面 。使用环境文件中提供的用户名和密码登录。
要使用Fly连接到服务器,请运行以下命令。
fly -t my-ci login -c http://192.0.2.1:8080
上面的命令用于初始登录服务器。 -t
用于提供目标名称。替换 my-ci
为任何所需的目标名称。上面的命令将登录到默认团队 main
。它将要求环境文件中提供的用户名和密码。
输出将如下所示。
[user@vultr ~]$ fly -t my-ci login -c http://192.0.2.1:8080
logging in to team 'main'
username: admin
password:
target saved
目标登录将保存一天。在那之后,它将过期。
立即注销。
fly -t my-ci logout
Fly可用于登录网络外部的服务器,但前提是该服务器具有公共IP地址并且可以从网络外部访问。可以从下载站点或从服务器的Web UI下载Windows或MacOS二进制文件。
通过Web UI发送到Concourse服务器的登录名和其他信息不安全。连接未加密。可以使用“让我们加密”免费SSL来设置Nginx反向代理。
安装Nginx。
sudo apt -y install nginx
启动Nginx并使它能够在启动时自动启动。
sudo systemctl start nginx
sudo systemctl enable nginx
添加Certbot存储库。
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
安装Certbot,这是Let's Encrypt CA的客户端应用程序。
sudo apt -y install certbot
注意:要从Let's Encrypt CA获取证书,必须为其生成证书的域指向服务器。如果不是,请对域的DNS记录进行必要的更改,并在再次发出证书请求之前,等待DNS传播。Certbot在提供证书之前会检查域权限。
生成SSL证书。
sudo certbot certonly --webroot -w /var/www/html -d ci.example.com
生成的证书很可能存储在 /etc/letsencrypt/live/ci.example.com/
目录中。SSL证书将存储为 fullchain.pem
,私钥将存储为 privkey.pem
。
让我们加密证书在90天后过期,因此建议使用cronjobs设置证书的自动续订。Cron是一项系统服务,用于运行定期任务。
打开cron作业文件。
sudo crontab -e
在文件末尾添加以下行。
30 5 * * * /usr/bin/certbot renew --quiet
上面的cron工作将于每天5:30 AM运行。如果证书到期,它将自动更新。
创建一个新的虚拟主机。
sudo nano /etc/nginx/sites-available/concourse
填充文件。
server {
listen 80;
server_name ci.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name ci.example.com;
ssl_certificate /etc/letsencrypt/live/ci.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ci.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/concourse.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 90;
proxy_redirect http://localhost:8080 https://ci.example.com;
}
}
注意:用ci.example.com
实际的域替换 。
激活配置文件。
sudo ln -s /etc/nginx/sites-available/concourse /etc/nginx/sites-enabled/concourse
编辑为Concourse Web创建的环境文件。
sudo nano /opt/concourse/web.env
更改的值, CONCOURSE_EXTERNAL_URL
并在文件末尾添加两行。
CONCOURSE_EXTERNAL_URL=https://ci.example.com
CONCOURSE_BIND_IP=127.0.0.1
CONCOURSE_BIND_PORT=8080
保存文件,然后重新启动Concourse Web,Worker和Nginx。
sudo systemctl restart concourse-worker concourse-web nginx
现在,通过SSL加密保护了往返浏览器的所有数据。
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?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 部分
過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。