Mark930.k
Nightcrawler
Mark930.k
전체 방문자
오늘
어제
  • 📚 WWW (102)
    • 🖥하드웨어 (1)
    • ⚡네트워크 (38)
      • Amazon AWS (5)
      • OSI 7 Layer (1)
      • 네트워크 기초 (2)
      • Linux (2)
    • 💻모의해킹 (9)
      • Android (1)
      • Microsoft (7)
      • Linux (0)
      • 침해대응 (1)
    • 🐧리눅스 (0)
    • 🏋️‍♂️운동 (7)
      • 헬스 루틴 (6)
    • 🏎️자동차 (1)
      • BMW (1)
    • 기타 (13)
      • NetScaler 업무 페이지 (8)
    • 📖독서 (1)
      • 경제 (1)

블로그 메뉴

    공지사항

    인기 글

    태그

    • 해킹
    • zeroday
    • 보안
    • python
    • 웹위변조
    • Security
    • 정보보안
    • 위변조
    • CVE-2022-30190
    • Python test
    • 네트워크

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Mark930.k

    Nightcrawler

    CentOS LinOTP ( FreeOTP ) 서버 구축
    ⚡네트워크/Linux

    CentOS LinOTP ( FreeOTP ) 서버 구축

    2023. 7. 17. 13:51

    목표


    출처 : https://aws.amazon.com/ko/blogs/desktop-and-application-streaming/integrating-freeradius-mfa-with-amazon-workspaces/

     

    Prerequisites


    • Directory Service의 Directory 하나와 그 안의 WorkSpace (이전 글에서 만든 honglab.com Directory 사용)
    • Directory가 있는 VPC와 통신이 되는 Amazon Linux Server
    • Linux Server <-> Directory 간 UDP 1812 Port 보안그룹 Open
      (Directory의 보안그룹은 outbound가 다 안열려있기 때문에 같은 Port로 outbound까지 열어줘야 한다)
    • MFA Client App (Google Authenticator 이나 Chrome 인증 도구 등)

     

    시작!

     

    ※ Amazon Linux 2에서 진행

     

     

    1. RADIUS Server 설정


    # root로 진행 (또는 sudo -i)
    
    # Update 및 저장소 활성화
    yum -y update
    amazon-linux-extras install epel -y
    yum -y localinstall http://linotp.org/rpm/el7/linotp/x86_64/Packages/LinOTP_repos-1.1-1.el7.x86_64.rpm
    
    # MariaDB 설치 및 활성화
    yum install -y mariadb-server
    systemctl enable mariadb
    systemctl start mariadb
    
    # LinOTP 설치 및 MariaDB 연동
    yum install -y LinOTP LinOTP_mariadb
    restorecon -Rv /etc/linotp2/
    restorecon -Rv /var/log/linotp
    
    # LinOTP, MariaDB credentials 구성
    linotp-create-mariadb
    # Set root password? 나오면 Y 하고 비번세팅(2번), 나머진 다 Enter치다가 마지막에 비번 쳐줌
    
    # python-repoze-who 버전 잠금 (뭔지 모름)
    yum install -y yum-plugin-versionlock
    yum versionlock -y python-repoze-who
    
    # Apache 설치 및 vhost config
    yum install -y LinOTP_apache
    systemctl enable httpd
    systemctl start httpd
    mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.back
    mv /etc/httpd/conf.d/ssl_linotp.conf.template /etc/httpd/conf.d/ssl_linotp.conf
    
    # LinOTP 관리 포털 암호 설정
    htdigest /etc/linotp2/admins "LinOTP2 admin area" admin
    # 재부팅
    reboot

     

    2. LinOTP 구성 (AD와 통합)


    https://[RADIUS 서버 IP]/manage 로 웹에서 접속 (RADIUS 서버 보안그룹에서 443 열어둬야 함)

    에러 창이 뜨는 것 같지만 그냥 고급 > 안전하지 않음으로 이동 을 눌러주자

     

     

    그러면 이렇게 로그인 하라는 팝업창이 뜬다

     

     

    admin과 htdigest 명령으로 설정했던 비밀번호를 입력하고 로그인하자

     

    LinOTP 관리자 화면

    좌측 상단의 LinOTP Config > UserIdResolvers > +New > LDAP 선택

     

     

    이름은 맘대로 정하고, Server-URI의 ldap:// 뒤에는 내 Directory의 DNS 주소 2개를 각각 적어준다

    BaseDN : ou=users,ou=[your domain],dc=[your domain],dc=com

    BindDN : cn=admin,ou=users,ou=[your domain],dc=[your domain],dc=com

    Bind Password : Directory의 관리자(cn) 비밀번호

    입력 다 하고 Test LDAP Server Connection을 눌러 연결이 잘 되는지 테스트해보자

     

    연결 성공!

    만약 연결이 실패한다면 보안그룹을 잘 열어줬는지와 비밀번호를 맞게 쳤는지를 확인해보자

     

    그러고 Save > Close > OK 를 눌러주면 realm을 생성하는 창이 뜬다

    +New 를 누른 후 Realm 이름을 정하고 resolver를 선택해준 후 Save를 눌러주자

     

     

    그 다음엔 Policy 탭의 Import policies를 눌러 아래 파일을 넣어주자

     

    samplepolicy.cfg.txt
    0.00MB

     

     

     

    Policy가 4개가 생겼다!

     

    3. 사용자 MFA 등록


    이번엔 https://[RADIUS 서버 IP]/ 로 접속해보자

     

     

    Directory의 User로 로그인할 수 있다 (WorkSpace 로그인 정보)

     

     

     

    Google Authenticator compliant 를 체크해준 후, enroll TOTP token 을 눌러 토큰을 발급받자

     

     

    authenticator를 사용해 QR코드 스캔 후 MFA 등록하면 끝이다

    아래 링크로 접속해 잘 적용되었는지 Test해볼 수 있다

    https://[RADIUS 서버 IP]/validate/check?user=[USERNAME]&pass=[PINOTP]

     

    value : true 면 성공

     

    4. FreeRADIUS 설치 & 구성


    FreeRADIUS 설치

    yum install -y freeradius freeradius-perl freeradius-utils perl-App-cpanminus perl-LWP-Protocol-https perl-Try-Tiny git
    cpanm Config::File
    mv /etc/raddb/clients.conf /etc/raddb/clients.conf.back
    mv /etc/raddb/users /etc/raddb/users.back

     

    vi /etc/raddb/clients.conf - client 구역별로 비밀번호 지정

    client localhost {
            ipaddr = 127.0.0.1
            netmask= 32
            secret = '비밀번호'
    }
    client directory {
            ipaddr = 10.0.0.0
            netmask = 16
            secret = '비밀번호'
    }

     

    FreeRADIUS용 LinOTP Perl 모듈 다운

    git clone https://github.com/LinOTP/linotp-auth-freeradius-perl.git /usr/share/linotp/linotp-auth-freeradius-perl

     

    vi /etc/raddb/mods-available/perl

    # FreeRADIUS가 'linotp'플러그인을 실행하도록 허용
    
    perl {
    	filename = /usr/share/linotp/linotp-auth-freeradius-perl/radius_linotp.pm
    }

     

     

    Perl 모듈 활성화

    ln -s /etc/raddb/mods-available/perl /etc/raddb/mods-enabled/perl

     

    vi /etc/linotp2/rlm_perl.ini

    #IP of the linotp server
    URL=https://localhost/validate/simplecheck
    #optional: limits search for user to this realm
    REALM=honglab-realm # LinOTP 콘솔에서 만든 Realm 이름
    #optional: only use this UserIdResolver
    #RESCONF=flat_file
    #optional: comment out if everything seems to work fine
    Debug=True
    #optional: use this, if you have selfsigned certificates, otherwise comment out
    SSL_CHECK=False

    REALM 부분만 내 Realm 이름으로 수정

     

    활성화 된 구간에 대한 기본 링크 제거

    rm /etc/raddb/sites-enabled/{inner-tunnel,default}
    rm /etc/raddb/mods-enabled/eap

     

    vi /etc/raddb/sites-available/linotp

    # FreeRADIUS에서 LinOTP 활성화
    
    server default {
            listen {
                    type = auth
                    ipaddr = *
                    port = 0
                    limit {
                            max_connections = 16
                            lifetime = 0
                            idle_timeout = 30
                    }
            }
            listen {
                    ipaddr = *
                    port = 0
                    type = acct
            }
            authorize {
                    preprocess
                    IPASS
                    suffix
                    ntdomain
                    files
                    expiration
                    logintime
                    update control {
                            Auth-Type := Perl
                    }
                    pap
            }
            authenticate {
                    Auth-Type Perl {
                            perl
                    }
            }
            preacct {
                    preprocess
                    acct_unique
                    suffix
                    files
            }
            accounting {
                    detail
                    unix
                    -sql
                    exec
                    attr_filter.accounting_response
            }
            session {
            }
            post-auth {
                    update {
                            &reply: += &session-state:
                    }
            -sql
            exec
            remove_reply_message_if_eap
            }
    }

     

    소프트링크 활성화 & RADIUS 서비스 활성화

    ln -s /etc/raddb/sites-available/linotp /etc/raddb/sites-enabled/linotp
    
    systemctl enable radiusd
    systemctl start radiusd

     

    솔루션 테스트

    radtest USERNAME MFACODE PRIVATERADIUSIP:1812 10 비밀번호
    radtest hhj 439473 localhost:1812 10 [비밀번호]

     

    Access-Accept 나오면 성공

     

    5. Directory에서 MFA 활성화


    AWS Console > Directory Service > MFA 설정할 디렉터리 > 맨 밑의 멀티 팩터 인증 활성화

     

     

    필요한 정보를 입력한다 - 공유 보안 코드는 위의 clients.conf 파일에서 지정한 비밀번호 입력

     

     

    좀만 기다리면

     

    완료!

    WorkSpace에 접속해보면

     

    기존 로그인 화면 / MFA 활성화 된 후 로그인 화면

     

    로그인 창에 MFA Code를 입력하는 칸이 나타났다

     

     

    MFA Code까지 입력하고 나니 WorkSpaces에 접속도 잘 된다

    저작자표시 변경금지 (새창열림)

    '⚡네트워크 > Linux' 카테고리의 다른 글

    CentOS FreeRadius 설치 및 연동  (0) 2023.07.17
      '⚡네트워크/Linux' 카테고리의 다른 글
      • CentOS FreeRadius 설치 및 연동
      Mark930.k
      Mark930.k
      Citrix Netscaler / Citrix VDI / KaliLinux / AWS / VMware / Window Svr

      티스토리툴바