Chapter 1. 안녕 리눅스 3 \/ CentOS 7.2 차이점
1. 안녕 리눅스의 특징
사용자 환경(X windows 환경)을 제거하고 compact 한 서버 전용 배포본
Enterprise 환경에서 검증된 배포본
2. 운영 고도화
콘솔 한글 출력 지원 (jfbterm)
IP 기반 GEO system 지원
iptables xt_geoip
libkrisp
cvs usermap 기능 지원으로 공용 repository 운영 고도화
IDN 지원 (bind, ssh client, whois 등등)
rsyslog mysql backend에서 mysql unix domain socket 사용 가능
tcping, tcptraceroute 등 ICMP 제한된 네트워크 탐지를 위해 기본 제공
vim
PHP native manual 지원(shift + K)
vim folder 기능 개선
checksyntax 플러그인 추가
legacy 호환 패키지 지원
Oracle JVM 환경 지원
3. 보안 고도화
chroot 환경 강화 (pam chroot 모듈 개선)
account action 추적 시스템
su, sudo 시에 SU_USER 환경 변수에 origianl account 유지
history에 SU_USER 반영
PHP
PHP shell injection 원천 방지 (exec_dir)
파일 업로드시, image header에 injection code 존재 여부 탐지
exec_dir과 open_basedir을 이용하여 remote 접근 환경 제한 가능
기본적으로 .php 확장자만 php compile이 가능하도록 제한
bind chroot 환경을 default로 변경
1일 1회 yum update 기본 작동 (yum-cron: RHEL/CentOS는 기본으로 동작 안함)
4. 서비스 고도화
HTTP/2 protocol 지원 (ALPN 지원)
http > 2.4.18 mod_http2 (안녕 기본 지원)
nginx 1.9 http2 module
RHEL 7과 CentOS 7의 openssl 1.0.1e는 ALPN을 지원하지 않아 HTTP/2 지원을 못하지만, 안녕 3에서는 1.0.2의 ALPN 기능을 backporting 하여 지원 가능
PHP 고도화
PHP 7 support
PHP 5.6 compatible package 지원 (php56-fpm)
PHP 5.3 compatible mode 지원
PHP 7.1 compatible package 지원 (php71-fpm)
realpath_cache_force 지원 (file system 탐색 성능 향상)
open_basedir 사용시에 30% 정도 성능 향상
ZEND VM을 GOTO mode로 빌드하여 기본 CALL type VM보다 20% 성능 향상
Mariadb 10.1 업데이트
5. 차이점 일람
차이점 일람은 RHEL/CentOS 사용자가 안녕 리눅스로 전환할 때, 고려해야 할 점이나, 달라진 점을 정리 합니다.
5.1 OS banner
안녕 리눅스의 /etc/centos-release와 /etc/redhat-release는 수정되지 않기 때문에, 각종 application의 OS detect 시에 CentOS 7 또는 RHEL 7로 인식이 되어집니다. 이 의미는 그만큼 호환이 가능하다는 의미입니다. 안녕 리눅스 배너는 /etc/annyung-release와 /etc/system-release, /etc/system-release-cpe 에 적용이 되어 있으므로, 안녕 리눅스를 detect 하기 위해서는 이 파일들을 체크 해야 합니다.
5.2 방화벽
5.2.1 방화벽 프로그램
안녕 리눅스는 RHEL/CentOS 7의 firewalld 대신 oops-firewall 을 사용합니다. oops-firewall은 직관적이고 관리가 쉬우며, iptables를 잘 이해하고 있는 경우에는 직접 rule set을 조정할 수도 있습니다.
oops-firewll 대신 firewalld를 사용하고 싶다면, 다음 명령으로 가능 합니다.
oops-firewall은 1999년 부터 개발이 되어온 iptables frontend 방화벽 관리자로서, 15년 이상 enterprise 환경에서 검증이 된 서버 방화벽 프로그램 입니다.
/etc/oops-firewall/filter.conf에서 서비스에 대한 설정을 할 수 있으며, 설치시에는 기본으로 22번 ssh port만 open 되어 있습니다.
oops-firewall은 기본적으로 /etc/oops-firewall 에 있는 설정 파일을 파싱하여 iptables ruleset을 생성하며, cmd 상에서 oops-firewall 이라는 명령어를 실행하면 모든 rule set을 초기화 한 후에 새로운 rule set을 작성하기 때문에 복잡한 실행 옵션 같은 것이 없습니다.
방화벽을 내리고 싶을 경우에는 다음의 systemd를 이용할 수 있습니다.
oops-firewall에 대한 자세한 사항은 http://oops.org/?t=lecture&sb=firewall&n=2 문서를 참고 하십시오.
5.2.2 iptables + GeoIP 연동
안녕 리눅스는 기본적으로 iptables와 GeoIP가 연동이 되어 있어 국가별 rule set을 사용할 수 있습니다. RHEL/CentOS 7에서 iptables 와 GeoIP 연동을 원한다면, 안녕 리눅스 3 repository에서 다음 패키지를 다운로드 받아서 업데이트 하면 사용할 수 있습니다.
kmod-geoip
iptables
또는 oops-firewall 에서는 /etc/oops-firewall/user.conf 에서 사용 가능
5.3 Yum
5.3.1 AnNyung LInux repository
안녕 리눅스 repository 설정은 /etc/yum.repos.d/AnNyung.repo 에 있습니다. 안녕 리눅스 repository 중 Base repository는 RHEL/CentOS의 패키지를 수정한 다음, Epoch를 올려서 RHEL/CentOS 원래의 패키지가 다시 원복되지 않도록 하고 있습니다. 안녕 리눅스 repository의 업데이트 상황은 http://annyung.oops.org/?m=update&p=3 에서 확인할 수 있으며, RSS를 제공하고 있습니다.
5.3.2 Package 업데이트
안녕 리눅스는 처음 설치 시에 CentOS/RHEL과는 달리 yum-cron 패키지가 기본으로 설치가 됩니다. 이 의미는 1일 1회 패키지 체크를 통하여 패키지 업데이트를 자동 실행 한다는 의미입니다.
만약, 패키지 업데이트를 원하지 않는다면, 정말 권장하지는 않지만 다음의 명령으로 중지할 수 있습니다.
특정 package만 업데이트를 원하지 않을 경우에는 yum 설정 파일에서 exclude 옵션을 이용하여 설정 할 수 있습니다.
yum 전체 설정에 반영할 경우 (/etc/yum.conf)
특정 repository 에 반영할 경우
5.3.3 X 기능 제거
안녕 리눅스는 서버 전용 배포본을 추구합니다. 그렇기 일부 패키지에서 X 기능이 제거된 경우가 있습니다. 이 패키지들은 안녕 리눅스의 Xless repository에서 관리 되고 있습니다. 만약 서버에 Oracle을 설치해야 하는 경우에는 Oracle installer가 X windows 환경을 요구하므로, Xless repository를 disable 한 후에 X 관련 패키지를 설치해 주어야 합니다.
Xless repository의 패키지들은 안녕 리눅스 처음 설치시에 기본으로 설치되지 않습니다.
5.4 계정 정책
5.4.1 root login
기본적으로 root login 제한
사설(private) IP에서는 interactive root shell 접근 가능
"
ssh root@host.com
" 접근 제한"
ssh root@host.com 'ls -al'
" 가능
/root/.bashrc 에서 설정 변경 가능. rootfiles 패키지 일람 참조.
5.4.2 account policy 변경
ISMS 권고 사항 반영.
암호 최소 길이 8자
암호 생성 시, 대문자/소문자/숫자/특수문자 중 3개가 포함이 되어야 함
이전 4개의 암호를 기억
5회 로그인 실패 시, 120초간 계정 잠금
암호 만료 90일(3개월).
/etc/login.defs.exception 에 암호 만료 예외 account 설정
5.4 Shell
5.4.1 한국어 출력
jfbterm* 패키지가 기본 설치 되어 있어, local console에서 한글 출력이 기본으로 가능. (현재 입력은 버그가 있어 안됨).
5.4.2 shell 추적
USER_LANG 환경 변수를 가지고 있을 경우, ssh 접속시에나 sudo 전환 시에 LANG 환경 변수를 USER_LANG 환경변수를 이용하여 상속.
시스템 환경 변수 LANG=ko_KR.UTF-8 일 경우
putty에 USER_LANG="ko_KR.eucKR" 환경 변수 설정
putty로 로그인시, LANG 변수 값은 ko_KR.eucKR이 됨.
이 상태에서 sudo를 했을 경우에도, ko_KR.eucKR이 유지됨.
shell time out 이 600초로 기본 설정 됨.
sudo를 이용하여 account 전환을 했을 경우, 전환된 계정의 history에 원래의 user 기록.
5.5 CentOS/RHEL 7과 비호환 사항
httpd, php, bind 의 경우는 RHEL/CentOS와 호환되지 않습니다. 설정 파일의 구성 등이 다르기 때문에 이 3개의 패키지의 경우에는 기존의 설정 파일을 사용할 수 없고, 처음 부터 설정을 다시 하여야 합니다.
httpd, php의 경우에는 3. Web Control문서를 참고 하십시오. fastcgi를 이용하여 php56 또는 php71을 사용할 수 있습니다.
bind의 경우에는 기본으로 chroot기능으로 packaging 되어 있으므로, /var/named 에 모든 설정이 들어가게 됩니다. /etc/named 는 설정 호환을 위하여 soft link로 지원이 됩니다.
6. 기타
위의 특징들 외에 많은 변경 사항이 있으며, 이에 대해서는 "안녕 리눅스 3 패키지 일람"을 참조 하십시오.
Last updated