리눅스 설치후 초기 보안셋팅

1. 서버구축시에는 반드시 별도의 파티션과, 별도의 백업디스크를 둔다.
이 백업디스크에 일백업및 실시간 백업이 이루어 지도록 구성한다.

backup.sh 파일작성및 crontab에 설정적용함.

### crontab 파일내용(기본)
00 00 * * * su - root /usr/bin/rdate -s time.bora.net && /sbin/clock -w
00 01 * * * su - root -c \'/home/papa/backup.sh\' >& /dev/null
00 08 * * * su - root -c \'/home/papa/system_check\' >
/home/papa/www/system_check/system_check_logs

### backup.sh 내용(기본)
#!/bin/bash
cd /backup
rm -f *.tar.gz
tar cvfpz /backup/usr.local.tar.gz /usr/local/
tar cvfpz /backup/home.tar.gz /home
tar cvfpz /backup/etc.tar.gz /etc
tar cvfpz /backup/var.tar.gz /var

2. 시스템디스크와 데이터디스크를 구분하여 구축한다.

예 sda : / 시스템(운영체제가 설치되는)디스크
sdb : /home : 데이터디스크
sdc : /usr : Mysql, Apache등의 Applications 저장 디스크
sdd : /backup : 백업 디스크

3. /etc/xinetd.d/ 불필요한 파일들 제거

4. /etc/rc.d/init.d/ 불필요한 초기화 스크립트 제거

5. /etc/services 파일의 사용하지 않는 포트정보 주석처리

6. tcp_wrapper의 효율적인 활용을 위한 /etc/hosts.allow, /etc/hosts.deny 파일 설정

/etc/hosts.allow의 권장내용

popper : ALL
sendmail : ALL

7. proftpd 설치시에 Anonymous로그인 불허설정.(주석처리)
** RPM시에는 /etc/proftpd/conf/proftpd.conf 파일에 설정
** 컴파일시에는 /usr/local/proftpd/etc/proftpd.conf 파일에 설정

관리자 ID외의 상위 디렉토리 이동제한설정

예1)
DefaultRoot ~ !papa

예2)
DefaultRoot ~ !ds5ezp,!papa

8. ssh의 root원격로그인 설정제거
sshd가 설치되어 있지않을 경우나 망가져있을 경우에는 ssh관련 파일들을 rpm으로 설치하거나 compile하여
설치한다.
rpm으로 설치하였을 경우에는 /etc/rc.d/init.d/sshd start를 해줘야만 local key파일들이 /etc/sshd에 생성된
다.

/etc/ssh/sshd_config파일내의 (redhat 7.3에서는 기본설정되어 있음(주석처리되어 있다는 의미)
PermitRootLogin no

9. su 명령어의 사용제한설정

chmod 4750 /bin/su
/etc/group내의 wheel그룹에 관리자계정 등록(예 : wheel:x:10:root,papa)
chown root:wheel /bin/su

10. logserver 설정 : 필요할 경우에.....
/etc/hosts 에는 logserver의 호스트정보 등록
/etc/syslog.conf 에는 로그를 원격로그서버에 저장할 대상 설정

작업서버에서의 syslog 재시작(/etc/rc.d/init.d/syslog restart)
로그서버(su21)에서의 syslogd재시작(/sbin/syslogd -h -r)

11. secu_script로 파일보안을 위한 파일퍼미션 설정

12. /etc/rc.d/rc.local내에 시스템 시작시 실행할 초기화 스크립트 설정

/usr/local/apache/bin/apachectl start
/usr/local/mysql/bin/safe_mysqld&
/usr/local/proftpd/sbin/proftpd

### Time Server Setting
/usr/bin/rdate -s time.bora.net
/sbin/clock -w

13. timeserver 설정

방법#1 cron에 설정 (매일 한번씩 맞춤)
00 01 * * * su - root /usr/bin/rdate -s time.bora.net && /sbin/clock -w

time server 설정시 크론의 내용을 확인하여 작동이 되지않을 경우에는 /etc/services 내의 time관련 서비스 항
목의 주석제거할것....

방법#2 부팅시마다 적용하기 위해 /etc/rc.d/rc.local에 설정

### Time Server Setting
/usr/bin/rdate -s time.bora.net
/sbin/clock -w

14. cron에 local 백업설정 (가능한 새벽 04:00)

15. cron에 시스템 점검 실행 설정 system_check (가능한 아침 08:00)

16. 불필요한 process 제거

17. ntsysv 에서 초기 실행할 서비스데몬 내리기

18. 로그인정보수정 및 리눅스버전정보 숨기기

/etc/motd
/etc/issue
/etc/issue.net
/etc/redhat-release

############################ 경고 ################################

지금 접속하신 귀하의 정보들은 이미 다른 서버로 원격저장 되었습니다.

불필요한 접속을 하셨다면 지금 로그아웃 하십시요.

허용되지않은 불법적인 접속으로 인한 모든 법적인 책임은 접속자에게

있습니다.

------------------------- for login user -------------------------

It will be punished for illegal login to this system.

It is saved for login information in another system.

####################################################################


19. root소유의 SetUID, SetGID 명령어 퍼미션수정및 불피요한 것일 경우에 삭제
찾는 방법 : find / -user root -perm -4000 -print

20. systemfiles들 로컬복구를 위한 별도저장
저장위치 : /backup/systemfiles/

21. chkrootkit 설치및 실행결과 확인

22. 시스템 performance및 hacking보안을 위한 kernel option값 설정
(리스트 작성하여 적어둘것....)

23. 마지막에는 tripwire 설치 및 초기화 설정

24. 커널옵션값 설정 (/etc/sysctl.conf 수정)

/etc/sysctl.conf 파일에 아래 설정들을 복사하여 넣어두면

########## 커널옵션 튜닝값들 ################
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 180
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1280
net.ipv4.tcp_sack = 0
net.ipv4.tcp_window_scaling = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.ip_local_port_range = 32768 61000
net.ipv4.ip_forward = 0
vm.bdflush = 100 1200 128 512 15 5000 500 1884 2
vm.buffermem = 80 10 60
kernel.sysrq = 1

##선택사항
net.ipv4.icmp_echo_ignore_all = 0
fs.file-max = 32768
### RAM 256M :8192
########## 커널옵션 튜닝값들 ################



직접명령어를 사용할 경우에 다음과 같은 명령어로 커널값설정한다.
주의) 오른쪽의 값이 두개이상되는 것들은 입력이 안됨.(방법찾아볼것)

#!/bin/bash

sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_keepalive_time=180
sysctl -w net.ipv4.tcp_timestamps=0
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=1280
sysctl -w net.ipv4.tcp_sack=0
sysctl -w net.ipv4.tcp_window_scaling=0
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.conf.all.log_martians=1
sysctl -w net.ipv4.conf.all.accept_source_route=0
sysctl -w net.ipv4.ip_forward=0
sysctl -w kernel.sysrq=1
sysctl -w net.ipv4.icmp_echo_ignore_all=0
sysctl -w fs.file-max=16384
########################################################

25. httpd.conf 파일 수정

-- Options 항목에 Indexes 모두 제거

--- 아래행 추가
## *.inc 파일을 웹에서 불러들이지 못하는 설정
## 수퍼유저코리아 박성수(papa@superuser.co.kr)
## 2003년 5월 30일

Order allow,deny
Deny from all


--- 아래행 추가
## *.log 파일을 웹에서 불러들이지 못하는 설정
## 수퍼유저코리아 박성수(papa@superuser.co.kr)
## 2003년 5월 30일

Order allow,deny
Deny from all


26. 아파치 cgi 실행옵션제거

Options 부분에서 ExecCGI 제거 고려할 것.
AddHandler cgi-script .cgi 주석제거

27. 서버설치 직후에 모든 파일시스템의 badblock을 점검한다.

- mount 를 해서 파티션의 정보를 확인한다.
- badblocks -v -o 파티션명.txt 파티션명
(예 badblocks -v -o sda1.txt /dev/sda1
- 시간이 많이 걸리므로 shell 파일을 만들어서 작업한다.
(예 badblocks.sh)
#!/bin/bash
badblocks -v -o sda1.txt /dev/sda1
badblocks -v -o sda2.txt /dev/sda2
badblocks -v -o sda3.txt /dev/sda3

작업이 끝난 후에 배드블럭이 존재하는 디스크는 반드시 교체한다.

28. httpd.conf파일을 이용하여 기본적인 아파치웹서버보안을 설정한다.

- Options 지시자중 Indexes를 제거한다.

- Options 지시자중 FollowSymLinks를 제거한다. : 심블릭링크파일의 설정을 허용하지 않는다.
예)/home/sspark09/www/linkfile 이라는 파일이 ln -s /home/sspark/09/www/linkfile /etc/passwd라는 링크
파일일 경우에 웹에서 linkfile을 로딩했을 경우에 /etc/passwd의 파일내용을 볼 수 있다. SymFollowLinks라는
지시자가 없을 경우에는 이런 링크파일의 사용을 웹에서는 허용하지 않는다.

- Options 지시자중 IncludesNoExec옵션을 추가한다. 이는 SSI의실행 태그중 exec나 cmd를 실행하지 못하게
한다.

- CGI는 특정 디렉토리에서만 실행가능하도록 설정한다. 게시판등에서 cgi실행파일을 웹서버에 올려두고서 이
를 실행하게 되면 시스템의 정보가 쉽게 유출이 될 수 있다. 이를 막기 위하여 다음 예와 같은 설정으로 특정 디
렉토리에서만 cgi가 실행가능하도록 한다.
ScriptAlias /cgi-bin/ \"//usr/local/apache/cgi-bin/\"

- ServerTokens는 Apache서버에 접속했을 경우에 응답메시지의 헤더에 웹서버 버전, 설치된 응용프로그램등
과 같은 정보를 전달한다. 이 정보들은 공격자들에게는 웹서버의 버전정보등을 유출함으로서 서버해킹을 용이
하게 하는 문제를 야기할 수 있다. ServerTokens Full 이라고 되어 있다면 제거하고 ServerTokens Prod로 추가
또는 수정한다. 기본적으로 ServerTokens키워드는 Apache 1.3이상에서 사용가능하며 일반적으로는
httpd.conf에 설정이 되어있지않다. 설정되어 있지 않을 경우에는 Full의 적용을 받게 되므로 전달가능한 모든
정보를 전달한다. 이를 ServerTokens Prod를 추가또는 수정함으로서 정보유출을 막을 수 있다.

- 웹서버 구동중에 문제나 에러발생시(401, 403, 404등)에 보여줄 에러페이지를 redirect하여 원하는 페이지를
보여줄 수 있도록 한다. (광고나 홍보들을 위한 수단으로 사용한다.)
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2005/05/28 11:02 2005/05/28 11:02
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/249

HOW-TO Network 네트워크 ip 랜

HOW-TO Network Configuratoin

이번 강좌에서는 시스템의 네트워크 설정 파일인 /etc/sysconfig/network,
/etc/sysconfig/network-scripts/ifcfg-eth0, /etc/resolv.conf, /etc/hosts 파일들에 대해서 설명할 것이
다. 대부분의 네트워크 설정은 netcfg 유틸을 이용하면 손쉽게 설정할 수 있기 때문에 이 파일들을 직접 수
정해서 사용할 일은 극히 드물겠지만 한번쯤 읽어 보는 것도 좋은 공부가 될 것이라고 생각한다.

::/etc/sysconfig/network
# 호스트 네임과 게이트웨이등을 설정하는 파일이다.
NETWORKING=yes
# 네트워크 기능을 on 할것인지 off 할것인지 설정한다. 당연히 yes로 설정해야 되겠지요.
HOSTNAME=ns1.rootman.org
# 호스트 네임을 설정한다. 반드시 완벽한 도메인으로 설정해야 된다. 리눅스 서버 데몬중에는 이 호스트
네임을 참조해서
# 작동되는 것들이 있기 때문에 잘못된 호스트 네임 설정으로 인해 데몬이 정상 작동하지 않을 수 있다. 예
를 들면 아파치
# 데몬은 호스트 네임이 잘못 설정되어 있을 경우 start 되지 않는다.
GATEWAYDEV=eth0
# 게이트 웨이 장치를 설정하는 부분이다. 대부분의 경우 eth0, 즉 첫번째 랜카드를 설정해서 사용할 것이
다.
GATEWAY=203.241.205.254
# 게이트 웨이 주소를 설정하는 부분이다.
# /etc/syscofnig/network 파일을 수정한 후 받드시 network를 restart 시켜 줘야 된다.
[root@rootman root]# /etc/init.d/network restart

:: /etc/sysconfig/network-scripts/ifcfg-eth0(ifcfg = Interface Config)
# network interface 장치에 대한 설정을 하는 파일이다. 위의 경우는 eth0 즉 첫번째 랜카드에 대한 설정
파일이다.
# 랜카드가 두개인 시스템에서는 ifcfg-eth1도 편집해야 되겠지요. 그리고 루프백 장치인 ifcfg-lo는 기본
적으로 설정되어
# 있기 때문에 특별히 편집해야 될 일이 없다.
DEVICE=eth0
# 인터페이스 장치명을 설정하는 부분이다. 일반적으로 첫번째 랜카드는 eth0, 두번재 랜카드는 eth1로 설
정된다.
BOOTPROTO=none
#
BROADCAST=203.241.205.255
# 브로드 캐스터 주소를 적는 부분이다.
IPADDR=203.241.205.91
# IP 주소를 설정하는 부분이다.
NETMASK=255.255.255.0
# 넷 마스크값을 설정한다.
NETWORK=203.241.205.0
# 네트워크 주소를 설정한다.
ONBOOT=yes
# 부팅시에 인터페이스 장치를 활성화
# /etc/syscofnig/network 파일을 수정한 후 받드시 network를 restart 시켜 줘야 된다.
[root@rootman root]# /etc/init.d/network restart

::/etc/resolv.conf
사용할 DNS 서버 주소를 설정하는 파일이다. 자체적으로 네임서버를 운영할 경우에는 루프백 주소인
127.0.0.1을 설정해도 되는만 ISP에서 제공하는 DNS 서버를 이용하는 것이 시스템 리소스를 조금이라도 절
약할 수 있을 것이다.
루트맨의 웹서버도 ISP의 DNS를 이용하고 있다.
# /etc/resolv.conf
search rootman.org
nameserver 134.75.30.1
nameserver 203.241.192.9

위의 설정 중에서 \'nameserver\'로 설정된 부분은 사용할 DNS 서버 주소이고 \'search\'라는 특이한 설정이 있
는데 이 설정에 특정 도메인을 설정해 두면 DNS 서버에 질의할 때 \'search\'에 설정된 도메인을 덧붙여서 먼
저 찾게 된다. 예를 들면 위의 설정에는 \'rootman.org\'가 설정되어 있는데 만약 telnet linux 라고 명령하
면 linux 뒤에 \'search\'에 설정된 도메인을 덧 붙여서 linux.rootman.org를 먼저 DNS에 검색하게 된다. 즉
타이핑의 수고를 줄일 수 있게 한다. 만약 search에 .com 을 설정한다면 웹 브라우저에서 redhat만 입력하
고 엔터를 치면 redhat.com에 접속된다. search를 어떻게 설정하느냐에 따라 아주 유용하게 사용할 수 있을
것이다.

::/etc/hosts
이 파일은 자체 forward zone 파일이라고 생각해도 된다. 이 파일에 특정 아이피에 대해 호스트 네임을 설
정하고 닉 네임을 설정해서 사용하면 되는데 다음의 설정예를 보면서 이해하도록 하자.
# /etc/hosts
203.241.205.97 rootman.co.kr rootman
203.241.205.91 telnet

첫번째 필드에 IP 주소를 설정하고 두번째 필드에는 호스트 네임을 설정하는데 본인 마음대로 설정하면 된
다. 세번째 필드는 호스트 네임에 대한 닉네임을 설정하는 부분인데 설정 안해도 된다. 이 설정에서 중요한
것은 IP 주소이다. 특정 아이피에 대해 마음대로 호스트 네임을 정하고 닉네임을 붙일 수 있다. 위의 경우
IP 주소 203.241.205.91의 호스트 네임을 telnet 이라고 설정했기 때문에 웹 브라우저에서 telnet 이라고
적고 엔터를 치면 IP 주소 203.241.205.91의 웹 사이트가 열리게 된다. 위와 같이 /etc/hosts를 설정하면
telnet이라는 호스트 네임에 대해 IP 주소 203.241.205.91로 해석하게 된다.
이런 설정은 회사내, 또는 학교내에서 여러 아이피를 외우고 있기가 불편할 때 사용하면 아주 편리하다.
예를 들어 IP를 203.241.205.95를 friend 라고 설정하면 friend라는 호스트 네임을 이용해서
203.241.205.95에 접근할 수 있게 된다. 또 203.241.205.94를 yahoo.com으로 설정하면 이 시스템에서만큼은
yahoo.com을 IP 주소 203.241.205.94로 인식하게 된다. 잘만 이용하면 여러모로 편리할 것이다.
그런데 이런것이 어떻게 성립이 되는지 궁금할 것이다. 바로 그 답은 /etc/host.conf 파일에 있다.
일반적으로 /etc/host.conf 파일을 열어 보면 다음과 같이 설정 되어 있을 것이다.
# /etc/host.conf
order hosts,bind

위의 설정이 의미하는 것은 도메인에 대해 질의할 때 hosts 파일을 먼저 참고하고 답을 찾지 못하면 bind
즉 DNS에 질의하라는 의미이다. 그렇기 때문에 우리가 특정 아이피를 /etc/hosts에 yahoo.com으로 등록시켜
놓으면 yahoo.com이라는 호스트 네임은 그 아이피를 가리키게 되는 것이다. 시스템에서 hosts 파일부터 참
고 하기 때문에...
위의 순서를 변경할 수도 있는데 그냥 그대로 두고 사용하는 것을 추천하는 바이다....
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2005/05/28 10:59 2005/05/28 10:59
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/248

1등과 2등의 차이

1. 올림픽 100미터 경기
올림픽 100미터 경기에서 우승과 2등은
불과 0.01초의 차이밖에 나지 않지만,
그 0.01초의 차이가
한 사람을 영웅으로 만들고
한 사람은 기억조차 나지 않게 만든다.

이처럼 1등과 2등의 차이는 엄청나다.
기업에서 같은 물건을 만들더라도
세계적인 명품을 만드는 일류 회사와
그저 평범한 수준의 물건밖에 만들지 못하는
이류 회사 사이에는
엄청난 차이가 존재한다는 것을 의미한다.
- 이건희 삼성그룹 회장

2. 야구와 수익률
타율이 0.250인 타자는 12번에 3번의 안타를 치고
타율이 0.333인 선수는 12번에 4번을 친다.
따라서 타율이 0.333인 선수는
0.250인 선수보다 매 12번당
1번 정도 더 안타를 치는 셈이다.
이 같은 차이는 별로 중요하지 않은 것 같아 보인다.

그러나 타율 .250인 타자의 연봉은
17만 5,000달러인 반면
0.333인 타자의 연봉은 150만 달러이다.

-이성용, ‘트랜스포매이션 경영’에서
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2005/05/28 09:31 2005/05/28 09:31
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/1244

앞장 설 테니 뒤따라 오게

\"너도 괴롭겠지만
보지 않을 수 없을걸세.
어쩌면 좀 잔인한 것 같지만
내가 지나온 길을 자네를 동반하고
또다시 지나지 않으면 고갈한 내 심정을
조금이라도 적실 수 없을 것 같네.
내가 앞장을 설 테니 뒤따라 오게.\"


- 조영래의 <전태일 평전> 중에서 -


* 세월이 흘러서 우리가 살아가는 사회가
변하는 것이 아닙니다. 사회가 변할 수 있도록
많은 사람들이 애쓰는 동안 단지 세월이 흘러갔을
뿐입니다. 누구도 생각하지 못한 험난한 길을
걸어오신 분들이 계시기에 우리는 어제보다
나은 오늘을 살아갈 수 있는 것입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2005/05/28 09:30 2005/05/28 09:30
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/960


블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2005/05   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Statistics Graph

Site Stats

Total hits:
241695
Today:
225
Yesterday:
1266