WARNING: Reducing active logical volume to 1.17 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol03? [y/n]: y Reducing logical volume LogVol03 to 1.17 GB
Logical volume LogVol03 successfully resized
이번에는 ssh애기를 해보려 합니다
학과 서버를 centos로 마이그레이션 하면서 vsftpd로 ftp 그리고 ssh와 80을 열어놨습니다
사이트 와 서버 구성중에는 80포트만 열어놓고 테스트 페이지만 띄워 놓았다가
구축 및 구성이 완료후 ssh 를 열었는데 2-3일이 지나고 매일 4시에 로그를 분석해서
리포트를 해주는 logwatch 가 보내온 메일을 보고 깜짝 놀랄수 밖에 없었습니다
ftp는 물론이고 ssh로 Bruth force공격(무작위 사전 아이디 대입공격)을 시도한
흔적을 보았습나다 ip대는 대부분이 외국이었고 새벽시간때 엄청나게 많은
시도를 보았습니다 root는 물론 ssh 및 ftp접속이 않되도록 해놨지만
생각지도 못한 oracle 계정이나 몇개의 계정에도 대입을 한걸보고 뜨끔하드라구요
있을만한 아이디로 엄청나게 시도가 있었습니다 서버 오픈 초기라
대응되는 아이디가 거의 없었지만(있어도 패스워드를 맞추려면 시간이더 걸림)
무신경하게 보았던 logwatch 가 보내준 리포트를 찬찬히 살펴보니 그날만이
아닌 그전날도 그전날도 계속 공격의 흔적이 있어서 부랴부랴
저만의 보안 룰 레벨(?)을 올려보기로 했습니다
denyhosts 외 ssh 관련 옵션에 대해서 말씀드리겠습니다
일단 /etc/ssh/sshd_config 을 열어서 몇가지를 살펴보죠
#Protocol 2,1
=> Protocol 2
ssh 1 과 2 중 2.0만 사용하겠다는 것입니다 이것이 좋죠
#LoginGraceTime 2m
=>LoginGraceTime 60
해석을 해보면 "로그인은혜시간" 정도가 되겠는되요
주석을 풀고 60을 써주면 60초 만 허용을 해주겠다라는데...암튼 짧은 시간일수록
좋다는것만이 머리속에 남네요;;;
#PermitRootLogin yes
=>PermitRootLogin no
root 계정의 접속을 허용치 않겠다 라는 것입니다 yes는 접속허용한다는것임으로
no 로 해주세요
주석에는 없지만 쓸수있는 옵션으로
AllowGroups
AllowUsers
DenyGoups
DenyUsers
가 있습니다 저같은경우 유저들을 특정 그룹하나로 묶고
예를들어 AAA 라면
AllowGroups AAA
이런식과
DenyGroups root
으로 구성해놔서 AAA그룹으로 생성해논 일반계정만 접속이 가능
하고 그외 시스템 계정 및 DB유저계정으로는 접속하지못하였고
더욱불안해 위에서 root 로그인 거부로 처리해놨지만서도
DenyGroups 에 root 그룹 도 넣어버린 무식한짓을 해놨드랬죠..
말은 길지만 하고자 하는건 루트로그인 거부와
AllowGroups를 이용하여 실제사용하는 유저들만 접속가능케 한다는거
이었습니다 ;;;
이제 denyhosts 를 설치해보죠 centos 기준으로 RPM설치로
말씀드리겠습니다
# yum list | grpe denyhosts
로 설치 될수 있는지 보고 없다고 한다면 rpmforge 레파지터리(저장소;;)
를 추가 합니다 rpmforge에 유용한 rpm이 많으니 낭중에라도 유용할것입니다
를 다운받아 설치 합니다 그후
# yum --enablerepo=rpmforge install denyhosts
하면 설치 됩니다
rpmforge가 등록되어있다면 바로 yum으로 퉁쳐서 설치 하시면 되구요
설치후 /usr/share/doc/denyhosts-버전/ 으로 이동후
cp demon-control-dist demon-control
cp denyhosts.cfg-dist denyhosts.cfg
로 복사 작업 2개 해주시고요 (인터넷보고 따라한건데 왜한건지..)
chmod 700 demon-control 로 권한 변경 해주시고요
이제 본격적인 설정을 파일을 열어보죠
# vi /etc/denyhosts/denyhosts.cfg
SECURE_LOG = /var/log/secure
fedora와 centos ,rhel 은 보안관련 로그는 secure에 저장되니
다른 맞게 되어있는지 확인
그밑에 주석되어있는부분보면 BSD, mandrake등에 맞는 설정이있지만
주석되어있다는거 눈여겨만 보고 내려가면
HOSTS_DENY = /etc/hosts.deny
라고 기본이 되어있는데 이렇게 되어있다면 공격이 감지되면
바로 hosts.deny 에 기록되며
/etc/hosts.block 이런식으로 기록해주고
/etc/hosts.deny 파일에 ALL: /etc/hosts.block
기술해주면 denyhosts가 적용시킨 아이피들을 따로 관리가능합니다
만 전귀찮아서 그냥 hosts.deny 사용 했습니다
PURGE_DENY =
위의 주석에 보면 예문이 많이 나오는데 대충보면
deny된 아이피들을 다시 놓아줄 기간을 설정하라는
것인것(?) 같은데 저는 괘씸해서 reset시키지 않으려
시스템없앨때까지 ip를 가지고 있겠다라는 심정으로 공백으로
나뒀습니다 (사실어케해야할지모르는것도..)
BLOCK_SERVICE =
ssh를 할지 vsftpd를 할지를 결정하는것인데요
전 ALL 로 햇습니다
DENY_THRESHOLD_INVALID =
몇번 로그인실패시 차단시킬 한계점을 정하라는건데요
전 3으로 했습니다
This value applies to invalid user login attempts
라고 위에 써있네요 해석하면
"이 값은 유효하지 않은 사용자가 로그인 시도에 적용"
라고 써있고 밑에는 non-existent user accounts
라고 되어있는데요
등록되지않은 유효하지 않은 아이디로 로그인 시도시 몇번까지
봐줄거냐 정도로 되겟죠 그걸 전 3 로 해준거구요
DENY_THRESHOLD_VALID =
이건 user accounts that exist in /etc/passwd 라고 써잇는데여
존재 하는 유저로 로그인 시도시 실패는 몇번까지 허용할거냐
라고 물어보는 옵션이겟죠 이것은 저같은경우 5 로 해주었습니다
DENY_THRESHOLD_ROOT =
root유저 의 접속 실패 한계횟수를 물어보는것이겟죠
전 2로 해줬는데요 1 이나 0으로 할가 생각중입니다 고민중이죠..
ADMIN_EMAIL =
불법 침입 시도를 감지하여 deny시켰을시 받을 메일을 적으라는데요 root@localhost 라고 해주면 root가 받을수있습니다
물론 sendmail 로 동작해야 겠죠
참고로 메일온건 mail 이라고 치면 볼수있고
다른 유저에서 su 로 루트로그인한상태라면
centos ,fedora계열에서는 mail -u root 하면 볼수있고 su - 로 루트로그인이면
그냥 mail 하면 볼수 있습니다
DAEMON_LOG =
denyhosts 의 로그를 기록할 위치및 파일명을 기술해면 됩니다
나머지 옵션들도 많이있는데 구글해석이 참 아리송해
기본값으로 나둬놓고 사용하고있습니다 몇분마다 로그를 수집하는지를
설정하는부분이 있는듯한데 확실치 않아
저같은경우 crontab 에 5분마다 denyhosts 를 재시작해주고 있습니다
*/05 * * * *
저장하고 나와서리 service denyhosts restart 나 start로
데몬시작 해주면 언뜻 어느곳에서 대충본기억으론 10분마다
로그를 수집한다고 들었는데 암튼 낭중에 보면
알아서 hosts.deny 등에 차곡차곡 거부ip를 등록해놓고 있을것입니다
ssh를 열어놓고 있으면 무자비한 대입공격이 들어오는데
최소한으로 공격을 막을수있을듯 합니다
가장좋은건 불필요한 계정(test계정)등은 생성치않고
1회성(설치에 필요한 유저 ex)oracle유저)등은
작업완료후 passwd -l 로 계정을 잠궈놓고
비밀번호는 최대한 길게 설정하고
logwatch 등을 이용하여 일주일에 1-2번이라도 로그를 잘살펴보시고
iptables 나 hosts등에 등록 및 관리가 가장좋을듯 합니다
이문서는 아파치와 톰켓이 연동되어있는 상태에서 유저별 단독톰켓을 구성하는 것을 알려드립니다
abc 라는 유저가 있다고 했을 때 abc유저의 홈디렉토리가 /home/abc라고 할 때
바이너리 형태의 톰켓을 다운받아 abc유저 디렉토리에서 압축을 풀고 세팅을 합니다
위치는 /home/abc/tomcat 으로 합니다(톰켓디렉토리명은 상관없음)
해당유저로 작업 하셔도 되고 root로 작업후 chown –R 유저명:그룹명 /tomcat 으로
소유권을 변경하셔도 됩니다
**변경**
변경된 부분이 있어서 수정합니다 환경변수를 부분인데요
총 3가지로 생각해 볼수있습니다
1. 실행하려는 유저의 .bashrc 나 .bash_profile 에
CATALINA_HOME , CATALINA_BASE, TOMCAT_HOME
을등록하는것이고
2. catalina.sh 파일을 열어서 환경변수잡아놓은 값을 받는
부분에서 직접 절대경로로 입력하는방법 (노가다;;)
3. catalina.sh 을 열어서 직접 1번과같은 패스를 잡아주는
것입니다 필자가 한 방법은 3번입니다
/etc/profile 에 시스템 환경변수로 잡아놓는것을 건들지않으면서
좋은듯 합니다
띄우려는 톰켓 디렉토리의 bin 에 있는 catalina.sh 열어서
포스트글 기준으로하면 /home/abc/tomcat/bin/catalina.sh
이겟죠
export CATALINA_HOME=/home/abc/tomcat
export TOMCAT_HOME=/home/abc/tomcat
export CATALINA_BASE=/home/abc/tomcat
이런식으로 기술해주는것이죠 JAVA_HOME 은 /etc/profile에
전역적으로 잡혀있다면 그대로 물려쓰면 되니 기술하지않고
/etc/profile에 기록되어있지않다면
export JAVA_HOME=/위치
로 기록해주면 됩니다
이렇게 위치잡아놓고 밑의 세팅후 올리면 catalina.sh에 써놓은대로
올라가는것을 볼수있습니다 물론 env하면 환경변수상 변경은 없구요
1. /home/abc/tomcat/conf/server.xml 을 열어서 수정을 합니다
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
대표적인 리눅스 운영체제(OS) 개발기업인 레드햇이 시내버스 광고까지 동원해 서브스크립션(Subscription) 가입자 확보에 총력을 기울이고 있다.
한국레드햇(대표 김근)은 서브스크립션 가입자 확보를 위해 최근 `레드햇 고객을 위한 안전보장 캠페인'을 시작했다.
서브스크립션은 기존의 라이선스 모델과 대별되는 개념으로, 요금을 내고 통상 1년인 계약기간 동안 추가비용 없이 최신 버전 SW와 유지보수 서비스 등을 받는 것이다.
레드햇은 안전보장 캠페인의 일환으로 이 달 초부터 서울 시내 8개 노선의 버스에 `리눅스 보험 드셨습니까?'라는 카피를 내건 광고를 시작했다. 회사측은 다음달 7개 노선을 추가해 광고 버스 노선을 15개까지 확대할 계획이다. 또 서브스크립션 블로그를 개설하고, 가입을 권유하는 동영상, 스티커,브로셔 등 각종 자료를 배포하고 있으며, 전용 전화(핫라인)까지 개설했다.
레드햇이 이례적으로 버스 광고까지 동원해 서브스크립션 가입자 확대에 힘을 쏟는 것은 다른 나라에 비해 가입자 비율이 턱없이 낮기 때문이다.
레드햇에 따르면, 일본이나 호주의 경우 서브스크립션 재계약 비율이 50% 정도인데, 한국은 8~9% 수준에 머물고 있다. 한국레드햇 박유나 차장은 "서브스크립션 가입률을 높이기 위해 컨설팅을 받은 결과, 고객들에게 더 쉽게 다가가야 한다고 판단해 이름을 `안전보장 프로그램'으로 바꾸고 버스 광고 등 다양한 방법을 시행하고 있다"며 "이번 캠페인을 통해 서브스크립션 재계약 비율을 두 배 늘리는 것이 목표"라고 말했다
댓글을 달아 주세요