forcemax's

참조글 : http://ubuntuforums.org/showthread.php?t=786095

0. prepare
# sudo apt-get update
# sudo apt-get install sudo apt-get install build-essential git-core checkinstall yasm texi2html libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev libvpx-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev

1. x264 installation
# cd
# git clone git://git.videolan.org/x264.git
# cd x264
# ./configure
# make
# sudo checkinstall --pkgname=x264 --pkgversion="2:0.$(grep X264_BUILD x264.h -m1 | \
   cut -d' ' -f3).$(git rev-list HEAD | wc -l)+git$(git rev-list HEAD -n 1 | \
   head -c 7)" --backup=no --deldoc=yes --fstrans=no --default


2. ffmpeg installation
# cd
# git clone git://git.ffmpeg.org/ffmpeg.git
# cd ffmpeg
# ./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc \
    --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb \
    --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis \
    --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
# make
# sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(./version.sh)" --backup=no \
    --deldoc=yes --fstrans=no --default
# hash x264 ffmpeg ffplay ffprobe




Comment +1

  • 좋은 글 감사합니다. 트랙백을 걸려고 했는데 트랙백 걸기가 실패해서 관련 내용을 링크로 남겼습니다. checkinstall 코드를 참조했습니다.

IBM Thinkpad X60에서 Ubuntu 10.04에서 10.10으로 업그레이드를 완료하고 리부팅을 한후에 사용하려고 보니, 화면이 이상하게 나오고 있었다.
10.04에서도 intel driver 관련하여 문제가 있었는데 또 발생했다. ㅠ.ㅜ
이번에는 지난번에 발생한 문제와 상황이 좀 다른듯하여 구글님의 도움을 받아보기로 하였다.

관련 페이지는 아래 참조 링크.

결론은 xorg-edgers PPA를 추가하고 패키지를 업데이트하면 된다는 것이다.

다음의 명령 몇개 입력해주고 재부팅하면 끝.

$ sudo apt-add-repository ppa:xorg-edgers/ppa
$ sudo apt-get update
$ sudo apt-get upgrade

만약 위의 방법으로 패키지를 업데이트 했는데도 문제가 해결이 안되었을 경우, 일단 업데이트한 패키지를 제거하기 위해서 다음의 명령을 입력해준다.

$ sudo ppa-purge xorg-edgers

참조 : https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/619663

Comment +0

한국전력 전기요금 수납

http://cyber.kepco.co.kr/cyber/common/popup/pop_card_pay.jsp?gubun=C


지방세 및 수도요금 수납

http://etax.seoul.go.kr/

Comment +0

/etc/init.d/iptables를 다음과 같이 만든다. (permission은 775)

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:    networking ifupdown $local_fs
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

IPTABLES=/sbin/iptables
EXT_ETH=eth0

${IPTABLES} -F
${IPTABLES} -t nat -F
${IPTABLES} -X BLACKLISTCHECK

${IPTABLES} -P INPUT ACCEPT
${IPTABLES} -P OUTPUT ACCEPT
${IPTABLES} -P FORWARD ACCEPT

${IPTABLES} -A INPUT -j ACCEPT -i lo
${IPTABLES} -A INPUT -j ACCEPT -p icmp --icmp-type any
${IPTABLES} -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

${IPTABLES} -N BLACKLISTCHECK
${IPTABLES} -A INPUT -j BLACKLISTCHECK -i ${EXT_ETH} -m state --state NEW -p tcp --dport 22

for x in `cat /tmp/ssh_evil`; do
${IPTABLES} -I BLACKLISTCHECK -s $x -j DROP
done

# 80, 22번 포트만 오픈
${IPTABLES} -A INPUT -j ACCEPT -i ${EXT_ETH} -m state --state NEW -p tcp --dport 22
${IPTABLES} -A INPUT -j ACCEPT -i ${EXT_ETH} -m state --state NEW -p tcp --dport 80

${IPTABLES} -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
${IPTABLES} -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 6 -j LOG --log-prefix "SSH_brute_force "

${IPTABLES} -A INPUT -j REJECT --reject-with icmp-host-prohibited

/etc/init.d/swatch 파일이 없다면 다음의 내용으로 생성한다. (permission은 775)
#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          swatch
# Required-Start:    networking ifupdown $local_fs
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

PATH="/sbin:/bin:/usr/sbin:/usr/bin"
NAME="swatch"
DAEMON="/usr/bin/swatch"
DESC="simple watcher"
CONFFILE="/etc/swatch.conf"
#LOGFILE="/var/log/secure"
LOGFILE="/var/log/syslog"
PIDFILE="/var/run/swatch.pid"
OPTS="--config-file=$CONFFILE --tail-file=$LOGFILE --pid-file=$PIDFILE --awk-field-syntax --tail-args='-F' --daemon"

test -x $DAEMON || exit 0

start() {
    if [ ! -f "$CONFFILE" ]; then
        echo "Error: $CONFFILE does not exist."
        exit 1
    fi
    if [ ! -f "$LOGFILE" ]; then
        echo "Error: $LOGFILE does not exist."
        exit 1
    fi
    if [ -f "$PIDFILE" ]
    then
        echo "Error: $NAME is already running."
    else
        $DAEMON $OPTS >/dev/null 2>&1
    fi
}

stop() {
    if [ -f "$PIDFILE" ]
    then
        PID=`cat $PIDFILE`
        if ps h $PID > /dev/null
        then
            pkill -P $PID
            kill $PID
        else
            echo "Error: $NAME is not running, but PID file exists. Deleting it."
        fi
        rm -f $PIDFILE
    else
        echo "Error: $NAME is not running."
    fi
}

case "$1" in
  start)
    echo "Starting $DESC: $NAME"
    start
    ;;
  stop)
    echo "Stopping $DESC: $NAME"
    stop
    ;;
  restart)
    echo "Restarting $DESC: $NAME"
    stop
    sleep 1
    start
    ;;
  *)
    echo "Usage: $0 start|stop|restart"
    exit 1
    ;;
esac

exit 0

swatch.conf에는 다음을 추가한다.
perlcode my $sshscript = '/root/swatch-ssh';
watchfor /([a-zA-Z]{3})\s+([0-9]{1,2}) ([0-9]{2}:[0-9]{2}:[0-9]{2}) ([a-zA-Z0-9_-]+) kernel: \[.*\] SSH_brute_force .*SRC=(.*) DST=/
        exec "$sshscript '$*' >> /var/log/swatch.log"
        throttle 00:00:30

swatch에서 실행할 스크립트를 만든다.
/root/swatch-ssh 파일의 내용은 다음처럼 구성한다. (역시 permission은 775)
(다른 기능도 같이 하는 스크립트에서 일부만 발췌함)
#!/usr/bin/ruby1.8

if ARGV.length==0 && ARGV.length < 2
  puts "Error!! Argument must more than 1 words!!"
  puts "ex) swatch-ssh message"
  exit 1
else
  begin
    message = ""
    argv_msg = ARGV[0].split
    host = argv_msg[3]

    beginflag = false
    for qs in argv_msg do
      message = message + (message!=""?" ":"") + qs if beginflag == true
      beginflag = true if qs == host
    end

    # for 3ware modules message
    message.sub!(/kernel: \[[0-9\s]+\.[0-9]+\] /, '')
    message.sub!(/\(.*\)/, '')

    smsmessage = sprintf("[%s]%s\n", host, message)
#    smsmessage.gsub!(' ', '_')
    smsmessage.sub!(/\[mgm\]/, '')
    smsmessage.sub!(/SSH_brute_force .* SRC=/, '')
    smsmessage.sub!(/ DST=.*/, '')

    File.open("/tmp/ssh_deny", 'a') {|f| f.write(smsmessage) }
    command = sprintf("cat /tmp/ssh_evil /tmp/ssh_deny | sort -u > /tmp/ssh_uniq_evil ; rm /tmp/ssh_deny ; cp /tmp/ssh_uniq_evil /tmp/ssh_evil ; /etc/init.d/iptables")
#    printf("%s\n", command)
    system(command)
  end
end

exit 0

이제 모든 준비는 완료되었습니다.
iptables 스크립트를 실행시키고 swatch를 restart하면 끝.
iptables -N BLACKLISTCHECK
touch /tmp/ssh_evil
update-rc.d iptables defaults 20
update-rc.d swatch defaults 20
/etc/init.d/iptables
/etc/init.d/swatch restart

위에서 설정한 내용은 다음과 같습니다.

1. iptables를 설정하여 ssh 연결이 1분에 6번 이상 연결되면 kernel에 log를 남기게 됩니다.
2. swatch에서는 iptables가 남긴 kernel log를 발견하게 되면 /root/swatch-ssh 스크립트를 실행시킵니다.
3. /root/swatch-ssh 스크립트에서는 해당 IP Address를 /tmp/ssh_evil 파일에 남기는 동시에 /etc/init.d/iptables 스크립트를 실행시켜서 발견된 IP Addreess를 통해서 들어오는 연결을 차단합니다.

위의 1,2,3 과정을 반복하면서 ssh brute force attack이 발견되면 해당 IP Address를 지속적으로 차단합니다.

작성자 : 저입니다. ^^

Comment +0

- OpenLDAP에 계정추가하기

먼저 ldif 파일을 다음과 같이 만든다.
dn: uid=ldapaddtest,ou=people,dc=domain,dc=com
uid: ldapaddtest
cn: ldapaddtest
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: e2NyeXB0fSQxJG4wOXM0N3FFJE9JUlI4R1pJNjduZ2Q3UXJ5VThPZDE=
loginShell: /bin/bash
uidNumber: 10067
gidNumber: 100
homeDirectory: /home/ldapaddtest

다음 명령으로 위의 파일에 있는 계정을 추가한다.
ldapadd -x -D "cn=admin,dc=domain,dc=com" -W -h localhost -f useradd.ldif

위 명령을 실행시키면 비밀번호를 물어본다. /etc/ldap.secret 파일에 있는 비밀번호를 입력한다.

- 이제 비밀번호를 변경할 차례

luma를 설치하고 실행한다.

sudo aptitude install luma

crypt 패스워드를 얻기 위해서는 다음과 같이 입력한다.
openssl passwd -crypt 1234


luma에서 위에 추가한 계정으로 이동한 후에 패스워드 필드를 수정을 선택하고 'crypt' 방식으로 패스워드를 변경해준다.

이렇게하면 계정 추가 끝

** 위에 ldapadd 명령에 -x가 붙어있다. -x는 sasl을 사용하지 않게 해준다.

위에 계정이 제대로 추가되었는지 확인하려면

ldapsearch -x -D "cn=admin,dc=domain,dc=com" -W -L "uid=ldapaddtest"


Comment +0

MySQL Proxy

작업2010.03.29 14:15
MySQL Proxy is a simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication.

https://launchpad.net/mysql-proxy

http://forge.mysql.com/wiki/MySQL_Proxy

MySQL에 fail-over와 load balancing(round-robin)을 하기 위한 가장 쉬운 도구.

Comment +0

ClientKeeper KeyPro 최소버전

http://keypro.clientkeeper.co.kr/support/newsafe/
또는
http://keypro.clientkeeper.co.kr:8080/faq/safe.jsp


SoftCamp Secure KeyStroke 바이패스
http://www.softcamp.co.kr/scsk/bypass/install.asp
또는
http://www.softcamp.co.kr/scsk/bypass/




Comment +0

MySQL에 MyISAM으로 DB를 운영중에 간혹 "Sending data" 상태에서 1분이상 시간이 소요되는 경우가 있다.

이 때문에 Table에 Lock이 걸려 다른 Query들이 다 대기상태가 된다.

MySQL의 Query Caching 시스템에 문제가 있을 수 있으니 query cache를 off해 보란다.

http://bugs.mysql.com/bug.php?id=45544

뭐.. 나아지기만 바란다 ㅠㅠ

PS. 그러나 제일 중요한건 Slow Query가 발생하는 원인이 되는 Query를 수정하는 것이지 않을까. ㅎㅎ

Comment +0

FreeBSD에서 PF 사용할 방법을 찾던 중 한글로 보기 쉽게 정리된 페이지를 찾았다.

http://mix1009.net/entry/BSD-방화벽-PF-DDoS방어

요즘 FreeBSD를 자주 손대게 되는게 참.. 알면 알수록 어려운 OS란 생각이 든다.

Comment +0

현재 openafs를 사용하는 시스템이 xen위에 올라와 있어서 가끔 이상동작을 하기는 하지만 이번에는 다음과 같은 에러가 발생해서 좀 알아보았다.

Found system call table at 0xc03226c0 (pattern scan)
sysctl_check_dir: failed: /afs .1 ref: /kernel .1
sysctl table check failed: /afs .1 Inconsistent directory names

현재 운영중인 OS는 Ubuntu 8.04 LTS Hardy Heron이며 다음과 같이 작업하여 문제를 해결하였다. 64bit amd64를 사용중이다.
cd /usr/src

wget http://mirrors.kernel.org/ubuntu/pool/universe/o/openafs/openafs-modules-source_1.4.11+dfsg-4_amd64.deb

mv modules modules.old

dpkg -i openafs-modules-source_1.4.11+dfsg-4_amd64.deb

## module-assistant를 실행해서 openafs-modules를 build하고 설치

m-a -t a-i openafs-modules-source


원인은 아마 Ubuntu 8.04와 openafs 1.4.6이 호환성이 좋지 않아서가 아닐까하는 추측만 남았다.

Comment +0