Proftpd не отправляет xferlogs в системный журнал

На основе Вашего второго комментария, что Вы разыскали его для инвертирования PTRs, затем у Вас должна быть своя обратная зона, имеют указатели соответствия для записей MX. Если бы Вы не выполняете свой собственный обратный DNS затем, необходимо было бы спросить объект, кто делает (люди выше Вас владеющий netblock) для добавления этих записей для Вас.

<last .quad of IP>  IN   PTR  machine.domain.com.

Это входит в обратный зональный файл, как упомянуто, не Ваш вперед зона. Быстрый whois на основе Вашего комментария 78 129 226 181 шоу, это - принадлежавший Rapidswitch, таким образом, я собираюсь предположить, что они делают Ваш реверс для Вас и Вас только, получает некоторых, дюйм/с размещенного сервера для проигрывания с - открывает запрос в службу поддержки.

0
задан 26 March 2016 в 10:45
2 ответа

Хорошо, я нашел решение: использование первым прибыл, первым обслужен. В /etc/proftpd/proftpd.conf :

#SystemLog   /var/log/proftpd/proftpd.log
#ControlsLog /var/log/proftpd/controls.log
TransferLog /var/log/xferlog.fifo

Затем:

mknod  /var/log/xferlog.fifo p
chmod 666 /var/log/xferlog.fifo

И сценарий Perl как этот один (вдохновленный несколькими, найденными в сети), слушая в другой стороне FIFO:

#!/usr/bin/perl -w

use strict;
use File::Basename qw(basename);
use Sys::Syslog qw(:DEFAULT setlogsock);

$|=1;
my $fifo_file = "/var/log/xferlog.fifo";
my $syslog_facility = 'daemon';
my $syslog_level = 'info';
my $program = "xfer_ftp";

unless (-p $fifo_file)
{
  unlink $fifo_file;
  system('mknod', $fifo_file, 'p')  && die "can't mknod $fifo_file: $!";
  system('chmod', '666', $fifo_file)  && die "can't chown $fifo_file: $!";
}

my $fifo_fh;
open($fifo_fh, "+< $fifo_file") or die "The FIFO file \"$fifo_file\" is missing, and this program can't run without it.:$!";

setlogsock 'unix';
openlog($program, 'pid', $syslog_facility);

# just keep reading from the fifo and processing the events we read
while (<$fifo_fh>) {
    chomp;
    syslog($syslog_level, $_);
}

closelog();

# should never really come down here ...
close $fifo_fh;
exit(0);

Если у Вас есть более чистое решение... :-)

1
ответ дан 23 November 2019 в 12:28

Вы, вероятно, используете стандарт rsyslog. Я предложил бы смотреть на использование системного-журнала-ng, который можно управлять журналами с большой деталью.

Вот пример, который я использую для своего удаленного входа. Большой вещью также является использование, может использовать TCP для туннелирования журналов также, который немного более сложен, но проявляет гибкость.

Фильтры могут управлять, что выйти из журнала, если Вы не хотите его или фильтруете определенные типы в определенные файлы. Пример ниже обычно регистрирует все в датированный формат, но отправляет копию удаленно.

Надеюсь, это поможет.

@version: 3.0
#First, set some global options.
options {
    long_hostnames(off);
    flush_lines(0);
    use_dns(no);
    use_fqdn(no);
    owner("root");
    group("adm");
    perm(0640);
    stats_freq(0);
    bad_hostname("^gconfd$");
    keep_hostname(yes);
    check_hostname(yes);
};

source inputs {
        file("/proc/kmsg" program_override("kernel: "));
        unix-stream("/dev/log");
    internal();
        udp();
        tcp(max_connections(100));
};

destination remote {
        udp("remotesyslog.serversomewhere.com" port(514));
};

destination logpile {
        file("/var/log/eit/$YEAR-$MONTH-$DAY/$FACILITY"
        owner(root) group(root) perm(0600)
        create_dirs(yes) dir_perm(0700));
};

log {
        source(inputs);
        destination(logpile);
        destination(remote);
};
0
ответ дан 23 November 2019 в 12:28

Теги

Похожие вопросы