2016. 6. 22. 22:36ㆍ개발/리눅스
// 개인적으로 운영하던 홈페이지에 쓴 글을 블로그로 이전 & 살짝 수정. 뒤에 추가 작업한 것도 있지만 이 글에는 안 적음.
phps.kr(스쿨호스팅)에 가상서버 우분투 12.04, 보안, apm설치(rpm) 로 신청 후 여기 저기 찾아보며 적용했던 내용을 기록했던 글입니다.
1. 설치된 파일 항목 다운
dpkg --get-selections | grep -v deinstall > deinstall.txt
2. lynx 설치 (apt-get install lynx)
- mod_status 확인 ssh에서 $ lynx http://localhost/server-status
- http://webdir.tistory.com/212 참고
3. 디렉토리 리스팅 막기
- /etc/apache2/sites-available/default 파일에서 Indexs 삭제
4. vsftp 설정
local_root=/home 추가 (ftp 접속시 사용자가 home폴더 위로 이동못하게)
anonymous_enable=NO => 기본 yes 로 되어 있어서 no로 변경
local_enable=YES => 주석해제
write_enable=YES => 주석해제
local_umask=022 => 022로 변경(폴더업로드 권한 777-022 = 755)
file_open_mode=0644 => 파일업로드시,생성시 권한
chroot_local_user=YES => 주석해제
5. 사용자계정 생성
adduser 사용자명
=> /home/사용자명 으로 폴더가 생성됨
6. mysql db 생성
mysql> use mysql;
mysql> create database 계정이름;
mysql> Grant ALL ON 계정이름 TO 계정이름@localhost IDENTIFIED BY \r\n\'비밀번호\';mysql> insert into db values('%','생성할디비이름','계정이름','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');-> y컬럼 갯수확인은 desc db; 로 확인가능. Y옵션이 19개였음
mysql> Grant ALL privileges ON 계정이름(db명).* TO 계정이름@localhost IDENTIFIED BY '비밀번호';
mysql> flush privileges;
7. 홈폴더 수정 - 기본 /var/www 로 되어 있음.
/etc/apache2/site-available/default 파일에 /var/www 를 /home/사용자계정/www 로 변경 후
/etc/init.d/apache2 restart 아파치 재시작 후 웹브라우저에서 확인
* 사용자 추가 시 /etc/apache2/site-available/default 파일에 DocumentRoot /home/userid 추가
8. ufw 설정
ufw enable
ufw default deny
ufw allow 80
ufw allow 22
ufw allow 21
* 특정 아이피 차단 시
ufw deny from 111.111.111.111
설정 확인 : ufw status
9. 사용자 계정용 서브도메인 설정
vim /etc/site-avs~~/default
<VirtualHost *:80>
ServerName xx.example.com
DocumentRoot /home/username/www
</VirtualHost>
- 저장 후 apache2 재시작 sudo service apache2 restart // or /etc/init.d/apache2 restart
- 해당 홈 폴더에 index.html 등 파일 생성 후 http://xx.example.com 로 접속해서 확인
10. httpd.conf
ErrorDocument 404 \"404 not found\" 추가
ErrorDocument 401, 403, 500 도 추가함
11. ssh 설정
/etc/ssh/sshd_config 파일 수정
PermitRootLogin yes => no 로 변경 : root 아이디 ssh 접근 차단
=> /etc/sudoers 파일에 별도 아이디 추가 해당 아이디로 접속 후 관리권한 필요시 sudo, su 사용
ssh 접속시 home 상위 이동 막아야 됨..
12. syn flloding 관련
cat /proc/sys/net/ipv4/tcp_max_syn_backlog => 기본 512로 되어 있어서 1024로 변경
sysctl -w net.ipv4.tcp_max_syn_backlog=1024
cat /proc/sys/net/ipv4/tcp_syncookies => 1로 되어 있음(내가 바꾼건지 슥훌 기본인지 기억안남)
sysctl -w net.ipv4.tcp_fin_timeout=20 => 기본 60으로 되어 있어서 20초로 변경
추가보안사항은 http://net2free.tistory.com/m/post/245 참고
13. 에러로그 확인
/var/log/apache2/error.log => 루트권한필요
/var/log/access.log 등등 확인 가능
14. fail2ban 설정 - 기본 설치되어 있음
/etc/fail2ban/jail.conf 에서 vsftpd true 변경 등등 수정 후 service fail2ban restart
* 참고링크
- http://ioriy2k.pe.kr/archives/7307 : 보안관련 설정에 대해 잘 정리되어 있음.
##############################################################################
계정 삭제해버림.. 그리고..
삭제하기 전 러시안룰렛 놀이~
실 서버에서는 절대 하지 마세요~ㅎㅎ
Centos 가상서버 세팅한 것도 곧 등록하겠습니다~
'개발 > 리눅스' 카테고리의 다른 글
리눅스 서버 사용자(계정) 생성 + mysql(db) 만들기 (0) | 2010.06.05 |
---|---|
서버설치 - 서버랙 대신 방음재로 소음차단했습니다. (4) | 2010.06.03 |
홈페이지 계정&데이타베이스 백업+복구하기~! (0) | 2010.03.13 |
[서버보안] SYN Flooding(신플루딩) 공격 막기 (3) | 2010.02.23 |
리눅스 시스템 정보 및 상태 알아보기 (2) | 2010.02.20 |