yum install pbzip2
Tuesday, 21 August 2012
Parallel BZIP2
기존 bzip2를 multicore 환경에서 성능을 더 끌어올리기 위해 만들어진 명령으로 링크에서 다운로드를 받거나 Redhat 계열에서는 다음 명령으로 설치 가능하다
생성한 SSH Key를 다른 서버에 쉽게 적용하기
SSH에는 간단한 명령으로 다른 서버의 authorized_keys에 값을 넣어주는 명령어가 존재한다.
root@b.host.com에 id_rsa.pub 값을 전송하는 명령은 다음과 같다.
ssh-copy-id -i ~/.ssh/id_rsa.pub root
@b
.host.com
tmp 디렉토리 보안 강화시키기
많은 해킹이 rootkit을 통하여 시스템의 버그나 헛점을 이용하여 /tmp에 파일을 생성, 공격하는 경우가 많다.
여기서는 이 문제점을 해결하는 방법을 설명한다.
여기서는 이 문제점을 해결하는 방법을 설명한다.
- /tmp 로 쓰이게될 파일(tmpMnt)을 생성
# dd if=/dev/zero of=/.tmpMnt bs=1024 count=100000
tmp에 더 많은 용량을 할당하려면 count의 크기를 늘린다. 예제에서는 100MB를 할당하였다. - 생성된 파일을 ext3 파일 시스템으로 포멧
# /sbin/mke2fs -j /.tmpMnt
- 기존 데이터를 백업
# mkdir /var/tmp_Backup/
# rsync -avP /tmp/* /var/tmp_Backup/
# chmod 1777 /tmp
기존 데이터를 옮기지 않는 이유 /tmp는 여러 프로그램들이 공통으로 사용하는 영역이므로 만일 삭제시 특정 서비스나 프로그램에 문제가 발생할 수 있는 소지가 있음으로 삭제하지 않았음 - tmpMnt 마운트
# mount -o loop,noexec,nosuid,rw /.tmpMnt /tmp
noexec:실행권한 미할당, nosuid:SUID를 사용하지 못하도록 함 - 기존자료를 복구 및 삭제
# rsync -avP /var/tmp_Backup/* /tmp/
# rm -rf /var/tmp_Backup
- fstab 에 추가
# echo "/.tmpMnt /tmp ext3 loop,noexec,nosuid,rw 0 0" >> /etc/fstab
PowerAdmin
Homepage: PowerAdmin
- Install Web Server :
# yum install php php-common php-gd php-mbstring php-mcrypt
- PostgreSQL을 Backend로 쓸때
# yum install php-pgsql php-pear-MDB2-Driver-pgsql
- MySQL을 Backend로 쓸때
# yum install php-mysql php-pear-MDB2-Driver-mysql
EPEL php-mcrypt php-pear-MDB2-Driver-pgsql 패키지는 EPEL Repository가 등록되어 있어야 함
- PostgreSQL을 Backend로 쓸때
- PowerAdmin Download : Link
- Extract files
# tar zxvf poweradmin-
2.1
.
5
.tgz -C /var/www/html/
# cd /var/www/html
# ln -s poweradmin-
2.1
.
5
poweradmin
# chown -R root:root poweradmin*
# cp /var/www/html/poweradmin/inc/config-me.inc.php /var/www/html/poweradmin/inc/config.inc.php
# chcon -R -u system_u -t httpd_sys_content_t poweradmin*
- Install
http://<IP>/poweradmin/install
PowerDNS
PowerDNS는 Authoritative Server와 Recursive Server로 구분하여 제공한다.
- Authoritative Server
Authoritative Server 는 자신이 관리하는 도메인 정보를 관리한다.
만일 DNS 질의가 들어올 경우 자신이 관리하는 도메인 정보일 경우 그 요청에 대한 응답을 제공하며, 그 외의 질의는 응답하지 않는다.
- Recursive Server
Recursive Server는 루트(.) 네임서버의 정보를 통해 각 도메인을 관리하는 DNS 서버들에게 질의하여 해당 호스트의 IP를 알아내는 기능을 한다. 이 때 질의 응답은 당연히 Recursive Server가 하는 것이 아니라 해당 영역의 DNS 서버가 주게 된다.
PowerDNS Authoritative & recursor 서버 설치
- PowerDNS Yum Repository 등록
- PowerDNS 설치
# yum install -y pdns-server
# yum install -y pdns-recursor pdns-recursor-rrd --skip-broken
# yum install -y mysql-server pdns-server-backend-mysql pdns-server-tools
skip-broken PDNS-RECURSOR 설치 시 EPEL 저장소와 pdns-recursor-MIND 저장소가 같은 이름의 패키지를 가지고 있음으로 --skip-broken을 사용하여 에러를 무시하고 pdns-recursor-MIND 저장소 패키지를 설치하도록 하였음
Authoritative Server Configuration
- MySQL Database 설치
# yum install mysql mysql-server -y
# mysql_install_db
# service mysqld start
# mysqladmin -u root password '<암호>'
- PowerDNS Database 설정
- Database 및 User 생성
mysql> CREATE DATABASE powerdns character set utf8;
mysql> GRANT ALL ON powerdns.* TO
'poweradmin'
@
'localhost'
IDENTIFIED BY
'*******'
;
mysql> FLUSH PRIVILEGES;
주의 DNSSEC 활성화시키려 한다면 powerdns 데이터베이스의 Character set을 latin1으로 반드시 설정한다. - Tables 생성
USE powerdns;
create
table
domains (
id
INT
auto_increment,
name
VARCHAR
(255)
NOT
NULL
,
master
VARCHAR
(128)
DEFAULT
NULL
,
last_check
INT
DEFAULT
NULL
,
type
VARCHAR
(6)
NOT
NULL
,
notified_serial
INT
DEFAULT
NULL
,
account
VARCHAR
(40)
DEFAULT
NULL
,
primary
key
(id)
) Engine=InnoDB;
CREATE
UNIQUE
INDEX
name_index
ON
domains(
name
);
CREATE
TABLE
records (
id
INT
auto_increment,
domain_id
INT
DEFAULT
NULL
,
name
VARCHAR
(255)
DEFAULT
NULL
,
type
VARCHAR
(10)
DEFAULT
NULL
,
content
VARCHAR
(255)
DEFAULT
NULL
,
ttl
INT
DEFAULT
NULL
,
prio
INT
DEFAULT
NULL
,
change_date
INT
DEFAULT
NULL
,
primary
key
(id),
CONSTRAINT
`records_ibfk_1`
FOREIGN
KEY
(`domain_id`)
REFERENCES
`domains`
(`id`)
ON
DELETE
CASCADE
)Engine=InnoDB;
CREATE
INDEX
rec_name_index
ON
records(
name
);
CREATE
INDEX
nametype_index
ON
records(
name
,type);
CREATE
INDEX
domain_id
ON
records(domain_id);
create
table
supermasters (
ip
VARCHAR
(25)
NOT
NULL
,
nameserver
VARCHAR
(255)
NOT
NULL
,
account
VARCHAR
(40)
DEFAULT
NULL
) Engine=InnoDB;
GRANT
SELECT
ON
supermasters
TO
pdns;
GRANT
ALL
ON
domains
TO
pdns;
GRANT
ALL
ON
records
TO
pdns;
- DNSSEC
create
table
domainmetadata (
id
INT
auto_increment ,
domain_id
INT
NOT
NULL
,
kind
VARCHAR
(16),
content TEXT ,
primary
key
(id )
);
create
table
cryptokeys (
id
INT
auto_increment ,
domain_id
INT
NOT
NULL
,
flags
INT
NOT
NULL
,
active BOOL ,
content TEXT ,
primary
key
(id )
);
alter
table
records
add
ordername
VARCHAR
(255);
alter
table
records
add
auth bool ;
create
index
orderindex
on
records(ordername);
create
table
tsigkeys (
id
INT
auto_increment ,
name
VARCHAR
(255),
algorithm
VARCHAR
(255),
secret
VARCHAR
(255),
primary
key
(id )
);
create
unique
index
namealgoindex
on
tsigkeys (
name
, algorithm );
alter
table
records change
column
type type
VARCHAR
(10);
- Database 및 User 생성
- PowerDNS Authoritative Server 설정 파일 수정
# vi /etc/powerdns/pdns.conf
# Daemon Settings daemon=yes guardian=yes local-address=<서버 IP> # Recursor Settings lazy-recursion=yes recursor=127.0.0.1 # MySQL Backend Setting launch=gmysql gmysql-host=127.0.0.1 gmysql-port=3306 gmysql-dbname=powerdns gmysql-user=poweradmin gmysql-password=<암호>
Recursor Server Configuration
- PowerDNS Recursor Server 설정 파일 수정
# vi /etc/pdns-recursor/recursor.conf
# Daemon Settings allow-from=127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, ::1/128, fe80::/10 local-address=127.0.0.1 quiet=yes
PowerDNS 서비스 등록 및 실행
# chkconfig pdns on # chkconfig pdns-recursor on # service pdns start # service pdns-recursor start |
PowerDNS 기타 설정
- Webserver
PowerDNS는 현재 서비스 상태를 볼 수 있도록 웹 UI를 제공한다. 기본적으로 127.0.0.1 주소로만 개방되어있으며 암호가 Plain Text 방식이므로 보안에 취약할 수 있으므로 가급적 사용을 자제한다.
다음은 서버의 모든 IP에 서비스를 Binding 시키는 예제이다.# vi /etc/pdns/pdns.conf
webserver webserver-address=0.0.0.0 webserver-password=<암호>
기본적으로 8081 포트로 서비스가 Binding되어있다. - Logging
# vi /etc/pdns/pdns.conf
logging-facility=0
# vi /etc/rsyslog.conf
# Save PowerDNS messages also to pdns.info, pdns.warn, pdns.err local0.info -/var/log/pdns/pdns.info local0.warn -/var/log/pdns/pdns.warn local0.err /var/log/pdns/pdns.err
# service rsyslog restart
- Security
PowerDNS의 보안성을 강화시키기 위해 chroot 옵션을 설정한다.chroot=/var/spool/powerdns
# mkdir /var/spool/powerdns
# chown powerdns:powerdns /var/spool/powerdns
- Webserver
Subscribe to:
Posts (Atom)