We were unable to connect to your instance. Make sure that your instance’s network settings are configured correctly for EC2 Instance Connect. For more information, see Task 1: Configure network access to an instance.
당연하게도
Security Group에서 22(SSH)를 0.0.0.0/0 으로 설정하면 된다...
하지만 이것은 치명적인 보안 문제가 있기 때문에 권장하지 않습니다.
해결방법
1. 우선 보안 그룹(Security Group)에서 22포트에 대해 0.0.0.0/0으로 설정 뒤 웹으로 연결 한다.
2. 다음 명령어를 사용하여 내가 접속하는 웹의 접근 IP 대역을 체크한다. (서울 리전 기준!) curl -s https://ip-ranges.amazonaws.com/ip-ranges.json| jq -r '.prefixes[] | select(.region=="ap-northeast-2") | select(.service=="EC2_INSTANCE_CONNECT") | .ip_prefix'
13.209.1.56/29
※ Amazone Linux 2 AMI 설치 내역임
※ 설치된 명령어(curl, jd )
* 없을 경우 #> yum install jd 와 같은 명령어로 설치함.
3. 위의 설정 값을 기준으로 다시 보안 그룹 (Security Group)을 재 설정한다.
* xxx.xxx.xxx.130 은 내 IP로 설정한 고정 IP 주소
* 위의 웹 접근시 나온 정보 (13.209.1.26/29)를 SSH 접근하도록 설정하면 EC2를 웹에서 연결 가능함.
fail2ban 으로 차단한 정보를 메일로 전송할 경우 destemail 에 수신자 이메일 주소를 설정하고 sender 에는 "보낸 사람"의 정보를 설정합니다.
보낸 사람 이름은 전자 메일의 "보낸 사람"필드의 값을 설정하며 mta 매개 변수는 메일을 보내는 데 사용할 메일 서비스를 설정하며 기본은 sendmail 입니다.
중요한 부분은 action 항목으로 차단했을 때 실행할 액션을 의미하며 기본 설정은 아무 일도 안 하는 설정인 "action = %(action_)s" 입니다.
기본 설정으로는 차단 내용을 메일로 전송하지 않으므로 action_ 을 action_mw 나 action_mwl 로 지정해야 메일을 전송하며 차이는 아래와 같습니다.
action_mw : 메일을 전송하고 whois 로 IP 정보를 조회한 결과를 첨부 action_mwl : 메일을 전송하고 whois 로 IP 정보를 조회한 결과와 관련된 로그를 첨부
권장 설정은 다음과 같이 메일을 전송하고 whois 와 log 를 첨부하는 설정입니다.
action = %(action_mwl)s
※ 위 설정으로 하는 경우 메일 송신시 해당 IP의 정보를 검색한 결과도 같이 송부됩니다.
따라서 whois 명령을 통해 정보가 조회될 수 있어야 합니다.
whois 가 설치되지 않은 경우
$ sudo yum install whois 를 실행합니다.
2.5 개별 jail 설정
기본적으로 fail2ban 은 차단하지 않으므로 차단할 서비스를 [sshd] 처럼 항목명에 서비스를 등록하고 enabled = true 를 추가해 주면 차단됩니다.
2.6 포트 번호 변경
ssh 를 다른 포트로 사용할 경우 port 항목에 해당 포트를 기술해 주면 됩니다. 만약 ssh 가 여러 포트를 사용한다면
, 를 구분자로 해서 포트를 모두 기술하며 아래는 ssh 기본 포트와 10022 를 사용할 경우 설정입니다.
[sshd] enabled = true port = ssh,10022 sshd jail 설정
3. 최종 설정값
이제 ssh 를 위한 최종 /etc/fail2ban/jail.local 파일을 완성해 보면 아래와 같습니다.
[DEFAULT] ## 차단하지 않을 IP ignoreip = 127.0.0.1/8 192.168.10.0/24 # 1시간 차단 (-1로 설정할 경우 영구 차단) bantime = 3600 # 아래 시간동안 maxretry 만큼 실패시 차단 findtime = 300 # 최대 허용 횟수 maxretry = 5 # 메일 수신자, 다중 수신자는 지원 안 함 destemail = sysadmin@example.com # 메일 보낸 사람 sender = fail2ban@my-server.com # 메일 전송 프로그램 mta = sendmail # 차단시 whois 정보와 관련 로그를 첨부하여 메일 전송 action = %(action_mwl)s # sshd 서비스 차단 [sshd] enabled = true port = ssh, 10022
ipset 정책 목록 이제 fail2ban-sshd 규칙의 Header 항목에 있는 "timeout 3600" 에 따라 인증에 실패한 IP 는 1시간 동안 차단됩니다.
7. 전체 차단 정보 조회
이제 fail2ban-sshd 규칙의 Header 항목에 있는 "timeout 10800" 에 따라 인증에 실패한 IP 는 3시간 동안 차단됩니다.
전체 차단 정보는 fail2ban 의 클라이언트 유틸리티인 fail2ban-client 명령어를 통해서 확인해 볼 수 있습니다.
$ sudo fail2ban-client status sshd
Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 8 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 2 |- Total banned: 2 `- Banned IP list: 103.114.106.xxx58.242.83.xxx
ignoreip :이 매개 변수는 금지 시스템에서 무시해야하는 IP 주소를 식별합니다. 기본적으로 이것은 기계 자체에서 오는 트래픽을 무시하도록 설정되어 있습니다. 이는 꽤 좋은 설정입니다. bantime :이 매개 변수는 금지의 길이를 초 단위로 설정합니다. 기본값은 600 초 또는 10 분입니다. findtime :이 매개 변수는 fail2ban이 반복적으로 실패한 인증 시도를 찾을 때주의 할 창을 설정합니다. 기본값은 600 초 (다시 10 분)로 설정됩니다. 즉, 소프트웨어는 지난 10 분 동안 실패한 시도 횟수를 계산합니다. maxretry : findtime금지가 설정되기 전에 창 에서 허용되는 실패한 시도 횟수를 설정합니다 . backend :이 항목은 fail2ban이 로그 파일을 모니터하는 방법을 지정합니다. 이 설정은 autofail2ban이 시도한 pyinotify다음 gamin사용할 수있는 것을 기반으로 폴링 알고리즘을 시도한다는 것을 의미합니다 . usedns : 역방향 DNS가 금지 구현을 돕는 데 사용되는지 여부를 정의합니다. 이것을 "no"로 설정하면 호스트 이름 대신 IP 자체가 금지됩니다. "warn"설정은 역방향 DNS를 사용하여 호스트 이름을 검색하고 그런 식으로 금지하려고 시도하지만 검토를 위해 활동을 기록합니다. destemail :이 주소는 메일 알리미로 작업을 구성한 경우 알림 메일로 전송됩니다. 보낸 사람 이름 : 생성 된 알림 전자 메일의 보낸 사람 전자 메일 필드에 사용됩니다. banaction : 임계 값에 도달 할 때 사용할 조치를 설정합니다. 실제로 /etc/fail2ban/action.d/호출 된 파일의 이름이 있습니다 iptables-multiport.conf. 이것은 iptablesIP 주소를 금지하기위한 실제 조작을 처리합니다 . mta : 알림 이메일을 보내는 데 사용할 메일 전송 에이전트입니다. protocol : IP 금지가 구현 될 때 삭제 될 트래픽 유형입니다. 이것은 새로운 iptables 체인으로 전송되는 트래픽 유형이기도합니다. chain : 이것은 fail2ban 깔때기로 트래픽을 보내기위한 점프 규칙으로 구성되는 체인입니다.
2. fail2ban 자주 사용하는 명령목록
fail2ban-client status : ban 목록확인 cat /var/log/fail2ban.log : fail2ban 로그확인 cat /var/log/fail2ban.log | grep Ban : Ban 내역만 뽑아서 보기 * ban된 ip 해제하기 fail2ban-client set sshd unbanip 192.111.1.101 (해제IP)
Status for the jail: mysqld-auth |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- Journal matches: `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list: [root@localhost fail2ban]# fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 13 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 27 |- Total banned: 27 `- Banned IP list: 198.211
# fail2ban-client status mysqld-auth Status for the jail: mysqld-auth |- Filter | |- Currently failed: 1 | |- Total failed: 1 | `- File list: /var/log/mariadb/mariadb.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
1. 제어판 -> 관리도구 -> 로컬보안정책을 열고 로컬정책->보안옵션->네트워크액세스(여러 개 중 두 번째) 옵션이 두개 있다 ⓐ일반 - 로컬사용자를 그대로 인증 ⓑ게스트전용 - 로컬사용자를 게스트로 인증 여기서 일반을 선택한다 2. 내컴퓨터->도구->폴더옵션->보기 "모든 사용자에게 동일한 폴더공유권한을 지정(권장)" 체크옵션을 지운다 -> 확인 3. 해당 폴더에서 오른쪽 마우스를 클릭->"공유 및 보안"->"공유"-> "이 폴더를 공유함"->"사용 권한"-> EVERYONE 계정을 제거 -> 접근 가능하게 할 계정을 추가 등록함->등록 후 확인
----------- 추가 메모 시작 ---------------------------------- 해당 폴더에서 오른쪽 마우스를 클릭->"공유 및 보안"->"보안" 탭에서도 권한 설정을 해줘야 한다. 그렇지 않으면 3번 항목에서 아무리 모든 권한을 부여한 사용자라 할지라도 파일 접근이 읽기 전용 속성으로만 이루어진다.
"내 컴퓨터" 항목상에서 마우스 우클릭 -> 시스템 도구 및의 "로컬 사용자 및 그룹"-> "그룹" 에서 새 그룹을 생성해준다. (ex. Developer Level 1, developer Level 2, … ) 그룹에 포함되는 사용자도 결정(아마도..)
해당 폴더에서 오른쪽 마우스를 클릭->"공유 및 보안"->"보안" 탭에서 해당 폴더에 접근할 수 있는 사용자 그룹을 입력하고 그 그룹의 접근 보안 권한을 설정해준다. ----------- 추가 메모 종료 ----------------------------------
4. 모두 설정 후 재부팅 (로컬보안정책은 재부팅을 하지 않으면 정책이 바로 적용돼지 않는다) : 그 다음부터는 다른 XP에서 이PC로 네트웍 드라이브를 잡을때 기존에는 Guest로 계정이 정해져서 나오는 것이 계정을 사용자가 넣을 수 있게 창이 바뀐다 이곳에 사용하고자 하는 계정을 넣고 Password를 넣으면 된다
결국은 포기하고 그 이전버젼을 다운로드 받으려고 하는 순간.... 소스포지에서는 1.3.8버젼 밖에 안되는것이었다... 헉 -_-...
그래서 1.3.6을 어렵게 구해서 해보니 잘되었다.... -_-... 내 3일 ㅜㅜ
설치 방법과 절차이다.
1. 시스템 필요 요소
- 호환되는 시스템이어야 한다.(홈페이지참조) -> 거의 리눅스 계열은 다 된다고 보면 됨..
- BASH 쉘
2. 사전 준비
a. BASH 쉘 설치하기
- www.ibm.com 으로 가서 검색을 열심히 하면 찾을수 있다 -_-... 매번 헷갈린다. 이문서의 제일 위에 있는 bash-3.0-1.aix5.1.ppc.rpm 파일을 다운로드 받아 서버로 전송한다.
- rpm 으로 되어 있기 때문에
root로
rpm -ivh bash-3.0-1.aix5.1.ppc.rpm 명령을 통해 설치하면 끝....
$> bash 입력
$> echo $SHELL ==> bash가 나오면 정상 설치 완료
b. lynx or wget 등 설치하기
- 검색 정보에 대한 데이터베이스를 웹을 통해 가지고 오는데 위의 해당 프로그램들이 설치되어 있지 않으면
정보를 update하지 못한다.
- rpm파일로 되어 있기 때문에 위의 a의 내용 참고
c. rkhunter-1.3.6.tar.gz 파일을 설치하기(root로 실행)
- 서버로 upload 로드 뒤
- gzip 명령을 통해 압축을 푼다.
gzip -d rkhunter-1.3.6.tar.gz
- tar로 묶여져 있는 파일을 푼다.
tar xvf rkhunter-1.3.6.tar
- 설치하기
위의 tar를 풀면 rkhunter-1.3.6 디렉토리 안에
installer.sh 파일이 존재하며
다음과 같이 간단히 설치할수 있다.
$> installer.sh --install
/usr/local/bin/rkhunter 파일이 생성된다.(기본 설치시...)
$> installer.sh --install
Checking system for:
Rootkit Hunter installer files: found
A web file download command: wget found
Starting installation:
Checking installation directory "/usr/local": it exists and is writable.
Checking installation directories:
Directory /usr/local/share/doc/rkhunter-1.3.6: creating: OK
Directory /usr/local/share/man/man8: exists and is writable.
Directory /etc: exists and is writable.
Directory /usr/local/bin: exists and is writable.
Directory /usr/local/lib: exists and is writable.
Directory /var/lib: exists and is writable.
Directory /usr/local/lib/rkhunter/scripts: creating: OK
Directory /var/lib/rkhunter/db: creating: OK
Directory /var/lib/rkhunter/tmp: creating: OK
Directory /var/lib/rkhunter/db/i18n: creating: OK
Installing check_modules.pl: OK
Installing filehashmd5.pl: OK
Installing filehashsha1.pl: OK
Installing filehashsha.pl: OK
Installing stat.pl: OK
Installing readlink.sh: OK
Installing backdoorports.dat: OK
Installing mirrors.dat: OK
Installing programs_bad.dat: OK
Installing suspscan.dat: OK
Installing rkhunter.8: OK
Installing ACKNOWLEDGMENTS: OK
Installing CHANGELOG: OK
Installing FAQ: OK
Installing LICENSE: OK
Installing README: OK
Installing language support files: OK
Installing rkhunter: OK
Installing rkhunter.conf: OK
Installation complete
3. 유해 사항을 검색해 보기
$> /usr/local/bin/rkhunter -c (root로 실행) 명령을 통해 유해사항을 검색가능하며, /var/log/rkhunter.log 파일에 모든 사항이 상세하게 기재된다.
Performing 'shared libraries' checks
Checking for preloading variables [ None found ]
Checking for preloaded libraries [ None found ]
Checking LD_LIBRARY_PATH variable [ Not found ]
Performing file properties checks
Checking for prerequisites [ Warning ]
/usr/bin/awk [ OK ]
/usr/bin/basename [ OK ]
/usr/bin/bash [ OK ]
/usr/bin/cat [ OK ]
/usr/bin/chmod [ OK ]
/usr/bin/chown [ OK ]
/usr/bin/cp [ OK ]
/usr/bin/csh [ OK ]
/usr/bin/cut [ OK ]
/usr/bin/date [ OK ]
/usr/bin/df [ OK ]
/usr/bin/diff [ OK ]
/usr/bin/dirname [ OK ]
/usr/bin/du [ OK ]
/usr/bin/echo [ OK ]
/usr/bin/ed [ OK ]
/usr/bin/egrep [ OK ]