포트 노킹 : 컴퓨터 또는 서버에서 사용할 수있는 최상의 보안 (배포 + 구성)

눈에 띄는 포트 (영어로 포트 노킹)는 의심 할 여지없이 서버를 관리하는 우리 모두가 알아야하는 관행입니다. 여기에서는 이것이 무엇인지, 그리고이를 구현하고 구성하는 방법에 대해 자세히 설명합니다 😉

현재 서버를 관리하는 사람들은 해당 서버에 대한 SSH 액세스 권한이 있습니다. SSH의 기본 포트를 변경합니다. 그리고 더 이상 포트 22를 사용하지 않고 다른 것들은 그냥 그대로 둡니다 (권장되지 않는 것). 그러나 서버는 일부 포트를 통해 SSH 액세스를 활성화했으며 이것은 이미 '취약성'입니다.

포트 노킹 다음을 달성 할 수 있습니다.

1. 어떤 포트에서도 SSH 액세스가 활성화되지 않았습니다. 포트 9191 (예 :)에 대해 SSH를 구성한 경우 해당 포트 (9191)는 모든 사용자에 대해 닫힙니다.
2. 누군가가 SSH로 서버에 액세스하려는 경우 포트 9191이 닫혀 있기 때문에 분명히 액세스 할 수 없습니다.하지만 '마법'또는 비밀 조합을 사용하면 해당 포트가 열립니다. 예를 들면 다음과 같습니다.

1. 서버의 포트 7000에 텔넷으로 연결
2. 서버의 포트 8000에 다른 텔넷을 수행합니다.
3. 서버의 포트 9000에 다른 텔넷을 수행합니다.
4. 서버는 누군가가 비밀 조합을 만들었 음을 감지하고 (순서대로 포트 7000, 8000 및 9000 터치) 포트 9191을 열어 SSH에서 로그인을 요청하도록합니다 (조합이 만들어진 IP에 대해서만 열립니다. 포트 번호 만족).
5. 이제 SSH를 닫으려면 포트 3500에 텔넷을 연결하십시오.
6. 4500 번 포트에 다른 텔넷을 사용하겠습니다.
7. 마지막으로 포트 5500에 대한 또 다른 텔넷
8. 서버가 감지하는이 다른 비밀 조합을 수행하면 포트 9191이 다시 닫힙니다.

즉, 이것을 더 간단하게 설명하면 ...

포트 노킹 서버에 특정 포트가 닫혀있을 수 있지만 서버가 X IP 올바른 포트 조합이 만들어졌습니다 (구성 파일에 이전에 정의 된 구성) 분명히 특정 명령을 실행합니다 (comando 구성 파일에도 정의 됨).

이해되지 않습니까? 🙂

포트 노킹 용 데몬을 설치하는 방법은 무엇입니까?

나는 패키지로한다 , 매우 간단하고 빠른 방법으로 구현하고 구성 할 수 있습니다. 포트 노킹.

패키지 설치 : knockd

knockd로 포트 노킹을 구성하는 방법은 무엇입니까?

일단 설치되면 구성을 진행합니다.이를 위해 파일을 (루트로) 편집합니다. /etc/knockd.conf :

nano /etc/knockd.conf

해당 파일에서 볼 수 있듯이 이미 기본 구성이 있습니다.

 기본 설정을 설명하는 것은 정말 간단합니다.

-먼저 UseSyslog 활동 (로그)을 기록하기 위해 사용할 것임을 의미합니다. / var / log / syslog.
-둘째, 섹션에서 [openSSH] SSH를 여는 지침이 분명히 표시되는 곳입니다. 먼저 기본적으로 구성된 포트 시퀀스 (비밀 조합) (포트 7000, 포트 8000 및 마지막으로 포트 9000)가 있습니다. 분명히 포트는 변경 될 수 있습니다 (사실 나는 그것을 추천합니다). 반드시 3 개일 필요는없고, 더 많거나 적을 수 있으며, 그것은 당신에 달려 있습니다.
-셋째, seq_timeout = 5 비밀 포트 조합이 발생하기를 기다리는 시간을 의미합니다. 기본적으로 5 초로 설정되어 있습니다. 즉, 포트 노킹을 시작하면 (즉, 포트 7000에 텔넷을 연결할 때) 5 초가 지나도 완료되지 않은 경우 올바른 시퀀스를 완료하는 데 최대 5 초가 주어집니다. 포트 노킹은 단순히 시퀀스가 ​​유효하지 않은 것처럼 보입니다.
-넷째, 명령 많은 설명이 필요하지 않습니다. 이것은 서버가 위에서 정의한 조합을 감지 할 때 실행하는 명령입니다. 기본적으로 설정되는 명령은 올바른 포트 조합을 만든 IP로만 포트 22를 엽니 다 (SSH 포트에 대해이 포트 변경).
- 다섯 번째, tcpflags = syn 이 줄을 사용하여 서버가 노킹 포트에 대해 유효한 것으로 인식 할 패킷 유형을 지정합니다.

그런 다음 SSH를 닫는 섹션이 있습니다. 기본 구성은 위의 동일한 포트 시퀀스에 불과하지만 반대 순서입니다.

다음은 몇 가지 수정 사항이있는 구성입니다.

 knockd 데몬을 시작하는 방법?

시작하려면 먼저 파일을 수정 (루트)해야합니다. / etc / default / knockd:

nano /etc/default/knockd

여기에서 다음과 같은 12 번 줄을 변경합니다.«START_KNOCKD = 0»그리고 0에서 1로 변경하면 다음과 같이됩니다.«START_KNOCKD = 1«

이 작업이 완료되면 간단히 시작합니다.

service knockd start

그리고 짜잔, 그것은 구성되고 작동합니다.

노크 및 실행으로 포트 노크!

이전 구성에서 볼 수 있듯이 포트 1000, 2000, 마지막으로 3000으로 포트 노크가 수행되면 포트 2222 (내 SSH)가 열립니다. 여기서는 포트 노크를 실행하는 다른 컴퓨터가 있습니다.

Knock No.1, No.2, 마지막으로 No.3에서 [Enter]를 누르면 포트가 열릴 것입니다. 로그는 다음과 같습니다.

보시다시피, 포트 1000을 노크하면 1 단계가 등록되고 2000에서 2 단계가되고 마지막으로 3에서 3000이됩니다. 이렇게하면 .conf에서 선언 한 명령이 실행됩니다. .

그런 다음 포트를 닫으려면 9000, 8000 및 마지막으로 7000 만 노크하면됩니다. 로그는 다음과 같습니다.

그리고 여기서 사용에 대한 설명은 끝납니다 😀

보시다시피 Port Knocking은 정말 흥미롭고 유용합니다. 왜냐하면 특정 포트 조합 후에 단순히 포트를 열고 싶지는 않지만 서버가 실행할 명령이나 순서가 다를 수 있기 때문입니다. 즉, 포트를 여는 대신 ... 프로세스를 죽이고, 아파치 나 mysql과 같은 서비스를 중지하겠다고 선언하십시오. 한계는 당신의 상상력입니다.

포트 노킹은 물리적 서버가 있거나 가상 서버가 KVM 기술인 경우에만 작동합니다. VPS (가상 서버)가 OpenVZ이면 Port Knocking iptables를 직접 조작 할 수 없기 때문에 작동하지 않는다고 생각합니다.

글쎄요, 지금까지이 기사는 ... 저는이 문제에 대한 전문가는 아니지만이 흥미로운 과정을 여러분과 공유하고 싶습니다.

인사 😀


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   에루나모JAZZ

    훌륭한 기사, 꽤 흥미롭고 그것이 존재하는지 몰랐습니다 ... sysadmin 초보자를위한 기사를 계속 게시하면 좋을 것입니다.

    인사와 감사 ^ _ ^

    1.    KZKG ^ 가아라

      의견 감사합니다.
      네 ... FICO의 DNS 기사로 LOL 뒤에 남겨지고 싶지 않습니다 !!!

      심각한 건 없습니다. 몇 달 전에 Port Knocking에 대한 소식을 듣고 즉시 관심을 끌었지만 들어가기로 결정하지 않았을 때 매우 복잡 할 것이라고 생각했기 때문에 어제 저장소에서 일부 패키지를 검토 한 후 두드림을 발견하고 시도해보기로 결정했으며 여기에 튜토리얼이 있습니다.

      나는 항상 기술적 인 기사를 넣는 것을 좋아했고, 어떤 것은 충분히 흥미롭지 않을 수도 있지만… 다른 것들은 😉

      안부

    2.    마리오

      안녕하세요,이 기사가 한동안 사용되었다는 것을 알고 있지만 누군가가 나를 위해 해결할 수 있는지 알아보기 위해 질문을 보냅니다.
      사실 로컬 네트워크 외부에서 연결할 때 보안을 향상시키기 위해 라즈베리에 포트 노킹을 구현했습니다. 이 작업을 수행하려면 7000-9990 라우터에서 컴퓨터로 향하는 포트 범위를 열어야했습니다. 라우터에서 이러한 포트를 여는 것이 안전합니까? 아니면 반대로 보안을 강화하려고 할 때 그 반대입니까?

      인사와 감사합니다.

  2.   이제까지

    좋아요, 저는 수년간 시스템 관리자 였고 그를 몰랐습니다.
    질문 하나 ... "노크"를 어떻게 수행합니까?
    해당 포트에 대해 텔넷을 사용합니까? 텔넷이 당신에게 대답하는 것은 무엇입니까? 아니면 "노크"웨이브 명령이 있습니까?
    멋진 것은 기사입니다. 훌륭합니다. 고마워

    1.    KZKG ^ 가아라

      나는 텔넷으로 테스트를했고 모든 것이 놀랍게 작동했습니다 ... 남자 노크 그래서 당신은 볼 수 있습니다 😉

      텔넷은 실제로 나에게 전혀 응답하지 않고, DROP 정책이있는 iptables는 전혀 응답하지 않고 텔넷은 응답을 기다리지 만 (도착하지 않을 것임), knockd 데몬은 아무도 응답하지 않더라도 노크를 인식합니다.

      귀하의 의견을 주셔서 대단히 감사합니다. 내 기사가 여전히 좋아한다는 것을 알게되어 기쁩니다 ^ _ ^

  3.   st0rmt4il

    즐겨 찾기에 추가되었습니다! : D!

    당신을 감사하십시오!

    1.    KZKG ^ 가아라

      감사합니다 😀

  4.   사냥꾼

    Ahh 보안, 우리가 PC를 수직으로 보호 할 때의 기분 좋은 느낌, 그리고 며칠 / 주 후에 어떤 원격지에서 연결을 시도하면 방화벽이 "누구에게도 아무도 없음"모드에 있기 때문에 액세스 할 수 없습니다. 이것을 머무름이라고합니다. 시스템 관리자 측면에서 성 밖. 😉

    그렇기 때문에이 게시물이 유용합니다. 노크를 사용하면 로컬 네트워크에 패킷을 보낼 수있는 모든 곳에서 액세스 할 수 있으며 공격자는 ssh 포트가 닫혀 있으면 관심을 잃고 노크 할 것이라고 생각하지 않습니다. 포트를 여는 무차별 대입.

  5.   설명서

    이 기사는 훌륭합니다.

    한 가지 : 로컬 네트워크 외부에서 연결하는 역할을합니까?

    나는 포트가 닫힌 라우터에서 서버로 리디렉션되는 ssh에 해당하는 라우터를 뺀 라우터가 있기 때문에 이것을 말합니다.

    로컬 네트워크 외부에서 작동하려면 포트 노킹에 해당하는 라우터의 포트를 열고 이들 포트도 서버로 리디렉션해야한다고 생각합니다.

    음…

    이 작업이 얼마나 안전한지 모르겠습니다.

    너는 어떻게 생각하니?

    1.    KZKG ^ 가아라

      잘 모르겠습니다. 테스트를하지 않았지만 예, 라우터에서 포트를 열어야한다고 생각합니다. 그렇지 않으면 서버를 노크 할 수 없기 때문입니다.

      라우터에서 포트를 열지 않고 테스트를 수행하십시오. 작동하지 않으면 부끄러운 일입니다. 동의하기 때문에 라우터에서 이러한 포트를 열지 않는 것이 좋습니다.

      1.    설명서

        실제로 우리는 포트를 열고 호출하는 컴퓨터로 리디렉션해야합니다.

        동정.

  6.   랍바08

    대단히 감사합니다! 저는 이제 막 네트워킹을 공부하기 시작했고이 튜토리얼은 저에게 좋습니다! 시간을내어 지식을 공유해 주셔서 감사합니다

    1.    KZKG ^ 가아라

      저는 수년 동안 글로벌 Linux 커뮤니티에서 많은 것을 배웠습니다 ... 몇 년 동안 저도 기여하고 싶었습니다. 바로 이것이 제가 글을 쓰는 이유입니다 😀

  7.   야누스 981

    정말 감사합니다. 어떻게 도움이되는지 모르겠습니다. 이제 서버를 설정하려고합니다.

    안부

    1.    KZKG ^ 가아라

      그것이 우리가 돕는 것입니다 😉

  8.   장 벤 투라

    훌륭한 기사! 나는 이것에 대한 지식이 없었고 많은 도움이되었습니다 (KVM을 사용하는 RackSpace를 사용하고 있으므로 장갑처럼 나에게 적합합니다!). 즐겨 찾기에 추가되었습니다.

    1.    KZKG ^ 가아라

      댓글 주셔서 감사합니다 🙂

  9.   알가베

    평소처럼 DesdeLinux 실행에 매우 유용한 튜토리얼이 포함된 훌륭한 게시물을 제공합니다. 공유해 주셔서 감사합니다!! 🙂

    1.    KZKG ^ 가아라

      귀하의 의견에 감사드립니다 🙂
      예, 우리는 독자들이 가지고있는 지식에 대한 갈증을 항상 충족 시키려고 노력합니다 😀

  10.   팀블렉

    흥미롭고 옵션을 몰랐습니다.
    바로 내 찹 라이브러리를 살찌 우십시오.
    당신을 감사하십시오!

    1.    KZKG ^ 가아라

      나를위한 즐거움 😀
      안부

  11.   프레 더릭. A. Valdés Toujague

    인사말 KZKG ^ Gaara !!! 당신은 압착했습니다. 서버 보안을위한 방대한 기사. 그런 것이 존재한다는 @ % * & ^ 생각이 없습니다. 시도해 볼게. 감사합니다

  12.   화이트 ^ 목걸이

    이것은 대단하다…. ^-^

  13.   배우다 Linux

    안녕하세요, CentOS 5.x에 설치하는 방법을 설명해 주시겠습니까?

    rpm을 다운로드했습니다.
    http://pkgs.repoforge.org/knock/knock-0.5-3.el5.rf.x86_64.rpm

    설치됨 :
    rpm -i knock-0.5-3.el5.rf.x86_64.rpm

    15 초의 시간과 ssh로 내 vps에 연결하는 데 사용하는 포트로 구성 파일을 구성하십시오.

    악마가 시작됩니다.
    / usr / sbin / 노크 &

    나는 텔넷으로 포트가 닫히지 않고 기본적으로 포트가 열려 있지만 닫히지 않습니다.

    내가 뭘 잘못하고 있니?

  14.   안녕하세요

    음, 해당 포트에 대한 텔넷 요청은 로컬 네트워크의 관리자 나 서비스 제공 업체에 의해 학습 될 수 있습니다. 그렇지 않습니다. 외부 사람은 차단하지만 사용자는 차단하지 않으므로 포트를 활성화하려면 할 수 있습니다. 우리가하는 요청을보세요, mmm 그것이 100 %는 아니지만 보호한다고합시다

    1.    로베르토

      그럴 수도 있지만 특정 텔넷이 X 동작을 실행한다고 상상하지 못할 것입니다. 동일한 텔넷 패턴을 따르는 것을 보지 않는 한.

  15.   파블로 안드레스 디아즈 아람 부로

    흥미로운 기사, 질문이 있습니다. 잘 분석하면 명령의 두 줄에서 Iptables에서 ACCEPT를 사용하고 있기 때문에 구성 파일 이미지에 오류가 있다고 생각합니다. 하나는 ACCEPT이고 다른 하나는 REJECT이어야한다고 생각합니다.

    그렇지 않으면 훌륭한 이니셔티브입니다. 시간을내어 귀하의 지식을 다른 사람에게 설명해 주셔서 대단히 감사합니다.

    안부