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,667
20년 전 조회 3,050
20년 전 조회 2,571
20년 전 조회 2,241
20년 전 조회 2,819
20년 전 조회 2,505
20년 전 조회 2,573
20년 전 조회 3,829
20년 전 조회 3,294
20년 전 조회 5,033
20년 전 조회 2,441
20년 전 조회 4,532
20년 전 조회 3,130
20년 전 조회 2,908
20년 전 조회 3,768
20년 전 조회 2,672
20년 전 조회 3,751
20년 전 조회 4,036
20년 전 조회 3,456
20년 전 조회 3,504
20년 전 조회 4,122
20년 전 조회 2,381
20년 전 조회 5,105
20년 전 조회 3,667
20년 전 조회 2,619
20년 전 조회 2,298
20년 전 조회 2,773
20년 전 조회 3,043
20년 전 조회 2,812
bbbking
20년 전 조회 5,792
20년 전 조회 2,720
bbbking
20년 전 조회 4,295
20년 전 조회 2,170
20년 전 조회 7,346
20년 전 조회 2,430
20년 전 조회 3,513
20년 전 조회 4,324
20년 전 조회 2,655
20년 전 조회 3,930
20년 전 조회 3,106
20년 전 조회 4,111
20년 전 조회 5,141
20년 전 조회 4,252
20년 전 조회 5,865
20년 전 조회 2,071
20년 전 조회 3,347
20년 전 조회 3,570
20년 전 조회 2,952
20년 전 조회 2,461
20년 전 조회 4,682
20년 전 조회 2,313
20년 전 조회 2,297
20년 전 조회 1,909
20년 전 조회 1,715
20년 전 조회 3,781
20년 전 조회 4,863
20년 전 조회 2,501
20년 전 조회 3,172
20년 전 조회 5,860
20년 전 조회 2,862
20년 전 조회 2,323
20년 전 조회 4,593
20년 전 조회 2,681
20년 전 조회 2,268
20년 전 조회 2,784
20년 전 조회 2,591
20년 전 조회 2,911
20년 전 조회 3,346
20년 전 조회 2,679
20년 전 조회 4,757
20년 전 조회 3,291
20년 전 조회 4,569
20년 전 조회 3,030
20년 전 조회 4,155
20년 전 조회 4,401
20년 전 조회 7,060
20년 전 조회 3,894
20년 전 조회 2,789
20년 전 조회 4,415
20년 전 조회 2,245
20년 전 조회 4,353
20년 전 조회 3,807
20년 전 조회 2,615
20년 전 조회 4,859
bbbking
20년 전 조회 2,562
20년 전 조회 4,521
20년 전 조회 3,581
20년 전 조회 3,597
20년 전 조회 3,845
20년 전 조회 3,232
20년 전 조회 5,940
20년 전 조회 2,958
20년 전 조회 5,868
bbbking
20년 전 조회 2,378
bbbking
20년 전 조회 1,798
bbbking
20년 전 조회 2,159
bbbking
20년 전 조회 3,555
bbbking
20년 전 조회 2,061
bbbking
20년 전 조회 4,428
20년 전 조회 3,390