Ubuntu 20.04 기본 서버 설정(초보자 자습서)
소개👇
이전 두 편의 블로그 글에서 우리는 서버 없는 기능을 배치하는 용이성을 탐구했다.분명히 이것은 서버를 유지하는 번거로움을 없애고 대부분의 상황에서 운행 원가를 낮출 수 있는 좋은 방법이다.
그러나 우리가 현재 과학 기술계에서 보고 있는 전체의'서버 없는 투기'를 제외하고 많은 프로젝트는 여전히 전통적인 클라우드 가상 기기를 필요로 한다.
응용 프로그램이 서버가 없는 환경에서 잘 실행되지 않거나 용례에 맞지 않을 수도 있습니다.다행히도 우리 같은 멋있지 않은 사람들에게는 서버가 없는 것이 아니라 서버를 사용하는 것이 간단하다!😄
우리 이 박문에서 되돌아봅시다!
주의: 이 강좌를 배우기 위해서, 나는 당신이 사용할 수 있는 단말기가 있다고 가정합니다.이것은 Linux 기기, Mac OS 또는 Windows Linux 서브시스템에 있습니다.
1. 어떤 선택❓
여러 클라우드 공급업체가 가상 클라우드 기기를 제공한다.가장 널리 알려진 것들:
내가 가장 좋아하는 클라우드 제공 업체 중 하나로서, 만약 당신이 this referral link 등록을 통과한다면, 당신은 100달러짜리 포인트를 무료로 받을 수 있습니다.이보다 더 좋은 것은 없죠?
맞아, 그렇게 생각해.시작합시다!🔥
2. 시스템에서 SSH 키 설정🔑
Secure Shell(SSH라고도 함)은 암호화된 네트워크 프로토콜로 사용자가 안전하지 않은 네트워크에서 많은 네트워크 서비스를 안전하게 실행할 수 있도록 한다.
SSH 키는 암호뿐만 아니라 SSH를 사용하여 서버에 로그인하는 더 안전한 방법을 제공합니다.암호는 결국 만력 공격을 통해 풀 수 있지만 만력만으로는 SSH 키를 거의 풀 수 없다.
키 생성은 두 개의 긴 문자열을 제공합니다. 공개 키와 개인 키입니다.모든 서버에 공개 키를 놓고 개인 키가 있는 클라이언트와 연결을 통해 공개 키를 잠금 해제할 수 있습니다.
둘이 일치하면 잠금이 해제됩니다.🔓
1. RSA 키 쌍 만들기
따라서 첫 번째 단계는 다음 명령을 사용하여 개발 시스템에서 키 쌍을 만드는 것입니다.
$ ssh-keygen -t rsa
터미널 프롬프트에서 키를 위한 암호를 설정해야 합니다.항상 비밀번호를 설정해야 합니다!만약 당신이 이렇게 하지 않고 누군가가 당신의 기계에 접근할 수 있는 권한을 부여받지 않았을 수도 있습니다. 그들은 당신의 개인 키를 자신의 기계에 복사해서 모든 서버에 로그인할 수 있습니다.따라서 암호가 키를 보호하는지 확인하십시오.🔐출력은 다음과 같습니다.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/raf/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/raf/.ssh/id_rsa.
Your public key has been saved in /home/raf/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 raf@a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+
공개 키는 현재 /home/raf/.ssh/id_rsa.pub
에 있습니다.개인 키 (표지) 는 현재 /home/raf/.ssh/id_rsa
에 있습니다.3. 우리 디지털 해양 계정에 키 추가 &droplet 시작📁
다음은 그들의 GUI를 통해 우리의 새 키를 디지털 해양 계정에 추가합니다.이렇게 하는 장점은 물방울을 시작할 때마다 키를 자동으로 새 서버로 복사하는 것이다!수동 조작을 피하면 생활이 더욱 수월해진다.
우리가 해야 할 첫 번째 일은 우리의 공개 키를 얻는 것이다.우리는 다음 명령을 실행함으로써 이 점을 실현할 수 있다.
$ cat ~/.ssh/id_rsa.pub
터미널의 출력은 긴 문자열이어야 합니다.아래와 유사하다.공개 키를 복사합니다.ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/aOIJUaUUiZP0KA4vslD97oNVzVYZAiZTTG2Z3ozis3pnt3ZKL5k/XvdOCyfb449BjsShiQim7h1+/m/HEQNVggOqQpWigMf+Ky+zHbQm9mAy+/PpIYMfbWI29nuBnljA9yPcTAdKQM15KNobWeawz0vxoxrncX88sadfasl3j23SFKGUuFpVHXfd4P4njisXrR8vRh07EoU5xafjXrBPYAIsc1vHpK8SpTvwZFc8NwVq2VoQ2s0ig3Fw0gLTgj7roaDEfCW0KZ6SBkAZEmCsFxTnQF8NDiafupNo9ic09xLijvwwasdlkasdfasl2an3fK4twqRcZuZQiRFIppb3kMFQmVWCXW1Udi2ph79TyEXKvmtEnynY+s9SYcGdDbYnbMKqHCrfD4D2JKWXZmuxt7QkFFGTWJeDTPKynmhfuihqQ84LxIK2Gi8sPhRdcs15Kw5A5ctpz+aqd3WUJl78dyvakIcoTNHG06zxR2X7hpz+8U2DQmort4/Dtb5XO9myE5POevdasCroPHxEslzZShHw6dSztC48j7LJ80mSYhI46Vfk5jiH2gT8IHF3JhxytNxBYwTClBYq0c2+M7o62vCVKRCoKFMomCsfME1TmwnJWOMWfnFqMXwBmanUEqJFldEOSg66+egZ5Ym1gSIdww== [email protected]
현재 sign up for Digital Ocean 계정을 설정합니다.대시보드에 로그인한 후 설정으로 이동하여 보안 탭을 클릭합니다.그런 다음 를 클릭하여 SSH 키를 추가합니다.공개 키를 붙여넣을 수 있는 모드가 열립니다.저장해야 합니다.
그런 다음 오른쪽 위 모서리의 버튼을 클릭하여 만든 다음 드롭다운 목록에서 Droplet을 선택합니다.
Digital Ocean Drops는 가상화 하드웨어에서 실행되는 Linux 기반 VM입니다.생성된 모든 물방울은 새로운 서버로 단독으로 사용할 수도 있고 클라우드 기반 인프라의 일부로 사용할 수도 있습니다.
물방울을 추가할 때 Ubuntu 20.04를 이미지로 선택하고 표준 5달러 계획을 선택하십시오.아래로 스크롤할 때 이전에 계정에 추가된 SSH 키를 선택하고 서버에 멋진 호스트 이름을 제공하는지 확인하십시오!🆒
전체 연습을 보려면 아래의 GIF를 보십시오.
4. 서버 로그인🚀
좋아, 우리는 이미 아주 멀리 갔잖아, 그렇지 않아?지금은 진정으로 일할 때다!
만약 모든 것이 순조롭다면, Digital Ocean 대시보드에서 선택한 호스트 이름과droplet에 속하는 IP 주소를 포함하는droplet 실례를 볼 수 있을 것입니다.이 IP 주소를 복사하고 터미널 세션을 시작한 후 다음 명령을 실행합니다(IP 주소를 사용자의 것으로 대체).
$ ssh [email protected]
그것은 반드시 비밀번호를 물어야 한다.2단계에서 SSH 키에 대해 설정한 암호입니다.호스트 신뢰성에 대한 경고를 받습니다(나타나는 경우).현재, 루트 사용자로 자신의 클라우드 서버에 로그인해야 합니다.이거 너무 멋있어!🎉참고 Root은 Unix 및 Linux의 수퍼유저 계정입니다.이것은 관리 목적을 위한 사용자 계정으로 일반적으로 시스템에서 가장 높은 접근 권한을 가진다.
5, 기본 서버 설정💻
새로운 Ubuntu 20.04 서버를 처음 만들 때, 기본 설정의 일부로서 중요한 설정 절차를 수행해야 합니다.이러한 절차는 서버의 안전성과 가용성을 향상시키고 후속 작업에 튼튼한 기반을 다질 것이다.
1. 기본 방화벽 설치
Ubuntu 20.04 서버는 일부 서비스에만 연결할 수 있도록 UFW 방화벽을 사용할 수 있습니다.이 응용 프로그램을 사용하면 기본 방화벽을 쉽게 설정할 수 있습니다.
설치 시 UFW에 프로파일을 등록할 수 있습니다.이러한 구성 파일은 UFW가 애플리케이션을 이름별로 관리할 수 있도록 합니다.OpenSSH는 UFW에 등록된 구성 파일이 있는 현재 서버에 연결할 수 있는 서비스입니다.
방화벽을 사용하기 전에 OpenSSH가 방화벽 구성에 추가되었는지 확인합니다.그렇지 않으면 우리는 다시 로그인할 수 없습니다.다음 명령을 실행합니다.
$ ufw allow OpenSSH
이제 시작 시 방화벽 사용:$ ufw enable
만약 당신이 지금 아래의 명령으로 방화벽의 상태를 검사하고 있다면, 그것은 이미 시작되고 실행되었을 것이다.$ ufw status
현재 방화벽은 SSH를 제외한 모든 연결을 막고 있습니다. 다른 서비스를 설치하고 설정하려면 데이터가 들어갈 수 있도록 방화벽 설정을 조정해야 합니다.예: 웹 서버를 실행하고 SSL을 통해 웹 사이트를 외부 세계에 공개하고자 한다고 가정합니다.현재 방화벽이 모든 연결을 막고 있기 때문에 443포트를 열어야만 웹 사이트에 서비스를 제공할 수 있습니다.이것은 달리기처럼 간단하다.
$ ufw allow 443
응용 프로그램을 변경한 후에 항상 방화벽을 다시 불러와야 합니다.다음 명령을 실행하여 이 작업을 수행할 수 있습니다.$ ufw reload
둘째,기본 SSH 포트 변경
기본적으로 SSH는 포트 22에서 실행됩니다.자동 로봇과 악성 사용자가 서버를 폭행하는 것을 방지하기 위해서 우리는 포트를 다른 포트로 변경할 수 있습니다.
지능형 공격자는 서버에서 실행되는 오픈 포트와 서비스를 확인하기 위해 서버를 검색합니다.그러나 기본 SSH 포트를 변경하면 수천 차례의 자동 공격을 막을 수 있습니다. 이 공격은 Linux 서버를 대상으로 할 때 포트를 회전할 시간이 없습니다.😁
이 예에서는 원하는 사용 가능한 포트를 선택할 수 있습니다
Port 3467
.따라서 우리가 해야 할 첫 번째 일은 방화벽이 포트를 허용하도록 확보하는 것이다.이제 알 수 있는 것처럼 다음과 같은 방식으로 수행할 수 있습니다.$ ufw allow 3467
다음 내용으로 방화벽을 다시 로드합니다.$ ufw reload
이제 SSH 구성 파일을 조정하고 새로 선택한 포트를 사용하도록 알려야 합니다.다음 명령을 실행하여 수행할 수 있습니다.$ nano /etc/ssh/sshd_config
검색에 표시된 행 #Port 22
:#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
주석을 취소하고 Port 3467
로 변경합니다.현재 ctrl + x
을 사용하여 파일을 저장하고 y
를 입력하여 저장하고 종료합니다.우리가 해야 할 마지막 일은 우리의 새로운 변경 사항을 적용하기 위해 SSH 서비스를 다시 시작하는 것이다.다음 명령을 사용하여 이 작업을 수행할 수 있습니다.
$ systemctl restart sshd.service
IMPORTANT:
Whenever you make changes like this ALWAYS double check if you can get back into the server first, before you close your terminal session ❗
새 포트를 통해 서버에 다시 로그인할 수 있는지 봅시다.다음 작업을 시도하는 경우:
$ ssh [email protected]
그러면 호스트가 거부됩니다.이것은 ssh
명령이 기본적으로 Port 22
이기 때문이다. 그러나 우리는 분명히 이 점을 바꾸었기 때문에 더 이상 사용하지 않는다.그리고 우리가 해야 할 일은 로그인 명령에서 포트를 전문적으로 설정하는 것이다.너는 이렇게 할 수 있다.$ ssh [email protected] -p 3467
만약 모든 것이 순조롭다면, 당신은 새 포트를 통해 로그인하기만 하면 됩니다.이제 다른 터미널 세션을 안전하게 닫을 수 있습니다.3. 암호 인증 해제
SSH 키 액세스를 위해 서버를 설정한 후 암호 유효성 검사 옵션을 비활성화하는 것이 일반적인 방법입니다.이렇게 하면 SSH 키 쌍만 연결할 수 있습니다.
다행히도 Digital Ocean은 물방울을 초기화할 때 SSH 키를 지정했기 때문에 이 문제를 해결했습니다.그러나 다른 클라우드 공급자를 사용한다면 이 기능을 사용하지 않도록 하십시오.이 작업은 SSH 구성 파일에서 수행할 수 있습니다.
4. 더 많은 안전 실천
아직 소개할 내용이 많지만, 우리가 이 블로그에서 토론한 절차는 내가 서버를 설정할 때 건의한 최소한의 절차이다.다음 뚜렷한 단계는 일상적으로 사용하는 일반 사용자를 만드는 것이다.
보안의 경우 방화벽 개선, Fail2Ban 설정 같은 서비스, 직접 루트 로그인 금지 등을 통해 보안을 더욱 높일 수 있습니다. 저는 여기서 당신을 귀찮게 하지 않습니다.💤, 하지만 언제든지 인터넷에서 더 많은 정보를 보십시오.
결론⚡
네, 서버 설정의 세계를 깊이 있게 이해했습니다.
다음 블로그에서, 우리는 당신의 서버에 실제적으로 웹 앱을 제공할 수 있도록 당신이 필요로 하는 것을 토론할 것입니다.우리는 또한 기본적인 CI 파이프를 통합할 것이다. 이 파이프는 우리의droplet과 연결되어 있으며, 이를 Github로 전송한 후,droplet은 우리의 변경 사항을 자동으로 배치할 것이다.계속 지켜봐 주세요!
다음에 봐요!👋
Reference
이 문제에 관하여(Ubuntu 20.04 기본 서버 설정(초보자 자습서)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rafrasenberg/ubuntu-20-04-basic-server-set-up-beginner-tutorial-14h2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)