Linux Admin-원격 관리
관리자로서 CentOS의 원격 관리에 대해 이야기 할 때 두 가지 방법을 살펴 보겠습니다.
- 콘솔 관리
- GUI 관리
원격 콘솔 관리
원격 콘솔 관리는 ssh와 같은 서비스를 통해 명령 줄에서 관리 작업을 수행하는 것을 의미합니다. CentOS Linux를 효과적으로 사용하려면 관리자로서 명령 줄에 능숙해야합니다. 그 중심에있는 Linux는 콘솔에서 사용하도록 설계되었습니다. 오늘날에도 일부 시스템 관리자는 명령의 힘을 선호하고 물리적 터미널과 GUI가 설치되지 않은 베어 본 Linux 박스를 실행하여 하드웨어 비용을 절감합니다.
원격 GUI 관리
원격 GUI 관리는 일반적으로 원격 X-Session 또는 VNC와 같은 GUI 응용 프로그램 계층 프로토콜의 두 가지 방법으로 수행됩니다. 각각의 장점과 단점이 있습니다. 그러나 대부분의 경우 VNC는 관리를위한 최상의 선택입니다. 기본적으로 X Windows 프로토콜을 지원하지 않는 Windows 또는 OS X와 같은 다른 운영 체제에서 그래픽 제어가 가능합니다.
원격 X 세션을 사용하는 것은 X-Window의 Window-Manager와 X에서 실행되는 DesktopManager 모두에 고유합니다. 그러나 전체 X 세션 아키텍처는 대부분 Linux에서 사용됩니다. 모든 시스템 관리자가 원격 X 세션을 설정하기 위해 Linux 랩톱을 보유하고있는 것은 아닙니다. 따라서 VNC 서버의 적응 버전을 사용하는 것이 가장 일반적입니다.
VNC의 가장 큰 단점은 다음과 같습니다. VNC는 기본적으로 원격 X-Session과 같은 다중 사용자 환경을 지원하지 않습니다. 따라서 최종 사용자에 대한 GUI 액세스의 경우 원격 XSession이 최선의 선택이 될 것입니다. 그러나 우리는 주로 CentOS 서버를 원격으로 관리하는 데 관심이 있습니다.
원격 X-Session을 사용하는 수백 명의 최종 사용자와 여러 관리자를위한 VNC 구성에 대해 설명합니다.
원격 콘솔 액세스를위한 SSH를 통한 보안 기반 마련
ssh 또는 Secure Shell이제 모든 Linux 서버를 원격으로 관리하기위한 표준입니다. 텔넷과 달리 SSH는 통신의 신뢰성과 종단 간 암호화를 위해 TLS를 사용합니다. 제대로 구성되면 관리자는 자신의 암호와 서버를 원격으로 신뢰할 수 있습니다.
SSH를 구성하기 전에 기본 보안 및 최소 공통 액세스에 대해 조금 이야기 해 보겠습니다. SSH가 기본 포트 22에서 실행중인 경우 조만간 일반적인 사용자 이름과 암호에 대한 무차별 대입 사전 공격을 받게 될 것입니다. 이것은 영토와 함께 제공됩니다. 거부 파일에 추가 한 호스트의 수에 관계없이 매일 다른 IP 주소에서 들어옵니다.
몇 가지 일반적인 규칙을 사용하면 몇 가지 사전 조치를 취하고 악당이 시간을 낭비하도록 할 수 있습니다. 다음은 프로덕션 서버에서 원격 관리를 위해 SSH를 사용하여 따라야 할 몇 가지 보안 규칙입니다.
일반적인 사용자 이름이나 암호를 사용하지 마십시오. 시스템의 사용자 이름은 시스템 기본값이 아니거나 다음과 같은 회사 이메일 주소와 연결되어서는 안됩니다.[email protected]
루트 액세스 또는 관리 액세스는 SSH를 통해 허용되지 않아야합니다. SSH를 통해 인증되면 고유 한 사용자 이름과 su를 루트 또는 관리 계정에 사용합니다.
비밀번호 정책은 필수입니다. "This & IS & a & GUD & P @ ssW0rd & 24 & me"와 같은 복잡한 SSH 사용자 비밀번호. 점진적인 무차별 대입 공격에 대한 취약성을 제거하기 위해 몇 개월마다 암호를 변경하십시오.
장기간 사용하지 않거나 포기한 계정을 비활성화합니다. 채용 관리자가 한 달 동안 인터뷰를하지 않을 것이라는 음성 메일을받은 경우 예를 들어 기술에 정통한 개인이 손에 많은 시간을 할애 할 수 있습니다.
매일 로그를 확인하십시오. 시스템 관리자는 매일 아침 시스템 및 보안 로그를 검토하는 데 최소 30-40 분을 할애합니다. 질문이 있으면 모든 사람에게 사전 조치를 취하지 않을 시간이 없다는 사실을 알리십시오. 이 관행은 문제가 최종 사용자와 회사 이익에 나타나기 전에 경고 신호를 분리하는 데 도움이됩니다.
Note On Linux Security− Linux Administration에 관심이있는 사람은 누구나 최신 사이버 보안 뉴스 및 기술을 적극적으로 추구해야합니다. 다른 운영 체제가 손상되었다는 소식을 많이 듣지만 안전하지 않은 Linux 상자는 사이버 범죄자들이 찾는 보물입니다. 고속 인터넷 연결에서 Linux의 힘을 사용하면 숙련 된 사이버 범죄자가 Linux를 사용하여 다른 운영 체제에 대한 공격을 활용할 수 있습니다.
원격 액세스를위한 SSH 설치 및 구성
Step 1 − SSH 서버 및 모든 종속 패키지를 설치합니다.
[root@localhost]# yum -y install openssh-server
'Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: repos.centos.net
* extras: repos.dfw.centos.com
* updates: centos.centos.com
Resolving Dependencies
--> Running transaction check
---> Package openssh-server.x86_64 0:6.6.1p1-33.el7_3 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
Step 2 − 셸 액세스를 위해 추가하려면 보안을 정기적으로 사용하십시오.
[root@localhost ~]# useradd choozer
[root@localhost ~]# usermod -c "Remote Access" -d /home/choozer -g users -G
wheel -a choozer
Note− SSH 액세스가 인증되면 root 로 su 할 수 있도록 wheel 그룹에 새 사용자를 추가했습니다 . 일반적인 단어 목록에서 찾을 수없는 사용자 이름도 사용했습니다. 이렇게하면 SSH가 공격을받을 때 계정이 잠기지 않습니다.
sshd 서버에 대한 구성 설정이있는 파일은 / etc / ssh / sshd_config 입니다.
처음에 편집하고 싶은 부분은-
LoginGraceTime 60m
PermitRootLogin no
Step 3− SSH 데몬 sshd를 다시로드합니다 .
[root@localhost]# systemctl reload sshd
로그 아웃 유예 기간을 60 분으로 설정하는 것이 좋습니다. 일부 복잡한 관리 작업은 기본값 인 2 분을 초과 할 수 있습니다. 변경 사항을 구성하거나 조사 할 때 SSH 세션 시간 초과가 발생하는 것보다 더 실망스러운 것은 없습니다.
Step 4 − 루트 자격 증명을 사용하여 로그인 해 보겠습니다.
bash-3.2# ssh centos.vmnet.local
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Step 5− 더 이상 루트 자격 증명 으로 ssh를 통해 원격으로 로그인 할 수 없습니다 . 권한이없는 사용자 계정에 로그인 하고 루트 계정에 su 를 입력 해 보겠습니다 .
bash-3.2# ssh [email protected]
[email protected]'s password:
[choozer@localhost ~]$ su root
Password:
[root@localhost choozer]#
Step 6− 마지막으로 SSHD 서비스가 부팅시로드되고 firewalld가 외부 SSH 연결을 허용 하는지 확인합니다 .
[root@localhost]# systemctl enable sshd
[root@localhost]# firewall-cmd --permanent --add-service=ssh
success
[root@localhost]# firewall-cmd --reload
success
[root@localhost]#
이제 SSH가 설정되었으며 원격 관리를위한 준비가되었습니다. 기업 경계에 따라 기업 LAN 외부에서 SSH 원격 관리를 허용하도록 패킷 필터링 경계 장치를 구성해야 할 수도 있습니다.
원격 CentOS 관리를위한 VNC 구성
CentOS 6-7에서 VNC를 통해 원격 CentOS 관리를 활성화하는 몇 가지 방법이 있습니다. 가장 쉽지만 가장 제한적인 방법은 단순히 vino 라는 패키지를 사용하는 것 입니다.VinoGnome Desktop 플랫폼을 중심으로 설계된 Linux 용 Virtual Network Desktop Connection 애플리케이션입니다. 따라서 Gnome Desktop으로 설치가 완료된 것으로 가정합니다. Gnome Desktop이 설치되어 있지 않은 경우 계속하기 전에 설치하십시오. Vino는 기본적으로 Gnome GUI 설치와 함께 설치됩니다.
Gnome에서 Vino와 화면 공유를 구성하려면 화면 공유를 위해 CentOS 시스템 환경 설정으로 이동하려고합니다.
Applications->System Tools->Settings->Sharing
VNC 데스크톱 공유 구성에 대한 참고 사항-
Disable New Connections must ask for access−이 옵션을 사용하려면 모든 연결을 확인하기위한 물리적 액세스가 필요합니다. 이 옵션은 누군가가 물리적 데스크톱에 있지 않는 한 원격 관리를 방지합니다.
Enable Require a password− 사용자 비밀번호와는 별개입니다. 가상 데스크톱에 대한 액세스를 제어하고 잠긴 데스크톱에 액세스하려면 사용자 암호가 필요합니다 (보안에 유용함).
Forward UP&P Ports: If available leave disabled− 포워딩 UP & P 포트는 계층 3 장치에 대한 범용 플러그 앤 플레이 요청을 전송하여 호스트에 대한 VNC 연결을 자동으로 허용합니다. 우리는 이것을 원하지 않습니다.
vino가 VNC 포트 5900에서 듣고 있는지 확인하십시오.
[root@localhost]# netstat -antup | grep vino
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 4873/vino-server
tcp6 0 0 :::5900 :::* LISTEN 4873/vino-server
[root@localhost]#
이제 들어오는 VNC 연결을 허용하도록 방화벽을 구성하겠습니다.
[root@localhost]# firewall-cmd --permanent --add-port=5900/tcp
success
[root@localhost]# firewall-cmd --reload
success
[root@localhost rdc]#
마지막으로, 보시다시피 CentOS Box를 연결하고 Windows 또는 OS X에서 VNC 클라이언트로 관리 할 수 있습니다.
SSH에 대해 설명한 것과 동일한 VNC 규칙을 준수하는 것이 중요합니다. SSH와 마찬가지로 VNC는 IP 범위에서 지속적으로 검색되고 취약한 암호를 테스트합니다. 콘솔 타임 아웃과 함께 기본 CentOS 로그인을 활성화 된 상태로두면 원격 VNC 보안에 도움이됩니다. 공격자는 VNC 및 사용자 암호가 필요하므로 화면 공유 암호가 다르고 사용자 암호만큼 추측하기 어려운지 확인하십시오.
VNC 화면 공유 암호를 입력 한 후 잠긴 데스크톱에 액세스하려면 사용자 암호도 입력해야합니다.
Security Note− 기본적으로 VNC는 암호화 된 프로토콜이 아닙니다. 따라서 VNC 연결은 암호화를 위해 SSH를 통해 터널링되어야합니다.
VNC를 통해 SSH 터널 설정
SSH 터널을 설정하면 VNC 연결을 터널링하기위한 SSH 암호화 계층이 제공됩니다. 또 다른 훌륭한 기능은 SSH 압축을 사용하여 VNC GUI 화면 업데이트에 다른 압축 레이어를 추가한다는 것입니다. CentOS 서버 관리를 다룰 때 더 안전하고 빠른 것은 항상 좋은 것입니다!
따라서 VNC 연결을 시작할 클라이언트에서 원격 SSH 터널을 설정해 보겠습니다. 이 데모에서는 OS X를 사용하고 있습니다. 먼저 root 로 sudo -s 해야 합니다 .
bash-3.2# sudo -s
password:
사용자 암호를 입력하면 # 프롬프트 가있는 루트 쉘 이 있어야 합니다.
bash-3.2#
이제 SSH 터널을 만들어 보겠습니다 .
ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
이 명령을 분해 해 보겠습니다.
ssh − 로컬 ssh 유틸리티를 실행합니다.
-f − 작업이 완전히 실행 된 후 ssh가 백그라운드에서 실행되어야합니다.
[email protected] − VNC 서비스를 호스팅하는 CentOS 서버의 원격 ssh 사용자
-L 2200:192.168.1.143:5900 − 터널 생성 [로컬 포트] : [원격 호스트] : [VNC 서비스의 원격 포트]
-N ssh에게 원격 시스템에서 명령을 실행하지 않기를 원합니다.
bash-3.2# ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
[email protected]'s password:
원격 ssh 사용자의 암호를 성공적으로 입력하면 ssh 터널 이 생성됩니다. 이제 멋진 부분입니다! 연결하기 위해 터널 포트의 로컬 호스트 (이 경우 포트 2200)에서 VNC 클라이언트를 가리 킵니다. 다음은 Mac 랩톱의 VNC 클라이언트 구성입니다.
마지막으로 원격 VNC 데스크톱 연결입니다!
SSH 터널링의 멋진 점은 거의 모든 프로토콜에 사용할 수 있다는 것입니다. SSH 터널은 일반적으로 ISP의 송신 및 수신 포트 필터링을 우회하고 다른 세션 계층 모니터링을 회피하면서 애플리케이션 계층 IDS / IPS를 속이는 데 사용됩니다.
ISP는 비 비즈니스 계정에 대해 포트 5900을 필터링 할 수 있지만 포트 22에서 SSH를 허용합니다 (또는 포트 22가 필터링 된 경우 모든 포트에서 SSH를 실행할 수 있음).
애플리케이션 수준 IPS 및 IDS는 페이로드를 확인합니다. 예를 들어, 일반적인 버퍼 오버 플로우 또는 SQL 주입. 종단 간 SSH 암호화는 애플리케이션 계층 데이터를 암호화합니다.
SSH 터널링은 작업을 수행하기위한 Linux 관리자 도구 상자의 훌륭한 도구입니다. 그러나 관리자로서 우리는 SSH 터널링에 액세스 할 수있는 권한이 낮은 사용자의 가용성을 잠그는 방법을 모색하고자합니다.
Administration Security Note− SSH 터널링을 제한하는 것은 관리자의 입장에서 고려해야 할 사항입니다. 사용자가 처음에 SSH 터널링이 필요한 이유를 평가합니다. 사용자에게 터널링이 필요한 것; 실제 위험 확률 및 최악의 경우 영향과 함께.
이것은 중급 입문서 영역을 벗어난 고급 주제입니다. 이 주제에 대한 연구는 CentOS Linux Administration의 상위 계층에 도달하려는 사람들에게 권장됩니다.
원격 X-Windows에 SSH 터널 사용
Linux에서 X-Windows의 디자인은 Windows에 비해 정말 깔끔합니다. 다른 리눅스 박스에서 원격 리눅스 박스를 제어하고 싶다면 X에 내장 된 메커니즘을 이용할 수 있습니다.
X-Windows (종종 "X"라고 함)는 한 Linux 상자에서 시작된 응용 프로그램 창을 다른 Linux 상자의 X 표시 부분에 표시하는 메커니즘을 제공합니다. 따라서 SSH를 통해 X-Windows 응용 프로그램이 전 세계의 다른 Linux 상자 디스플레이로 전달되도록 요청할 수 있습니다!
ssh 터널을 통해 원격으로 X 애플리케이션을 실행하려면 단일 명령 만 실행하면됩니다.
[root@localhost]# ssh -X [email protected]
The syntax is − ssh -X [user] @ [host], 호스트는 유효한 사용자로 ssh를 실행해야합니다.
다음은 원격 XWindows ssh 터널을 통해 Ubuntu Workstation에서 실행되는 GIMP의 스크린 샷입니다.
다른 Linux 서버 또는 워크 스테이션에서 원격으로 애플리케이션을 실행하는 것은 매우 간단합니다. 또한 몇 가지 방법을 통해 전체 X-Session을 시작하고 전체 데스크톱 환경을 원격으로 가질 수 있습니다.
XDMCP
NX와 같은 헤드리스 소프트웨어 패키지
X 및 Gnome 또는 KDE와 같은 데스크탑 관리자에서 대체 디스플레이 및 데스크탑 구성
이 방법은 물리적 디스플레이가없는 헤드리스 서버에 가장 일반적으로 사용되며 중간 수준의 입문서 범위를 초과합니다. 그러나 사용 가능한 옵션을 아는 것이 좋습니다.