ftp-proxy в freebsd

Дело было ранней зимой. Требовалось обеспечить доступ из интернета к ftp-серверу в локальной сети. Сперва решил тупо перенаправить на него порт 21 и порты выше 1025, но выглядело это не очень красиво.
В результате было решено поднять на шлюзе прокси-сервер для протокола ftp (ftp-proxy - портированный из openbsd вместе с pf) и настроить его для работы в обратную сторону.

Что нужно сделать:
1. Добавить в файл /etc/inetd.conf строку:
ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy -R <local-ftp-server> -S <local-net-if>

где
<local-ftp-server> - ip-адрес внутреннего ftp-сервера,
<local-net-if> - ip-адрес внутреннего интерфейса шлюза.
2. Настроить параметры запуска inetd в /etc/rc.conf:
inetd_enable="YES"
inetd_flags="-wW -c 60 -a 80.xx.yy.zz"

где 80.xx.yy.zz - внешний ip-адрес шлюза.
3. Настроить pf:
rdr on $ext_if proto tcp from any to $ext_ip port ftp tag TRAF_FTP -> 80.xx.yy.zz port 8021
< ... skip ... >
pass in on $ext_if reply-to proto tcp tagged TRAF_FTP flags S/SA keep state
pass out on $ext_if proto tcp from $ext_ip to any flags S/SA user proxy keep state
pass in on $ext_if proto tcp from any to $ext_ip flags S/SA user proxy keep state
pass out on $int_if proto tcp from $int_ip to any flags S/SA user proxy keep state
pass in on $int_if proto tcp from any to $int_ip flags S/SA user proxy keep state
где
$int_if - локальный интерфейс,
$int_ip - ip-адрес локального интерфейса,
$ext_if - внешний интерфейс,
$ext_ip - ip-адрес внешнего интерфейса,
proxy - имя пользователя ftp-proxy.
4. Запустить inetd.
# /etc/rc.d/inetd start

Прокси-сервер может работать в пассивном режиме. Работу в активном режиме не проверял.

Читать далее »

  • В интернет из lo0
  • vsftpd и пользователи из базы LDAP.
  • Run as interactive user from service
  • Сброс буфера системных сообщений FreeBSD

    Сбросить буфер системных сообщений (вывод команды dmesg) можно с помощью sysctl:
    # sysctl kern.msgbuf_clear=0

    Автор Князь на 15:35 0 комментария(ев) Ссылки на это сообщение

    Ярлыки: freebsd, sysctl, заметки

    20 Ноябрь 2007 г.
    sftp

    Раньше для закачивания файлов на сервер изощрялся как мог: ftp на сервере поднимал; на веб-сервере каком-нибудь выкладывал, чтоб потом оттуда скачать. Про SFTP (secured file transfer protocol) я конечно знал, но по необъяснимой мне причине ниразу им не пользовался.
    Сегодня таки вспомнил о нем и решил попробовать. Оказалось что им просто пользоваться - почти как FTP. Ничего дополнительно на сервер ставить не нужно, т.к. он работает через SSH-сервер системы.

    Синтаксис запуска: $ sftp -h
    usage: sftp [-1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config]
    [-o ssh_option] [-P sftp_server_path] [-R num_requests]
    [-S program] [-s subsystem | sftp_server] host
    sftp [[user@]host[:file [file]]]
    sftp [[user@]host[:dir[/]]]
    sftp -b batchfile [user@]host

    Команды sftp:
    sftp> ls - смотреть список файлов на удаленном сервере.
    sftp> lls - смотреть локальный список файлов.
    sftp> lcd - изменить текущий локальный каталог.
    sftp> cd - изменить текущий каталог на удаленном сервере.
    sftp> put - положить файл на удаленный сервер.
    sftp> get - скачать файл с удаленного сервера.
    sftp> help - помощь по командам.

    Из Windows доступ к серверу по sftp можно получить посредством программы EngInSite DataFreeway.

    ----------
    Самыми качественными считаются натяжные, безшовные потолки из Франции. Однако при недостатке средств вас не разочаруют натяжные потолки отечественного происхождения.

  • vsftpd и пользователи из базы LDAP.
  • Samba внутри jail + MS AD
  • Новости CodeGear за декабрь 2007
  • Samba внутри jail + MS AD

    На сервере был поднят веб-сервер с сайтом компании и поддерживать его поручили мне. Так как мне очень не хотелось перегонять файлы по FTP туда и обратно, решил поднять сервер Samba и через его шары рулить файлами сайта. И дизайнерам будет проще править дизайн. Чтобы не засорять систему поднял jail для Samba.

    Порядок действий внутри созданного jail:
    1. cd /usr/ports/net/samba3
    2. в make config отметил:
    [X] LDAP         With LDAP support

    [X] ADS          With Active Directory support

    [X] WINBIND      With WinBIND support

    [X] UTMP         With UTMP accounting support

    [X] MSDFS        With MSDFS support

    [X] POPT         With system-wide POPT library
    3. И далее установил командой make install.
    4. Настроил Kerberos5:
    # cat > /etc/krb5.conf

    [libdefaults]

    default_realm = MY-DOMAIN.LOCAL

    dns_lookup_realm = false

    dns_lookup_kdc = false
    [realms]

    MY-DOMAIN.LOCAL = {

    kdc = MY-DOMAIN.LOCAL

    admin_server = MY-DOMAIN.LOCAL

    kpasswd_server = 192.168.0.1

    default_domain = my-domain.local

    }
    [domain_realm]

    .my-domain.local = MY-DOMAIN.LOCAL
    [logging]

    default = FILE:/var/log/kerberos/krb5libs.log

    kdc = FILE:/var/log/kerberos/krb5kdc.log

    admin_server = FILE:/var/log/kerberos/kadmind.log

    Где my-domain.local домен MS Active Directory.
    Проверяем:
    # kinit root

    root@MY-DOMAIN.LOCAL's Password:

    kinit: NOTICE: ticket renewable lifetime is 1 week

    Если выходит другое сообщение - проверяем файл конфигурации.

    4. Файл конфигурации Samba:
    # cat > /usr/local/etc/smb.conf

    [global]

    # Имя домена

    workgroup = MY-DOMAIN

    realm = MY-DOMAIN.LOCAL

    server string = Samba Server
    # Машина в Active Directory

    security = ads

    hosts allow = 192.168.0.

    # Принтеры нам не нужны

    load printers = no

    show add printer wizard = no
    log file = /var/log/samba/log.%m

    # Контроллеры домена

    password server = pdc.my-domain.local bdc.my-domain.local
    # Имя samba сервера

    netbios name = FILESRV
    # IP-адрес jail

    bind interfaces only = yes

    interfaces = 192.168.0.23/24
    auth methods = winbind

    idmap uid = 10000-20000

    idmap gid = 10000-20000

    winbind enum users = Yes

    winbind enum groups = Yes

    winbind use default domain = Yes

    winbind refresh tickets = Yes

    case sensitive = No

    hide unreadable = Yes

    socket options = TCP_NODELAY

    dns proxy = no

    display charset = koi8-r

    unix charset = koi8-r

    dos charset = cp866

    [homes]

    comment = Home Directories

    browseable = no

    writable = yes

    [printers]

    comment = All Printers

    path = /var/spool/samba

    browseable = no

    guest ok = no

    writable = no

    printable = yes

    4. Правим /etc/hosts:
    192.168.0.23 FILESRV FILESRV.MY-DOMAIN.LOCAL
    Иначе машина не войдет в домен.

    5. Правим /etc/resolv.conf:
    search my-domain.local

    nameserver 192.168.0.xxx

    Где 192.168.0.xxx ip-адрес DNS Active Directory.

    6. Правим /etc/nsswitch.conf:
    « ... skip ... »
    group: files winbind
    passwd: files winbind
    « ... skip ... »

    7. Вгоняем машину в домен:
    # net ads join -U root
    Если машина вошла в домен, на всякий случай проверяем:
    # wbinfo -u
    « ... Список пользователей домена ... »
    # wbinfo -g
    « ... Список групп домена ... »

    8. Запускаем Samba:
    # /usr/local/etc/rc.d/samba start

    ---------
    Умрет ли ипотека в России так и не родившись, или же у направления жилищного кредитования есть перспективы для роста? Ответ на данный вопрос ищите на ипотечном портале ipoinf.ru.

    Очень красивые бесплатные обои с природными видами, животными и привлекательными девушками можно найти на Yakako.ru.

    Хотите наведаться на автобазар в Ровно, чтобы продать свою «ласточку»? Незачем тратить свое время и бензин – просто разместите объявление на портале купли-продажи авто Rulevoy.com.ua!

  • Монтирование разделов при запуске Jail
  • Интеграция VPN-сервера mpd4 с доменом на базе Samba 3 при посредничестве freeradius
  • vsftpd и пользователи из базы LDAP.
  • Монтирование разделов при запуске Jail

    В rc.conf есть два интересных параметра, позволяющих при запуске jail монтировать необходимые разделы:
    jail_<jail_name>_mount_enable="YES"
    jail_<jail_name>_fstab="/path/to/fstab/file"

    jail_<jail_name>_mount_enable разрешает монтировать разделы по списку в файле, указанного в jail_<jail_name>_fstab.
    Формат файла идентичен формату /etc/fstab. Все пути к монтируемым точкам внутри jail задаются относительно корня основной системы.

    Монтирование можно применить для усиления защиты jail при их взломе. Например, в случае если система в jail будет скомпрометирована, то злоумышленник не сможет подменить системные утилиты т.к. папки /usr/bin или /usr/lib примонтированы только чтения и не могут быть изменены.

    Для этого нужно:
    1. Создать папки:
    ? для jail-машин /opt/jail
    ? папку для конфигурационных файлов /opt/jail/conf
    ? папку Base для базового jail /opt/jail/Base

    2. В папке Base создать базовый jail и настроить его (Например установить дополнительные и настроить пакеты perl5/sudo/etc, прописать DNS сервер).

    3. Потом воспользоваться приведенным ниже скриптом new-jail.conf, предварительно изменив переменные J и JAIL_EXAMPLE (если у вас другое размещение jail).
    Запуск скрипта от имени пользователя root:
    # JAIL=New-jail-name ./new-jail.sh
    Скрипт создает точки монтирования папок и копирует etc, var и usr/local из базового скрипта в новый jail. Потом в /opt/jail/conf создается файл в формате fstab и производится попытка записи параметров jail в /etc/rc.conf. Если /etc/rc.conf недоступен для записи, скрипт выводит список параметров.

    Скрипт new-jail.conf:
    #!/bin/sh

    J="/opt/jail"

    JAIL=${JAIL:?'$JAIL is not set'}

    JAIL_LOWER="`echo $JAIL | /usr/bin/tr A-Z a-z`"

    JAILDIR="$J/$JAIL"

    JAIL_EXAMPLE="$J/Base"

    DIR_EMPTY="dev proc media cdrom mnt boot rescue root usr usr/home usr/src usr/ports"

    DIR_MOUNT="bin lib libexec sbin usr/bin usr/include usr/lib usr/libdata usr/libexec usr/sbin usr/share"

    #Jail directory

    echo -n "Checking $JAILDIR directory... "

    if [ ! -e $JAILDIR ];

           then {

                   /bin/mkdir -p $JAILDIR;

                   echo "created.";

           }

           else echo "already exists.";

    fi;

    # Empty directories

    echo -n "Creating empty directories: $DIR_EMPTY... "

    for dir in $DIR_EMPTY; do /bin/mkdir -p $JAILDIR/$dir; done;

    echo "ok.";

    # Mount points

    echo -n "Creating mount points: $DIR_MOUNT... "

    /usr/bin/touch $J/conf/$JAIL.fstab

    echo "# Generated on `/bin/date`" >> $J/conf/$JAIL.fstab

    for dir in $DIR_MOUNT;

    do {

           /bin/mkdir -p $JAILDIR/$dir;

           printf "$JAIL_EXAMPLE/$dir\t$JAILDIR/$dir\tnullfs\tro\t0\t0\n" >> $J/conf/$JAIL.fstab;

    } done;

    echo "ok.";

    echo "The fstab file created: $J/conf/$JAIL.fstab"

    # Symbolic links

    /bin/ln -s usr/home $JAILDIR/home

    # Temporary directory

    echo -n "Creating tmp... "

    /bin/mkdir $JAILDIR/tmp

    /bin/chmod ugo=rwx $JAILDIR/tmp

    echo "ok.";

    # Directories from $JAIL_EXAMPLE

    echo -n "Copying files... "

    /bin/cp -pR $JAIL_EXAMPLE/etc $JAILDIR/

    /bin/cp -pR $JAIL_EXAMPLE/var $JAILDIR/

    /bin/cp -pR $JAIL_EXAMPLE/usr/local $JAILDIR/usr/
    /bin/rm -f $JAILDIR/var/{tmp,run}/*

    for i in `/usr/bin/find -E $JAILDIR/var/log -type f \

             -and -regex ".*\.[0-9]+(\..*|$)" -print`;

    do /bin/rm -f $i; done;

    for i in `/usr/bin/find $JAILDIR/var/log -type f -print`;

    do /usr/bin/touch /dev/null > $i; done;
    echo "ok.";

    echo

    echo The jail \'$JAIL\' created.

    echo

    if [ -w /etc/rc.conf ];

    then {

           /usr/bin/sed -Ei .bck '/^[\s]*jail_list=/s#jail_list="([^"]*)"#jail_list="\1 '${JAIL_LOWER}'"#g' /etc/rc.conf

           echo >> /etc/rc.conf

           echo \#\# ${JAIL} >> /etc/rc.conf

           echo jail_${JAIL_LOWER}_rootdir=\"$J/${JAIL}\" \

           >> /etc/rc.conf

           echo jail_${JAIL_LOWER}_hostname=\"${JAIL}.local\"  \

           >> /etc/rc.conf

           echo \# Don\'t forget add ip-address in \'.local\' domain zone \

           >> /etc/rc.conf

           echo jail_${JAIL_LOWER}_ip=\"127.0.0.xxx\" \

           >> /etc/rc.conf

           echo jail_${JAIL_LOWER}_interface=\"lo0\" \

           >> /etc/rc.conf

           echo jail_${JAIL_LOWER}_devfs_enable=\"YES\" \

           >> /etc/rc.conf

           echo jail_${JAIL_LOWER}_exec_start=\"/bin/sh /etc/rc\" \

           >> /etc/rc.conf

           echo jail_${JAIL_LOWER}_exec_stop=\"/bin/sh /etc/rc.shutdown\" \

           >> /etc/rc.conf

           echo jail_${JAIL_LOWER}_mount_enable=\"YES\" \

           >> /etc/rc.conf

           echo jail_${JAIL_LOWER}_fstab=\"$J/conf/${JAIL}.fstab\" \

           >> /etc/rc.conf

    }

    else echo "Put in /etc/rc.conf:";

    fi;

    echo jail_${JAIL_LOWER}_rootdir=\"$J/${JAIL}\"

    echo jail_${JAIL_LOWER}_hostname=\"${JAIL}.local\"

    echo \# Don\'t forget add ip-address of jail in \'.local\' domain zone

    echo jail_${JAIL_LOWER}_ip=\"127.0.0.xxx\"

    echo jail_${JAIL_LOWER}_interface=\"lo0\"

    echo jail_${JAIL_LOWER}_devfs_enable=\"YES\"

    echo jail_${JAIL_LOWER}_exec_start=\"/bin/sh /etc/rc\"

    echo jail_${JAIL_LOWER}_exec_stop=\"/bin/sh /etc/rc.shutdown\"

    echo jail_${JAIL_LOWER}_mount_enable=\"YES\"

    echo jail_${JAIL_LOWER}_fstab=\"$J/conf/${JAIL}.fstab\"

    Читать далее »

  • В интернет из lo0
  • Samba внутри jail + MS AD
  • Интеграция VPN-сервера mpd4 с доменом на базе Samba 3 при посредничестве freeradius
  • Интеграция VPN-сервера mpd4 с доменом на базе Samba 3 при посредничестве freeradius

    Последовательность действий:

    Пропатчить исходники и собрать новое ядро FreeBSD.
    Установить и настроить в отдельной клетке (jail) samba как члена домена.
    Установить в той же клетке freeradius и настроить на взаимодействие с локальным samba.
    Установить в основной системе mpd4 и настроить авторизацию посредством ранее установленного freeradius.
    Проверка работоспособности.
    Бонус.

    1. Сборка ядра FreeBSD.
    1.1. В моем случае ядро было собрано с приведенными ниже опциями
    options         NETGRAPH

    options         NETGRAPH_ETHER

    options         NETGRAPH_NETFLOW

    options         NETGRAPH_SOCKET

    options         NETGRAPH_TEE

    options         NETGRAPH_MPPC_ENCRYPTION

    options         NETGRAPH_MPPC_COMPRESSION

    options         NETGRAPH_BPF

    options         NETGRAPH_IFACE

    options         NETGRAPH_KSOCKET

    options         NETGRAPH_PPP

    options         NETGRAPH_PPTPGRE

    options         NETGRAPH_TCPMSS

    options         NETGRAPH_VJC

    options         NETGRAPH_ONE2MANY

    options         NETGRAPH_RFC1490

    options         NETGRAPH_TTY

    options         NETGRAPH_UI

    1.2. Перед сборкой ядро следует пропатчить, чтобы задействовать сжатие данных (опция NETGRAPH_MPPC_COMPRESSION).
    Патч без проблем ложится на исходники ядра версий 6.x и 7.0-RC3 (патч лежит тут: http://www.mavhome.dp.ua/MPPC/).
    Краткая инструкция по сборке:
    1.2.1. Скачать архив и распаковать его содержимое в /usr/src/sys/net.
    1.2.2. Изменить директорию на /usr/src/sys/modules/netgraph/mppc.
    1.2.3. В Makefile изменить линию
        NETGRAPH_MPPC_COMPRESSION?=     0

    на
        NETGRAPH_MPPC_COMPRESSION?=     1

    1.2.4. Перейти в директорию /usr/src и запустить компиляцию ядра
    # make kernel KERNCONF=YOUR-KERNEL

    1.2.5. После успешной компиляции и установки перезагрузить систему
    # shutdown -r now

    2. Установка Samba 3 (на момент установки версия: samba-3.0.26a_1,1).
    2.2. Создаем отдельную клетку и устанавливаем туда Samba 3 из портов.
    2.3. Конфигурационный файл smb.conf
    [global]

           dos charset = cp866

           unix charset = koi8-r

           display charset = koi8-r

           workgroup = CMYK

           server string = Samba Server

           interfaces = SELF-INTERFACE-IP/24

           bind interfaces only = Yes

           security = DOMAIN

           auth methods = winbind

           password server = PDC-SERVER-NAME

           log file = /var/log/samba/log.%m

           max log size = 50000

           load printers = No

           show add printer wizard = No

           dns proxy = No

           wins proxy = Yes

           wins server = PDC-SERVER-IP

           idmap uid = 10000-20000

           idmap gid = 10000-20000

           winbind enum users = Yes

           winbind enum groups = Yes

           winbind use default domain = Yes

           winbind refresh tickets = Yes

           hosts allow = 192.168.0.

           case sensitive = No

           hide unreadable = Yes

    2.4. Редактируем файл /etc/nsswitch.conf
    passwd: files winbind

    group: files winbind

    2.5. Вводим samba в домен.
    # net rpc join -S PDC-SERVER-NAME -I PDC-SERVER-IP -U Administrator%password

    2.6. В файл /etc/rc.conf добавляем: winbindd_enable="YES"

    3. Устанавливаем freeradius из портов (версия: freeradius-1.1.7_2).
    3.1. Настраиваем freeradius. В /usr/local/etc/raddb редактируем конфиги:
    3.1.1. radiusd.conf
    prefix = /usr/local

    exec_prefix = ${prefix}

    sysconfdir = ${prefix}/etc

    localstatedir = /var

    sbindir = ${exec_prefix}/sbin

    logdir = /var/log

    raddbdir = ${sysconfdir}/raddb

    radacctdir = ${logdir}/radacct

    confdir = ${raddbdir}

    run_dir = ${localstatedir}/run/radiusd

    log_file = ${logdir}/radius.log

    libdir = ${exec_prefix}/lib

    pidfile = ${run_dir}/radiusd.pid

    # user = nobody

    # group = nobody

    max_request_time = 30

    delete_blocked_requests = no

    cleanup_delay = 5

    max_requests = 1024
    listen {

           ipaddr = SELF-INTERFACE-IP

           port = 0

           type = auth

    }
    hostname_lookups = no

    allow_core_dumps = no

    regular_expressions = yes

    extended_expressions = yes

    log_stripped_names = no

    log_auth = yes

    log_auth_badpass = yes

    log_auth_goodpass = yes

    usercollide = no

    lower_user = no

    lower_pass = no

    nospace_user = no

    nospace_pass = no

    checkrad = ${sbindir}/checkrad
    security {

           max_attributes = 200

           reject_delay = 1

           status_server = no

    }
    proxy_requests = no

    $INCLUDE ${confdir}/clients.conf

    snmp = no

    $INCLUDE ${confdir}/snmp.conf
    thread pool {

           start_servers = 5

           max_servers = 32

           min_spare_servers = 3

           max_spare_servers = 10

           max_requests_per_server = 0

    }
    modules {

           pap {

                   encryption_scheme = crypt

           }
           chap {

                   authtype = CHAP

           }
           pam {

                   pam_auth = radiusd

           }
           unix {

                   cache = no

                   cache_reload = 600

                   radwtmp = ${logdir}/radwtmp

           }
           $INCLUDE ${confdir}/eap.conf
           mschap {

                   authtype = MS-CHAP

                   use_mppe = yes

                   require_encryption = yes

                   require_strong = yes

                   with_ntdomain_hack = yes

                   # Так как требовалось  предоставлять доступ

                   # только  отдельным пользователям домена, я

                   # создал группу "Remote Access Users" и ука-

                   # зал SID созданной группы в параметре

                   # --require-membership-of=SID-or-Name

                   ntlm_auth  = "/usr/local/bin/ntlm_auth --require-membership-of=S-1-5-21-952150225-1155300134-1448941184-21001 --request-nt-key --username=%{Stripped-User-Name:-%{User-Name:-None}} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}"

           }
           preprocess {

                   huntgroups = ${confdir}/huntgroups

                   hints = ${confdir}/hints

                   with_ascend_hack = no

                   ascend_channels_per_line = 23

                   with_ntdomain_hack = no

                   with_specialix_jetstream_hack = no

                   with_cisco_vsa_hack = no

           }
           files {

                   usersfile = ${confdir}/users

                   acctusersfile = ${confdir}/acct_users

                   preproxy_usersfile = ${confdir}/preproxy_users

                   compat = no

           }
           detail {

                   detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d

                   detailperm = 0600

           }
           detail auth_log {

                   detailfile = ${radacctdir}/%{Client-IP-Address}/auth-detail-%Y%m%d

                   detailperm = 0600

           }
           detail reply_log {

                   detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d

                   detailperm = 0600

           }
           detail pre_proxy_log {

                   detailfile = ${radacctdir}/%{Client-IP-Address}/pre-proxy-detail-%Y%m%d

                   detailperm = 0600

           }
           detail post_proxy_log {

                   detailfile = ${radacctdir}/%{Client-IP-Address}/post-proxy-detail-%Y%m%d

                   detailperm = 0600

           }
           acct_unique {

                   key  = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port"

           }
           # $INCLUDE ${confdir}/sql.conf
           radutmp {

                   filename = ${logdir}/radutmp

                   username = %{User-Name}

                   case_sensitive = yes

                   check_with_nas = yes

                   perm = 0600

                   callerid = "yes"

           }
           radutmp sradutmp {

                   filename = ${logdir}/sradutmp

                   perm = 0644

                   callerid = "no"

           }
           attr_filter {

                   attrsfile = ${confdir}/attrs

           }
           counter daily {

                   filename = ${raddbdir}/db.daily

                   key = User-Name

                   count-attribute = Acct-Session-Time

                   reset = daily

                   counter-name = Daily-Session-Time

                   check-name = Max-Daily-Session

                   allowed-servicetype = Framed-User

                   cache-size = 5000

           }
           always fail {

                   rcode = fail

           }
           always reject {

                   rcode = reject

           }
           always ok {

                   rcode = ok

                   simulcount = 0

                   mpp = no

           }
           expr {

           }
           digest {

           }
           exec {

                   wait = yes

                   input_pairs = request

           }
           ippool main_pool {

                   # указанные ниже параметры фиктивны, т.к. выдаваемые

                   # IP адреса прописаны в настройках mpd4

                   range-start = 192.168.1.230

                   range-stop = 192.168.1.250

                   netmask = 255.255.255.0
                   cache-size = 800

                   session-db = ${raddbdir}/db.ippool

                   ip-index = ${raddbdir}/db.ipindex

                   override = no

                   maximum-timeout = 0

           }

    }
    instantiate {

    }
    authorize {

           preprocess

           auth_log

           attr_filter

           mschap

           eap

    }
    authenticate {

           Auth-Type PAP {

                   pap

           }
           Auth-Type CHAP {

                   chap

           }
           Auth-Type MS-CHAP {

                   mschap

           }

           pam

           eap

    }
    preacct {

           preprocess

           acct_unique

           files

    }
    accounting {

           detail

           main_pool

    }
    session {

           radutmp

    }
    post-auth {

           main_pool

           reply_log

    }
    pre-proxy {

    }
    post-proxy {

           eap

    }

    3.1.2. clients.conf
    client SELF-INTERFACE-IP {

           secret          = password-change-me

           shortname       = localhost

           nastype         = other

    }

    3.1.3. users
    # Добавить в конец файла

    DEFAULT Auth-Type := MS-CHAP

           Service-Type = Framed-User,

           Framed-Protocol = PPP,

           Framed-IP-Address = 192.168.0.161+,

           Framed-IP-Netmask = 255.255.255.255

    3.1.4. acct_users
    DEFAULT

           Service-Type == Framed-User,

           Service-Type == Login-User,

           Login-Service == Telnet,

           Login-Service == Rlogin,

           Login-Service == TCP-Clear,

           Login-TCP-Port <= 65536,

           Framed-IP-Address == 255.255.255.254,

           Framed-IP-Netmask == 255.255.255.255,

           Framed-Protocol == PPP,

           Framed-Protocol == SLIP,

           Framed-Compression == Van-Jacobson-TCP-IP,

           Framed-MTU >= 576,

           Framed-Filter-ID =* ANY,

           Reply-Message =* ANY,

           Proxy-State =* ANY,

           Session-Timeout <= 28800,

           Idle-Timeout <= 600,

           Port-Limit <= 2

    3.1.5. naslist
    localhost               local           portslave

    SELF-INTERFACE-IP       local           portslave

    Остальные файлы остаются без изменений.

    3.2. В /etc/rc.conf прописать
    radiusd_enable="YES"

    4. Настройка mpd4 (версия: mpd-4.4)
    4.1. В основной системе из портов устанавливаем mpd4.
    4.2. Правим mpd.conf
    default:

           load pptp0

           load pptp1

           load pptp2
    pptp0:

           new -i ng0 pptp0 pptp0

           set ipcp ranges GW-IP-ADDR/32 NG0-IP-ADDR/32

           load pptp_standart
    pptp1:

           new -i ng1 pptp1 pptp1

           set ipcp ranges GW-IP-ADDR/32 NG1-IP-ADDR/32

           load pptp_standart
    pptp2:

           new -i ng2 pptp2 pptp2

           set ipcp ranges GW-IP-ADDR/32 NG2-IP-ADDR/32

           load pptp_standart
    pptp_standart:

           set iface disable on-demand

           set bundle enable multilink

           set bundle yes crypt-reqd

           set bundle enable compression

           set link yes acfcomp protocomp

           set link no pap chap

           set link enable chap

           set link keep-alive 60 180

           set ipcp yes vjcomp

           set ipcp dns DNS-IP

           set ipcp nbns PDC-SERVER-IP

           set iface enable proxy-arp

           set ccp yes mppc

           set ccp yes mpp-e40

           set ccp yes mpp-e56

           set ccp yes mpp-e128

           set ccp yes mpp-stateless

           set ccp yes mppe-policy

           set pptp self 0.0.0.0

           set pptp enable incoming

           set pptp disable originate

           set pptp enable always-ack

           set pptp disable windowing
           set iface mtu 1460

           set link mtu 1460
           set radius server FREERADIUS-JAIL-IP password-change-me 1812 1813

           set radius timeout 10

           set radius retries 3

           set auth enable radius-auth

    4.3. mpd.links
    pptp0:

           set link type pptp

    pptp1:

           set link type pptp

    pptp2:

           set link type pptp

    4.4. Создаем пустой файл mpd.secret
    # touch mpd.secret

    4.5. В /etc/rc.conf основной системы вписываем
    mpd_enable="YES"

    5. Проверка работы.
    5.1. Запускаем в клетке:
    # /usr/local/etc/rc.d/samba start

    # /usr/local/etc/rc.d/radiusd start

    5.2. Запускаем mpd4 в основной системе:

    # /usr/local/etc/rc.d/mpd4 start

    5.3. Пробуем соединиться с впн-сервером.
    5.4. Для выявления проблем с mpd4 требуется запустить mpd4 без параметров
    # mpd4

    5.5. freeradius ведет лог в файле /var/log/radius.log. Так же его можно запустить с отладочном режиме
    # radiusd -A -X
    6. С виндовых клиентов (с Windows XP например), после соединения с сервером VPN, можно шариться в рабочих компьютерах домена. Для этого требуется назначить домен рабочей группой компьютера и указать его на форме соединения как домен входа.

    ---------
    Подробные данные о состоянии спортивных объектов в регионе Южный Урал, а также конкретно в г. Челябинск, можно найти на ресурсе Polit74.ru. На сайте также можно обнаружить развернутые новости Челябинска и мнения горожан по тому или иному вопросу.

  • Монтирование разделов при запуске Jail
  • Интересная штука- индексируемые свойства С# и Pascal(Delphi)
  • Настраиваем GPRS-интернет соединение через bluetooth
  • В FreeBSD реализована поддержка Linux LVM

    Добавлен новый класс GEOM (драйвер) для доступа к логическим томам Linux LVM. Логические тома LVM в системе отображаются как /dev/lvm/<vol>-<logical>.
    Пример: /dev/lvm/vg0-home.
    GLVM в настоящее время поддерживает линейные страйпы с сегментами на многих физических дисках. Данные структуры LVM доступны только в режиме чтения и поэтому не могут быть созданы новые логические тома или изменен размер уже существующих.

    Для встраивания этого драйвера непосредственно в ядро следует добавить следующую строку в конфигурационный файл ядра:

    options GEOM_LVM
    Альтернативный способ заключается в загрузке модуля ядра во время запуска системы. В этом случае добавьте следующую строку в /boot/loader.conf:

    geom_lvm_load="YES"
    Для просмотра представленных устройств воспользуйтесь командой geom:

    # geom lvm list
    Пример:

    Geom name: vg1

    Providers:

    1. Name: lvm/vg1-home

     Mediasize: 4294967296 (4.0G)

     Sectorsize: 512

     Mode: r0w0e0

    2. Name: lvm/vg1-logs

     Mediasize: 4294967296 (4.0G)

     Sectorsize: 512

     Mode: r0w0e0

    Consumers:

    1. Name: ad0s1

     Mediasize: 80023716864 (75G)

     Sectorsize: 512

     Mode: r0w0e0

     

    Читать далее »

  • Сброс буфера системных сообщений FreeBSD
  • Ядро Linux как хранитель экрана
  • ftp-proxy в freebsd
  • В интернет из lo0

    Если ваши jail-машины висят на интерфейсе lo0, предоставить им доступ в локальную сеть (интернет) можно таким образом:
    1. в /etc/rc.conf добавить

    # Разрешить маршрутизацию

    gateway_enable="YES"

    # Включить PF

    pf_enable="YES"

    # Указываем файл конфигурации PF

    pf_rules="/etc/pf-custom.conf"

    2. создать или отредактировать файл /etc/pf-custom.conf, добавив следущее

    # IP-адрес вашей jail-машины

    my_jail="127.0.0.100"
    lo="lo0"

    if="if0"
    nat on $if from $my_jail to !$lo:0:network tag FROM_JAIL -> $if

    pass out on $if proto tcp to any tagged FROM_JAIL keep state flags S/SA
    3. Запускаем PF из под рута

    /etc/rc.d/pf start

    Читать далее »

  • Монтирование разделов при запуске Jail
  • Настраиваем GPRS-интернет соединение через bluetooth
  • Новости CodeGear за декабрь 2007
  • Украшаем командную строку в csh/tcsh

    Вид командной строки в csh/tcsh задается несколькими переменными окружения. Главная из них - prompt. По умолчанию приглашение командной строки имеет вид

    %
    что нас совершенно не устраивает. Введем команду

    set prompt="%m%# "
    где %m - имя компьютера, %# - символ > (или первый символ переменной promptchars) для обычных пользователей или символ # (или второй символ переменной promptchars) для суперпользователя.
    Увидим, что приглашение изменилось

    machine>
    Мы перестаем путаться в в удаленных сессиях. Далее добавим имя текущего пользователя (%n) и полное имя директории, где мы сидим в данный момент (%/)

    set prompt="%n@%m [%/]%# "
    Вид меняется на

    user@machine [/usr/local/etc]>
    Наше приглашение стало более информативной. Но полный путь занимает слишком много места. Меняем %/ на %c, урезающий отображаемый путь до имени текущей директории

    set prompt="%n@%m [%c]%# "
    и у нас получилось

    user@machine [etc]>
    что уже выглядит лаконичнее. Добавим текущее время (счастливые могут пропустить :)

    set prompt="%T %n@%m [%c]%# "
    и вуаля

    23:01 user@machine [etc]>
    По правде говоря, лично меня символ > в конце приглашения раздражает. Для смены символа используем переменную promptchars

    set promptchars="$#"
    Первый символ подставляется вместо %# если вы обычный пользователь, а второй - если вы суперпользователь.
    Теперь записываем полученный результат в ~/.tcshrc или в /etc/csh.cshrc.

    Ниже приведен список допустимых подстановок (подробности в man csh):
    %/
    Текущая рабочая директория.
    %~
    Текущая рабочая директория, но домашная директория текущего пользователя представлено тильдой ~ и домашние директории остальных пользователей представлены как ~user. Подстановка ~user действует только в случае если оболочка (shell) уже использует ~user в имени пути в текущей сессии.
    %c[[0]n], %.[[0]n]
    Отслеживает конечный компонент пути к текущей рабочей директории или n конечных компонентов, при заданном n. Если n начинается с 0 количество пропущенных компонентов предваряет конечные в формате /<skipped>trailing. Если установлена переменная оболочки ellipsis, пропущенные компоненты будут представлены как ...trailing. Подстановка ~ действует аналогично %~, но будет игнорироваться при количестве конечных компонентов больше одного.
    %C
    Аналогично %c, но без подстановок ~.
    %h, %!, !
    Номер события в текущей истории.
    %M
    Полное имя машины.
    %m
    Сокращенное имя машины. Отображается часть до первой точки.
    %S (%s)
    Включить (отключить) стандартный режим.
    %B (%b)
    Включить (отключить) режим жирного шрифта.
    %U (%u)
    Включить (отключить) режим подчеркивания.
    %t, %@
    Время в 12-часовом (AM/PM) формате.
    %T
    Аналогично %t, но в 24-часовом формате (зависит от переменной ampm оболочки).
    %p
    Точное время суток в 12-часовом (AM/PM) формате, с секундами.
    %P
    Аналогично %p, но в 24-часовом формате (зависит от переменной ampm оболочки).
    \c
    c будет распознан как код символа.
    %%
    Символ %.
    %n
    Имя пользователя.
    %j
    Количество запущенных в оболочке работ (jobs).
    %d
    День недели в текстовом формате.
    %D
    День недели в числовом формате.
    %w
    Месяц в текстовом формате.
    %W
    Месяц в числовом формате.
    %y
    Год в двухзначном формате.
    %Y
    Год в четырехзначном формате.
    %l
    tty оболочки.
    %L
    Очищает от конца приглашения до конца экрана или строки.
    %$
    Подставляет значение переменной оболочки или окружения с именем, заданным сразу после $ (например %$PATH).
    %#
    > (или первый символ из переменной оболочки promptchars) для обычных пользователей и # (или второй символ из promptchars).
    %{string%}
    Включает строку как управляющая escape последовательность. Может использоваться для изменения атрибутов терминала (например для раскраски приглашения) и может не воздействовать на положение курсора. Не может быть последней последовательностью в приглашении.
    %?
    Возвращает код ошибки команды, запущенной непосредственно перед приглашением.

    Читать далее »

  • Настраиваем GPRS-интернет соединение через bluetooth
  • Проекту Eclipse исполнилось 5 лет
  • Монтирование разделов при запуске Jail
  • vsftpd и пользователи из базы LDAP.

    Предполагается, что сервер каталогов openldap уже установлен и настроен.
    Устанавливаем nss_ldap

    # cd /usr/ports/net/nss_ldap

    # make install
    Отредактируем файл конфигурации /usr/local/etc/nss_ldap.conf

    host small.server

    base dc=small,dc=server

    # Пользователь, которому разрешен просмотр каталога

    binddn uid=proxy,dc=small,dc=server

    # Пароль пользователя proxy

    # Пароль не надо хешировать!

    bindpw proxy-password

    scope sub

    bind_timelimit 3

    bind_policy soft

    nss_paged_results yes

    pagesize 1000

    pam_filter objectclass=posixAccount

    pam_login_attribute uid

    pam_password exop

    nss_base_passwd ou=People,dc=small,dc=server?one

    nss_base_shadow ou=People,dc=small,dc=server?one

    nss_base_group  ou=Group,dc=small,dc=server?one
    Изменим следующие строки в /etc/nsswitch.conf

    group: files ldap

    passwd: files ldap
    Проверяем работу nss_ldap

    # id user-from-ldap
    Должно выйти что-то похожее на

    uid=10000(user-from-ldap) gid=10000(Group-from-LDAP) groups=10000(Group-from-LDAP)
    Устанавливаем pam_ldap

    #cd /usr/ports/security/pam_ldap

    # make install
    Отредактируем файл конфигурации pam_ldap: /usr/local/etc/ldap.conf

    host small.server

    base dc=small,dc=server

    binddn uid=proxy,dc=small,dc=server

    # Пароль не надо хешировать!

    bindpw proxy-password

    scope one

    bind_timelimit 3

    bind_policy soft

    pam_filter objectclass=posixAccount

    pam_login_attribute uid

    pam_password exop

    nss_base_passwd         ou=People,dc=small,dc=server?one

    nss_base_shadow         ou=People,dc=small,dc=server?one

    nss_base_group          ou=Group,dc=small,dc=server?one
    Установка самого сервера FTP

    # cd /usr/ports/ftp/vsftpd

    make config
    В появившемся диалоге ставим галочку около опции RC_NG и далее

    # make install
    Ниже приведен файл конфигурации vsftpd: /usr/local/etc/vsftpd.conf

    #Запрещаем анонимусов

    anonymous_enable=NO

    listen=YES

    background=YES

    # Указываем какую именно конфигурацию PAM использовать

    pam_service_name=vsftpd

    check_shell=YES

    local_enable=YES

    write_enable=YES

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    dirmessage_enable=YES

    xferlog_enable=YES

    connect_from_port_20=YES

    # Скрываем какой именно сервер FTP у нас стоит

    ftpd_banner=Welcome to FTP service.

    # Помещаем пользователей в изолированное окружение

    chroot_local_user=YES

    pasv_min_port=49152

    # Скрываем uid и gid файлов при просмотре директорий.

    hide_ids=YES

    local_umask=022

    anon_umask=022

    secure_chroot_dir=/usr/local/share/vsftpd/empty
    Создаем файл конфигурации PAM: /usr/local/etc/pam.d/vsftpd

    auth            required        /usr/local/lib/pam_ldap.so

    account         required        /usr/local/lib/pam_ldap.so

    # Если вы хотите разграничить доступ к ftp по группам

    # можете дополнительно установить модуль pam_require

    # и добавить приведенную ниже строку. Подробности тут

    account         required        /usr/local/lib/pam_require.so no_case @Ftp:Users

    # Строка для модуля pam_mkhomedir,

    # избавляющего от необходимости ручного

    # создания домашней директории для нового пользователя

    session         required        /usr/local/lib/pam_mkhomedir.so mode=0700
    Добавим следующую строку в /etc/rc.conf

    vsftpd_enable="YES"
    Запускаем сервер FTP и проверяем его работу :)

    # /usr/local/etc/rc.d/vsftpd start

  • ftp-proxy в freebsd
  • Samba внутри jail + MS AD
  • В интернет из lo0