레이블이 운영체제인 게시물을 표시합니다. 모든 게시물 표시
레이블이 운영체제인 게시물을 표시합니다. 모든 게시물 표시

2012-10-06

DBMS/MySQL]권한설정

이글은 proftp DB생성과 유저등에 관한 것을 예로 설명하는 것입니다.

1.mysql설정을 한뒤 'proftp'데이터베이스 생성합니다.

#/usr/local/bin/mysqladmin -u proftp -p create proftp

==> 왠일인지 mysqladmin 이 mysql서버에 접근을 못하게 되어있다. 그래서 직접 mysql로 서버에 접속을 한다음 쿼리문장으로 처리



1.1 db유저 생성

1.1.1 db테이블에 proftp사용자 등록
db 테이블 구조
+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | | PRI | | |
| Db | char(64) | | PRI | | |
| User | char(16) | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
+-----------------------+---------------+------+-----+---------+-------+

mysql> insert into db values('%', 'proftp', 'proftp', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');



1.1.2 user테이블에 proftp사용자의 권한 추가

user 테이블 구조
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | varchar(60) | | PRI | | |
| User | varchar(16) | | PRI | | |
| Password | varchar(41) | | | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Reload_priv | enum('N','Y') | | | N | |
| Shutdown_priv | enum('N','Y') | | | N | |
| Process_priv | enum('N','Y') | | | N | |
| File_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Show_db_priv | enum('N','Y') | | | N | |
| Super_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
| Execute_priv | enum('N','Y') | | | N | |
| Repl_slave_priv | enum('N','Y') | | | N | |
| Repl_client_priv | enum('N','Y') | | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | | | | |
| ssl_cipher | blob | | | | |
| x509_issuer | blob | | | | |
| x509_subject | blob | | | | |
| max_questions | int(11) unsigned | | | 0 | |
| max_updates | int(11) unsigned | | | 0 | |
| max_connections | int(11) unsigned | | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+

mysql>INSERT INTO user VALUES('localhost','proftp',PASSWORD('비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('lnx68.thesoft.co.kr','proftp',PASSWORD(비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('%','proftp',PASSWORD('비밀번호 '),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


host 테이블 구조

+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | | PRI | | |
| Db | char(64) | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
| Create_tmp_table_priv | enum('N','Y') | | | N | |
| Lock_tables_priv | enum('N','Y') | | | N | |
+-----------------------+---------------+------+-----+---------+-------+


mysql>INSERT INTO host VALUES('localhost','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>INSERT INTO host VALUES('lnx68.thesoft.co.kr','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');



1.1.3 proftp DB생성

mysql> create database proftp;

mysql> flush privileges;

DBMS/MySQL]mysql_5.0.41_소스_컴파일_해서_설치하기



The basic commands that you must execute to install a MySQL source
distribution are:
     shell> groupadd mysql
     shell> useradd -g mysql mysql
     shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
     shell> cd mysql-VERSION
     To change both the character set and the collation, use both the
     `--with-charset' and `--with-collation' options. The collation
     must be a legal collation for the character set. (Use the `SHOW
     COLLATION' statement to determine which collations are available
     for each character set.)
     shell> ./configure --prefix=/usr/local/mysql --with-charset=utf8
     shell> make
     shell> make install
     shell> cp support-files/my-medium.cnf /etc/my.cnf
     shell> cd /usr/local/mysql
     shell> chown -R mysql .
     shell> chgrp -R mysql .
     shell> bin/mysql_install_db --user=mysql
     shell> chown -R root .
     shell> chown -R mysql var
     shell> bin/mysqld_safe --user=mysql &

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h test.nchannel.net password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &
You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl
Please report any problems with the /usr/local/mysql/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com

[DBMS/MySQL]가입자에게_mysql을_사용할_수_있도록_path_설정하기


1. 가입자에게 mysql을 사용할 수 있도록 PATH설정하기

/etc/skel 의 .bash_profile에 mysql을 실행시킬수 있도록 다음과 같이 설정한다.

# .bash_profile

# Get the aliases and functions
# 사용자 정의 앨리어스와 함수 정의 포함
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs
# 사용자별 환경 변수, 시작 프로그램 설정

PATH1=$PATH:$HOME/bin <- 설정부분
PATH=$PATH1:/usr/local/mysql/bin <- 설정부분
BASH_ENV=$HOME/.bashrc
USERNAME=""

export USERNAME BASH_ENV PATH1 PATH <- 설정부분

DBMS/MYSQL]_하드디스크_이상으로_디비_용량이_초과_시



할당된 하드디스크 이상으로 디비 용량이 초과 되었을때 처치 방법.1. /usr/local/mysql/var 의 로그 파일로 용량을 줄일 수 있다.
- localhost-bin.index 파일을 보면 현재의 로그 파일에 대한 정보가 있다.
- 그 로그파일은 DB의 UPDATE 내역이 기록하는 파일이다. Replication(일종의 백업)을 위해 생성된다.
- localhost-bin.index 에서 확인한 파일을 제외하고 다른 파일은 지워도 된다.
- 한가지 더 확인하자면 marster-slave 에서 show slave status 인가하는 명령으로 현재의 master 의 로그파일을 확인할수 있으니 나머지는 지워도 된다.
- /etc/my.cnf 에서 log-bin 옵션을 주석처리 해주면 로그 파일이 생성되지 않는다.

2. 하드디스크를 설치 하는 방법으로 용량 충당
- MySQL은 데이터를 디렉토리에 보관한다. 다른 파티션으로 이동할 경우 데이타 디렉토리를 이동하면 된다.
1. 기존의 데이타 디렉토리로 이동한다.
$ cd /usr/local/mysql/var
2. 기존의 데이터 파일들을 묶어서 새로운 디렉토리로 옮긴다.
$ tar cvf /usr2/local/mysql/var/backup.tar * 3. 새로운 디렉토리로 이동한다.
$ cd /usr2/local/mysql/var
4. 새로운 디렉토리에 기존의 데이타들의 압축을 푼다.
$ tar xvf backup.tar
5. 새로운 디렉토리의 권한을 mysql 사용자만 접근할 수 있도록 해 주어야 한다.
$ chmod 700 /usr2/local/mysql/var
$ chown mysql.mysql /usr2/local/mysql/var

6. MySQL 데몬을 실행시키는데 이때 --datadir=/usr2/local/mysql/var 옵션을 주어 새로운 데이터 디렉토리를 지정해 주어야 합니다.
이와 같은 방법으로 MySQL의 데이터 디렉토리를 다른 곳으로 옮길 수 있다.

- 뭐 간단하게 말해서 기존에 데이터 있던 데이터들을 압축해서 다른곳에 옮겨놓고 그디렉토리는 새로운 하드로 마운트 시키시고 다시 풀어놓으시면 된다.

3. 하드용량 초과로 트렌젝션중 파일이 손상되었을때 치료- myisamchk --safe-recover 테이블명.myi

[DBMS/MySQL/FreeBSD]proftp와_mysql연동하기



이글은 www.godisgreen.com/wikix/index.php 에서 인용한 글을 기초로 작성된것입니다.



OS : FreeBSD 5.3R

System : intel P3-850 dual

Memory : 512M

HDD : Ultra SCSI 9G*2



FreeBSD(이 하 프비)5.3R의 설치가 되었다고 가정하고 시작합니다.

데몬이나 어플리케이션의 설치는 PORTS 설치를 기본으로 합니다.




Proftp설치



1.proftp를 설치합니다.

# cd /usr/ports/ftp/proftpd-mysql

=> 포트 디렉토리에 보면 proftp와 proftp-mysql이 있습니다. 저는 proftp-mysql을 기준으로 설명합니다.

# make install

(만 약 proftpd에서 설치시

make install clean WITH_MYSQL

과 같이 WITH_MYSQL 옵션을 줘야 한답니다.)


MYSQL설치



2. mysql을 설치합니다.

# cd /usr/ports/databases/mysql40-server

--> mysql 버전이 5.x 가 있지만 proftpd포트 설치시 mysql4.x 클라이언트

를 설치하므로 버전을 맞추기 위해 4.x 를 설치하기로 합니다.

# make install clean WITH_CHARSET=euc_kr BUILD_OPTIMIZED=yes

(

mysql41-server 의 경우 WITH_CHARSET옵션의 값이 euckr로 변경됨.

mysql 4.1버전의 경우

# make install clean WITH_CHARSET=euckr BUILD_OPTIMIZED=yes

)

# /usr/local/bin/mysql_install_db

==> 처음으로 mysql을 사용하기 전에 시스템 DB를 만들기 위한 스크립트를

실행합니다.

위 명령은 mysql을 설치한 후 반드시 한번만 하시기 바랍니다.



3. 설치 확인 작업

# /usr/local/bin : mysql바이너리 파일들이 있나 확인

# /usr/local/etc/rc.d/mysql-server.sh : mysql 기동 스크립트

# /var/db/mysql : mysql 데이터베이스 파일



4. 데몬 시작및 중지하기

4.1. 시작하기

# /usr/local/etc/rc.d/mysql-server.sh start 혹은

/usr/local/bin/mysqld_safe -user=mysql &



4.2 중지하기

# /usr/local/etc/rc.d/mysql-server.sh stop 혹은

/usr/local/bin/mysqladmin -u root shutdown



5. mysql 데이터베이스를 사용하기 전에

반드시 루트 암호를 생성하고 사용하시기 바랍니다.

#/usr/local/bin/mysqladmin -u root password '새로운 비밀번호'

#/usr/local/bin/mysqladmin -u root -h 호스트명 password '새로운 비밀번호'



6. 데이터베이스 사용하기

#/usr/local/bin/mysql -u root -p

password :




** 만약 위와같이 작업시 에러발생하는 경우


5번 작업시 에러발생시에는

1. 우선 mysql서버 데몬을 죽인다.

# kill mysql_pid 혹은

/usr/local/etc/rc.d/mysql-server.sh stop



2. /usr/local/etc/rc.d/mysql-server.sh 파일을 편집해서

========================

편 집내용.

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} --language=korean > /dev/null &

를 다음과 같이 수정합니다 .

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} --language=korean --skip-grant > /dev/null &



========================



3. mysql서버 데몬을 다시 시작한다.

# /usr/local/etc/rc.d/mysql-server.sh start



4. 위와같이 하면 권한 테이블을 사용하고 데몬을 띄우게 됩니다.

5. mysql에 접속하여

# /usr/local/bin/mysql -u root -p

6. root의 암호를 변경합니다.

mysql> use mysql;

mysql> select * from user where user = 'root';

mysql> update user SET password = PASSWORD('newpassword');

7. 권한 테이블을 다시 읽는다.

mysql> flush privileges;

8. mysql을 종료

mysql> \q



9. mysql 서버 데몬 죽입니다.

#/usr/local/etc/rc.d/mysql-server.sh stop



10./usr/local/etc/rc.d/mysql-server.sh 파일을 편집해서

========================

편집내용.

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} -language=korean --skip-grant > /dev/null &

를 다음과 같이 수정합니다 .

/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} -language=korean > /dev/null &



========================

다 시 원상복귀 합니다.



11. mysql 서버를 다시 시작합니다.

#/usr/local/etc/rc.d/mysql-server.sh start



12. 정상적으로 mysql을 사용가능합니다.




proftpd 를 위한 mysql설정하기



1.mysql설정을 한뒤 'proftp'데이터베이스 생성합니다.

#/usr/local/bin/mysqladmin -u proftp -p create proftp

==> 왠일인지 mysqladmin 이 mysql서버에 접근을 못하게 되어있다. 그래서 직접 mysql로 서버에 접속을 한다음 쿼리문장으로 처리



1.1 db유저 생성

1.1.1 db테이블에 proftp사용자 등록

mysql> insert into db values('%', 'proftp', 'proftp', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');



1.1.2 user테이블에 proftp사용자의 권한 추가

mysql>INSERT INTO user VALUES('localhost','proftp',PASSWORD('proftpdeamon'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('lnx68.thesoft.co.kr','proftp',PASSWORD('proftpdeamon'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');


mysql>INSERT INTO user VALUES('%','proftp',PASSWORD('proftpdeamon'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0');



mysql>INSERT INTO host VALUES('localhost','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>INSERT INTO host VALUES('lnx68.thesoft.co.kr','proftp','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');



1.1.3 proftp DB생성

mysql> create database proftp;

mysql> flush privileges;









2. DB생성 후에 테이블 구조를 해당 DB(proftp DB)에 만들어 줍니다.



##테이블 groups



##################
# 테이블 groups
##################


Create Table groups(
gname varchar(12) NOT NULL default ''
, gid int(10) unsigned default NULL
, members text
, primary key (gname)
) TYPE=MyISAM;



##################
# 테이블 users
##################


Create Table users(
userid varchar(12) NOT NULL default ''
, uid int(10) unsigned NOT NULL auto_increment
, gid int(10) unsigned default '1000'
, passwd varchar(63) default NULL
, shell varchar(255) default '/bin/sh'
, homedir varcahr(255) default '/home/data'
, count int(10) unsigned NOT NULL default '1'
, valid int(10) unsigned default '0'
, email varchar(50) default NULL
, name varchar(30) binary NOT NULL default ''
, reg_date datetime default NULL
, ip varchar(17) default NULL
, primary key(userid)
, key uid_primary(uid)
, key index_name(name)
) TYPE=MyISAM;






** mysql은 탭을 구분하지 못하므로 스페이스로 구분하여 입력하기 바랍니다.

2012-09-14

Linux]CentOS 5.0에 subversion/svn 설치


출처 : http://tykim.wordpress.com/2007/06/04/centos-50%ec%97%90-subversionsvn-%ec%84%a4%ec%b9%98/

 

CentOS 5.0에 subversion/svn 설치

Filed under: System GuruIT — Peter Kim @
CentOS (RHEL 5.0)에 Subversion 1.4.3의 설치 Know-How를 공유한다.
대표적인 형상관리 서버로 CVS/CVSNT, Subversion등이 있다.
우선 순서는
  1) Subversion 설치
  2) Repository 생성
  3) Daemon 설정
  4) Client 사용
  5) 활용
으로 설명하려 한다.
1. 설치
    yum으로 의외로 쉽게 설치된다.
    #yum install subversion
    기본적으로 이렇게 설치하면 File System으로 관리할 수 있는 기본 패키지가 설치된다.
    Subversion으로 repository관리는 두가지로 File System 및 Berkeley DB를 선택 사용할 수 있다.
    Berkely DB를 사용하기 위해서는 http://www.oracle.com/technology/software/products/berkeley-db/db/index.html
에 서 설치하고 쓸 수 있는데.. 이곳저곳에서 관리 파일 용량이 많아지면 문제가 있다는 report가 있어 안전하고 직관적(실제 물리적 foder/file구조로 관리할 수 있게끔 file system 방식으로만 쓰고자 한다.
2. Repository 생성
   1) Repository 생성
      우선 Root Repository를 생성해야 한다. (이유: 3.1) 참조)
      #mkdir /data1/svn
      #cd /data1/svn
      #svnadmin create –fs-type fsfs project
      이렇게하면 /data1/svn에 project directory 및 기본적으로 하위 디렉토리들이 만들어 진다.
      인증/보안을 위한 몇가지 옵션을 설정해 주어야 한다.
   2) 기본적인 환경 설정
       #vi /data1/svn/project/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
기본적으로 anonymous access 불가, 인증 성공한 사람만 write권한, 인증방식은 passwd 파일 방식
       #vi /data1/svn/project/conf/passwd
        [users]
        userid1=password1
        userid2=password2
 접속을 허용할 userid 및 password를 기재해주면 된다.
3. Daemon 설정
   기 제작한 project repository에 대한 file-system으로의 생성, 인증, password의 본적은 환경 설정은 마쳤고, 이제 subversion daemon을 실행하기 위한  시스템 환경 설정이 남았다.
   1) 환경 설정
       #vi /etc/rc.d/init.d/subversion 을 열어 17 줄의 SYSCONFIG 내용을 확인한다.
       SYSCONFIG=”/etc/sysconfig/subversion”
       #vi /etc/sysconfig/subversion
         OPTIONS=”–threads –root /data1/svn”
         이렇게 하여 svn의 root repository directory를 설정해 준다.
   2) 시스템 가동
        #/etc/rc.d/init.d/subversion start
       이렇게 하면 subversion이 daemon으로 동작하게 된다.
       환경 변수를 바꾸고 subversion을 restart해야한다면
        #/etc/rc.d/init.d/subversion restart
   3) Booting시 자동 실행
        #vi /etc/inittab
        우선 서버의 실행 Level을 확인해야 하는데  /etc/inittab의 18번째 줄 내용을 확인한다.
        id:5:initdefault:
        본 id와 initdefault사이의 값인 5값을 확인한다. (X11로 booting한다는 의미)
        #cd /etc/rc5.d
        #vi S99local
         /etc/rc.d/init.d/subversion start &
    적당한 줄에 상기 내용을 추가한다.
4. Client 사용
    - http://blog.empas.com/mcchae/19118563 에 워낙 잘 설명이 되어 있어서 pass
5. 활용
    - 전체적으로 subversion으로 여러 사람의 협업을 통해 소스 형상 관리 및 Binary 관리등을 관리해야 하고, 프로젝트별 권한, Backup 및 Restore, 관리자 통계(오늘 어떤 파일/내용이 수정되었고, 누가 올렸고.. 등등) 여러가지  Tunning작업을 해야한다.
    - IT Project에서는 trac을 많이 쓰고 있고, 비슷한 형태로 http://oss.segetech.com/bugzilla-svn-wiki.html을 참고해도 될 것 같다.
Technorati Tags: 
Powered by ScribeFire.

Linux] centos 5.0 설치하기

 출처 : http://www.howtoforge.com/perfect_setup_centos5.0

2012-09-11

FreeBSD]FreeBSD에서 MS 파티션 읽기



이 글은 www.openphp.com에서 인용한 것입니다. 
// 윈도우 파티션 마운트하기

파티션 타입 msdos가 fat16/fat32/vfat모두 커버가 된다고 하네요

ad0 - 첫번째 하드디스크
s10 - 10번째 슬라이스    - 해당되는 것을 선택하시면 됩니다. 
/mnt/win   - 마운트 되는 위치
#mount -t msdos /dev/ad0s10 /mnt/win

// 리눅스 파티션(ex2fs) 마운트하기 

커널 설정 옵션에서 아래의 내용이 추가된 상태에서 컴파일 하셔야 합니다. 
윈도우/시디롬 파티션관련 옵션은 처음 설치시 기본으로 설정되어 있죠.
option ex2fs
#mount -t ex2fs /dev/ad0s5 /mnt/redhat

// 참고로 리눅스에서 프비파티션 마운트 가능하게 하려면
// 커널 설정부분에서 UFS(프비파티션)파티션 관련 부분이 설정된 상태에서 컴파일을 해야 합니다.
          

2012-09-10

FreeBSD ]FreeBSD 커널 컴파일 하기



이글은 커널컴파일에 대해 간략히 기술한 문서이다.



1. GENERIC kernel config 파일을 복사해서 사용. 바뀐 내용을 잃어버렸을 때에는 GENERIC kernel config

파일로 복원을 해야 하기 때문이죠.


# cd /usr/src/sys/i386/conf
# cp GENERIC MyKernel



2. 새로 추가된 하드웨어가 있으면 MyKernel 을 수정합니다

참고로 FreeBSD 5.x는 SMP(CPU2개 이상을 자동으로 인식한다고 하는데 제 경험상 커널컴파일을 해야만 2개로 인식을 하더군요.)

*아래의 예는 사운드카드 인식하기 위한것(Vibra128(ES1370/ES1371))

device pcm #pcm0(ES1370/ES1371)



**CPU를 2개이상 인식시킬경우

options SMP



3. 두가지 방법으로 컴파일이 가능합니다.

3.1

# cd /usr/src/sys/i386/conf

# /usr/sbin/config MyKernel

# cd ../../compile/MyKernel

# make clean

# make depend

# make

# make install



3.2

# cd /usr/src

# make buildkernel KERNCONF = MyKernel

# make installkernel KERNCONF = MyKernel



3.2 방법으로 커널컴파일 권장



4. 이렇게하면 root디렉토리에 처음의 커널은 kernel.GENERIC으로 백업이 되며, 방금 컴파일된 MyKernel kernel Configure 파일로 컴파일된것이 Kernel 로 됩니다.

5. 시스템 리부팅

# sync

# shutdown -r now

FreeBSD]FreeBSD 불편한 adduser 대체 pw이용법 by 조성준

관련 주소 1 : 
관 련 주소 2 :
 
관련 주소 3 :
 
#pw user add user-name 
user-name이란 사용자추가, 홈디렉토리는 생성 되지 않지요... 

#pw user add user-name -m 
-m 옵션으로 홈 디렉토리까지 생성,기 본 설정 파일이 복사되지요... 
홈디렉토리 기본파일은 /usr/share/skel 이지요. 

#pw user del user-name 
user-name이란 사용자 삭제, 홈디렉토리는 삭제되지 않지요... 

#pw user del user-name -r 
-r옵션으로 홈 디렉토리까지 삭제되지요... 

#pw user show user-name 
user- name이란 사용자 엔트리를 볼 수 있지요... 

#pw user show user-name -P 
-P옵션 으로 보다 읽기 쉽게 내용을 나열해 줍니다... 

#pw user show -a 
-a옵션으로 모든 사용 자 엔트리를 볼 수 있지요... 

//pw명령과 비슷한 adduser/rmuser가 있지요... 
 

FreeBSD]FreeBSD 무장하기


FreeBSD 무장하기

Markus Fluid Delves mailto:markus@fluidenterprises.net 저.

OpenBIRD, Inc. mailto:editors@openbird.com 역.

새로운 script가 계속 생겨남에 따라 우리는 자신을 보호할수 있는 몇가지 기본적인 법칙을 배울 필요가 있습니다. 이 가이드는 FreeBSD 보안의 기본에 대해 개략적으로 알려줄 것이며 FreeBSD 4.x에서 가장 잘 동작할 것입니다.

1. 일반적 인 보안 지식
1.1 Superuser
1.2 su
1.3 SSH2 키 인증 사용하기

2. 소스를 최신버젼으로 유지하기
2.1 최 신으로 유지하기
2.2 CVSUP
2.3 컴파일과 인스톨

3. Firewall 사용하기
3.1 IPFW 소개
3.2 Kernel 고치기
3.3 Firewall 셋팅하기
3.4 IPFW 사용하기

4. Services
4.1 INETD
4.2 Standalone 데몬

5. DES vs MD5
5.1 비 밀번호 암호화

6. 결론
6.1 기 억해야 할 규칙들
6.2 참고자료


Chapter 1. 일반적인 보안 지식

1.1 Superuser

기본적으로 FreeBSD에서 superuser 계정은 root입니다. root 계정은 생성, 삭제, 편집, 중지, 조정등 모든 것이 가능하며 컴퓨터를 완벽하게 조정할수 있습니다. 여러분의 보안을 증진시킬 수 있는 가장 좋은 방법 중의 하나는 정말 필요할 때만 root를 사용하는 것입니다. 일상적인 작업을 할 때는 자신이 가지고 있는 특권이 없는 계정을 사용해야 합니다. root로 작업할 때는 안전하다고 확신하지 않는 한 소스코드로 만들지 않은 실행화일은 절대로 실행시키지 말아야 하며 root로 실행해야만 하는 프로그램들만 실행하십시요. ; 다른 프로그램들은 root가 아닌 여러분 계정을 사용해 실행시켜야 합니다.

1.2 su

여러분은 SSH 같은 보안 프로토콜을 통하지 않으면 root로 절대 로그인해선 안되며 보안 프로토콜을 통해 들어가더라도 그건 좋은 생각이 아닙니다. 대신 여러분은 자신의 일반 개인 계정으로 로그인한 후 su를 이용하여 root로 들어가야 합니다.
뜻밖의 root 로그인 공격을 당했다 할지라도, 이렇게 하여야 문제를 추적할 수 있습니다. 익명 사용자로 부터의 root 로그인 메시지 대신, 누가 로그인 하였는지 그리고 누가 su를 시도하였는지 알 수 있을 것입니다.
주요 그룹에 속한 username 만이 root로 su가 가능하기 때문에 진행하기 전에 username이 그룹에 등록되어 있는지 확인합니다. /etc/group을 수정하여 여러분의 username을 추가하면 되는데 그 첫번째 문장을 다음과 같습니다.:

wheel:*:0:root,your_username

위의 문장에 space를 사용하면 안되며 username을 여럿 열거할때는 콤마로 구분합니다.
root로 직접 로그인 못하게 하려면 /etc/ttys 아래 있는 문장을 고쳐주어야 합니다.:

console none unknown off secure
#
ttyv0 "/usr/libexec/getty PC" cons25 on secure
ttyv1 "/usr/libexec/getty PC" cons25 on secure
[...]

root로 직접 로그인 못하게 하려면, 문장안의 모든 secure를 insecure로 고치면 됩니다. 여러분은 가상 터미날에서 root로 바로 로그인이 불가능 합니다. 모든 가상 터미날로 들어오는 것은 secure로 되어 잇기 때문에 이런 터미날에서의 root 로그인은 불가능합니다. 실재로 이 말은 여러분이 telnet 세션을 통해 root로 로그인 하는것은 불가능하다는 이야기입니다.

1.3 SSH2 키 인증 사용하기

SSH2를 사용하는 것이 telnet 상으로 개인 프라이버시를 더욱 더 보호할 수 있지만 이론적으로 그것은 해독될 수도 있습니다. 만일 네트워트를 타고 보내지는 데이타를 상대편 머신에서 public key로 받아들이도록 암호화 할수 있다면 우리의 프라이버시는 훨씬 보호될 수 있습니다. 여기 unix에서 ssh2 key authentication을 셋팅한 예를 보십시요.

일단 로칼 머신에 ssh2를 인스톨하면 http://www.bsdnet.co.kr/articles/ftp.cis.fed.gov/pub/ssh/ssh-2.4.0.tar.gz에 서 아래 사항을 찾아 볼수 있습니다. 아니면 간단히 /usr/ports/security/ssh2에 있는 포트를 사용해도 됩니다.
ssh-keygen2을 실행시키세요.

markus@fluidenterprises:~$ ssh-keygen2
Generating 1024-bit dsa key pair
1 oOo.oOo.oKey generated.
1024-bit dsa, markus@fluidenterprises, Mon Dec 25 2000 00:13:43 +0200
Passphrase : ***********
Again : **********
Private key saved to /home/markus/.ssh2/id_dsa_1024_a
Public key saved to /home/markus/.ssh2/id_dsa_1024_a.pub

자신만의 identification file을 만드세요.

markus@fluidenterprises:~$ echo "IdKey id_dsa_1024_a" > ~/.ssh2/identification

자신의 public key를 리모트 호스트에 복사하고 자신의 .ssh2 디렉토리에 놓습니다.
authorization file을 리모트 호스트에 만듭니다.

fluid@watchtower:~/.ssh2$ echo "Key id_dsa_1024_a.pub" >> authorization

로칼 머신으로 되돌아가 로그인 해보세요. 그러면 다음과 같이 나옵니다.:

markus@fluidenterprises:~$ ssh2 -l fluid remote_host
Passphrase for key "/home/markus/.ssh2/id_dsa_1024_a" with comment "1024-bit dsa, markus@fluidenterprises.net, Sat Dec 16 2000 02:56:47":

pass 문을 입력하시고, 자, 어때요.

secure ftp 2 사용법.

markus@fluidenterprises:~$ sftp2 fluid@remote_host
Passphrase for key "/home/markus/.ssh2/id_dsa_1024_a" with comment "1024-bit dsa, markus@fluidenterprises.net, Sat Dec 16 2000 02:56:47":
sftp>

sftp2의 명령들은 ftp와 굉장히 유사합니다.
이제 우리는 안전한 public key authorization 시스템을 어떻게 사용하는 건지 알았으니 여러번 테스트 해 보시기 바랍니다. 익숙해지면 passwd 화일에서 여러분의 패스워드를 *로 고치세요. 모든 사람들이 public key authorization으로 권한 check를 한다면 우리의 보안성은 아주 높아질 겁니다. id_dsa_1024_a는 업로드 해선 안됩니다. 이것은 여러분의 개인적인 key이며 여러분은 어느 누구도 그것에 접근하는 것을 원하지 않을테니까요.

Chapter 2. 소스를 최신 버젼으로 유지하기

2.1 최신버젼 유지하기

보안을 유지하는 가장 좋은 방법은 소스를 항상 최신버젼으로 유지하는 것입니다. 저는 freebsd-security@freebsd.org를 받아보라고 강력하게 권하고 싶습니다. 그곳에서 뭔가 취약점이 발견되어 수정사항이 생길 때마다 여러분은 cvsup을 실행하여 소스를 업데이트 하고 make buildworld와 make installworld을 사용할수 있습니다. 이 과정을 이번 단원에서 설명하겠습니다.

2.2 CVSup

"CVSup은 네트워크를 통해 여러 화일들을 배포하고 업데이트하는 소프트웨어 패키지입니다. 이것은 소스, 바이너리, 하드 링크, 심볼릭 링크, 심지어 디바이스 노드 등 모든 종류의 화일들을 효율적이고 정확하게 미러링 합니다. CVSup은 지속적인 통신 프로토콜과 멀티스래드 구조로 요즘 나온 tool 중 아마도 가장 빠는 미러링 tool일 겁니다. 또한 일반적 의미의 미러링 tool 이기도 하지만 CVSup은 특히 CVS repositories에 잘 맞도록 짜여졌고 최적화되어 있습니다." (/usr/ports/net/cvsup/pkg-descr 인용) 다시 말하면 CVSup은 메인 FreeBSD 소스코드 데이타베이스에 연결하여 여러분의 소스화일들을 업데이트합니다. 만일 포트 콜렉션이 설치되어 있다면 cd /usr/ports/net/cvsup;make install 라고 치면 CVSup을 설치할수 있습니다. 이렇게 하면 CVSup을 download, patch, compile, install 할 수 있습니다. (필자 주석: CVSup의 설치는 디스크 공간과 리소스를 많이 필요로 합니다. - 여러분이 cvsup을 단지 소스와 포트트리 업데이트를 위해서만 사용한다면 cvsup-bin port인, /usr/ports/net/cvsup-bin을 사용하는 편이 더 쉽습니다.) 여러분은 이제 "supfile"을 만들어야 하는데 그래야 cvsup이 어떤 화일들을 다운로드하고 어디에 그것들을 가져다 놓을지 알수 있습니다. 여기 cvsup supfile의 예가 있습니다.:

*default host=cvsup2.ca.freebsd.org
*default base=/usr
*default prefix=/usr
*default release=cvs
*default delete use-rel-suffix
*default compress
*default tag=RELENG_4
src-all
ports-all tag=.

위의 코드는 /usr/ports 와 /usr/src을 FreeBSD 4.x의 가장 최신 버젼 소스 화일로 업데이트 할 것입니다. 이 화일을 "supfile"이라 한다면 root 자격으로 cvsup supfile이라는 명령을 수행시키면 소스를 업그레이드 할수 있습니다. 이미 cvsup이 설치되어 있다면 /usr/share/examples/cvsup 에서 supfile의 예제를 찾아 볼수 있습니다. FressBSD 업데이트를 위해 cvsup의 완벽한 셋팅 가이드를 원한다면 FreeBSD 핸드북의 CVSUP 섹션을 찾아 보시기 바랍니다. (http//www.freebsd.org/handbook/cvsup.html).

2.3 컴파일과 인스톨

일단 새 소스코드를 얻었다면 여러분은 그것으로 무언가를 해 보려고 할 것입니다. 여기서는 make buildworld 와 make installworld이 동작하는 것을 알아볼것 입니다. make buildworld은 모든 소스를 조립하도록 하고 make installworld은 새롭게 컴파일된 운영시스템을 인스톨합니다. 두가지 명령 모두 /usr/src에 있습니다.(아니면 여러분이 지정한 소스파일 위치에) 여러분은 시스템을 업데이트 하기 전에 시스템 혹은 적어도 중요한 화일들은 백업해 놓는 것이 좋습니다. 뭔가 잘못되진 않겠지만 그래도 걱정하느니 안전한 게 더 낫습니다. 또한 싱글 유저 모드로 인스톨하는 것이 더 안전하고 빠릅니다. 싱글 유저 모드로 나오려면 root 권한으로 shutdown now 라고 치면 됩니다. 싱글 유저 모드에선 네트워킹이 불가능하므로 싱글 유저 모드를 사용하려면 자신의 콘솔을 사용해야 합니다.
컴파일 전에 여러분은 기존의 오브젝트 화일들을 삭제해야 합니다. 루트 권한으로 cd /usr/obj;chflags -R noschg *;rm -rf *라고 치면 삭제되는데 이 명령은 /usr/obj 밑의 모든 것을 삭제합니다. 이제 여러분은 여러분의 운영시스템을 재 컴파일 할 준비가 다 되었습니다. 컴파일 하려면 root 권한으로 cd /usr/src;make buildworld라는 명령을 실행시킵니다. 일단 에러 없이 완료되면 역시 root 권한으로 cd /usr/src;make installworld라는 명령을 실행시킵니다. 이것 역시 성공적으로 끝나면 여러분의 운영시스템은 업데이트 된 것입니다. 더욱 자세한 것은 FreeBSD 핸드북을 찾아 보시기 바랍니다. (http://www.freebsd.org/handbook/makeworld.html).
make installworld를 실행한 후에 kernel을 다시 컴파일 해 주는 것이 좋습니다. 그렇게 하지 않으면 어떤 tool들은(ps 와 top 같은) 제대로 동작하지 않을 수 있습니다. 여러분이 GENERIC kernel을 사용한다면(무얼 사용하는지 모른다면 아마도 GENERIC kernel 일 겁니다.) root 권한으로 cd /usr/src; make buildkernel KERNEL=GENERIC; make installkernel KERNEL=GENERIC 을 실행시키면 kernel은 재 컴파일 됩니다. 이제 리부팅하세요; 이제 여러분의 운영시스템은 업데이트 되었습니다.!

Chapter 3. Firewall 사용하기

3.1 IPFW 소개

FreeBSD은 kernel firewall인 IPFW에 적합합니다. IPFW은 kernel을 구성하는 패킷 필터링과 어카운팅 시스템입니다. IPFW는 두 부분으로 나뉘는데 패킷 필터링부분과 라우터의 사용처를 추적 가능하게 하는 어카운팅 시스템 부분입니다. 우리는 패킷 필터링 부분만 보도록 합시다.
IPFW을 사용하기 위해 우리는 두가지 새로운 옵션으로 kernel을 재 컴파일 해야 합니다. 아직 custom kernel을 만들어 보지 않았다면 다음 섹션을 읽어 보시고 이미 custom kernel을 만들어 사용한다면 다음 섹션은 그냥 지나쳐도 좋습니다.

3.2 Kernel 고치기

전에 한번도 kernel을 고치지 않았다면 지금 GENERIC이 실행되고 있을 것입니다. GENERIC은 FreeBSD의 기본 config 화일입니다. 모든 kernel config 화일들은 /sys/i386/conf에 있습니다. GENERIC을 여러분이 만들 kernel 이름으로 복사한 후 편집합니다.
여기 ipfw를 지원하도록 수정된 kernel을 생성시키는 빠른 방법을 소개합니다.

# cd /usr/src/sys/i386/conf
# cp GENERIC KERNEL_NAME
# echo "options IPFIREWALL" >> KERNEL_NAME
# echo "options IPFIREWALL_VERBOSE" >> KERNEL_NAME
# echo "options IPFIREWALL_VERBOSE_LIMIT=200" >> KERNEL_NAME
# echo "options IPFIREWALL_DEFAULT_TO_ACCEPT" >> KERNEL_NAME(주의 : 기본적으로 모든 패킷을 받길 원한다면 위의 문장을 포함시켜야 합니다.)
# cd /usr/src
# make buildkernel KERNEL=KERNEL_NAME
# make installkernel KERNEL=KERNEL_NAME

위의 명령들은 GENERIC을 여러분이 만들 kernel 이름으로 복사하고 firewall 옵션들을 추가하고 컴파일해서 새 kernel을 인스톨합니다. 새로운 kernel의 config 화일을 주의깊게 읽어 보시기 바랍니다. 커널 수정에 관한 자세한 사항은 FreeBSD 핸드북을 보시기 바랍니다. (http://www.freebsd.org/handbook/kernelconfig.html).

3.3 Firewall 셋팅하기

여러분이 일단 firewall의 규칙과 동작에 관하여 익숙해지고 나면 아마도 여러분은 IPFIREWALL_DEFAULT_TO_ACCEPT 옵션을 사용하지 않을 것입니다. 모든 걸 여러분 방식대로 하고 싶어 할테니까요.

3.4 IPFW 사용하기

IPFW은 처음에는 아주 복잡해 보이지만 점점 더 쉬워집니다. 컴퓨터가 부팅될 때 /etc/rc.firewall에 있는 firewall 규칙들이 동작하게 하려면 /etc/rc.conf에 firewall_enable=YES을 추가하면 됩니다. 또한 logging이 가능하게 하려면 firewall_logging_enable="YES"를 추가하고 부팅시 규칙들이 세팅되고 있는 동안 firewall을 그대로 두려면 firewall_quiet="YES"을 추가합니다. 이제 /etc/rc.firewall을 열어 이런 문장이 있는 곳을 찾습니다.:

# Everything else is denied by default, unless the
# IPFIREWALL_DEFAULT_TO_ACCEPT option is set in your kernel
# config file.

여러분은 바로 위의 예제처럼 rc.firewall에 규칙들을 추가하면 됩니다. IPFW를 위한 구문은 ipfw [-N] command [index] action [log] protocol addresses [options] 입니다.
 규칙을 추가하려면 {$fwcmd}로 시작해야 하는데 이것은 ipfw와 같은 말로 rc.firewall에서 사용됩니다. command에는 만일 우리가 규칙을 추가한다면 add 라고 칩니다. action에는 패킷을 드롭시키고 패킷이 드롭된 소스 주소를 icmp로 알려주려면 reject를 사용하고 패킷 전달을 허용하려면 allow를, 패킷을 거부하고 소스 주소를 알리지 않으려면 deny를 사용합니다. protocol에는 tcp, udp, icmp 또는 모두 를 사용할수 있습니다. address의 문법은 from source_address [port,[port-port]] to destination_address [port,[port-port]] 입니다. 어드레스에 호스트네임이나 ip 를 쓰지 않고 any을 사용해도 됩니다. 아래의 예제는 보안을 염려하는 사람이나 서버를 운영하지 않는 사람에게 추천할 만 합니다.

# ipfw add deny tcp from any to localhost 1-1024 setup

(위 의 문장은 1-1024 포트로 들어오는 모든 트래픽을 차단할수 있는데 여러분이 제공하는 서비스를 누군가 사용하는 걸 원하지 않는다면 이렇게 하는 것이 좋습니다. 단 이렇게 되면 현 시스템이 외부세계와 접속이 불가능하다는 것을 알아야 합니다.)

# ipfw add deny tcp from any to localhost 6000-6063

(위의 문장은 X 윈도우를 이용하여 외부로 나가는 트래픽을 차단합니다.)
위의 예제들은 기초적인 몇가지 일 뿐입니다. 적절한 firewall 셋업은 여러분의 보안성을 높여주지만 그렇다고 결코 뚫을 수 없는 무적은 아닙니다. IPFW에 대해서 더 많은 정보를 원한다면 FreeBSD 핸드북을 보시기 바랍니다.(http://www.freebsd.org/handbook/firewalls.html).


Chapter 4. Services

4.1 INETD

Inetd는 telnet, ftp, sendmail 등을 포함하여 여러가지 시스템 서비스를 구동시키는 데몬입니다. inetd의 configuration 화일은 /etc/inetd.conf 인데 이 화일안에는 아래와 같이 엔트리를 가지고 있습니다.:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
telnet stream tcp nowait root /usr/libexec/telnetd telnetd
#shell stream tcp nowait root /usr/libexec/rshd rshd

가장 중요한 규칙은 원하지 않는 문장 앞에는 '#' 표시가 있다는 겁니다. 만일 어떠한 서비스도 원하지 않을 경우에는 보안성을 높이기 위해 inetd_enable="YES"을 inetd_enable="NO"로 바꾸어 줍니다. 컴퓨터에서 단지 shell 만을 원할 때는 inetd를 오프시키고 /usr/ports/security에서 ssh2를 설치하는 편이 낫습니다.
여러분이 telnetd만 사용하기로 했다면 몇가지 flag를 추가시켜야 하는데 그 중 두가지는 -h와 -U입 니다. -h는 사용자들이 완전히 로그인할때 까지 호스트의 특정 인폼을 보지 못하도록 하는 것이고 -U는 호스트네임으로 전환되지 않는 ip들을 막아줍니다.

telnet stream tcp nowait root /usr/libexec/telnetd telnetd -h -U

ftp 문장을 보면 -l 옵션이 붙은것을 알수 있습니다. 이 옵션은 logging이 가능토록 하는 것인데 ftp가 syslogd에 로그인 가능해야만 합니다. 이렇게 하려면 아래의 문장을 /etc/syslog.conf 에 추가해야 합니다. :

ftp.* /var/log/ftpd

ftpd의 추가적인 logging을 위해 -l을 추가 할수도 있습니다.

4.2 Standalone 데몬

여러분은 INETD를 사용하는 것 보다 대신 standalone daemon을 실행하는 것이 낫습니다.
 /etc/rc.conf의 아래 문장을 수정해서 INETD를 사용하지 않도록 할 수 있습니다.

inetd_enable="YES"

이렇게 바꾸세요.

inetd_enable="NO"

INETD 는 다음 리부팅 할때 부터는 동작하지 않을 것입니다. 지금 바로 동작하지 않게 하려면 이렇게 하면 됩니다.:

killall inetd

이제 rc.network의 아랫부분에 daemons을 추가해 보기로 하겠습니다. 제가 INETD 대신 standalone daemon을 실행시키라고 강조했던 프로그램이 바로 ssh2 입니다. standalone을 실행시키면 훨씬 빨라집니다.

Chapter 5. DES와 MD5

5.1 비밀번호 암호화

4.2-RELEASE 이전에 FreeBSD는 기본 시스템 패스워드 암호화 기법으로 DES를 사용했습니다. 현재는 MD5가 기본입니다. FreeBSD는 DES에 대한 US 수출법의 규제 때문에 MD5로 바꾸게 되었습니다. MD5는 DES 보다 더욱 보안성이 좋다고 여겨졌기 때문에 MD5로 바꿔 사용하는 것에 별 손해는 없습니다. DES is there strictly for backward compatibility.
여러분이 사용하고 있는 패스워드 형태는 쉽게 알수 있습니다. 한 예로 /etc/master.passwd file을 보면 MD5 패스워드는 $1$로 시작하고 그 문장이 DES보다 길다는 것을 알수 있습니다.
여러분의 시스템이 사용하는 패스워드 형태를 알려면 아래와 같이 해서 libcrypt*가 가리키는 곳을 보십시요.

ls -l /usr/lib/libcrypt*

심볼릭 링크가 libdescrypt*을 가리킨다면 여러분은 DES를 사용하는 것이고 libmd5crypt*를 가리킨다면 MD5를 사용하는 것입니다.

DES를 사용하는 시스템 예제

          bash# ls -l /usr/lib/libcrypt*

          lrwxr-xr-x  1 root  wheel       13 Dec  6 22:18 /usr/lib/libcrypt.a -> libdescrypt.a

          lrwxr-xr-x  1 root  wheel       14 Dec  6 22:18 /usr/lib/libcrypt.so -> libdescrypt.so

          lrwxr-xr-x  1 root  wheel       16 Dec  6 22:18 /usr/lib/libcrypt.so.2 -> libdescrypt.so.2

          lrwxr-xr-x  1 root  wheel       15 Dec  6 22:18 /usr/lib/libcrypt_p.a -> libdescrypt_p.a

          -r--r--r--  1 root  wheel  1259976 Dec  6 22:38 /usr/lib/libcrypto.a

          lrwxr-xr-x  1 root  wheel       14 Dec  6 22:38 /usr/lib/libcrypto.so -> libcrypto.so.1

          -r--r--r--  1 root  wheel   782240 Dec  6 22:38 /usr/lib/libcrypto.so.1

          -r--r--r--  1 root  wheel  1341942 Dec  6 22:38 /usr/lib/libcrypto_p.a

          bash#
         
Chapter 6. 결론

6.1 기억해야 할 규칙들

위의 방법을 따라하면 안전한 FreeBSD를 구축할 수 있습니다. 잊지말아야 할 중요한 사항은 새로운 취약점들이 지속적으로 대두되고 있다는 것입니다. 이 말은 여러분은 항상 최신 소스 코드를 유지해야한다는 말이며 freebsd-security@freebsd.org을 받아보길 진심으로 바랍니다.

기억해야 할 것은 :

소스를 최신 버젼으로 유지하기
불필요한 suid-root 프로그램은 설치하지 않기
firewall 규칙들을 최신으로 유지하기
범용적인 것을 사용하기 - 소스 없는 프로그램은 실행시키지 않기

6.2 참고자료
FreeBSD Handbook

FreeBSD]FreeBSD + rdesktop + windows 2003 사용하기


rdesktop 을 사용해보겠사옵니다.

어쩔수없이 윈도를 사용해야할 경우 윈도서버에 접속해서 사용하는 방법이며 윈도서버 한대가 여유있는 분만 해당되겠사오나, wine 등의 에뮬보다는 훨빠른 것으로 알고 있기에 초강추이옵나이다.

1. Windows 2003 서버쪽 세팅

사운드를 듣기위해서 2003 서버쪽에서 해주어야 할일이 있나이다.

시작->관리도구->터미널서비스구성->연결에서 rdp-tcp 연결되있는 클라이언트를 우측마우스키로 누르시면 속성->클라이언트설정->오디오매핑의 체크를 해제해주면 되옵니다.

2. rdesktop 설치

/usr/ports/net/rdesktop 에서 make install clean 하시면 되오며,,

rdesktop -r sound -K -a 16 -g 1350x950 -u administrator -p xxxxx ip.ip.ip.ip

이렇게 사용하는 정도가 디폴트가 되겠사오며, rdesktop --help 하시면 더 많은 옵션을 참고할수 있사옵니다.

rdesktop 의 세계를 가르쳐주신 자우랑님과 2003 의 세계를 가르쳐주신 JEijuNN님께 감사드리옵나이다.

망극;

2012-09-09

FreeBSD]apache 잔잔한 팁들 모음

출처: Unix.co.kr

브라우징 제거

아파치의 디폴트세팅은 브라우징이 enable되어 있다.
브라우징이란 웹브라우저에서 URL입력시 index.html과 같은 정확한 파일명을
생략하고 디렉토리만 적었을 경우, 디렉토리내 파일목록이 출력되는 현상을 말한다.
http.conf의 디렉토리 디렉티브내 다음줄 추가

Options -Indexes


아파치 인증창 사용

http.conf에서 인증을 걸 디렉토리 디렉티브내 다음줄 추가

AllowOverride AuthConfig


해당 디렉토리에 다음과 같이 .htaccess파일(텍스트파일) 생성
[root@ns mrtg]# cat .htaccess
AuthName "MRTG를 위한 인증"
AuthType Basic
AuthUserFile /webhosting/mrtg/.auth
require valid-user

AuthName: 인증창 타이틀
AuthType: 인증형태
AuthUserFile: 인증자들의 리스트를 가진 파일(htpasswd명령어로 생성)

-c(create)는 처음 파일을 생성할때 필요하다.
[root@ns mrtg]# htpasswd -c .auth kang
New password:
Re-type new password:
Adding password for user kang
[root@ns mrtg]# ls -l .auth
-rw-r--r-- 1 root root 19 May 3 16:54 .auth


외부 IP접근제어

http.conf의 디렉토리 디렉티브내 다음줄 추가

AllowOverride AuthConfig
Order Allow,Deny
Deny from 211.43.134.128/24 xxx.xxx.xxx.xxx/24
Allow from all

Deny from 에 접근차단할 ip대를 입력.
슬 래쉬(/)뒤의 숫자들은 net mask지정(생략하면 single ip에 대한 차단)


위의 내용을 종합한 예는 다음과 같다.


Options -Indexes FollowSymLinks MultiViews

AllowOverride AuthConfig

Order allow,deny
Allow from all
Deny from 211.43.134.128/24 xxx.xxx.xxx.xxx/24




가상호스트 /Redirect

아래의 예는 dbakorea.pe.kr로 오면, www.dbakorea.pe.kr로 redirect시킨다.
본인은 아파치말고, packet filtering으로 처리하려했으나 실력부족과 게으름으로 인해 그만두었다.

ServerName dbakorea.pe.kr
Redirect / http://www.dbakorea.pe.kr


가상호스트의 전형적인예

ServerAdmin kang@dbakorea.pe.kr
DocumentRoot /webhosting/dbakorea-mobile
ServerName mobile.dbakorea.pe.kr
ErrorLog /usr/local/apache/logs/mobile.dbakorea.pe.kr-error_log
CustomLog /usr/local/apache/logs/mobile.dbakorea.pe.kr-access_log common
ScriptAlias /cgi-bin/ /webhosting/dbakorea-mobile/cgi-bin/
DirectoryIndex login.html


아파치 정보출력제어
80포트로 telnet후 get / http/1.0하면 나오는 정보제어

ServerTokens Prod[uctOnly]
: Apache 만 보여줌
ServerTokens Min[imal]
: Apache 버젼만 보여줌
ServerTokens OS
: 아파치 버젼과 운영체제를 보여줌
ServerTokens Full (또는 지시하지 않았을때)
: 모두 보여줌


Offline Browser서비스 거부
(출처: http://www.apache.kr.net)
WebZip만 테스트해봤지만 %{User-agent} 라는 변수에 'MSIE 6.0b'와 같이 찍힌다.
한마디로 안된다. 다른 용도로 사용될 지 몰라도,..

<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Deny from env=go_out
</Directory>

#CustomLog /usr/local/apache/logs/access_log common
#CustomLog /usr/local/apache/logs/referer_log referer
#CustomLog /usr/local/apache/logs/agent_log agent
CustomLog /usr/local/apache/logs/access_log combined

<IfModule mod_setenvif.c>
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "WebZIP" go_out
BrowserMatch "Teleport" go_out
BrowserMatch "GetRight" go_out
BrowserMatch "WebCopier" go_out
</IfModule>

<VirtualHost *>
ServerAdmin kang@dbakorea.pe.kr
DocumentRoot /webhosting/dbakorea
ServerName www.dbakorea.pe.kr
ServerAlias dbakorea.pe.kr
ErrorLog /usr/local/apache/logs/www.dbakorea.pe.kr-error_log
CustomLog /usr/local/apache/logs/www.dbakorea.pe.kr-access_log combined
</VirtualHost>



아파치 로그 rotate

디폴트로 아파치로그는 wtmp, lastlog등과 같이 일정 시간, 크기..등등에 따라 로그의 순환이 이루어지지 않는다.
logrotate로 3개의 로그를 1달단위로 순환하려면 /etc/logrotate.conf파일의 마지막에 다음과 같이 추가한다.

# system-specific logs may be configured here
/usr/local/apache/log/www.dbakorea.pe.kr-access_log {
monthly
rotate 2
}


바이러스등에 대한 아파치로그 제거

# CodeRed Worm등의 로그제거
SetEnvIf Request_URI default\.ida CodeRed
SetEnvIf Referer \.ida CodeRed
SetEnvIf Request_URI cmd\.exe CodeRed
SetEnvIf Referer cmd\.exe CodeRed
SetEnvIf Request_URI root\.exe CodeRed
SetEnvIf Referer root\.exe CodeRed


ServerAdmin kang@dbakorea.pe.kr
DocumentRoot /webhosting/dbakorea
ServerName www.dbakorea.pe.kr
ServerAlias dbakorea.pe.kr
ErrorLog /usr/local/apache/logs/www.dbakorea.pe.kr-error_log
CustomLog /usr/local/apache/logs/www.dbakorea.pe.kr-access_log combined env=!CodeRed