T

ssh 무차별 로그인 공격 막기

안녕하세요 후비고닷컴(http://hubgo.com)의 이진명입니다.

ssh의 무차별 공격을 막기위해 시스템의 로그를 자동분석하여

공격을 막아주는 스크립트를 소개합니다.

2005년 2월 8일에 작성한 스크립트로서 이에 관련해

제가 알기론 뻥좀보태서 세계에서 가장 빨리 작성되지 않았나 싶습니다. ㅋ

문자열치환은 스크립트로 치환하도록 하였습니다.
(sed로 안에 포함시킬수 있지만 여러개 만들다 보면.. )

아래의 스크립트를 /etc/cron.hourly에 넣으면 한시간에 한번씩 실행됩니다.

스크립트 생성후

chmod 700 /etc/cron.hourly/ssh_defense.sh

해주셔야 실행됩니다.


잘 쓰셔서 아주 단순한 기법에 해킹당하는 일이 없도록 하세요.. ㅋㅋ

그리고 패쓰워드는 항상 영문과 특수문자의 조합으로..



----------------------------------------------------------------------------------------
vi /etc/cron.hourly/ssh_defense.sh
#!/bin/sh
#############
# 2005/02/08
# http://hubgo.com 이진명
# 아래 ch.sh라는 치환스크립트를 /var/log 에 옮겨놓아야 합니다.
# cron.hourly 에 등록하여 사용합니다.
# 제가 알기론 아래 링크 사이트도 후비고닷컴보다 릴리즈 날짜가 느리고
# 세계최초쯤 되지 않을까 싶네요..
#############
cd /var/log
grep "anonymous" secure | egrep -v '127.0.0.1|218.54.191.21|220.95.230.222' | awk '{ print $17}' > anonymous_login
grep "no such user" secure | egrep -v '127.0.0.1|218.54.191.21|220.95.230.222' | awk '{print $17}' >> anonymous_login
grep illegal secure | egrep -v '127.0.0.1|218.54.191.21|220.95.230.222' | awk '{print $12 $13 }' > illegal

## 문자 치환작업
sh ch.sh '\]' '' anonymous_login >> temp2
sh ch.sh '\[' ALL: temp2 > anonymous_login
sh ch.sh from ALL: illegal >> anonymous_login

sort anonymous_login | uniq >> /etc/hosts.deny
sort /etc/hosts.deny | uniq > temp
cat temp > /etc/hosts.deny

 
 
 

vi /var/log/ch.sh
------------------------------------------------------------------------------------
#!/bin/bash
### ch.sh
# "subst", 파일에서 어떤 패턴을 다른 패턴으로 바꿔주는 스크립트.
# 즉, "subst Smith Jones letter.txt".

ARGS=3
E_BADARGS=65 # 필요한 인자가 빠져있음.

if [ $# -ne "$ARGS" ]
# 스크립트로 넘겨진 인자의 갯수를 확인(항상 이렇게 하세요).
then
echo "사용법: `basename $0` old-pattern new-pattern filename"
exit $E_BADARGS
fi

old_pattern=$1
new_pattern=$2

if [ -f "$3" ]
then
file_name=$3
else
echo "\"$3\" 은 없는 파일입니다."
exit $E_BADARGS
fi

# 여기가 가장 중요한 부분입니다.
sed -e "s/$old_pattern/$new_pattern/g" $file_name
# 's'는 sed의 치환(substitution) 명령어이고,
# /pattern/ 은 주소 매칭을 실행시킵니다.
# 전역(global) 플래그인 "g"를 쓰면 단지 첫번째 일치하는 $old_pattern만
#+ 치환시키지 않고 각 줄에서 일치하는 "모든" $old_pattern을 치환시킵니다.
# 더 자세한 설명은 'sed' 문서를 읽어보세요.

exit 0 # 스크립트의 실행이 성공이라면 0을 리턴.


 
 

그리고 마지막으로.... 하나더..

레드헷계열 리눅스는 설치후 아무런설정을 하지 않았다면

root로 ssh를 로그인 가능합니다.

그러므로 root의 직접적인 ssh login은 막고

일반계정으로 접속후 su - root 를 통해 root권한을 획득하여 작업하도록 합니다.

ssh 설정화일을 아래와 같이 열어 PermitRootLogin yes를 no로 변경합니다.


vi /etc/ssh/sshd_config
PermitRootLogin no


변경후 /etc/init.d/sshd restart 하여

sshd를 재시작 해줍니다.

여러분은 이것으로 기초적이지만 강력한 보안설정을 하셨습니다.


참고로 OS별 로그가 다를수 있습니다.
(Invalid, illegal 등)

자세한것은 제 홈페이지로 로그와 함께 문의주시면 수정해드리겠습니다.

감사합니다.

[이 게시물은 관리자님에 의해 2011-10-31 17:30:25 Apache에서 이동 됨]
|

댓글 5개

FeLLEN (2005년 09월 01일 오전 11:29)
sed: -e expression #1, char 10: unterminated `s' command
실행했더니 이런 오류가 나는 군요..ㅜ.ㅡ


--->>

이진명 (2005년 09월 02일 오후 08:08)
아~ 무슨 에러인지 알겠습니다.
저도 시스템에 따라 그런에러가 발생한적이 있었는데..
수정을 안했군요... ㅋㅋ

치환부분을 아래와 같이 수정하시면 될듯 싶습니다.
그래도 안되시면 다시 문의주세요.. ^^
http://hubgo.com

sh ch.sh '\]' '' anonymous_login >> temp2
sh ch.sh '\[' ALL: temp2 > anonymous_login
sh ch.sh from ALL: illegal >> anonymous_login
궁금해서 합니다 위의 스크립이 뭐에 대한 스크립인지? 어떤스토리인지요??? 막는것같긴한데..

어떠게 막냐는거죠?

또 cs.sh 파일아래

exit 0 # 스크립트의 실행이 성공이라면 0을 리턴. <--- 이부분이

cs.sh 파일에 포함되는것인가요? 띄어져 있어서 포함되는지 안되는지 잘모르겠네요 ..
좋은 팁을 공유해주셔서 감사합니다.
가장 확실하면서 쉬운 방법, 포트를 바꾸세요.. 22번에서 놀고 있는 다른 포트로 바꾸어 주면 아마 99프로 고피할 수 있을 겁니다..
만약 알려진다면 또 바꾸면 되구요..
1시간 간격이면 수천, 수만번 공격을 할 수 있는 충분한 시간입니다. 포트변경역시 의미가 없습니다.

1) /etc/hosts.deny 을 열어서 아래처럼 변경하여 줍니다. sshd: ALL 은 모든 ssh 로그인을 금지한다는 것입니다. 설사 아이디 및 비번이 맞아도 접근이 되지 않습니다.

#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap! sshd : ALL
sshd : ALL

2) 다음에 /etc/hosts.allow 을 열어서 아래처럼 변경합니다. 아래에 등록된 IP 만 접속이 가능합니다. 그 외는 접속자체가 불가 합니다.

#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
sshd : 111.111.111.111: ALLOW
sshd : 111.111.111.112: ALLOW
sshd : 111.111.111.113: ALLOW

3) 위처럼 한 다음 아래처럼 ssh 를 재 시작하면 완료됩니다

# service sshd restart


=======================================
참고사항: 후비고닷컴의 이진명 님의 스크립을 crontab 에서 1분이든.. 간격을 줄이면 좋습니다.

또한 apf (advanced policy based firewall ) 과 bfd (brute force detection) 을 적절히 사용하면 Software 방화벽 및 매우 진보된 SSH 공격뿐 아니라 Web, FTP 등도 같이 막을 수 있습니다.
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
20년 전 조회 2,693
20년 전 조회 3,082
20년 전 조회 2,604
20년 전 조회 2,268
20년 전 조회 2,837
20년 전 조회 2,535
20년 전 조회 2,591
20년 전 조회 3,850
20년 전 조회 3,321
20년 전 조회 5,060
20년 전 조회 2,472
20년 전 조회 4,561
20년 전 조회 3,159
20년 전 조회 2,937
20년 전 조회 3,794
20년 전 조회 2,702
20년 전 조회 3,777
20년 전 조회 4,063
20년 전 조회 3,480
20년 전 조회 3,529
20년 전 조회 4,149
20년 전 조회 2,405
20년 전 조회 5,131
20년 전 조회 3,695
20년 전 조회 2,648
20년 전 조회 2,333
20년 전 조회 2,792
20년 전 조회 3,073
20년 전 조회 2,842
bbbking
20년 전 조회 5,822
20년 전 조회 2,746
bbbking
20년 전 조회 4,320
20년 전 조회 2,198
20년 전 조회 7,374
20년 전 조회 2,461
20년 전 조회 3,538
20년 전 조회 4,353
20년 전 조회 2,683
20년 전 조회 3,956
20년 전 조회 3,128
20년 전 조회 4,140
20년 전 조회 5,161
20년 전 조회 4,281
20년 전 조회 5,898
20년 전 조회 2,095
20년 전 조회 3,371
20년 전 조회 3,589
20년 전 조회 2,977
20년 전 조회 2,486
20년 전 조회 4,709
20년 전 조회 2,335
20년 전 조회 2,315
20년 전 조회 1,935
20년 전 조회 1,731
20년 전 조회 3,809
20년 전 조회 4,888
20년 전 조회 2,521
20년 전 조회 3,197
20년 전 조회 5,885
20년 전 조회 2,889
20년 전 조회 2,346
20년 전 조회 4,610
20년 전 조회 2,708
20년 전 조회 2,292
20년 전 조회 2,810
20년 전 조회 2,612
20년 전 조회 2,935
20년 전 조회 3,373
20년 전 조회 2,706
20년 전 조회 4,780
20년 전 조회 3,311
20년 전 조회 4,596
20년 전 조회 3,055
20년 전 조회 4,176
20년 전 조회 4,422
20년 전 조회 7,089
20년 전 조회 3,917
20년 전 조회 2,811
20년 전 조회 4,440
20년 전 조회 2,261
20년 전 조회 4,377
20년 전 조회 3,833
20년 전 조회 2,634
20년 전 조회 4,879
bbbking
20년 전 조회 2,581
20년 전 조회 4,539
20년 전 조회 3,604
20년 전 조회 3,622
20년 전 조회 3,859
20년 전 조회 3,249
20년 전 조회 5,965
20년 전 조회 2,976
20년 전 조회 5,884
bbbking
20년 전 조회 2,403
bbbking
20년 전 조회 1,821
bbbking
20년 전 조회 2,183
bbbking
20년 전 조회 3,579
bbbking
20년 전 조회 2,081
bbbking
20년 전 조회 4,445
20년 전 조회 3,409