Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2015-01-20

Fort Apache

Намедни отсмотрел фильму «Форт Апачи», что в оригинале «Fort Apache» аж 1948 года.
Режиссер John Ford, в главных ролях John Wayne, Henry Fonda.

Генри, честолюбивый и беспощадный вояка, приезжает в дальние ебеня, фактически, в ссылку. И начинает наводить свои порядки, имея целью если не прославиться, то заявить о себе и выбраться из этой дыры.


Фильма интересная и забавная. Типа вестерн с комедийным уклоном. Правда, юмор местами нуар, но от этого только интереснее послевкусие.



original post http://vasnake.blogspot.com/2015/01/fort-apache.html

2015-01-19

Python 2.4

Как я ранее упоминал, гражданин Н. купил себе хостинг, где на 512 мегабайт оперативки установлен Debian 7 amd64. Хостинг был взят с целью поднять на нем СЭД NauDoc. Про Наудок мы поговорим позже, сейчас достаточно понимать, что это древнее говно мамонта требует Python 2.4. В пакетах такого уже нет, поэтому собирать будем из исходников.

Конечно, если бы все было просто, я бы не стал писать эту мутоту. Все непросто. Забегая вперед, могу сказать, что основная сложность в том, что теперь библиотеки и хидеры лежат несколько в других папках файловой системы, нежели во времена Python 2.4. Я на этом нюансе потерял несколько часов жизни. Надеюсь, этот пост поможет кому-нибудь сэкономить время.

Итак, установка необходимых пакетов

su -l
aptitude search libbz2 libsqlite3 libreadline zlib1g libncurses5 libssl libgdbm | less
aptitude search libbsd libssl
aptitude install build-essential dkms checkinstall
aptitude install libbz2-dev libsqlite3-dev libreadline-dev zlib1g-dev libncurses5-dev libssl-dev libgdbm-dev
aptitude install libbsd-dev libsslcommon2 libsslcommon2-dev libcurl-dev libcurl3
aptitude install tk8.4 tk8.4-dev tk8.5 tk8.5-dev python-tk tcl-dev tcl8.4 tcl8.4-dev
apt-get build-dep python

Распаковка дистра, правка конфигов

su -l valik
pushd ~/t/NauDoc-6/
tar zxf Python-2.4.4.tgz
cd Python-2.4.4
nano setup.py
nano Modules/Setup.dist

Правки конфигов были такие

--- Modules/Setup.dist.orig     2014-11-25 18:49:13.153936201 +0300
+++ Modules/Setup.dist  2014-11-25 19:14:07.609936201 +0300
@@ -309,11 +309,11 @@
 # every system.

 # *** Always uncomment this (leave the leading underscore in!):
-# _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \
+ _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \
 # *** Uncomment and edit to reflect where your Tcl/Tk libraries are:
-#      -L/usr/local/lib \
+ -L/usr/lib \
 # *** Uncomment and edit to reflect where your Tcl/Tk headers are:
-#      -I/usr/local/include \
+ -I/usr/include/tcl8.4 \
 # *** Uncomment and edit to reflect where your X11 header files are:
 #      -I/usr/X11R6/include \
 # *** Or uncomment this for Solaris:
@@ -328,7 +328,7 @@
 # *** Uncomment and edit for TOGL extension only:
 #      -DWITH_TOGL togl.c \
 # *** Uncomment and edit to reflect your Tcl/Tk versions:
-#      -ltk8.2 -ltcl8.2 \
+ -ltk8.4 -ltcl8.4 \
 # *** Uncomment and edit to reflect where your X11 libraries are:
 #      -L/usr/X11R6/lib \
 # *** Or uncomment this for Solaris:

и


--- setup.py.orig       2014-11-25 17:50:51.857936201 +0300
+++ setup.py    2014-11-25 18:36:12.349936201 +0300
@@ -268,7 +268,7 @@
         # be assumed that no additional -I,-L directives are needed.
         lib_dirs = self.compiler.library_dirs + [
             '/lib64', '/usr/lib64',
-            '/lib', '/usr/lib',
+            '/lib', '/usr/lib', '/usr/lib/x86_64-linux-gnu', '/lib/x86_64-linux-gnu',
             ]
         inc_dirs = self.compiler.include_dirs + ['/usr/include']
         exts = []
@@ -496,7 +496,8 @@
                 ssl_incs += krb5_h
         ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
                                      ['/usr/local/ssl/lib',
-                                      '/usr/contrib/ssl/lib/'
+                                      '/usr/contrib/ssl/lib/',
+                                      'x86_64-linux-gnu'
                                      ] )

         if (ssl_incs is not None and

Компиляем

cp Modules/Setup.dist Modules/Setup
script -t 2>~/python24.time ~/python24.script
./configure --prefix=/opt/python24
make clean
make
^d

и устанавливаем

su -l
mkdir -p /opt/python24
pushd /home/valik/t/NauDoc-6/Python-2.4.4
script -t 2>~/python24.time ~/python24.script
make install
checkinstall -D
^d

Сообщение от checkinstall

 Done. The new package has been installed and saved to
 /home/valik/t/NauDoc-6/Python-2.4.4/python24_2.4.4-1_amd64.deb
 You can remove it from your system anytime using:
      dpkg -r python24

Значит, Python 2.4 установился и готов к боевому дежурству.




original post http://vasnake.blogspot.com/2015/01/python-24.html

2015-01-16

The Life Aquatic with Steve Zissou

Намедни отсмотрел фильму «Водная жизнь», что в оригинале «The Life Aquatic with Steve Zissou» 2004 года.
В главных ролях Bill Murray, Owen Wilson. Режиссер Wes Anderson, известный нам по таким работам как The Royal Tenenbaums (2001) и Fantastic Mr. Fox (2009).

Билл – исследователь морских глубин, документалист (Кусто?), теряет друга в пасти неведомого морского чудовища. После чего, вопреки всему, собирает новую экспедицию с целью найти монстра и жестоко отомстить. И все это на фоне запутанной семейной жизни. Пираты тоже будут.


Комедия, которую, блестящий Билл превращает в дурдом. Местами. Я посмотрел с удовольствием, мне нравится Билл Мюррей. И Оуен Вилсон. И Jeff Goldblum, хотя его там немного.


original post http://vasnake.blogspot.com/2015/01/the-life-aquatic-with-steve-zissou.html

2015-01-15

firewall

Безопасный способ настройки файрволла в Debian.

Изучив вот эти страницы, нижеописанное можно и не смотреть

Сначала сделаем предохранитель. Скрипт, отключающий фильтрацию трафика:
nano ~/disable_fw.sh
#!/bin/bash
RHEL=false
IPT=/sbin/iptables
IPT6=/sbin/ip6tables

main() {
    if [ "$RHEL" == "true" ];
    then
        # reset firewall using redhat script
        /etc/init.d/iptables stop
        /etc/init.d/ip6tables stop
    else
        # for all other Linux distro use following rules to reset firewall
        reset_iptables ${IPT} "/proc/net/ip_tables_names"
        reset_iptables ${IPT6} "/proc/net/ip6_tables_names"
    fi
}

reset_iptables() {
    local ipt_bin="${1}"
    local tables="${2}"

    $ipt_bin -P INPUT ACCEPT
    $ipt_bin -P OUTPUT ACCEPT
    $ipt_bin -P FORWARD ACCEPT
    $ipt_bin -F
    $ipt_bin -X
    $ipt_bin -Z

    for table in $(<$tables)
    do
        $ipt_bin -t $table -F
        $ipt_bin -t $table -X
        $ipt_bin -t $table -Z
    done
}

main

Зарядим этот скрипт в cron, чтобы вырубал нам файрволл каждые пять минут:
nano /etc/crontab
...
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/5  *  *  *  * root bash /root/disable_fw.sh

Проверим, как оно работает, создав простое правило фильтрации и отследив, исчезнет ли оно в течение пяти минут:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
watch -d "iptables -L --line-numbers -nv"

Теперь напишем правила фильтрации:
nano ~/iptables.test.rules
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --update --seconds 55 -j DROP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --set -j ACCEPT
# -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Загрузим их в файрволл
iptables-restore < /root/iptables.test.rules
и проверим как-нибудь.
Допустим, все работает как надо.

Раз работает, можно настроить загрузку правил при старте сети (запуске машины):
iptables-save > /etc/iptables.up.rules
nano /etc/network/if-pre-up.d/iptables
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules
# EOF

chmod +x /etc/network/if-pre-up.d/iptables

Аналогично для IPv6

Правила фильтрации для IPv6:
nano ~/ip6tables.test.rules
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --update --seconds 55 -j DROP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --set -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

Загрузка для теста
ip6tables-restore < /root/ip6tables.test.rules
и как-то проверить.

Когда готово, обеспечить загрузку правил при запуске сети:
ip6tables-save > /etc/ip6tables.up.rules
nano /etc/network/if-pre-up.d/iptables
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules
/sbin/ip6tables-restore < /etc/ip6tables.up.rules

Финальные проверки (перезапуск хоста, простукивание портов, etc).

И отключение предохранителя, закомментировав запуск обнулятора в cron:
nano /etc/crontab
...
#*/5  *  *  *  * root bash /root/disable_fw.sh


Наслаждайтесь.


original post http://vasnake.blogspot.com/2015/01/firewall.html

2015-01-14

Dallas Buyers Club

Намедни отсмотрел фильму «Далласский клуб покупателей», что в оригинале «Dallas Buyers Club» 2013 года.
В главной роли Matthew McConaughey, известный нам по фильмам Mud, EdTV.

История про то, как резко поменялась жизнь простого техасского паренька, после того, как у него обнаружили HIV/AIDS и объяснили, что жить ему осталось несколько месяцев.
Тут и про фармакологическую мафию и про FDA, и про говно в мозгах обывателей. Про все.

Интересная фильма, посмотрите, не пожалеете.


original post http://vasnake.blogspot.com/2015/01/dallas-buyers-club.html

2015-01-13

SSH

Узелок на память, как я настраивал доступ к серверу (VDS/VPS) через SSH.
Основные идеи были такие:
- обеспечить админам доступ к серверу;
- защитить вход исходя из разумной степени параноидальности.

Что вылилось в конфигурацию, где TCP port SSH закрыт правилом файрволла
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --update --seconds 55 -j DROP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --set -j ACCEPT
Это означает, что за одну минуту к телу пропускается только одна попытка коннекта. Тут есть огромный подводный грабель — вредитель с легкостью устраивает атаку DOS, просто повторяя в цикле попытки коннекта. В этом случае никто, даже легитимный админ, не сможет открыть сессию SSH. Это можно исправить, применив что-то вроде Fail2Ban. Чтобы вредителей вносили в черный список после нескольких попыток, и блокировка файрволлом по списку должна быть раньше правила минутной паузы. Но, для начала, и так сойдет.

Затем админам выдаются ключи и SSH настраивается так, чтобы доступ получали только по ключам. И, конечно, root забанен.

На сервере предварительно создается пользователь valik с домашней папкой и папкой ~/.ssh. Затем на станции генерим ключ
ssh-keygen -t rsa -b 2048 -f valik.key
ssh-copy-id -i valik.key valik@123.45.678.24

Обратно на сервере, правим конфиг
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
nano /etc/ssh/sshd_config
...
Protocol 2
ListenAddress 0.0.0.0
LoginGraceTime 30
MaxStartups 3:50:10
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
...
# EOF
service ssh restart

Значения всех этих параметров смотри в документации.

Потом я еще добавил logwatch
и легкие приступы паранои отступили.

Источники:




original post http://vasnake.blogspot.com/2015/01/ssh.html

2015-01-12

Покатушки

Как известно, 27 декабря 2014 года я таки сдал экзамен в ГИБДД, с третьей попытки. Это была суббота. Воскресенье, понедельник — ГИБДД не работает. Вторник 30 декабря, я иду получать драйверскую лицензию, ака водительское удостоверение.

Платежку на оплату пошлины (800 рублей) я еще в субботу прихватил в окошке №5, в субботу же и оплатил в Сбербанке. И вот, с паспортом и квитанцией из Сбербанка я к 11 утра пытаюсь получить из терминала талончик на «получение ВУ после экзамена». Талончик остался практически один, на 17:45. Но даже тот факт, что мне опять придется подарить целый день жизни злоебучему ГИБДД, не может испортить мне радужное настроение. Я сдал экзамен, я свободен!

Теоретически, можно записаться на прием через госуслуги и не зависать целый день на стульчике в отделении. Не знаю, не пробовал.
Целый день, с перерывом на обед (погулял по Ашану, купив автозарядку в прикуриватель; пообедал в Бургеркинге), я продремал в теплом уголке. Наблюдения за окошком №5 показали, что в окошке живет злобная девка, работающая в пакетном режиме. Полчаса она ищет и собирает документы, потом полчаса зазывает народ через матюгальник, в стиле «кто на получение ВУ с Х часов до У часов, подойдите к 5-му окну». Народу немного, даже впечатление сложилось, что в час не более пяти человек. В окне она смотрит паспорт и квиток из Сбербанка, находит твои доки и говорит, что надо идти ждать у кабинета №1. Там фото делают и печатают удостоверения.

Я попытался влезть без очереди, но злобная девка №5 сказала, что никак нельзя, ждите пока талончик ваш позовут. В итоге, к пятому окошку меня позвали где-то в половине шестого. Немного раньше, чем назначено.
Потом я еще полчаса ждал фотографии, и еще пять минут, пока заламинируют карточку.
Похоже на то, что 10 человек в час эта система обрабатывает. И не похоже, что сотрудники лодырничают.

Вот так, 30 декабря я получил свою драйверскую лицензию.
А 31 декабря я взял в аренду Ладу Ларгус и повез семью в Малаховку, отмечать Новый Год!

Машину мне дали на четыре дня, 4 января надо было вернуть. За это время я два раза съездил в Малаховку, забрал и развез народ по домам в Москве, съездил в Икею и Метро. Сжег больше 30 литров бензина и накатал больше 300 километров.

Клево, мне понравилось. Народу тоже. Тепло, сухо, мухи не кусают, едешь себе.
С погодой, конечно, 31 числа не очень было. Сугробы, темно, с неба сыпет — экстремальненько. На пятую передачу даже на окружной почти не переключался. Зато в новом году, когда дороги почистили, покатались знатно. По кольцу на пятой, под сотню км/ч, ух.
Как ни странно, никаких проблем с перестроениями я не испытывал. Достаточно ехать с той же скоростью, что и задний, лучше — чуть быстрее, и перестраивайся на здоровье. Наверное, меня и вправду научили нормально ездить. Вот парковаться толком не научили. Габаритов не чувствую, дугу маневра не представляю. Приходится взад-назад по пять раз дергать. Да еще с помощником, чтобы не долбануть ничего.

Правда, Ларгус это еще тот сарай. Большой и с хреновой обзорностью назад.
Впрочем, на drom.ru про него все написано. И про кривой сход-развал, машину в сторону тянет постоянно; и про запотевание стекол; и про необходимость выключать зажигание при заправке, про все. Зато 7 человек везет и не кашляет. Дешево и сердито.
Да, подвеска у Лагруса — супер. Когда едешь пустой, потряхивает, конечно, немного. Но загруженный едет плавно, как лимузин. И все ямки, неровности, вплоть до лежачих полицейских глотает почти незаметно.




original post http://vasnake.blogspot.com/2015/01/blog-post.html

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)