Raspberry Pi4에 Squid 인증 프록시 서버 구축

배경이 되다


클라이언트 응용 개발 과정에서 프록시 인증이 필요한 환경에서의 통신을 테스트하기 위해 LAN에서basic 인증을 가진 프록시 서버를 원합니다.Raspberry Pi4가 스크롤되기 때문에 효율적으로 사용하기로 결정했습니다.

전제/ 환경


Raspberry Pi 4 ModelB
Raspbian OS 10 buster
Kernel 4.19
Squid 4.6
※ 저는 인터넷이나 인프라를 잘 몰라요. 잘못된 점이 있으면 알려주세요.

전체 프로세스

  • Squid 설치
  • htpasswd를 사용하는 appachee2-utils
  • 설치
  • 암호 파일 만들기
  • Squid의 설정
  • Squid 재부팅
  • 동작 확인
  • 절차.


    Squid 설치


    어쨌든 Squid 호스트를 설치합니다.버전 4.6입니다.
    $ sudo apt-get install squid
    

    apacchee-2-utils 설치


    이번에 프록시 서버를 사용하여 방문할 때basic인증을 요구하는 것이 필요하기 때문에basic인증이 설정한 비밀번호 파일을 만듭니다.암호 파일 생성에 사용된 htpasswd 명령은 Raspbian OS를 설치할 때 설치되지 않은 것 같아서 설치합니다.apchee2-utils를 설치하면 httpasswd 명령을 사용할 수 있습니다.
    $ sudo apt-get install apache2-utils
    

    암호 파일 만들기


    설치된 apchee-2-uitls에 포함된 htpasswd 명령을 사용하여 임의의 디렉터리에 암호 파일을 만듭니다.
    이번에 /etc/squid/htpasswd라는 파일을 만들었는데 아이디는 user였다.password:Re-type new password:를 물었기 때문에 설정하고 싶은 비밀번호를 입력하세요.
    $ sudo htpasswd -c /etc/squid/htpasswd user
    

    Squid 구성


    Squid를 요청하여 요청을 받을 때 생성된 암호 파일에 등록된 사용자에 대한 인증을 설정합니다.이번에basic인증 주위 이외에 기본 설정으로 원하는 동작을 얻었습니다./etc/squid/squid.conf의 설정 파일을 보고 규칙을 설정하기 위해 /etc/squid/conf.d/ 아래에 설정 파일을 삽입한다고 쓰여 있어서/etc/squid/conf.d/basic_auth.conf에basic 인증용 설정 파일을 만들었습니다.
    $ sudo touch /etc/squid/conf.d/basic_auth.conf
    $ sudo vi /etc/squid/conf.d/basic_auth.conf
    
    Squid의 설정 파일에서 위에서 허가, 거부의 접근 규칙을 순서대로 쓰고 마지막deny all과 정의되지 않은 다른 접근은 모두 허용하지 않습니다./etc/squid/squid.conf에서 deny all 이전에 /etc/squid/conf.d/ 이하의 모든 설정 파일을 포함한다.
    제작된 설정문서는 다음과 같다.
    # basic認証を設定。認証プログラムとパスワードファイルのパスを指定
    auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/.htpasswd
    
    # 認証を行うプロセスの数。
    # 複数クライアントから同時に要求が来て認証情報の入力待ちを何件平行に行えるかの設定(たぶん)
    auth_param basic children 5
    
    # ブラウザのダイアログとかに表示する、何に対しての認証要求なのかを表現する文言の設定。
    # "Squid Basic Authentication"のところを、サーバ名とか誰が認証を求めてるのかわかる親切な内容にするとよさげ。
    auth_param basic realm Squid Basic Authentication
    
    # 入力された認証情報の有効期限。この場合1時間後に再度尋ねる
    auth_param basic credentialsttl 1 hours
    
    # ACLとはAcess Control Listのこと。
    # たぶんパスワード形式でのプロキシ認証必須にするという意味
    acl password proxy_auth REQUIRED
    
    # たぶんパスワード認証のアクセスを許可するという意味
    #(呼び出し元のsquid.confでdeny allするのでhttp_access password以外はdenyすることになる?)
    http_access allow password
    

    Squid 재부팅


    $ sudo service squid restart 
    
    이렇게 정상적으로 다시 시작하면basic 인증을 요청합니다.
    자신의 경우, 파일을 설정하는basic와 absic typo가 시작에 실패합니다.
    변경 후 결과 재부팅이 불가능한 경우
    $ sudo squid -k parse
    
    명령을 통해 설정 파일의 구문을 확인할 수 있습니다.

    동작 확인


    다음 명령이 접근을 거부했는지 확인하십시오.
    $ curl example.com -x localhost:3128
    
    다음 명령을 사용하여 Connection Refused 등이 반환되지 않은 상태에서 HTML 형식의 응답이 표시되는지 확인합니다.(password 부분에서 비밀번호 파일을 만들 때 설정한 비밀번호를 입력합니다)
    $ curl example.com -x user:password@localhost:3128
    

    로그 파일


    기본적으로 로그 파일은 아래에서 만들 수 있습니다.
    /var/log/squid/access.log
    /var/log/squid/cache.log
    

    좋은 웹페이지 즐겨찾기