Extra Form
PHP PHP 8.1
CMS WordPress

2023-05-01_11-07-24.jpg

이거를 사용해보려고 하는데 8년이나 지났는데 제대로 작동하는건가요??

클라우드 IP 대역도 바뀌고 그랬다는데 혹시 사용하고 계신 분 있으실까요??

  • profile

    소스를 보니 클라우드플레어에서 최신 IP 대역 목록을 받아오도록 되어 있는 것 같습니다. 따라서 소스가 8년 지났다는 것은 특별히 문제가 될 것 같지 않고요...

     

    다만 요즘 대부분의 리눅스 배포판은 iptables를 직접 사용하기보다는 firewalld나 ufw를 사용하여 방화벽을 관리하도록 되어 있어서, 임의로 iptables 규칙을 추가할 경우 서로 충돌하거나 재부팅 후 제대로 적용되지 않을 수도 있습니다. 어느 배포판의 어느 버전에 맞추어 만들어진 스크립트라는 언급이 없는 것은 가급적 피하고, 사용하시는 리눅스 배포판의 기본 방화벽 툴을 적절히 활용하는 명령을 찾아 보세요.

     

    기본 방화벽 툴을 패싱하고 iptables를 직접 조작해야 하는 경우도 분명 있지만, 예전에 iptables를 배운 사람이 새로운 툴을 배우기 귀찮거나 "범용성"이라는 핑계로 iptables만 고집하는 경우도 적지 않기 때문에 잘 판단해야 합니다. 센토스가 firewalld를 기본으로 채택한 지 10년이 다 되어 가는데 아직도 이걸 작동불능으로 만들어 놓는 (가상)서버호스팅 업체가 종종 목격되고, systemd를 패싱하는 방식으로 작성된 팁글도 무척 많습니다. ㅠㅠ

  • profile profile
    네, 센트OS 이야기는 아니지만 오라클 클라우드의 경우 우분투쪽 UFW가 작동불능이라서 반드시 iptable로 포트를 열어야 합니다.
  • ?
    답변 감사합니다
    그래서 최신 글로 나온 거를 봤는데

    apt install ufw -y
    ufw allow ssh
    for i in `curl https://www.cloudflare.com/ips-v4`; do ufw allow from $i to any port http; done
    for i in `curl https://www.cloudflare.com/ips-v4`; do ufw allow from $i to any port https; done
    for i in `curl https://www.cloudflare.com/ips-v6`; do ufw allow from $i to any port http; done
    for i in `curl https://www.cloudflare.com/ips-v6`; do ufw allow from $i to any port https; done

    이게 2일 전 코드더라고요 해외 포럼에서 나온거라 한 번 적용해 봤는데
    기진곰님이 저번에 남겨주신 밑에 댓글처럼 Forbidden 403 에러가 떠서 잘 적용이 안된 것 같아요.

    [님 서버 IP를 브라우저 주소창에 치고 접속해 보세요.
    한참을 빙글빙글 돌다가 접속이 안 된다며 브라우저 기본 에러화면이 뜬다면 정상입니다.
    (크롬 기준, ERR_CONNECTION_TIMED_OUT 또는 ERR_CONNECTION_REFUSED)

    사이트가 뜬다면 당연히 안 되겠고, 아파치 기본 페이지나 Not Found, Forbidden, 서버 에러 등
    브라우저 에러화면을 제외한 어떤 내용이라도 뜬다면 마찬가지로 잘못된 거예요.]

    아니면 iptables이 아닌 ufw라서 잘 적용이라서 뭔가 다른걸까요?
  • ? profile

    저런 명령을 실행하시기 전에 방화벽이 어떤 상태였는지가 중요합니다.

    예를 들어 위에 복붙하신 명령은 무조건 ufw를 설치하려고 하는데, 일반적인 우분투 서버라면 ufw가 이미 설치되어 있고 여러 포트를 허용하는 규칙이 이미 들어가 있을 가능성이 높습니다. 이 상태에서 클플 IP를 허용하는 규칙을 추가하더라도 이미 있는 규칙에 의해 다른 IP들도 모두 허용되겠지요.

     

    아니, 애초에 "이것만 허용하고 나머지는 다 막아"라고 설정하는 코드가 보이지 않습니다. 왜 이렇게 어설프게 작성했을까요? 현재 상태를 확인하지 않았으니까 (확인할 줄 모르니까 + 책임질 수 없으니까) 그렇겠죠.

     

    실제로 ufw를 사용하고 계시다면 ufw status verbose 명령으로 현재 상태를 정확하게 찍어 주세요. 그리고 거기에 맞는 명령을 입력하셔야 합니다.

  • profile ?

    2023-05-01_13-21-51.jpg

    해킹 방어책으로 22번 포트 사용하지 말라고 여기서 봐서 fail2ban 명령어로 ufw allow 포트 열고, ufw deny로 22포트 닫은 거 외에는 없습니다!

     

    그냥 인터넷에 써있는 서버 만드는법 코드 여러개를 섞어서 한 거라서요!

  • ? profile
    명령을 실행한 결과를 모두 보여주셔야 합니다. 제일 중요한 윗부분의 Default가 빠졌네요...

    아무튼 핵심은 아래와 같습니다.
    1. 클플 IP 대역은 80, 443 포트 접근 허용 (위 댓글의 for문을 사용하시면 됩니다)
    2. 관련 규칙이 왕창 생긴 것 확인하신 후
    3. 아무 제한 없이 80/tcp와 443 포트 허용하는 기존 규칙은 삭제
    4. incoming 기본값을 deny로 변경 (이렇게 하면 굳이 22 포트를 deny하지 않으셔도 됩니다)
  • profile ?

    2023-05-01_13-40-20.jpg

     

    읍... 일단 인터넷에서 찾아보고 적용을 해볼테니 완성된 것이 잘된 것인지만 봐줄 수 있으실까요..?
    여러가지 다 적용해보고 있는데 다 실패하고 있는 것 같아요

  • profile ?

    2023-05-01_13-47-24.jpg

    어라?? 확신은 못하겠는데 성공한거 같아요!!

    sudo ufw status numbered 이걸로 찾아낸 후 sudo ufw delete 이 명령어로
    80,443,80(v6),443(v6) 삭제하고 ufw default deny incoming 기본값은 deny로여

    22포트를 제가 ufw default deny incoming 이걸로 하기 전에 닫아버렸잖아요??
    그대로 놔두고, 다음에 서버 만들 때 22포트를 닫는 것보다는 ufw default deny incoming 이걸로 하라는 말씀이 맞을까요?

    그리고 이제 포트는 31160으로 ssh 접속하면 되는게 맞나요..!? 

  • ? profile
    괜찮아 보이네요. 실제로 클플은 접속되고 서버 IP 직접 접속시 차단되는지 확인해 보셨나요?

    ssh 포트가 31160이라면, 22 포트와 관련된 규칙들은 모두 삭제하시기 바랍니다.
    잘못 복붙하셔서 22 포트를 막으라는 규칙과 22/tcp를 허용하라는 규칙이 섞여 있네요.
    default deny incoming 상태라면 뭔가를 막는 규칙은 쓰지 않아도 됩니다.
  • profile ?

    998.jpg

    실험용으로 1기가 서버를 만들고 해봤는데

    클플 코드를 쓰니까 자동으로 저게 추가가 되는것 같습니다!

    22, 22(v6)제거하고 SSH 쓸 31160 추가한 게 최종적으로 아래가 됩니다!

     

    999.jpg

    default deny incoming < 이것도 아무 설정 안했는데 기본으로 이렇게 되어있더라구요

    만약 31160 대신 다른 것을 쓰고 싶다하면 31160도 삭제하고  5자리를 /etc/ssh/sshd_config 수정하고 ufw allow 변경한 포트로 열면 되겠네요

     

    정말 감사합니다!! 진짜 시간 날 때 계속 밤새서 했는데도 답이 없었는데 덕분에 정말 살았어요 ㅠㅠㅠㅠㅠ

     

  • ? profile
    네, 위에 복붙하신 명령 중 ufw allow ssh가 있기 때문에 자동으로 추가될 겁니다.

    ssh 포트 바꾸실 때는 조심하세요. 잘못하면 오도가도 못하게 될 수 있으니까요.
    /etc/ssh/sshd_config에서 Port 설정을 중복으로 쓰면 여러 포트를 동시에 사용할 수도 있으니
    일단 둘 다 되도록 해놓고, 포트를 열고, 테스트 후, 나머지 하나의 포트를 닫는 순서로
    조심스럽게 진행하시면 되겠습니다.
  • profile ?
    먼저 닫고 시작했다가는 아예 SSH 접속을 못할 수도 있겠군요!!
    두려워서 포트 안바꾸고 그냥 이대로 써야겠습니다 ㅎㅎ
    답변 정말 감사합니다!!
    진짜 오랫동안 문제였던걸 해결했어요!!