Журнал лабораторных работ

Содержание

Журнал

Среда (02/20/08)

/dev/ttyp2
17:32:06
#apt-get install apt-show-versions
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Будут установлены следующие дополнительные пакеты:
  libapt-pkg-perl
НОВЫЕ пакеты, которые будут установлены:
  apt-show-versions libapt-pkg-perl
обновлено 0, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 32 пакетов не обновлено.
Необходимо скачать 104kБ архивов.
После распаковки объем занятого дискового пространства возрастёт на 377kB.
Хотите продолжить [Д/н]? y
Получено:1 http://debian.org.ua etch/main libapt-pkg-perl 0.1.20 [82,0kB]
Получено:2 http://debian.org.ua etch/main apt-show-versions 0.10 [22,0kB]
Получено 104kB за 2s (35,6kB/c)
Выбор ранее не выбранного пакета libapt-pkg-perl.
(Чтение базы данных... на данный момент установлено 22705 файлов и каталогов.)
Распаковывается пакет libapt-pkg-perl (из файла .../libapt-pkg-perl_0.1.20_i386.deb)...
Выбор ранее не выбранного пакета apt-show-versions.
Распаковывается пакет apt-show-versions (из файла .../apt-show-versions_0.10_all.deb)...
Настраивается пакет libapt-pkg-perl (0.1.20) ...
Настраивается пакет apt-show-versions (0.10) ...
** initializing cache. This may take a while **
17:32:19
#apt-show-versions knockd
knockd not installed
17:32:27
#apt-cache search knockd
knockd - small port-knock daemon
17:32:44
#sudo apt-get install knockd
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
НОВЫЕ пакеты, которые будут установлены:
  knockd
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 32 пакетов не обновлено.
Необходимо скачать 26,4kБ архивов.
После распаковки объем занятого дискового пространства возрастёт на 115kB.
Получено:1 http://debian.org.ua etch/main knockd 0.5-1.1 [26,4kB]
Получено 26,4kB за 0s (31,2kB/c)
Выбор ранее не выбранного пакета knockd.
(Чтение базы данных... на данный момент установлено 22741 файлов и каталогов.)
Распаковывается пакет knockd (из файла .../knockd_0.5-1.1_i386.deb)...
Настраивается пакет knockd (0.5-1.1) ...
Not starting knockd. To enable it edit /etc/default/knockd
17:32:54
#ls /etc/default/knockd
/etc/default/knockd
17:33:03
#vim /etc/default/knockd
17:33:14
#dpkg -L knockd
/.
/etc
/etc/default
/etc/default/knockd
/etc/knockd.conf
/etc/init.d
/etc/init.d/knockd
/etc/logrotate.d
/etc/logrotate.d/knockd
/usr
...
/usr/share/doc/knockd/TODO
/usr/share/doc/knockd/README
/usr/share/doc/knockd/README.Debian
/usr/share/doc/knockd/copyright
/usr/share/doc/knockd/changelog.gz
/usr/share/doc/knockd/changelog.Debian.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/knockd.1.gz
/usr/share/man/man1/knock.1.gz
17:33:21
#vim /etc/knockd.conf
17:33:58
#vim /etc/default/knockd
--- /dev/null	2008-02-20 11:58:26.390688522 +0000
+++ /etc/default/knockd	2008-02-20 15:34:09.000000000 +0000
@@ -0,0 +1,13 @@
+################################################
+#
+# knockd's default file, for generic sys config
+#
+################################################
+
+# control if we start knockd at init or not
+# 1 = start
+# anything else = don't start
+START_KNOCKD=1
+
+# command line options
+#KNOCKD_OPTS="-i eth0"
17:34:09
#/etc/init.d/knockd start
Starting Port-knock daemon: knockd.
17:34:16
#ps aux | grep knockd
root      3637  0.0  0.0   1776   460 ?        Ss   15:34   0:00 /usr/sbin/knockd -d
root      3659  0.0  0.1   4624   744 ttyp5    R+   15:34   0:00 grep knockd
17:34:24
#man knockd
17:36:00
#ps aux | grep knockd

17:36:11
#/etc/init.d/knockd stop
Stopping Port-knock daemon: knockd.
17:36:17
#ifconfig
eth0      Link encap:Ethernet  HWaddr 00:16:3E:00:00:01
          inet addr:192.168.16.201  Bcast:192.168.15.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fe00:1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27080 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26515 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:21167838 (20.1 MiB)  TX bytes:4486477 (4.2 MiB)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:43329 errors:0 dropped:0 overruns:0 frame:0
          TX packets:43329 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:27032188 (25.7 MiB)  TX bytes:27032188 (25.7 MiB)
17:36:32
##

17:36:44
#man knockd
17:36:50
#knockd -i eth0 -c /etc/knockd.conf -D
config: new section: 'options'
config: log file: /var/log/knockd.log
config: new section: 'openSSH'
config: openSSH: sequence: 7000:tcp,8000:tcp,9000:tcp
config: openSSH: seq_timeout: 5
config: openSSH: start_command: /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
config: tcp flag: SYN
config: new section: 'closeSSH'
config: closeSSH: sequence: 9000:tcp,8000:tcp,7000:tcp
config: closeSSH: seq_timeout: 5
config: closeSSH: start_command: /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
config: tcp flag: SYN
ethernet interface detected
Local IP: 192.168.16.201
2008-01-20 15:37:20: tcp: 192.168.16.254:44583 -> 192.168.16.201:8000 74 bytes
2008-01-20 15:37:20: tcp: 192.168.16.254:37976 -> 192.168.16.201:7000 74 bytes
17:37:27
#iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere            tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     0    --  anywhere             anywhere
17:37:34
#iptables -h
iptables v1.3.6
Usage: iptables -[AD] chain rule-specification [options]
       iptables -[RI] chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]
       iptables -[LFZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]
       iptables -h (print this help information)
Commands:
...
  --out-interface -o [!] output name[+]
                                network interface name ([+] for wildcard)
  --table       -t table        table to manipulate (default: `filter')
  --verbose     -v              verbose mode
  --line-numbers                print line numbers when listing
  --exact       -x              expand numbers (display exact values)
[!] --fragment  -f              match second or further fragments only
  --modprobe=<command>          try to insert modules using this command
  --set-counters PKTS BYTES     set the counter during insert/append
[!] --version   -V              print package version.
17:37:52
#man iptables
17:39:20
#man knockd
17:41:59
#!
bash: syntax error near unexpected token `newline'
17:41:59
#su - user
l3-agent is already running: pid=1708; pidfile=/home/user/.lilalo/l3-agent.pid
17:42:03
$ls -la
итого 624
drwxr-xr-x 10 user user   4096 2008-02-20 14:53 .
drwxr-xr-x  4 root root   4096 2008-02-19 09:05 ..
-rw-------  1 user user    393 2008-02-20 13:51 .bash_history
-rw-r--r--  1 user user    220 2007-12-23 14:52 .bash_logout
-rw-r--r--  1 user root    456 2008-02-19 08:49 .bash_profile
-rw-r--r--  1 user user   2270 2008-02-18 10:59 .bashrc
-rw-------  1 user user     26 2007-12-23 14:52 .dmrc
-rw-r--r--  1 user user      0 2008-02-20 14:53 dsa
drwxr-xr-x 54 user user   4096 2008-02-20 14:33 ~etc-that
...
drwxr-xr-x  2 user root   4096 2008-02-20 15:42 .lilalo
-rw-------  1 user user    516 2008-02-20 13:51 mbox
drwx------  3 user user   4096 2007-12-23 15:01 .mozilla
drwx------  2 user user   4096 2008-02-20 14:55 .ssh
-rw-------  1 root root   3528 2008-02-19 09:45 .viminfo
-rw-r--r--  1 user user     18 2008-02-19 09:29 .vimrc
drwx------  2 user user   4096 2008-02-18 08:33 .vnc
-rw-------  1 user user    265 2008-02-20 13:28 .Xauthority
-rw-r--r--  1 user user    788 2008-02-20 13:28 .xsession-errors
-rw-r--r--  1 user user 541563 2008-02-18 15:29 Xterm.log.debian1.2008.02.18.11.20.06.1593
17:42:05
$exit
exit
17:42:30
#man knockd
17:42:56
#man iptables
17:44:02
#sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere            tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     0    --  anywhere             anywhere
17:44:07
#sudo iptables -P INPUT DENY
iptables: Bad policy name
17:44:18
#man iptables
17:44:59
#sudo iptables -P DENY INPUT
iptables: Bad built-in chain name
17:45:06
#sudo iptables -P DENY FILTER
iptables: Bad built-in chain name
17:45:21
#sudo iptables -P FILTER DENY
iptables: Bad built-in chain name
17:45:30
#sudo iptables -P INPUT DROP

17:45:58
#sudo iptables -P FILTER DENY
iptables: Bad built-in chain name

Статистика

Время первой команды журнала17:32:06 2008- 2-20
Время последней команды журнала17:45:58 2008- 2-20
Количество командных строк в журнале36
Процент команд с ненулевым кодом завершения, %22.22
Процент синтаксически неверно набранных команд, % 0.00
Суммарное время работы с терминалом *, час 0.23
Количество командных строк в единицу времени, команда/мин 2.60
Частота использования команд
iptables9|===================| 19.57%
sudo8|=================| 17.39%
man7|===============| 15.22%
vim3|======| 6.52%
ps2|====| 4.35%
/etc/init.d/knockd2|====| 4.35%
apt-get2|====| 4.35%
grep2|====| 4.35%
ls2|====| 4.35%
dpkg1|==| 2.17%
ifconfig1|==| 2.17%
knockd1|==| 2.17%
#1|==| 2.17%
!1|==| 2.17%
exit1|==| 2.17%
apt-cache1|==| 2.17%
apt-show-versions1|==| 2.17%
su1|==| 2.17%
____
*) Интервалы неактивности длительностью 30 минут и более не учитываются

Справка

Для того чтобы использовать LiLaLo, не нужно знать ничего особенного: всё происходит само собой. Однако, чтобы ведение и последующее использование журналов было как можно более эффективным, желательно иметь в виду следующее:
  1. В журнал автоматически попадают все команды, данные в любом терминале системы.

  2. Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.

  3. Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
    $ l s-l
    bash: l: command not found
    

  4. Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
    $ test 5 -lt 4
    Обратите внимание на то, что код завершения команды может быть отличен от нуля не только в тех случаях, когда команда была выполнена с ошибкой. Многие команды используют код завершения, например, для того чтобы показать результаты проверки

  5. Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
    $ find / -name abc
    find: /home/devi-orig/.gnome2: Keine Berechtigung
    find: /home/devi-orig/.gnome2_private: Keine Berechtigung
    find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung
    find: /home/devi-orig/.metacity: Keine Berechtigung
    find: /home/devi-orig/.inkscape: Keine Berechtigung
    ^C
    

  6. Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
    # id
    uid=0(root) gid=0(root) Gruppen=0(root)
    

  7. Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
    $ vi ~/.bashrc
    2a3,5
    >    if [ -f /usr/local/etc/bash_completion ]; then
    >         . /usr/local/etc/bash_completion
    >        fi
    

  8. Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
    $ patch ~/.bashrc
    В данном случае изменения применяются к файлу ~/.bashrc

  9. Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.

    Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.

  10. Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.

  11. Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора

  12. Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.

  13. Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.

  14. Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:

    $ whoami
    
    user
    
    $ #^ Интересно, кто я?
    
    в журнале это будет выглядеть так:
    $ whoami
    
    user
    
    Интересно, кто я?

  15. Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:

    $ whoami
    
    user
    
    $ cat > /dev/null #^ Интересно, кто я?
    
    Программа whoami выводит имя пользователя, под которым 
    мы зарегистрировались в системе.
    -
    Она не может ответить на вопрос о нашем назначении 
    в этом мире.
    
    В журнале это будет выглядеть так:
    $ whoami
    user
    
    Интересно, кто я?
    Программа whoami выводит имя пользователя, под которым
    мы зарегистрировались в системе.

    Она не может ответить на вопрос о нашем назначении
    в этом мире.
    Для разделения нескольких абзацев между собой используйте символ "-", один в строке.

  16. Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=

  17. Содержимое файла может быть показано в журнале. Для этого его нужно вывести с помощью программы cat. Если вывод команды отметить симоволами #!, содержимое файла будет показано в журнале в специально отведённой для этого секции.
  18. Для того чтобы вставить скриншот интересующего вас окна в журнал, нужно воспользоваться командой l3shot. После того как команда вызвана, нужно с помощью мыши выбрать окно, которое должно быть в журнале.
  19. Команды в журнале расположены в хронологическом порядке. Если две команды давались одна за другой, но на разных терминалах, в журнале они будут рядом, даже если они не имеют друг к другу никакого отношения.
    1
        2
    3   
        4
    
    Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.

О программе

LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008

$Id$