விற்பனையாளரின் VPN வாடிக்கையாளரைத் தொடங்கும் ஸ்கிரிப்ட் நேரம் முடியும் வரை தொங்குகிறது, யாரும் தட்டச்சு செய்யாத சரிபார்ப்புக் குறியீட்டை வாடிக்கையாளர் கேட்பதாக பதிவு காட்டுகிறது. கடவுச்சொல் வழங்கப்பட்டது, எனவே கடவுச்சொல் தவறு என்ற முடிவு தெளிவாகத் தெரிகிறது. அப்படி இல்லை. குறியீட்டு வேண்டுகோள் தனி சேனலில் தனி உரையாடல், உங்கள் ஸ்கிரிப்ட் அதை ஒருபோதும் திறக்கவில்லை.

கீழேயுள்ள ஐந்து சோதனைகளை வரிசையாகச் செய்யுங்கள். முதலில் தோல்வியடையும் சோதனையில் நிறுத்துங்கள், ஏனெனில் ஒவ்வொரு அடுத்த படியும் முந்தையவை செல்லுபடியாகும் எனக் கருதுகிறது.

சோதனை 1: வாடிக்கையாளர் நிலையான உள்ளீட்டைப் படிக்கிறதா?

எந்த தானியக்கத்தையும் எழுதுவதற்கு முன் சோதியுங்கள்: குழாய் வழியாக வாடிக்கையாளருக்கு ஒரு போலி ரகசியத்தை அனுப்பி என்ன நடக்கிறது என்று பாருங்கள். தன் வேண்டுகோளை அச்சிட்டு பிறகு காத்திருந்தால், அது குழாயைப் படிக்கவில்லை.

பல வாடிக்கையாளர்கள் முனையச் சாதனத்தை நேரடியாகத் திறக்கின்றனர், அல்லது முனையம் அல்லாத ஓட்டத்திலிருந்து ரகசியத்தை எடுக்க மறுக்கின்றனர், வழிதவறிய குழாய் கடவுச்சொல்லைக் கசியவிடாமல் இருக்க. OpenVPN ஆவணப்படுத்தப்பட்ட விதிவிலக்கு, ஏனெனில் --auth-user-pass ஒரு கோப்பு பாதையை எடுக்கிறது. ஒரு முறை மட்டும் குறியீட்டைக் கேட்கும் விற்பனையாளர் வாடிக்கையாளர்களிடம் பொதுவாக இணையான விருப்பம் இல்லை, அவர்களின் வேண்டுகோள் உங்கள் ஸ்கிரிப்ட் ஒருபோதும் வழங்காத முனையத்திற்காகக் காத்திருக்கிறது.

சோதனை 2: குழந்தை செயல்முறைக்கு முனையம் உள்ளதா?

pty குழந்தைக்கு ஒரு முனையத்தை ஒதுக்குகிறது, இது வேண்டுகோர்களை வரிசையாகப் பதிலளிக்கக்கூடிய படிக்கக்கூடிய வெளியீடாக மாற்றுகிறது.

import pexpect

child = pexpect.spawn("openconnect vpn.example.net", encoding="utf-8", timeout=30)
child.expect("GROUP:")
child.sendline("staff")
child.expect("USERNAME:")
child.sendline("alice")
child.expect("PASSWORD:")
child.sendline(PASSWORD)
child.expect("Connected as", timeout=60)

மேலேயுள்ள வேண்டுகோள் சரங்கள் எடுத்துக்காட்டுகள்; உங்கள் வாடிக்கையாளர் அச்சிடும் சரியான உரையை எழுத்து அளவு மற்றும் நிறுத்தற்குறிகளுடன் நகலெடுக்கவும். ஒவ்வொரு எதிர்பார்ப்புக்கும் நேர வரம்பு உள்ளது, மூடப்பட்ட குழந்தை நிலையைத் திருப்பித் தருவதற்குப் பதிலாக விதிவிலக்கை எறிகிறது, எனவே வரிசையைச் சுற்றி மூடி கோப்பின் முடிவைத் தோல்வியாகக் கருதுங்கள். இந்த தொகுதி என்ன செய்யவில்லை என்பதைக் கவனியுங்கள்: குழந்தை ஸ்கிரிப்டுடன் இறக்கிறது, ஏனெனில் pty பிரிக்கும் முறை அல்ல, disown என்பது ஷெல்லின் உள்ளமைந்த கட்டளை, உங்கள் ஸ்கிரிப்ட் உருவாக்கிய செயல்முறையை அது அடையாது.

சோதனை 3: ஆதரவளிக்கப்பட்ட ஊடாடாத உள்ளீடு உள்ளதா?

திரை சுரண்டல் வாடிக்கையாளர் மேம்படுத்தல்களில் உடைகிறது, எனவே முதலில் ஆவணப்படுத்தப்பட்ட விருப்பத்தைத் தேடுங்கள்.

உதவி வெளியீட்டில் டோக்கன் அல்லது ஒரு முறை குறியீடு விருப்பம் உள்ளதா எனப் பாருங்கள், கடவுச்சொல் புலத்தில் இணைக்கப்பட்ட குறியீட்டை சேவை ஏற்கிறதா எனவும் பாருங்கள். வாடிக்கையாளர் சான்றுக் கோப்பைப் படிக்கும் இடத்தில், வேண்டுகோளுக்குப் பதிலாக கோப்பைக் கொடுங்கள்:

openvpn --config office.ovpn --auth-user-pass <(printf "%s\n%s\n" "$USER_NAME" "$PASSWORD")

செயல்முறை மாற்றீடு /dev/fd வழங்கும் அமைப்புகளில் வாடிக்கையாளருக்குப் படிக்கக்கூடிய பாதையைக் கொடுக்கிறது. வாடிக்கையாளரின் பார்வையில் ரகசியம் இன்னும் ரகசியமே, எனவே அதை பதிவுகள், ஷெல் வரலாறு மற்றும் செயல்முறைப் பட்டியல்களிலிருந்து விலக்கி வையுங்கள். வாடிக்கையாளர் /dev/fd-ஐ மறுத்தால் அல்லது சான்றுப் பாதையை ஒரு முறைக்கு மேல் திறந்தால், கடுமையான அனுமதிகளுடன் உண்மையான கோப்பை எழுதி அதே ஸ்கிரிப்டில் அதை நீக்குங்கள்.

சோதனை 4: சுரங்கம் ஸ்கிரிப்டை விட நீடிக்குமா?

இயல்பாக சுரங்கம் அதன் பெற்றோருடன் இறக்கிறது, இது துவக்க ஸ்கிரிப்டுக்குத் தேவையானதற்கு நேர் எதிரானது.

disown -h உதவுவது வாடிக்கையாளரை ஷெல் வேலையாகத் தொடங்கியிருந்தால் மட்டுமே, ஏனெனில் அது அந்த ஷெல்லின் வேலை அட்டவணையைத் திருத்துகிறது, உங்கள் ஸ்கிரிப்ட் pty வழியாக உருவாக்கிய செயல்முறையை அது அடையாது. கண்காணிப்பு இல்லாமல் மீண்டும் இணைக்க வேண்டிய அனைத்திற்கும் சேவை மேலாளர் சிறந்த இடம், ஏனெனில் அது வாடிக்கையாளரை மீண்டும் தொடங்கி ஏன் இறந்தது எனப் பதிவு செய்கிறது. எப்படியிருந்தாலும், ஒவ்வொரு மறு இணைப்புக்குப் பிறகும் புதிய குறியீட்டை எதிர்பாருங்கள்: ஒரு முறை டோக்கன் முதல் வெற்றிகரமான அங்கீகாரத்தில் செலவாகிறது.

sudo வரிசையில் என்ன செய்கிறது எனப் பாருங்கள். sudo-வின் கடவுச்சொல் வேண்டுகோள் VPN-இன் வேண்டுகோள் அல்ல, அதற்கு VPN கடவுச்சொல்லால் பதிலளிப்பதே வேறு வகையில் சரியான எதிர்பார்ப்பு வரிசை தோல்வியடையும் பொதுவான வழி.

சோதனை 5: ஒரு நபரின் குறியீடு ஸ்கிரிப்டில் இருக்க வேண்டுமா?

இதுதான் மக்கள் தவிர்க்கும் சோதனை. டோக்கன் ஒரு நபருக்கு உரியது, ஆனால் அட்டவணைப்படி எழ வேண்டிய சுரங்கம் இயந்திரத்திற்கு உரியது.

ஒரு வேலை கண்காணிப்பு இல்லாமல் மீண்டும் இணைய வேண்டும் என்றால், இயந்திரச் சான்றிதழ் அல்லது சேவைக் கணக்கு ஊடாடும் உள்நுழைவை மாற்ற முடியுமா எனக் கேளுங்கள். ஒருவரின் ஒரு முறை குறியீட்டை தானியங்கியாக்குவது இரண்டாம் காரணியைச் சேமிக்கப்பட்ட ரகசியமாக மாற்றுகிறது, அது ஸ்கிரிப்ட் வசதி அல்ல, கொள்கை மாற்றம். சேவை இரண்டையும் ஆதரிக்கும் இடத்தில், வேலை உண்மையில் எப்படி இயங்குகிறது என்பதற்குப் பொருந்தும் சான்றைத் தேர்ந்தெடுங்கள். பதிலை எழுதி வையுங்கள், ஏனெனில் அடுத்த நபர் ஸ்கிரிப்ட் ஏன் டோக்கனை வைத்திருக்கிறது எனக் கேட்பார்.

வேலை செய்யும் ஸ்கிரிப்ட் எப்படி இருக்கும்

ஸ்கிரிப்ட் அடைந்த படியை அச்சிடுகிறது, ரகசியத்தை ஒருபோதும் அல்ல, எந்தத் தோல்வியடைந்த எதிர்பார்ப்பிலும் பூஜ்ஜியமல்லாத குறியீட்டுடன் வெளியேறுகிறது.

வேண்டுமென்றே உடைத்துச் சோதியுங்கள்: தவறான கடவுச்சொல், தவறான குழு, காலாவதியான டோக்கன். ஒவ்வொரு தோல்வியும் தொங்குவதற்குப் பதிலாக பெயரிடப்பட்ட படியில் நிற்க வேண்டும். பின்னர் உண்மையான சேவைக்கு எதிராக ஒருமுறை இயக்கி சுரங்கத்தை ஸ்கிரிப்டின் வெளியிலிருந்து சோதியுங்கள், உள்ளிருந்து அல்ல.

தொடர்புடைய கட்டுரைகள்