인터넷 (특히 공용 IP 주소)에 연결하기 전에 침입 및 맬웨어로부터 어떻게 보호 할 수 있습니까?


60

야생에 많은 수의 라즈베리 파이가 있고 많은 그룹이 동일하게 구성되어 있다는 사실 (새로 플래시 된 SD 카드가 사용 가능한 몇 가지 이미지 중 하나와 함께 설치된 경우)은 유혹의 대상이 될 수 있습니다. 봇넷을 포함한 멀웨어.

이를 완화하기 위해 무엇을 할 수 있습니까?

"pi"사용자 (Debian) 및 "root"(Arch.)의 암호를 변경해야한다는 것은 잘 알려져 있지만 다른 시스템 계정 (예 : "tli", "pnd")은 어떻습니까? 모든 장치에 대해 동일한 암호일까요?

Pi에 사용 가능한 SD 이미지에 설치된 다른 패키지의 알려진 취약점이 있습니까 (예 : 하드웨어 제한 또는 해당 패키지의 컷 다운 버전으로 인해)?

특히 ssh, mysql 및 새로 설치된 이미지에서 실행될 수있는 다른 서비스가 걱정 됩니다.

답변:


23

데비안 스퀴즈 (Debian Squeeze) 스톡 이미지에 대해 지금까지 주목 한 것 :

  • / etc / shadow에는 pi 계정이 아닌 계정 (빌드 봇 등)에 대한 많은 암호 해시가 포함되어 있습니다. pi 계정에서 비밀번호를 변경하지 않은 경우 (나 자신을 위해 새 사용자 계정을 만들고 pi 계정을 삭제 한 경우) 당연히 다른 항목을 편집하고 해시를 * s로 바꿉니다. 참고 / etc / passwd에는 pi 계정에 대한 중복 항목이 포함되어 있으므로 adduser / deluser에서 지옥을 혼동하기 때문에 하나만 삭제하십시오.

  • 기본 ssh 데몬 구성은 원격 루트 로그인을 허용합니다. 비활성화해야합니다.

  • netstat를 사용하여 연결을 수신하는 일련의 항목을 확인할 가치가 있습니다. 전형적인 데비안 netinst에 비해 놀라운 양의 것들이 실행되고 있습니다. 일반적으로 필요한 것에 대한 노출을 줄이려면 먼저 모든 것을 비활성화하거나 방화벽 해제 한 다음 공용 인터넷에서 의도적으로 표시하려는 서비스 (일반적으로 ssh 또는 ssh + http) 만 노출하는 것이 좋습니다.

  • 이미지의 키를 사용하지 않고 ssh 호스트 키를 변경하고 싶을 것입니다 (AIUI 최신 이미지는 실제로 처음 부팅시 키를 재생 성함)


1
첫 진술에 문제가 없습니다. 추가 사용자는 무엇입니까? 로그인 할 수 없어야합니까? su그들에게 시도하여 확인할 수 있습니다 .
Jivings

2
나는 이것을 -1로 줄 것이다. 섀도 파일을 수동으로 편집하는 것이 좋습니다. 엄청나게 나쁜 생각입니다.
Jivings 2016 년

@Jivings 아니 그는하지 않습니다. 그는뿐만 아니라 사용을 암시 할 수도 있습니다 vipw; 그게 나쁜 생각입니까? 아닙니다. 을 사용하여 +1합니다 vipw.
user2497

41

취약점을 해결하는 방법은 여러 가지가 있지만, 가장 먼저 알아야 할 것은 Linux가 다른 운영 체제만큼 침입에 취약하지 않다는 것입니다. 이는 주로 * NIX를 대상으로하는 맬웨어가 없기 때문입니다. 그럼에도 불구하고 시스템에 액세스 할 수있는 방법을 알고 자합니다.

비밀번호

먼저 로그인 할 수있는 모든 사용자의 기본 비밀번호를 변경해야합니다. 데비안의 경우 이것은 기본 사용자 Pi 입니다. 아치 리눅스의 경우 이것은 수퍼 유저 루트 입니다. passwd명령 행 에 입력하여 사용자로 로그인하면 비밀번호가 변경됩니다 .

기본 사용자에 대해 무차별 대입 사전 공격을 실행하는 것이 매우 간단하므로 안전한 비밀번호 정책이 권장됩니다. 알맞은 중간 길이의 비밀번호를 선택하십시오.

어둠

원격 액세스는 아마도 가장 중요한 보안 허점 일 것입니다. 여기서 사용할 수있는 것은 모호한 보안 이라는 이름 입니다. 일반적인 공격 방법은 개방 된 포트에 대해 다양한 IP 주소를 검색하는 것입니다. 따라서 우리가 취할 수있는 가장 간단한 대책 중 하나 는 기본 포트를 사용하지 않는 사용자가되는 것 입니다.

여기서해야 할 일은 일반적으로 사용되는 프로토콜의 기본 포트를 변경하는 것입니다. 예를 들어, 기본 SSH 포트는 22이고 FTP는 21입니다. 내 시스템에서 SSH는 222 및 FTP 221을 사용하므로 자동화 된 공격으로부터 이러한 프로토콜을 모호하게해야합니다.

연결 보안

첫째, 가장 중요한 보안 문제는 루트 계정이해야한다는 것입니다 하지 SSH를 통해 로그인 할 수 있습니다. /etc/ssh/sshd_config이 줄을 주석 처리하거나 제거 하여 파일 에서 루트 로그인을 비활성화 할 수 있습니다 .

PermitRootLogin yes

기본적으로 no로 설정해야하지만 확인하는 것이 가장 좋습니다.


SSH를 많이 사용하고 중간 공격의 사람, 암호에 대한 사전 공격이 걱정되면을 사용할 수 있습니다 SSH Keys.

키 기반 인증은 비밀번호 인증에 비해 몇 가지 장점이 있습니다. 예를 들어 키 값은 일반 비밀번호보다 무차별 대입하기가 훨씬 어렵습니다.

SSH 키 인증을 설정하려면 먼저 키 쌍을 작성해야합니다. 이것은 클라이언트 시스템 (Pi에 액세스하려는 시스템)에서 가장 쉽게 수행됩니다.

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.

보시다시피 개인 키 id_rsa와 공개 키라 는 두 개의 파일이 만들어졌습니다 id_rsa.pub.

개인 키는 본인 만 알고 있으며 안전하게 보호 해야합니다 . 반대로 공개 키는 연결하려는 SSH 서버와 자유롭게 공유 할 수 있습니다.

우리가하고 싶은 것은 공개 키를 Raspberry Pi에 복사하는 것 입니다. 우리는 이것을 매우 쉽게 할 수 있습니다 :

ssh-copy-id pi@address

piRaspberry Pi 사용자 이름은 어디에 있으며 Pi address의 IP 주소입니다.

반복하겠습니다 . 공개 키를 배포합니다 . 개인 키는 당신입니다. 키를 놓으면 시스템의 보안이 손상됩니다.

아치 위키는 이것이 어떻게 작동하는지에 대한 훌륭한 설명이 :

SSH 서버에 파일에 공개 키가 있고 연결 요청이 표시되면 공개 키를 사용하여 챌린지를 구성하고 보냅니다. 이 문제는 코드화 된 메시지와 유사하며 서버가 액세스 권한을 부여하기 전에 적절한 응답을 받아야합니다. 이 코드화 된 메시지를 특히 안전하게 만드는 것은 개인 키를 가진 사람 만 이해할 수 있다는 것입니다. 공개 키를 사용하여 메시지를 암호화 할 수 있지만 동일한 키를 해독하는 데 사용할 수는 없습니다. 개인 키 소지자 인 귀하 만 문제를 정확하게 이해하고 올바른 응답을 얻을 수 있습니다.

공개 키 인증의 보안에 대한 자세한 내용은 Wikipedia에 자세히 설명되어 있습니다.

SSH 보안을 사용하면 엄청난 양의 암호화되고 안전한 데이터 전송을 수행 할 수 있습니다. 실제로 다른 모든 포트 연결은 필요한 경우 SSH를 통해 라우팅 될 수 있습니다. SSH를 통해 X 세션을 전달하여 다른 시스템에 나타날 수도 있습니다.

흥미로운 예로 어제 데스크탑에서 Eclipse를 실행하고 Raspberry Pi에서이를보고 넷북에서 마우스와 키보드를 제어하고있었습니다. 이것이 바로 SSH의 힘입니다.

권한

파일 권한은 Linux 보안 시스템의 핵심입니다. 파일과 폴더를 볼 수있는 사람에게 영향을 미치며 데이터를 보호하는 데 매우 중요합니다. 예를 들어, 일반 사용자로 Raspberry Pi에 로그인하고 다음을 실행하십시오.

cat /etc/shadow

shadow파일에는 시스템 사용자를위한 암호화 된 비밀번호가 포함되어 있으므로 다른 사람이 보지 않기를 바랍니다! 따라서 다음과 같은 응답이 표시됩니다.

cat: /etc/shadow: Permission denied

파일의 권한을 살펴보면 이것이 왜 그런지 알 수 있습니다.

ls -l /etc/shadow
-rw------- 1 root root 821 Jun 11 22:13 /etc/shadow

이것은 파일이 루트가 소유하고 있으며 소유자 만이 읽기 / 쓰기 권한을 가지고 있음을 알려줍니다. 그 출력을 분석해 봅시다.

-rw-------

이것은 권한 상태입니다. 첫 번째 비트는 파일 형식을 알려줍니다 ( -일반 파일을 의미). 다음 3 비트는 파일 소유자 가 사용할 수있는 작업을 나타냅니다 . 두 번째 세 비트는 그룹을 나타내며 마지막 세 비트는 다른 사람 또는 다른 사람을 위한 것입니다. 따라서 모든 권한이있는 디렉토리는 다음과 같습니다.

drwxrwxrwx  10 root root   280 Jun 20 11:40 tmp/

그것은 소유자, 그룹 및 다른 모든 사람에 대한 읽기, 쓰기 및 실행 권한입니다.

다음으로 중요한 부분은 두 이름입니다. 우리의 경우 root root. 첫 번째 사용자는 파일 의 소유자 입니다. 두 번째는 usergroup 입니다. 예를 들어 다음과 같은 것이 일반적입니다.

drwxr-xr-x  10 pi users   280 Jun 20 11:40 home/pi

이렇게하면 pi홈 디렉토리 의 사용자 에 대한 읽기 / 쓰기 액세스 와 다른 모든 사용자에 대한 읽기 액세스가 허용됩니다.

8 진 값을 사용하여 가장 자주 참조되고 제어되는 권한. 예를 들어, 소유자에 대해서만 rw를 설정하려면 다음을 입력하십시오.

chmod 600 /path/to/file

이것은 기본 개요이며 Linux 파일 권한에 대한 자세한 내용 은 좋은 기사입니다.


이 이해는 파일과 폴더를 보호 할 때 중요합니다. 예를 들어 SSH 키를 설정했다고 가정 해 봅시다. 우리는 다른 사용자가 ~/.ssh디렉토리 내부를 보지 못하게하거나 개인 키를 사용할 수 있습니다. 따라서 우리는 그들의 읽기 권한을 제거합니다 :

chmod 700 ~/.ssh
ls -la ~/.ssh 
drwx------   2 james users  4096 Jun 18 03:05 .

이것이 리눅스 보안에 대한 귀하의 우려를 해결하기를 바랍니다. 이것으로부터 당신은 그것이 꽤 안전한 시스템임을 알 수 있어야하고주의를 기울이면 보안 문제는 없어야합니다.


10
Obscurity 설명에 동의하지 않습니다. 장치에서 열린 포트를 매핑하고 ssh 서버를 찾는 데 몇 초가 걸립니다. 비밀번호 로그인을 비활성화하고 일반 포트에 고정하십시오. 나는 당신이 ftp가 전혀 필요하지 않다는 것을 의심한다.
Alex Chamberlain

2
@AlexChamberlain 공격자에게는 일시적인 속도 범프이지만 완벽한 솔루션 만은 아닙니다.
Jivings 2016 년

4
기본 포트를 변경하면 도어 노킹이 낮아져 종종 사전 공격이 발생합니다. 확실히 아주 작은 보안 조치이지만 다른 이점도 있습니다. 즉, 로그 팽창을 제한 할 수 있습니다. 보안보다는 예방 조치이지만 여전히 고려할 가치가 있습니다.
Beeblebrox

2
@AlexChamberlain, 데비안 ssh 키 폐기 중에 포트 22에서 많은 시도를 기록했지만 다른 곳에서는 시도하지 않았습니다. 이 경우 다른 포트에서 실행 하면 해커가 악용 된 호스트 중 어느 것이 귀중한 지 알아 내기 위해 많은 시간을 투자했을 것입니다. 공격자가 구체적으로 대상을 지정하는 경우 SBO는 거의 도움이되지 않습니다.
John La Rooy

1
동의한다. 내 요점은 그냥 아니라고했다 thereotical - SBO 확실히 최근의 메모리에 시간이왔다 했던 도움을, 그리고 만든 상당한 차이를.
John La Rooy

6

무차별 공격을 방지하기 위해을 설치하고 구성 할 수 있습니다 fail2ban. 로그 파일 (예 :)을 구문 분석 /var/log/auth.log하고 여러 번의 로그인 시도가 실패했는지 감지하려고합니다. 그런 다음로 소스 IP 주소를 자동으로 차단합니다 iptables.

인터넷에는 수많은 하우투가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.