2012. 2. 8. 11:11

리눅스 설치시 처리해야 되는 작업


1. 원격 SSH로 ROOT 원격접속 금지
/etc/ssh/sshd_config
PermitRootLogin no

2. YUM 사용시 가장 빠른 미러사이트로 연결해주는 플러그인 설치
- 네트웍으로 충분히 빠른 미러로 설치했을 경우 안하는게 나음

Cent OS 4.X 
yum install yum-plugin-fastestmirror -y

Cent OS 5.X
yum install yum-fastestmirror -y

3. 최신 RPM으로 업데이트
yum -y update

4. 포트열기
/etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 포트번호 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m multiport --dport  포트,포트,포트  -j ACCEPT

4-1. 80포트는 접속트래킹 제외
/etc/sysconfig/iptables  
# *fileter 위에 추가 해줌 
*raw
-A PREROUTING -p tcp --dport 80 -j NOTRACK
-A OUTPUT -p tcp --sport 80 -j NOTRACK
COMMIT
# 80포트는 상태 옵션을 빼고 설정함 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 


5. VSFTPD 상위 이동 막기, anonymous 막기, 버젼노출 막기,시스템 시간 사용
/etc/vsftpd/vsftpd.conf
chroot_local_user=YES
anonymous_enable=NO
ftpd_banner=접속시 출력 메세지
use_localtime=YES
write_enable=YES

6. SSH 특정 아이피만 접속 가능하게 하기
tcp wrapper 만으로는 불안함 iptable 로 바꿈
/etc/hosts.deny

sshd : ALL
/etc/hosts.allow
sshd : 아이피 : ALLOW -> 아이피 형식은 특정대역을 원하면 222.222.222. 까지만 입력하면 뒷쪽 대역 포함됨

 
/etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -s 
허용할IP  -m tcp --dport 포트번호 -j ACCEPT  
아이피는 192.168.0.100 과 같은 단독 IP 및  192.168.0.0/24 과 CLASS로 설정가능

-A INPUT -p tcp -m state --state NEW -s  허용할IP -m multiport --dport 20,21,22 -j ACCEPT
위 같이 여러개 포트로도 설정가능  

-A INPUT -p all -m iprange --src-range 113.120.0.0-113.127.255.255 -j DROP
아이피 대역으로 차단시

7. ROOT로 오는 메일을 다른 계정으로 가도록 변경
/etc/aliases
root: 계정명 #root로 오는 메일이 전부 지정한 계정으로 감

8. Cron 데몬이 root로 메일 보내는거 막기
/etc/crontab
MAILTO=root -> MAILTO="" 로 변경
service crond restart #크론탭 재시작

9. Logwatch가 발송하는 메일 변경(필요없으면 안해도..)
/etc/cron.daily/0logwatch -> /usr/share/logwatch/scripts/logwatch.pl
$Config{'mailto'} = "root"; -> 사용하는 계정이나 메일로 바꿈

10. php mail 함수 사용시 헤더에 정의된 return-path 적용하기
/etc/php.ini -> rpm 설치시 경로
sendmail_path = /usr/sbin/sendmail -t -i -ba -> -ba 추가

11. SSH 한글설정
/etc/sysconfig/i18n -> 수정
<<EUC-KR로 접속시 : 시스템상 환경파일등이 UTF-8로 저장되므로 UTF-8설정을 추천함>>
LANG="ko_KR.eucKR" 
SUPPORTED="en_US.iso885915:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"
<<UTF-8로 접속시>> 
LANG="ko_KR.UTF-8" 
SUPPORTED="en_US.iso885915:en_US:en:ko_KR.UTF-8:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"
않될경우 아래 패키지도 설치 
yum install kde-i18n-Korean
yum install fonts-korean

12. 아파치 access_log에 불필요 기록 안남기기
/etc/httpd/conf/httpd.conf -> 수정(yum 설치시)
SetEnvIfNoCase Request_URI "\.(gif|jpg|png|js|css|swf)$" do_not_log
CustomLog logs/access.log combined env=!do_not_log

13. fail2ban 모듈 설치
http://wyseburn.tistory.com/175 

14. 시간동기화
00 03 * * * rdate -s zero.bora.net | hwclock -w >& /dev/null
크론에 추가, 시간 및 time서버는 다른걸로 바꿔도 무관함 

15. 사용자 계정 기본 디렉토리 생성
mkdir /etc/skel/public_html

16. 관리자용 파일 퍼미션 변경
chmod 100 /usr/bin/top
chmod 100 /usr/bin/pstree
chmod 100 /usr/bin/w
chmod 100 /bin/ps
chmod 100 /usr/bin/who
chmod 100 /usr/bin/find
chmod 100 /bin/df
chmod 100 /bin/netstat
chmod 100 /sbin/ifconfig
chmod 100 /usr/sbin/lsof
chmod 100 /usr/bin/make
chmod 100 /usr/bin/gcc
chmod 100 /usr/bin/g++
chmod 100 /usr/bin/c++
chmod 100 /usr/bin/perl 
chmod 100 /usr/bin/python

17. APM소스 설치 시 서비스로 등록
http://wyseburn.tistory.com/231 


18. /etc/security/limits.conf 내용변경

Centos 6.x 버젼부터 기본으로 max user processes 수가 1024로 제한됩니다.
그래서 사용자 프로세서들의 수가 1024가 되면 mysqld, httpd 등에 따로 프로세스의 수가 정의되 있다고 하더라도 더 이상 늘어나지 않게됩니다.

/etc/security/limits.conf 파일을 열어 아래와 같이 허용할 사용자 프로세스의 수를 적어 준후에 리부팅합니다.
열어줄 갯수는 서버의 가용리소스 등을 염두해서 갯수를 지정합니다. 아니면 unlimited 라고 해두면 커널에서 허용한 최대갯수까지 늘어나므로 
unlimited 로 해도 됨 

(주의 : nofile 을 unlimited 로 할경우 PAM쪽에 문제가 생겨서 접속 안되니 unlimited 로 하지 말것)

그리고 open file 갯수가 기본으로 1024로 되있어서 프로세스가 늘어나도 해당 프로세서가 파일을 사용해야 한다면(DB나 HTTP) 문제가 발생하니 open file 갯수도 늘려줘야 함

*    -    nproc    unlimited
*    -    nofile    409600

관련 명령 : ulimit 

19. file descriptor 허용 갯수 변경

Too many open file... 과 같은 에러가 난다면 더 늘려주자.
nofile 와도 연관이 있는데 fd 의 갯수를 nofile보다 크게 잡아줘야 한다. (기본으로 더 크게 되있음)

nofiles 에 갯수를 조정할때 참고 하면 된다.

확인 : 
# sysctl -a | grep file

file-max 는 허용된 file descriptor 갯수
file-nr 은 현재 열려진 file descriptor 갯수이다.

변경 : 
# vi /etc/sysctl.conf
fs.file-max = 500000

적용 :
#sysctl -p