2014년 7월 8일 화요일

bash 스크립트 사용시 주의 사항

1.if 문을 쓸 때는 아래처럼 if 다음에 꼭 한칸을 띄워줘야 한다.
if [ $checkTmp = 'y' ]

에러 : syntax error near unexpected token `then'
1. 변수를 지정할때는 = 이전,다음에 빈칸이 있으면 안된다.
TotalMem=`free -m | grep Mem: | awk {'print $2'}`

에러 : command not found

2014년 7월 4일 금요일

smtp 서버 설치 후 현재 세션 눌렀을 때, '해당 인터페이스를 지원하지 않습 니다.' 에러

윈도우 2008 에서 smtp 서버 설치 후 현재 세션을 눌렀을 때,

 

'해당 인터페이스를 지원하지 않습니다.' 라는 에러메시지 가 띄워진다.

 

C:\Windows\System32\inetsrv>regsvr32 smtpsnap.dll
C:\Windows\System32\inetsrv>regsvr32 smtpadm.dll

 

위와 같이 dll 파일을 등록 시켜 준뒤, mmc 창을 다시 올리면 된다.

 

 

 

 

출처

2014년 7월 3일 목요일

비쥬얼svn 전체 백업 및 이전

비쥬얼svn 전체 백업

svnadmin 으로 백업 하고 복구 하는 법으로 하지 않고 그냥 Repositories 폴더만 복사해서
다른 서버로 이전했다.

1 . 새로운 서버에서 visualsvn 설치 후 서비스를 종료,
2. 새로 만들어진 Repositories 삭제.
3. 복사해 온 Repositories를 같은 위치에 붙여넣기
4. 해당 폴더의 권한에 visaulsvn admin,과 network service 를 추가.
5. visualsvn 재 시작.

2014년 7월 2일 수요일

qmail submission 추가

qmail submission 추가

외국에서 메일을 사용시 아웃룩에서 이런 에러 메시지가 발생.

outlook cannot connect to your outgoing smtp email server

검색해 보니, 외국같은 경우 25번 포트를 차단하는 경우가 많다고 한다.

그래서  부득이하게 587 포트를 열게 됬다.
cd /var/qmail/supervise

#submission 용 디렉토리 생성
mkdir qmail-smtpd-sub
mkdir qmail-smtpd-sub/log

#권한 추가
chmod +t qmail-smtpd-sub
cp ./qmail-smtpd/run ./qmail-smtpd-sub/
cp ./qmail-smtpd/log/run ./qmail-smtpd-sub/log
cp /var/qmail/bin/qmail-smtpd /var/qmail/bin/qmail-smtpd-sub

새로만든 qmail-smtpd-sub/run에 25번 포트를 587로 변경해 준다.
vi /var/qmail/supervise/qmail-smtpd-sub/run

...
/etc/tcp.smtp.cdb -u $Q_UID -g $Q_GID 0 25 \
...

/etc/tcp.smtp.cdb -u $Q_UID -g $Q_GID 0 587 \

 

서비스에 추가
ln -s /var/qmail/supervise/qmail-smtpd-sub/ /service/

이렇게 셋팅 하면 qmail을 재시작 안해도 자동으로 587 포트가 열려있다.
아웃룩에서 smtp 포트를 587 로 변경하고 테스트 해 보면 잘 된다.

참고

2014년 6월 27일 금요일

톰캣 두개 설치

톰캣 두개 설치
1. 일단 톰캣 하나는 그냥 설치.
2. 톰캣을 다운로드 받을 때, 파일 설명
zip (pgp, md5)#실행스크립트만 있다. service.bat 없음. 윈도우, 리눅스 겸용.
tar.gz (pgp, md5) # zip 파일과 동일. 압축형태만 다름
32-bit Windows zip (pgp, md5) #윈도우 컨트롤러 있음. service.bat 으로 서비스 등록 가능. 32bit
64-bit Windows zip (pgp, md5) #윈도우 컨트롤러 있음. service.bat 으로 서비스 등록 가능. 64bit
64-bit Itanium Windows zip (pgp, md5) ##윈도우 컨트롤러 있음. service.bat 으로 서비스 등록 가능. Itanium CPU 사용시
32-bit/64-bit Windows Service Installer (pgp, md5) ##윈도우 컨트롤러 있음. 실행스크립트가 없음.

자세한 사항은 여기 참조.
tomcat/bin 폴더에 catalina.bat에

제일 상단에 아래처럼 추가.
set CATALINA_HOME=D:\WAS\apache-tomcat-7.0.35
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43

startup.bat 이나, shutdown.bat 에는 추가 할 필요 없음.

기타 configtest.bat 등의 툴 실행시 CATALINA_HOME environment variable is not defined correctly 요런 메시지 나오면 추가해서 실행.
문제는 service에 등록 할 때 문제.
두개의 service를 이름을 다르게 해서 등록하면 한개의 서비스만 실행하면
두개의 톰캣이 모두 살아 남.

내가 원하는 것은 톰캣 한개를 죽이면 한개의 서비스만 죽는 건데, 그게 안됨.

해서 한개는 서비스로 사용해도 되지만, 두개는 안됨. 두개째는 startup.bat 파일로 실행 해 줘야 됨.

2014년 5월 23일 금요일

원격데스크탑(RDP) 공격 자동 차단 파워쉘

EvlWatcher 를 사용하여 무작위 공격에 대해서 차단을 진행 했었는데, 이게 윈도우 2012에서는 작동을 안한다.

그래서 이벤트로그를 파악하여 지정된 회수 이상 접속 실패를 발생할 시 윈도우 방화벽에 차단 등록하는 스크립트를 만들었다.
# 이벤트로그를 사용하여 특정 회수 이상 로그인 실패 아이피에 대하여 
# MY BLACKLIST 방화벽 등록
# 2014.05.22 NDH
# version 1.1


###################### Config ######################
#regex2 부분이 영문 윈도우OS 같은 경우 source network address 인가로 바꿔주면 된다.
#MyIp 부분은 내 아이피를 등록하여 내꺼는 막히지 않도록 하는 부분이고,
#deny_count 는 5회이상 접속시도 실패 로그가 있을 시 방화벽에 차단 등록하는 변수이다.
#deny_rule_name 는 윈도우 방화벽에 차단하는 해당 룰 이름이 설정되어 있어야 한다.

#English versoin Windows
#$regex2 = [regex] "Source Network Address:\t(\d+\.\d+\.\d+\.\d+)";
#Korean version Windows
$regex2 = [regex] "원본 네트워크 주소:\t(\d+\.\d+\.\d+\.\d+)";
$MyIp = "111.222.333.*";
$deny_count = 5;
$deny_rule_name = "MY BLACKLIST"
###################### Config ######################

$fw=New-object -comObject HNetCfg.FwPolicy2; # http://blogs.technet.com/b/jamesone/archive/2009/02/18/how-to-manage-the-windows-firewall-settings-with-powershell.aspx
$RuleCHK=$fw.rules | where-object {$_.name –eq $deny_rule_name}
if(!$RuleCHK){ $deny_rule_name + " rule does not generate."; exit; }


$blacklist = @();
$list ="";

$startTime = (get-date);

"-----------------------------"
"log searching Start : " + $startTime;
"-----------------------------"


$ips = get-eventlog Security | Where-Object {$_.EventID -eq 4625 } | foreach {
$m = $regex2.Match($_.Message); $ip = $m.Groups[1].Value; $ip; } | Sort-Object | Tee-Object -Variable list | Get-Unique


if($list.length -gt 0) {
foreach ( $attack_ip in $list)
{
if($attack_ip){
$myrule = $fw.Rules | where {$_.Name -eq $deny_rule_name} | select -First 1; # Potential bug here?

if (-not ($blacklist -contains $attack_ip))
{
$attack_count = ($list | Select-String $attack_ip -SimpleMatch | Measure-Object).count;
if ($attack_count -ge $deny_count) {
if (-not ($myrule.RemoteAddresses -match $attack_ip) -and -not ($attack_ip -like $MyIp))
{
"Found RDP attacking IP on 3389: " + $attack_ip + ", with count: " + $attack_count;
$blacklist = $blacklist + $attack_ip;
"Adding this IP into firewall blocklist: " + $attack_ip;
$myrule.RemoteAddresses+=(","+$attack_ip);
#echo $attack_ip >> C:\BlackListIP.txt

} else {
$attack_ip + " : Already registered IP"
}
}
}
}

}
< # $answer = read-host "`ndo you want delete security event log , yes or no" if ($answer -like "*y*" -and -not $Verbose) { Clear-EventLog -LogName Security cls "Security event log has been deleted" } else { # "`nScript terminated.`nPlease use your testing VM instead.`n" ; exit } #>


}else{
"인증 실패 이벤트 로그가 없습니다."
}

$endTime = (get-date);



"-----------------------------"
"log searching End : " + $endTime;
" 총 걸린 시간 : " + ($endTime - $startTime ) ;
".........실행 완료..........."
"-----------------------------"

regex2 부분이 영문 윈도우OS 같은 경우 source network address 인가로 바꿔주면 된다.
MyIp 부분은 내 아이피를 등록하여 내꺼는 막히지 않도록 하는 부분이고,
deny_count 는 5회이상 접속시도 실패 로그가 있을 시 방화벽에 차단 등록하는 변수이다.
deny_rule_name 는 윈도우 방화벽에 차단하는 해당 룰이 설정되어 있어야 한다. 설정하는 법은 여기

윈도우 2008,2012에서 정상 동작 확인 하였다.

 

스케쥴러 등록해서 사용.
schtasks /create /sc daily /ST 15:00 /tr "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe C:\Users\Administrator\Documents\rdp_block.ps1" /tn "RDP AUTO BLOCK"

 

ps1. 에러 발생.

Found RDP attacking IP on 3389: 1.234.45.48, with count: 23
Adding this IP into firewall blocklist: 1.234.45.48
"RemoteAddresses"을(를) 설정하는 동안 예외가 발생했습니다. "배열 경계가 잘못되었습니다. (예외가 발생한 HRESULT: 0x800706C6)"
위치 D:\관리프로그램\rdp_block.ps1:56 문자:37
+ $myrule. <<<< RemoteAddresses+=(","+$attack_ip);
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException

RemoteAddresses가 1000가 넘어가니 위의 에러 발생.

 

ps2. netsh.exe advfirewall firewall set rule name="$deny_rule_name" new remoteip="1.34.248.103/255.255.255.255,1.93.2.152/255.255.255.255,1.93.4.12/255.255.255.255,.." 이런식으로 추가 하려고 했으나,
잘못된 IP 주소 또는 주소 키워드를 지정했습니다. << 에러 발생.

결론.RemoteAddresses 가 1000개 이상 넘어 갈 수 없음.

 

ps.2016.05.25

remoteip 등록을 ip range로 등록시 대략 300개 정도를 추가하면 아래 오류가 나온다.
지정한 IP 주소 또는 주소 키워드가 올바르지 않습니다.

역시 limit이 있는 걸로 확인.

깃허브에 한번 등록 해봄.