AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?
랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.
상자 설정 및 구성 프로세스를 자동화하는 방법에는 여러 가지가 있습니다. 어떤 이유로 든이 시점에서 전체 시스템이 단일 상자로만 구성된 경우 전체 SCM (Software Configuration Management) 인프라를 설정하는 것은 너무 과도합니다. 셸 스크립트는 하나의 옵션이지만 일부 도구에서 사용할 수있는 SCM의 제거 버전을 사용할 수도 있습니다. Chef는 널리 사용되는 옵션 중 하나이며 "chef-solo"는 "chef-server"로 작동하기 위해 추가 노드가 필요하지 않은 Chef의 독립형 구성 모드입니다. 요리사 요리 책이 포함 된 tarball 패키지의 URL 또는 경로 만 있으면됩니다. 쉘 스크립트와 비교할 때이 유형의 접근 방식은보다 선언적이고 효율적이며 SCM 또는 IaC (Infrastructure as Code) 프로세스를 시작하기위한 좋은 소개입니다.
요리사 '요리 책'내부의 '레시피'에는 루비 기반 DSL이 있으며 '자원'이 노드의 특정 상태에 있다고 설명합니다. chef-solo에도 적용 할 수있는 몇 가지 Chef 개념을 익히는 연습을 진행해 보겠습니다. 우리의 목표는 Gunicorn 및 NGINX를 사용하여 Python / Django 웹 앱을 실행하는 Ubuntu 노드를 설정하는 것입니다.
참고 : "Chef 워크 스테이션"(본 기기)에 ChefDK를 반드시 설치할 필요는 없지만 'chef generate'명령을 사용하여 요리 책, 레시피 등을 만들기위한 디렉토리 구조로 시작할 수 있습니다. 이 기사에서는 워크 스테이션에 ChefDK가 설치되어 있다고 가정합니다. ChefDK 버전 4.7.26-1을 사용하여 명령이 실행되었습니다.
(달리 명시되지 않는 한,이 시점부터는 모두 'Chef Workstation'이라고도하는 기계에서 실행해야합니다.)
chef의 요리 책은 구성 시나리오를 지원하는 데 필요한 모든 것을 포함하는 재사용 가능한 단위입니다. 요리 책에는 여러 개의 '레시피'가 포함될 수 있으며 '레시피'는 대부분 리소스 패턴으로 구성됩니다. default.rb
요리 책이 run-list 에서 참조 될 때 실행될 기본 레시피입니다 . 여러 가지 레시피로 우려를 분리 할 수 있습니다. 그러나이 학습서에서는 모든 자원 선언을 하나의 기본 레시피 파일 ()에 추가합니다 default.rb
.
"my-chef-project"라는 폴더를 만들고 그 안에 "cookbooks"라는 폴더를 만듭니다. 에서 다음 ./my-chef-project/cookbooks/
을 실행하십시오.
$ chef generate cookbook my-cookbook
디렉토리 구조는 다음과 같습니다 :
.
└── my-chef-project
└── cookbooks
└── my-cookbook
├── CHANGELOG.md
├── LICENSE
├── Policyfile.rb
├── README.md
├── chefignore
├── kitchen.yml
├── metadata.rb
├── recipes
│ └── default.rb
├── spec
│ ├── spec_helper.rb
│ └── unit
│ └── recipes
│ └── default_spec.rb
└── test
└── integration
└── default
└── default_test.rb
노드를 설정하는 첫 번째 단계는 앱에 필요한 패키지를 식별하는 것입니다. 우리 노드는 Ubuntu로 선택되었으므로 APT 패키지 관리자를 사용하여 종속성을 수집 할 수 있습니다. OS 배포판에서 제공하는 패키지 설치는 다음과 같습니다.
apt_update
package 'python3'
package 'python3-pip'
package 'nginx'
package 'pkg-config'
package 'libcairo2-dev'
package 'libjpeg-dev'
package 'libgif-dev'
package 'libgirepository1.0-dev'
이것들은 거의 자명하다. 첫 번째 행은 apt 저장소를 업데이트하고 다음 행은 해당 패키지를 설치합니다.
참고 : 'nginx'다음 패키지는 pip를 통해 일부 파이썬 종속성을 컴파일하는 데 필요합니다. 에 지정된 Python / Django 프로젝트 종속성에 따라 다를 수 있습니다
requirements.txt
. 시행 착오 방법을 사용하여 요리 책에 포함해야 할 패키지를 결정할 수 있습니다. 그렇게하려면sudo pip install -r requirements.txt
새로 인스턴스화 된 우분투 머신에서 매뉴얼 (참고 : 시스템 전체에 패키지를 설치합니다!)을 수행하여 성공적으로 실행되는지 확인하십시오. 그렇지 않은 경우 stderr은 누락 된 패키지에 대한 힌트를 제공해야합니다.
필요한 패키지를 추가 한 후에는 응용 프로그램 소스 코드를 소유 할 권한이없는 Linux 사용자를 만들어야합니다.
user 'bob' do
uid 1212
gid 'users'
home '/home/bob'
shell '/bin/bash'
password '$1$alilbito$C83FsODuq0A1pUMeFPeR10'
end
비밀번호는 Linux에서 사용되는 쉐도우 해시 형식입니다. OpenSSL을 사용하여 파생 될 수 있습니다.
$ openssl passwd -1 -salt alilbitof mypassword
이제 Django 애플리케이션 소스 코드를 요리 책에 포함시켜 봅시다. 소스 코드 내부에 배치 ./my-chef-project/cookbooks/my-cookbook/files/default/myapp/
만들기 ./my-chef-project/cookbooks/my-cookbook/files/default
가 존재하지 않는 경우 디렉토리를.
이러한 파일을 노드의 원격 위치로 복사하는 방법은 remote_directory 자원을 사용하여 설명 합니다.
remote_directory '/home/bob/myapp' do
source 'myapp' # This is the name of the folder containing our source code that we kept in ./my-cookbook/files/default/
owner 'bob'
group 'users'
mode '0755'
action :create
end
에 python 패키지를 설치 requirements.txt
하기 위해 execute 리소스를 사용하여 임의의 명령을 실행할 수 있습니다 . 이 경우 pip install 명령을 실행해야합니다.
execute 'install python dependencies' do
command 'pip3 install -r requirements.txt'
cwd '/home/bob/myapp'
end
참고 : 이것은 루트 사용자로 실행되며 파이썬 라이브러리는 시스템 전체에 설치됩니다. 우리의 노드 가이 단일 파이썬 앱을 독점적으로 실행하도록 지정되어 있다면 큰 문제는 아닙니다. 그럼에도 불구하고, 물건을 깨끗하고 깔끔하게 유지하는 더 좋은 옵션은 파이썬 설치 또는 'virtualenvs'를 관리하는 커뮤니티 요리 책을 찾아 사용하는 것입니다. (또는 최소한 이것을 복제하기 위해 일련의 실행 블록을 작성하십시오). 파이썬에서 virtualenvs를 사용하면 파이썬 기반 시스템 도구 또는 다른 파이썬 프로젝트에 영향을 미치지 않습니다.
이제 리버스 프록시로 NGINX를 사용하여 Gunicorn WSGI HTTP 서버를 준비 할 차례입니다. Nginx는 Django의 모든 정적 자산을 처리하는데도 사용됩니다.
Ubuntu에서 서비스로 Gunicorn을 묶기 위해 Systemd를 사용할 수 있습니다. systemd_unit의 자원 버전 12.11부터 요리사에 포함되어 있습니다.
systemd_unit 'gunicorn.service' do
content({
Unit: {
Description: 'Django on Gunicorn',
After: 'network.target',
},
Service: {
ExecStart: '/usr/local/bin/gunicorn --workers 3 --bind localhost:8080 myapp.wsgi:application',
User: 'bob',
Group: 'www-data',
WorkingDirectory: '/home/bob/myapp'
Restart: 'always',
},
Install: {
WantedBy: 'multi-user.target',
}
})
action [:create, :enable, :start]
end
이제 아래와 같이이 Gunicorn 서버에 표준 NGINX 프록시 구성을 포함시켜야합니다. 이 스 니펫은에 들어갈 수 있습니다 ./my-cookbook/templates/nginx.conf.erb
. 템플릿 디렉토리가 없으면 만듭니다.
참고 : Chef의 템플릿은 변수, 루비 표현식 및 명령문을 포함 할 수있는 임베디드 루비 파일을 지원합니다. 이 파일의 확장자는 'erb'이지만 루비 명령문이나 표현식은 사용하지 않았습니다. 또한 단순성을 위해 HTTPS가 아닌 nginx 구성 만 있습니다 (부드럽게 상기시켜주십시오. 프로덕션 환경에서는 수행하지 마십시오!).
server {
listen 80;
server_name http://example.com/;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/bob/myapp/myapp/static;
}
location / {
include proxy_params;
proxy_pass http://localhost:8080/;
}
}
참고 : 예를 들어 Gunicorn 서버가 TCP 루프백 연결 대신 유닉스 도메인 소켓에 바인딩되어있는 대안 및 더 나은 구성도 있습니다. 성능상의 이유로이를 살펴볼 가치가 있습니다.
이 구성을 노드의 사이트 사용 가능 폴더로 복사하려면 Chef 의 템플리트 자원을 사용하십시오 .
template '/etc/nginx/sites-available/example.com.conf' do
source 'nginx.conf.erb'
owner 'root'
group 'root'
mode '0744'
end
nginx에서 설정 활성화는 일반적으로 sites-available
nginx의 sites-enabled
폴더 에서 설정을 가리키는 심볼릭 링크를 생성하여 수행됩니다 . 심볼릭 링크 는 아래 그림 과 같이 링크 리소스 가있는 요리사 요리 책에서 선언 할 수 있습니다 .
link '/etc/nginx/sites-enabled/example.com.conf' do
to '/etc/nginx/sites-available/example.com.conf'
end
기본 구성 심볼릭 링크를 삭제하려면
link '/etc/nginx/sites-enabled/default' do
action :delete
end
그리고 마지막으로 nginx 서비스를 시작하십시오.
service 'nginx' do
action :enable
action :start
end
chef의 실행 목록은 노드에서 순서대로 실행될 요리 책의 정렬 된 역할 또는 레시피 목록입니다. 우분투 상자에서 실행해야 할 요리 책 "my-cookbook"과 "default"레시피가 하나 있으므로 프로젝트 디렉토리 ( ./my-chef-project/runlist.json
) 의 runlist.json 은 다음과 같아야합니다.
{
"run_list": [
"recipe[my-cookbook::default]"
]
}
Chef solo 요리 책이 준비되었습니다. 이제 Ubuntu 18.04 머신을 프로비저닝하고 ChefDK를 설치할 차례입니다.
$ ssh [email protected] 'apt-get update && yes | apt-get install curl && curl https://packages.chef.io/files/current/chefdk/4.7.45/ubuntu/18.04/chefdk_4.7.45-1_amd64.deb -o chefdk.deb && yes | dpkg -i chefdk.deb && rm chefdk.deb'
Chef 워크 스테이션으로 돌아 가면 요리 책 폴더를 tarball 안에 넣고 tarball과 함께 runlist.json
위에서 프로비저닝 한 원격 노드 로 전송 하고 chef-solo 명령을 실행하기 만하면됩니다.
(아래 명령은 Chef Workstation이 아닌 노드 또는 'chef 클라이언트'내에서 실행됩니다 )
$ chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept
또는 여기 하나의 라이너가 있습니다 ( ./my-chef-project/
Chef Workstation의 CWD에서 실행 ).
tar zvcf chef-solo.tar.gz ./cookbooks &&\
scp chef-solo.tar.gz runlist.json [email protected]:~/ &&\
ssh [email protected] 'chef-solo --recipe-url $(pwd)/chef-solo.tar.gz -j $(pwd)/runlist.json --chef-license=accept'
그게 다야! 요리사 활동으로 요리 책에 지정된 내용으로 노드를 수렴하려는 표준 출력 채우기를보십시오. Chef-solo는 모든 요리 책에 필요한 모든 보석을 설치합니다. chef-solo 명령이 성공하면 우분투 상자에서 nginx 뒤에서 작동하는 장고 응용 프로그램이 생깁니다. 도메인 / IP로 이동하여 테스트하십시오.
참고 : django에서는의
ALLOWED_HOSTS
목록 에서이 도메인 / IP를 설정해야 할 수도 있습니다settings.py
.
프로젝트 디렉토리의 내용 (레시피, 템플릿 또는 애플리케이션 소스 코드 등)을 변경할 때마다 프로젝트 디렉토리에서 위의 한 줄을 실행하면됩니다.
팁 : 요리 책이 git으로 버전 제어되는 경우 (필요한 경우)이 하나의 라이너를 실행하기 위해 git hook을 설정하는 것이 좋습니다.
마지막 chef-solo 명령을 면밀히 살펴보면 --recipe-url
이 URL이 URL을 취한다는 의미입니다. 즉, CI가 요리사 솔로 타르볼을 구축하고 다른 곳에 업로드 한 후 주기적으로 가져 오도록 노드를 구성하는 워크 플로우를 가질 수 있습니다.
팁 : 컬을 사용하여 변경된 타르볼을 주기적으로 크론 작업으로 당기십시오.
curl -z $file
명예 것If-Modified-Since
헤더 및 원격 파일이 존재하는 지역에 타임 스탬프 이후 변경된 경우에만 타르 볼을 다운로드합니다$file
.
랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.
오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.
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부
의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.