OS/Linux2017/07/27 13:47
제가 관리하는 서버들 앞단에 방화벽이 없는 관계로 IPTABLES와 tcpwapper를 이용한 제어를 하고 있습니다.
다만, 중국과 같은 나라에서 엄청나게 brute-force 공격을 감행하는지라, 한국이외에 접속을 차단하고 싶었습니다.

저의 경우 한국만 들어오게 하고 나머지 나라에선 들어올 이유가 없으므로, geoiplookup을 이용하여 ssh 내에 시도할 때에 한국만 들어올 수 있도록 하였습니다.

1. GeoIP Database 설치

제일 먼저 진행 되어야 할 부분은 GeoIP Database를 설치하여야 합니다.

# yum install geoip


/usr/bin/geoiplookup 이 존재하는지 확인하여야 합니다.

# geoiplookup 8.8.8.8 
GeoIP Country Edition: US, United States
GeoIP City Edition, Rev 1: US, CA, California, Mountain View, 94035, 37.386002, -122.083801, 807, 650
GeoIP ASNum Edition: AS15169 Google Inc.


위와 같이 확인이 되었다면 정상적으로 GeoIP가 설치된 것입니다.

2. Script 작성

# vi /usr/local/bin/sshfilter.sh
#!/bin/bash
# 대문자로 공백으로 국가코드를 입력하면 해당국가만 허용됩니다. ex) KR FR CN
ALLOW_COUNTRIES="KR"
if [ $# -ne 1 ]; then
echo "Usage: `basename $0` <ip>" 1>&2
exit 0 # return true in case of config issue
fi
COUNTRY=`/usr/bin/geoiplookup $1 | awk -F ": " '{ print $2 }' | awk -F "," '{ print $1 }' | head -n 1`
[[ $COUNTRY = "IP Address not found" || $ALLOW_COUNTRIES =~ $COUNTRY ]] && RESPONSE="ALLOW" || RESPONSE="DENY"
if [ $RESPONSE = "ALLOW" ]
then
# 이상 없을 경우 바로 통과
exit 0
else
# 차단되었을 경우 기록 남김
logger "$RESPONSE sshd connection from $1 ($COUNTRY)"
exit 1
fi


이후 chmod 755 /usr/local/bin/sshfilter.sh 퍼미션을 수정하여 줍니다.

3. TCPWAPPER 설정

/etc/hosts.deny와 /etc/hosts.allow를 수정하여 세팅하여야 합니다.

# vi /etc/hosts.deny
# ssh 접근을 모든곳에서 차단합니다.
sshd: ALL

# vi /etc/hosts.allow
sshd: ALL: spawn /usr/local/bin/sshfilter.sh %a


위와 같이 설정하게 될 경우 ssh로 접속하는 모든 사람들에게 /usr/local/bin/sshfilter.sh <ip>가 수행됩니다.
실제 테스트는 아래와 같이 하며, 확인은 /var/log/messages 로그에서 확인 하실 수 있습니다.

# /usr/local/bin/sshfilter.sh 61.177.172.60
tail -f /var/log/messages 확인시 아래와 같은 항목 검출

DENY sshd connection from 61.177.172.60 (CN)


위와 같이 정상적으로 연결이 되었다면 sshfilter.sh 내에 허용한 국가에서만 접속을 할 수 있습니다.
따라서, 중국에서 들어오는 공격은 tcpwapper에 의하여 차단되는 원리입니다.


2017/07/27 13:47 2017/07/27 13:47
Posted by JParker

Leave your greetings.

OS/Linux2017/04/20 10:00
 안녕하세요? 얼마전 저에게 문의온 내용중 한가지가 아래와 같습니다.

" 사용자 계정 내에 파일 크기가 많이 생성되어 난감합니다...."

아래와 같은 방법을 이용하시면 각 사용자별 파일당 최대 크기를 제한 하실 수 있습니다.  


[root@web ~]# vi /etc/security/limits.conf
#<domain> <type> <item> <value>
#<domain> can be:

# - a user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - fsize - maximum filesize (KB)

# Fsize는 KB단위로 아래와 같이 설정을 하시게 되면 자동으로 적용 될 수 있습니다.
userid - fsize 1024000

[userid@web ~]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) 1024000
pending signals (-i) 11387
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

# TEST

[userid@web ~]$ dd if=/dev/zero of=bigfile bs=1024 count=3145728
File size limit exceeded


위와 같이 하시게 될 경우 파일당 최대 1기가 이상을 넘지 못하도록 제안을 걸어두실 수 있습니다.
2017/04/20 10:00 2017/04/20 10:00
Posted by JParker

Leave your greetings.

취미/백패킹2017/04/18 14:38
MSR에서 제공되는 알파인 팩에 관련된 영상

2017/04/18 14:38 2017/04/18 14:38
Posted by JParker
Tags , ,

Leave your greetings.

OS/Linux2017/04/17 12:28
# 서버에 snmpd 데몬이 실행되는 동안에는 /var/log/messages 에 다음과 같은 메시지가 쌓입니다.
Apr 17 12:10:03 web snmpd[1355]: Connection from UDP: [xxx.xxx.xxx.xxx]:42223->[xxx.xxx.xxx.xxx]
Apr 17 12:15:01 web snmpd[1355]: Connection from UDP: [xxx.xxx.xxx.xxx]:48494->[xxx.xxx.xxx.xxx]
Apr 17 12:15:03 web snmpd[1355]: Connection from UDP: [xxx.xxx.xxx.xxx]:39339->[xxx.xxx.xxx.xxx]
Apr 17 12:20:02 web snmpd[1355]: Connection from UDP: [xxx.xxx.xxx.xxx]:47832->[xxx.xxx.xxx.xxx]
Apr 17 12:20:03 web snmpd[1355]: Connection from UDP: [xxx.xxx.xxx.xxx]:47496->[xxx.xxx.xxx.xxx]
Apr 17 12:25:02 web snmpd[1355]: Connection from UDP: [xxx.xxx.xxx.xxx]:44137->[xxx.xxx.xxx.xxx]
Apr 17 12:25:03 web snmpd[1355]: Connection from UDP: [xxx.xxx.xxx.xxx]:40542->[xxx.xxx.xxx.xxx]


snmpd 데몬을 오랫동안 사용하는 중이라면, 위와 같은 메시지가 messages log 의 상당수를 차지하게 됩니다.
이부분은 추후에 messages log 를 확인하는데 상당히 불편한 경우가 발생 할 수 있습니다.
정상적으로 snmpd 동작한다면 messages log 에 snmpd log 를 남기지 않도록 합니다.

/etc/init.d/snmpd 데몬파일 수정하기
# OPTIONS="-LS0-6d -Lf /dev/null -p /var/run/snmpd.pid" 
OPTIONS="-LS 2 d -Lf /dev/null -p /var/run/snmpd.pid -a"


위의 내용에서 # 부분으로 주석처리 하고 아래의 줄로 대체하고 저장합니다.

마지막으로 /etc/init.d/snmpd restart 후 확인을 하면 되겠지요?
[root@web log]# ps -ef | grep snmpd | grep -v grep
root      2619     1  0 12:27 ?        00:00:00 /usr/sbin/snmpd -LS 2 d -Lf /dev/null -p /var/run/snmpd.pid -a
[root@web log]# 
2017/04/17 12:28 2017/04/17 12:28
Posted by JParker

Leave your greetings.

OS/Linux2017/03/28 15:19
오랜만에 글을 쓰게 되네요... 

이전엔 커널과 iptables를 소스컴파일하여 사용하여 국가별 차단을 하였습니다.
하지만, 세월이 흐르고 많이 변했죠? Redhat계열에서는 RPM을 많이 사용하시므로 
rpm과 한가지 소스 컴파일만 가지고 국가별 차단할 수 있는 모듈을 만들어 보도록하겠습니다.

1. 관련 자료 다운받기
본 자료는 oops.org에서 가져온 데이터이며, 설치에 대한 부분은 생략 하도록 하겠습니다.
GeoIP는 기존 free 버전을 사용하셔도 무방합니다. 

RPM 소스 



제가 만들어놓은 CentOS 6.8 기준입니다.




xtables-addons-1.47.1.tgz 의 경우 ipv6관련으로 링크가 깨지는 문제로 수정해서 다시 패키징 해놓은 상태입니다.

2. 패키지 설치

2-1. yum 을 이용하여 kernel-debug-devel , iptables-devel  두가지를 설치 합니다.
2-2. 본 사이트에서 제공하는 GeoIP 패키지 (srpm제외)를 설치합니다.
2-3. xtables 애드온을 설치합니다.

# tar xvfz xtables-addons-1.47.1.tgz 
# cd xtables-addons-1.47.1
# ./configure; make; make install
# cd geoip
# cp xt_geoip* /usr/sbin/

위와 같이 하게 되면 설치가 완료되며, 해당 패키지들은 설정이 완료됩니다.2-4. 설정해당 모듈은 /usr/share/xt_geoip 내에 설정 됩니다. 초반에는 해당 디렉토리가 없으므로 디렉토리 생성을 합니다.

 # mkdir /usr/share/xt_geoip ;  cd /usr/share/xt_geoip 

위와 같이 진행하게 되면, 이제 IP대역을 다운 받아와야 합니다.

# /usr/sbin/xt_geoip_dl 
http://geolite.maxmind.com/download/geoip/database/GeoIPv6.csv.gz
Resolving geolite.maxmind.com... 104.16.38.47, 104.16.37.47, 2400:cb00:2048:1::6810:252f,
Connecting to geolite.maxmind.com|104.16.38.47|:80... connected.
>HTTP request sent, awaiting response... 200 OK
Length: 1402286 (1.3M) [application/octet-stream]
Saving to: “GeoIPv6.csv.gz” 100%[===================================>] 1,402,286
(28.3 MB/s) - “GeoIPv6.csv.gz” saved [1402286/1402286]
http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
Reusing existing connection to geolite.maxmind.com:80.
HTTP request sent, awaiting response... 200 OK Length: 2163552 (2.1M) [application/zip]
Saving to: “GeoIPCountryCSV.zip” 100%[===================================>] 2,163,552
(54.1 MB/s) - “GeoIPCountryCSV.zip” saved [2163552/2163552]

# ls -l
-rw-r--r-- 1 root root 2163552 Mar 8 06:20 GeoIPCountryCSV.zip
-rw-r--r-- 1 root root 10814456 Mar 8 06:18 GeoIPCountryWhois.csv
-rw-r--r-- 1 root root 5100890 Mar 8 06:19 GeoIPv6.csv

세가지의 디렉토리가 보일 것입니다. GeoIPCountryCSV.zip의 경우  GeoIPCountryWhois.csv를 압축하여 놓은 것이므로, 두가지만 입력하도록 합니다. 아까 복사해두었던 명령어중 한가지인 xt_geoip_build 명령을 이용합니다.

# /usr/sbin/xt_geoip_build GeoIPCountryWhois.csv
144432 entries total
0 IPv6 ranges for A1 Anonymous Proxy
32 IPv4 ranges for A1 Anonymous Proxy
.
. 많은 데이터가 있으므로 중략...
.
0 IPv6 ranges for ZM Zambia
66 IPv4 ranges for ZM Zambia
0 IPv6 ranges for ZW Zimbabwe
63 IPv4 ranges for ZW Zimbabwe

해당 데이터가 업로드되었습니다. 만일 perl error가 발생되시는 분들이 있다면 epel에서 패키지를 추가로 설치하셔야 합니다.

# yum install  perl-Text-CSV_XS --enablerepo=epel

위와 같이 정상적으로 설치가 된 경우 아래와 같이 iptables 명령어를 추가하여 사용하실 수 있습니다.

# iptables -A INPUT -m geoip --src-cc CN -j DROP 
# iptables -vL | grep DROP 354 19850 DROP
all -- any any anywhere anywhere Source country: CN

위와 같이 나오게 될 경우 정상적으로 중국 국가별로 차단하는 것입니다.
2017/03/28 15:19 2017/03/28 15:19
Posted by JParker

Leave your greetings.

취미/백패킹2017/03/22 13:08
무료이며, 화장실이 있습니다. 다리 뒤쪽으로 슈퍼가 있어 물 공급이 원할합니다.

밤에 별들이 무수히 쏟아지는 경험을 하실 수 있습니다.
아래는 제가 소장하고 있는 드론으로 찍은 사진들입니다. 클릭하시면 원본사이즈를 보실 수 있습니다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

2017/03/22 13:08 2017/03/22 13:08
Posted by JParker

Leave your greetings.

취미/백패킹2017/03/20 17:13
마도 - 꼬옥 가봐야 할 장소입니다.



참고 좌표 : http://m.blog.naver.com/haeinsammae/220480398882

2017/03/20 17:13 2017/03/20 17:13
Posted by JParker

Leave your greetings.

OS/Linux2017/03/17 14:22
CentOS6에서 SSH 접근 시도 차단하기

기본 구성인 SSH 데몬은 무차별 공격(Blueforce Attack)에 취약할 수 있습니다. 이를 방어하기 위하여 iptables를 이용한 opensource가 있습니다. 바로 fail2ban 이라는 Application입니다. 이 프로그램은 /var/log/secure 로그 파일을 읽어 로그인 시도 실패에 대한 횟수를 지정한 수로 읽어 iptables로 차단을 하게 됩니다. 기본적으로 제공되는 프로그램이 아니기 떄문에 epel 패키지에서 가져와야 합니다.

1. Fail2Ban 설치
# rpm -Uhh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install -y fail2ban --enablerepo=epel
Loaded plugins: auto-update-debuginfo, fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: ftp.daumkakao.com
* epel: mirror.premi.st
* epel-debuginfo: mirror.premi.st
* extras: ftp.daumkakao.com
* updates: ftp.daumkakao.com
Resolving Dependencies
--> Running transaction check
---> Package fail2ban.noarch 0:0.9.4-2.el6 will be updated
---> Package fail2ban.noarch 0:0.9.6-1.el6.1 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================
Package Arch Version Repository Size
==========================================================
Updating:
fail2ban noarch 0.9.6-1.el6.1 epel 468 k

Transaction Summary
==========================================================
Upgrade 1 Package(s)

Total download size: 468 k
Downloading Packages:

fail2ban-0.9.6-1.el6.1.noarch.rpm | 468 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : fail2ban-0.9.6-1.el6.1.noarch 1/2
Cleanup : fail2ban-0.9.4-2.el6.noarch 2/2
Verifying : fail2ban-0.9.6-1.el6.1.noarch 1/2
Verifying : fail2ban-0.9.4-2.el6.noarch 2/2

Updated:
fail2ban.noarch 0:0.9.6-1.el6.1
Complete!
2. 구성 파일 복사
기본 fail2ban 구성파일은 /etc/fail2ban/jail.conf로 되어있습니다. 기본으로 기동하게 되면 에러를 발생하게 합니다.
따라서, 적용할 수 있도록 다음과 같이 변경하셔야 합니다.
[root@www ~]# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
위와 같이 복사가 완료한 후 설정 파일을 열게 되면 보호할 수 있는 여러가지 방법이 존재합니다.
3. jail.local의 기본값 설정
[root@www ~]# vim /etc/fail2ban/jail.local
첫번째 섹션은 fail2ban이 따르는 기본 규칙을 다룹니다. 가상 서버에 더 세세히 변경하려면 각 섹션의 세부사항을 정의 할 수 도 있습니다.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space (and/or comma) separator.
# 제외할 아이피를 설정합니다.
ignoreip = 127.0.0.1/8
# "bantime"은 호스트에 접근을 제안하는 시간(초 단위)입니다.
bantime = 3600
# "findtime" 시간 동안 "maxretry"를 초과할 경우 대상이 되도록 합니다. (초 단위)
findtime = 600
# "maxretry"는 /var/log/secure내에 fail 횟수에 대한 제안 설정입니다
# 아래는 3회 이상일 경우 bantime동안 차단됩니다.
maxretry = 3
ignoreip줄에 개인서버 IP를 입력하시기 바랍니다. 또한, 각 주소는 공백으로 구분할 수 있습니다. 접근하시는 IP를 넣을 경우 이 서버에서 실수로 접근하는 분을 차단하지 않을 것입니다.
bantime은 호스트에 접근 제한 시간입니다. 기본 단위는 초이며, 해당 시간 이후 자동으로 해제 됩니다.
maxretry는 접근 실패시 몇번이후 차단할 수 있도록 하는 것이며, 횟수로 설정합니다. (기본 6회)
findtime은 호스트가 로그인 시도후 600초 이내에 maxretry값 이상 실패하면, 해당 IP를 bantime동안 차단합니다.
4. jail.local에 ssh-iptables 섹션 구성
ssh 세부 정보 섹션은 구성에서 아래 있습니다. 하지만 이 섹션에는 따로 세부정보를 설정할 수가 없습니다. 예를 들면, fail시 담당 email을 발송 할 수 있도록 하는 기능도 포함되어있습니다.
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=jaehun@me.com]
logpath = /var/log/secure
maxretry = 5
enabled는 해당 섹션의 동작유무를 나타냅니다. 기동은 true 중지는 fail로 설정할 수 있습니다. 기본적으로 sshd 설정에 fail2banuses가 일치하는 구성 파일이 있습니다. /etc/fail2ban/filter.d/sshd.conf  내에 기본 설정이 되어있습니다.
Action은 fail2ban이 일치하는 IP주소를 차단하기 위해 행할 단계입니다. failter 항목과 마찬가지로 각 작업은 action.d 디렉토리 내에 파일을 참조합니다. 기본 금지 조치인 IPTABLES는 /etc/fail2ban/action.d/iptables.conf 내에 존재합니다. iptables 세부사항에서 fail2ban을 추가로 사용자 정의가 가능합니다. 예를 들어 비표준 포트를 사용하는 경우 대괄호 내에 포트 번호와 일치하도록 변경하여 다음과 같이 표시 할 수 있습니다.
ex: iptables [name = SSH, port = 30000, protocol = tcp]
fail2ban에서 모니터링하는 프로토콜은 tcp에서 udp까지 변경이 가능합니다. 해당 엑션이 동작되면 fail2ban이 이메일을 발송할 수 있습니다. 해당 명령인 sendmail-whois는 /etc/fail2ban/action.d/sendmail-whois.conf 에 기본 설정이 되어있으므로 참조하시기 바랍니다. logpath는 secure 파일의 위치를 나타냅니다.
5. fail2ban 기동하기
fail2ban의 설정값을 변경하면 항상 fail2ban을 재시작하여 주시기 바랍니다.
/etc/init.d/fail2ban restart 또는 service fail2ban restart
항상 root로 기동하셔야 합니다. 만일 fail2ban이 iptables내에 적용되어있는지를 확인하고 싶다면 아래와 같이 확인할 수 있습니다.
iptables -L
요즘들어 SSH로 접근시도하는 중국발 blueforce공격이 심해지고 있습니다. 어이없는 패스워드 설정으로 공격자에게 root를 주는 황당한 일을 당하지 맙시다~
2017/03/17 14:22 2017/03/17 14:22
Posted by JParker

Leave your greetings.

OS/Linux2017/03/16 08:58

SSH 접근 제어 방법
접속을 허가한 계정만 ssh를 통해서 접속이 가능하게 설정해보자.
[테스트 시나리오]
서버에는 tommy, john, root 계정이 존재 한다. root와 john는 ssh로 접속이 가능하게 하고, tommy로는 접속이 되지 않도록 하고 싶다.

[설정]
이 방법은 pam 인증을 이용한 방법이므로 /etc/pam.d/sshd 에 다음과 같은 라인을 추가시켜 준다. /etc/pam.d/sshd 제일 상위 줄에에 추가시켜 준다.

#%PAM-1.0 
auth required /lib/security/pam_listfile.so item=user sense=allow file=/etc/sshd_acl onerr=succeed


각 간격은 tab 으로 띄어준다.
위와 같이 추가한 뒤에는 /etc/sshd_acl 파일을 생성한뒤에 다음과 같이 추가한다.

 #vi /etc/sshd_acl
root
john


자! 그럼 모두 완료 되었다.

[실행테스트]
 -> sshd_acl에 등록된 사용자 [root@john john]# ssh -l john 192.168.0.2  john@192.168.0.2's password: 
Last login: Tue Dec 14 15:31:36 2016 from john

-> sshd_acl에 등록이 되지 않은 사용자
[root@john john]# ssh -l tommy 192.168.0.2
tommy@192.168.0.2's password:
Permission denied, please try again.

-> sshd_acl에 등록한 사용자 (tommy 를 acl등록후 연결 성공)
[root@john john]# ssh -l tommy 192.168.0.2
tommy@192.168.0.2's password:
Last login: Tue Dec 14 15:31:36 2016 from john

이 방법을 사용하여, 서버에 계정을 가지고 있으면 누구나 서버에 접속할 수 있는것이 아니라,
root가 허가를 해준 사용자만이 접속 가능하도록 설정할수 있다.

2017/03/16 08:58 2017/03/16 08:58
Posted by JParker
Tags , ,

Leave your greetings.

OS/Linux2017/02/28 17:57
SAN Storage에서 LUN을 던저주었을 경우 아래와 같이 설정한답니다.

mpathconf --enable 이후 /etc/multipath.conf 파일 내에 수정을 하고 재부팅 하면
기본적으로 설정 방식대로 올라오는 것이지요~

blacklist_exceptions {
# multipath 사용할 wwid들만 입력
wwid ...
}

blacklist {
# 아래와 같이 넣는 이유는 usb 또는 디스크 추가시
# multipath 내에 join 되지 않도록 하기 위함입니다
wwid *
}

# multipath 사용할 볼륨 고정
multipaths {
multipath {
wwid 360a.........
alias data001
}
multipath {
wwid 360b.......
alias data002
}
}

이렇게 하면 보통 큰문제없이 설치가 됩니다. 간혹 클러스터 구성에 quorum이 들어갈 경우 아래와 같이 넣어주셔야 합니다

defaults {
user_friendly_....
# 아래부분 추가 (quorum 사용시 또는 cluster 사용시)
no_path_retry fail
flush_on_last_del yes
}


[##_1C|2226670473.pdf||_##]
2017/02/28 17:57 2017/02/28 17:57
Posted by JParker
Tags , ,

Leave your greetings.