2014년 11월 21일 금요일

원격데스크탑 포트 번호 변경.

스누피님이 만드신 배치파일 사용으로 대부분의 서버는 포트 변경이 정상적으로 이루어 졌다.

그러나 몇몇 서버, 특히 citrix 가 설치된 서버는 조금 문제가 있었다.

1. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber 만 변경 해서는 적용이 되지 않았다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber 도 같이 변경해 주어야 제대로 접속이 되었다.

2. citrix 같은 경우 원격데스크탑 서비스만 재 실행한다고 해서 제대로 구동되지 않는 다. 아예 재시작을 해주어야 됐음.

 

MS의 공식 fix 문서에서의 프로그램으로 실행해도 역시 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp\PortNumber 만 고침. 문서상에서도 그러함.

 

다른 검색결과에서는 두개 다 변경 하는 걸로 설명되어 있는 것도 여럿 있음. 두개 값의 차이점은 모르겠음.

 

아래는 스누피님의 배치파일 내용. 주석 달음.
@echo off
echo.
echo.
echo 원격 데스크톱 포트 변경하기 by snoopy
echo 지원 OS : 윈도우 비스타, 7, 2008, 2008 R2
echo.
set /p port=포트 번호 입력 :

REM 레지스트리 위치 같은 경우 윈도우 2000 서버 역시 동일 함.
REM fDenyTSConnections 0이면 원격데스크탑 활성화, 1이면 비활성화.
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
REM 원격데스크탑 포트 변경.
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d %port% /f
REM 원격데스크탑 포트 변경, 이건 추가 하였음.
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d %port% /f
if errorlevel 1 (
cls
echo.
echo.
echo 우클릭 해서 관리자 권한으로 실행해주세요.
pause>nul
exit
)
REM 윈도우 2000 같은 경우 지원하지 않는 명령어임. 해서 2000이하에서는 안됨.
netsh advfirewall firewall add rule name="원격 데스크톱 %port%" dir=in action=allow protocol=tcp localport=%port%
net stop /y TermService
net start /y TermService
echo 모든 작업이 완료되었습니다.
pause>nul
exit

 

 

2014년 11월 4일 화요일

java.net.BindException: Permission denied

centos 6.2  버젼에서 yum 으로 톰캣 설치.

80포트로 바꾸고 아래와 같은 에러 발생.

...

LifecycleException:  Protocol handler initialization failed: java.net.BindException: Permission denied

...

 

1024이하의 포트를 사용할 경우 Root 권한 밖에 안된다고 하는데, root 권한으로 실행 해도 해당 메시지가 나옴.

/etc/init.d/tomcat6 스크립트를 vi 로 열어보면

 

사용자를  tomcat으로 바꾸고 실행하는 부분이 있다.

$SU - $TOMCAT_USER -c "$TOMCAT_SCRIPT start"

 

제일 상단에 보면 TOMCAT_USER의 변수가 설정되어 있는 데, 이걸 root로 변경후 실행 하면 오류없이 제대로 동작.

 

참조

geolocation.getcurrentposition timeout 문제.

폰갭으로 감싼 웹페이지.

디바이스 : 갤탭 10.1

 

OS를 킷캣으로 바꾼 후 geolocation.getcurrentposition 제대로 동작 안 하고, timeout 됨.

안드로이드  크롬에서 역시 같은 현상.

일반 브라우저는 잘됨.

 

안되는 이유는 진짜 간단 했음.;;

 

킷캣 업데이트 후 GPS 기능을 껏다, 다시 키면 됨...;

kisa openapi 질의 내용이 부정확 합니다. error

kisa openapi 로 질의시 아래와 같은 에러가 뜸.

문자셋 때문인가 해서 euc-kr, ansi 다 바꿔 봐도 안됨.

kisa에 문의.

아래와 같이 답변.
Whois OpenAPI를 통해 질의를 주신 부분에 대해 아래와 같이 답변드립니다.

KISA에서 운영하는 OpenAPI는 KISA가 보유한 IP 및 도메인(.KR 및 .한국)에 대해 최적화 되어 있습니다.

도메인을 검색하면 형식에 맞지 않는다고 응답이 나가는 부분은 선생님께서 국가도메인(.KR 및 .한국)이 아닌 기타 도메인(.com, ,net 등)을 질의하신 것으로 보입니다.

이는 각 도메인마다 제공하는 Whois 정보가 상이하여, 타 도메인은 KISA Whois OpenAPI로 제공이 불가하오니, 이점 참고하여 주시기 바랍니다.

 
<whois>
<krdomain>
<error>
<name>naver.com</name>
<error_code>031</error_code>
<error_msg>
# KOREAN(UTF8) 질의 내용이 부정확 합니다. 아래 주소 조회 예제를 확인하신 후 조회하여 주시기 바랍니다. 도메인 네임 검색 : 예) nic.or.kr 한글 도메인 검색 : 예) 한국인터넷정보센터.kr # ENGLISH The query type is incorrect. Please see the following query examples and try again. Domain Name Search : ex) nic.or.kr - NIDA/KRNIC Whois Service -
</error_msg>
</error>
</krdomain>
</whois>

naver.co.kr 로 했더니, 제대로 가져옴.

2014년 10월 29일 수요일

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path

서버 : centos 6.3

 

톰캣 실행시 아래와 같은 로그 나옴.

INFO: The APR based Apache Tomcat Native library which allows optimal performance in
production environments was not found on the java.library.path: /usr/lib64/gcj-4.4.7

 

INFO 라 무시해도 되지만 신경이 쓰임.




APR 이란 아파치 포터블 런타임(Apache Portable Runtime)의 약자. 톰캣을 웹서버로 사용할 때 퍼포먼스 향상을 위해 사용.

http://kenu.github.io/tomcat70/docs/apr.html




yum 으로 설치 지원이 안되서, 직접 컴파일 해야 됨.

 

컴파일 시 필요 한 것들,  yum 설치.

yum install apr apr-devel openssl-devel java-1.7.0-openjdk java-1.7.0-openjdk-devel

 

컴파일 도구 설치
yum groupinstall "Development Tools"




tomcat-native 소스 파일 컴파일.  (APR를 톰캣에서 사용하기 위한 JNI wrappers)

wget http://mirror.apache-kr.org/tomcat/tomcat-connectors/native/1.1.31/source/tomcat-native-1.1.31-src.tar.gz
tar zxvf tomcat-native-1.1.31-src.tar.gz
cd tomcat-native-1.1.31-src
cd jni/native/

./configure --with-apr=/usr/bin/apr-1-config

 

에러발생시

checking for JDK location (please wait)... checking Try to guess JDK location... configure: error: can't locate a valid JDK location

 

yum 설치한 jdk 위치 확인후

rpm -ql java-1.7.0-openjdk

 

JDK 위치 정보 옵션으로 지정후 재 설치
./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/
make
make install

 

설치 경로를 주지 않으면 /usr/local/apr/lib 위치로 설치됨.

 

/etc/profile 파일 제일 하단에 아래 추가
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

 

적용
# source /etc/profile

 




 

tomcat  시작시 아래처럼 나오면 성공.

INFO: Loaded APR based Apache Tomcat Native library 1.1.31.

 

 

참조

톰캣 실행시 ...was not found on the java.library.path: /usr/lib64/gcj-4.4.7... 에러 발생.

서버 : centos 6.5 64bit

 

/usr/lib64/gcj-4.4.7 해당 위치에 파일이 있는 데도 에러남.

 

 

jdk 설치로 해결.
#jdk 찾기
yum search openJDK
#jdk 설치
yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

 

 

참조 

2014년 10월 28일 화요일

현재 접속자 중 해외에서 접속한 사람이 있는 지 확인 하는 파워쉘 스크립트.

이 스크립트를 사용하려면 kisa에서 whois openapi key 발급 받아야 됨.


###################### Config ######################
#kisa 에서 발급받은 api key
#http://whois.kisa.or.kr/kor/whois/openAPI_KeyCre.jsp
$kisaKey = "00000000000000000000"
###################### Config ######################




###### kisa open api를 이용해 한국 아이피인지 체크 ########
function whoisKR ($IpAddress)
{
if(-not $IpAddress) {echo "input ip address"; return}

$countryCode = ""

# Do whois lookup with ARIN on the IP address, do crude error check.
$webclient = new-object System.Net.WebClient
$webclient.Encoding = [System.Text.Encoding]::UTF8
[xml][/xml] $ipxml = $webclient.DownloadString("http://whois.kisa.or.kr/openapi/ipascc.jsp?key=$kisaKey&query=$IpAddress&answer=xml")
if (-not $?) { echo "error" ; return }

$countryCode = $ipxml.whois.countryCode

if($countryCode -ne "KR")
{
return $FALSE #NOT KR
}else{
return $TRUE #KR
}

}
###### kisa open api를 이용해 한국 아이피인지 체크 ########


#whoisKR
#whoisKR "222.122.20.1"
#whoisKR "54.217.151.196"


###### MAIN
###### netstat 를 통해 외부 IP가 한국 꺼인지 아닌 지 체크. ########
###### 한국이 아니면 해당 IP를 deny 룰에 적용. ########
###### 참조 : http://www.lazywinadmin.com/2014/08/powershell-parse-this-netstatexe.html
$ForeignAddressIP = @()

# Get the output of netstat
$data = netstat -nat

# Keep only the line with the data (we remove the first lines)
$data = $data[5..$data.count]

# Each line need to be splitted and get rid of unnecessary spaces
foreach ($line in $data)
{
# Get rid of the first whitespaces, at the beginning of the line
$line = $line -replace '^\s+', ''

# Split each property on whitespaces block
$line = $line -split '\s+'

$temp = ($line[2] -split ":")[0]

#예외처리
switch ($temp)
{
"0.0.0.0" {}
"127.0.0.1" {}
"*"{}
"["{}
default {$ForeignAddressIP += $temp}
}

}


$ForeignAddressIP = $ForeignAddressIP | Sort-Object -unique
foreach( $checkIP in $ForeignAddressIP)
{
#한국이면 true, 아니면 false
if(whoisKR $checkIP)
{
'한국 IP : ' + $checkIP
}else{
'!!!!경고, 한국 IP 아님!!!! : ' + $checkIP
}
'-----------------------'

}

cmd /c pause | out-null