My Projects

Буду очень рад, если что-нибудь из этого Вам пригодится. Все это я разрешаю свободно использовать, распространять и модифицировать. Впрочем, я не буду сильно возмущаться, если заработав с помощью этого немного денег, Вы захотите поделиться со мной. ;)

  1. Библиотека libtac_plus. Позволяет использовать TACACS+ протокол для проведения authentication, authorization и accounting. Все программы, взаимодействующие с TACACS+ сервером и написанные мной, используют эту библиотеку.

  2. Аналог программы login, tlogin. Проводит процедуру логина пользователя в систему по TACACS+ протоколу.

  3. Патчи к pppd из FreeBSD, добавляющие ему возможность взаимодействия с TACACS+ сервером. Для аутентификации используется PAP. На этапе авторизации, позволяет получать IP адрес от сервера, для назначения его удаленному клиенту.

  4. Программа проверки пароля pwcheck от Cyrus IMAP Server, модифицированный для использования TACACS+ аутентификации.

  5. Программа для динамического выделения IP адресов, dynip. Для хранения информации об адресах, используется SQL сервер PostgreSQL.

  6. Патч к Courier IMAP. Пишет в лог логин, сразу же, после его указания пользователем. В случае LOGIN FAILED, это позволяет понять, какое-же все-таки LOGIN был FAILD.

  7. Простенький инструмент для более удобной генерация правил для ipfw(8). Штука простая, думаю разберетесь, глядя на нее. Пример использования:
    #!/usr/bin/perl -w
    
    require 'ipfw.pl';
    
    my $IMAP_PORTS   = 'pop3,imap4,pop3s,imaps';
    my $JAIL_IMAP    = '192.168.0.1';
    my $JAIL_NET     = '192.168.0.0/24';
    my $NATD_IF      = 'ed0';
    my $TO_NAT_PORTS = "$IMAP_PORTS";
    
    add("skipto %%JAIL%% all from $JAIL_NET to any out");
    
    setup_loopback();
    
    add("divert natd tcp from any to any $TO_NAT_PORTS in recv $NATD_IF");
    add("pass all from any to any");
    
    add("count all from any to any", '%%JAIL%%'); # XXX
    add("divert natd tcp from $JAIL_IMAP $IMAP_PORTS to any out xmit $NATD_IF established");
    add("deny log all from $JAIL_NET to any");
    add("pass all from any to any");
    
    print_ipfw();
    	  
    Запустите это и обратите внимание на замену %%JAIL%% на номер правила, помеченного XXX.

  8. Русский интерфейс для SqWebMail. Кое-что взято из перевода от Rail Aliev. Спасибо ему за работу.