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.comtmp 디렉토리 보안 강화시키기
많은 해킹이 rootkit을 통하여 시스템의 버그나 헛점을 이용하여 /tmp에 파일을 생성, 공격하는 경우가 많다.
여기서는 이 문제점을 해결하는 방법을 설명한다.
여기서는 이 문제점을 해결하는 방법을 설명한다.
- /tmp 로 쓰이게될 파일(tmpMnt)을 생성
# dd if=/dev/zero of=/.tmpMnt bs=1024 count=100000tmp에 더 많은 용량을 할당하려면 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 /tmpnoexec:실행권한 미할당, 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-mysqlEPEL 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.5poweradmin# 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-toolsskip-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;createtabledomains (idINTauto_increment,nameVARCHAR(255)NOTNULL,masterVARCHAR(128)DEFAULTNULL,last_checkINTDEFAULTNULL,typeVARCHAR(6)NOTNULL,notified_serialINTDEFAULTNULL,accountVARCHAR(40)DEFAULTNULL,primarykey(id)) Engine=InnoDB;CREATEUNIQUEINDEXname_indexONdomains(name);CREATETABLErecords (idINTauto_increment,domain_idINTDEFAULTNULL,nameVARCHAR(255)DEFAULTNULL,typeVARCHAR(10)DEFAULTNULL,contentVARCHAR(255)DEFAULTNULL,ttlINTDEFAULTNULL,prioINTDEFAULTNULL,change_dateINTDEFAULTNULL,primarykey(id),CONSTRAINT`records_ibfk_1`FOREIGNKEY(`domain_id`)REFERENCES`domains`(`id`)ONDELETECASCADE)Engine=InnoDB;CREATEINDEXrec_name_indexONrecords(name);CREATEINDEXnametype_indexONrecords(name,type);CREATEINDEXdomain_idONrecords(domain_id);createtablesupermasters (ipVARCHAR(25)NOTNULL,nameserverVARCHAR(255)NOTNULL,accountVARCHAR(40)DEFAULTNULL) Engine=InnoDB;GRANTSELECTONsupermastersTOpdns;GRANTALLONdomainsTOpdns;GRANTALLONrecordsTOpdns; - DNSSEC
createtabledomainmetadata (idINTauto_increment ,domain_idINTNOTNULL,kindVARCHAR(16),content TEXT ,primarykey(id ));createtablecryptokeys (idINTauto_increment ,domain_idINTNOTNULL,flagsINTNOTNULL,active BOOL ,content TEXT ,primarykey(id ));altertablerecordsaddordernameVARCHAR(255);altertablerecordsaddauth bool ;createindexorderindexonrecords(ordername);createtabletsigkeys (idINTauto_increment ,nameVARCHAR(255),algorithmVARCHAR(255),secretVARCHAR(255),primarykey(id ));createuniqueindexnamealgoindexontsigkeys (name, algorithm );altertablerecords changecolumntype typeVARCHAR(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.confwebserver webserver-address=0.0.0.0 webserver-password=<암호>
기본적으로 8081 포트로 서비스가 Binding되어있다. - Logging
# vi /etc/pdns/pdns.conflogging-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:
Comments (Atom)