톰캣 두개 설치
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년 6월 27일 금요일
2014년 6월 17일 화요일
2014년 5월 23일 금요일
원격데스크탑(RDP) 공격 자동 차단 파워쉘
EvlWatcher 를 사용하여 무작위 공격에 대해서 차단을 진행 했었는데, 이게 윈도우 2012에서는 작동을 안한다.
그래서 이벤트로그를 파악하여 지정된 회수 이상 접속 실패를 발생할 시 윈도우 방화벽에 차단 등록하는 스크립트를 만들었다.
regex2 부분이 영문 윈도우OS 같은 경우 source network address 인가로 바꿔주면 된다.
MyIp 부분은 내 아이피를 등록하여 내꺼는 막히지 않도록 하는 부분이고,
deny_count 는 5회이상 접속시도 실패 로그가 있을 시 방화벽에 차단 등록하는 변수이다.
deny_rule_name 는 윈도우 방화벽에 차단하는 해당 룰이 설정되어 있어야 한다. 설정하는 법은 여기
윈도우 2008,2012에서 정상 동작 확인 하였다.
스케쥴러 등록해서 사용.
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개 정도를 추가하면 아래 오류가 나온다.
역시 limit이 있는 걸로 확인.
깃허브에 한번 등록 해봄.
그래서 이벤트로그를 파악하여 지정된 회수 이상 접속 실패를 발생할 시 윈도우 방화벽에 차단 등록하는 스크립트를 만들었다.
# 이벤트로그를 사용하여 특정 회수 이상 로그인 실패 아이피에 대하여
# 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이 있는 걸로 확인.
깃허브에 한번 등록 해봄.
2014년 5월 12일 월요일
bind slave zone 파일을 txt로 지정
bind를 최신으로 업그레이드를 했더니, slave의 zone 파일을 binary로 만들어 버린다.
named.conf 옵션에 아래와 같이 추가 해 주면 텍스트로 나온다.
출처
named.conf 옵션에 아래와 같이 추가 해 주면 텍스트로 나온다.
options {
...
masterfile-format text;
...
}
출처
bind raw format 보는 스크립트
bind 9.9.0 버젼 부터 slave dns의 zone 파일이 raw binary format으로 만들어진다.
해서 cat 명령으로 보면 이상한 내용이 보인다.
named-compilezone 명령어로 볼수 있는데, 이 좀 귀찮게 되어 있어 스크립트로 만든다.
아예 binary 로 생성되는 것을 txt로 바꾸려면 여기
참조
해서 cat 명령으로 보면 이상한 내용이 보인다.
named-compilezone 명령어로 볼수 있는데, 이 좀 귀찮게 되어 있어 스크립트로 만든다.
#!/bin/sh
zoneDir=/var/named/chroot/var/named/slaves/
if [ $# != 1 ] ; then
echo "Error domain name is not defined e.g. showzone domain.org.uk"
exit 0
fi
/usr/sbin/named-compilezone -f raw -F text -o /tmp/myzone $1 ${zoneDir}$1.zone
cat /tmp/myzone
rm -rf /tmp/myzone
아예 binary 로 생성되는 것을 txt로 바꾸려면 여기
참조
2014년 4월 29일 화요일
윈도우 배치 split 명령어
윈도우 커맨드로 원하는 결과 값만 결과값을 나타내기
예를 들어 dir 명령어를 치면 다음과 같이 나온다.
2014-02-21 오후 11:13 <DIR> Contacts
2014-04-26 오후 02:04 <DIR> Desktop
2014-04-29 오전 09:57 <DIR> Documents
2014-04-29 오후 01:05 <DIR> Downloads
여기서 해당 날짜와 시간만 구하고 싶을 때는 다음과 같이 적어 넣는다.
출력결과 :
2014-04-09 오전 09:42
2014-04-08 오후 06:15
2014-04-08 오후 09:03
2014-03-21 오전 08:57
2014-03-20 오후 04:47
2014-03-20 오후 04:30
사용법은 delims로 나눌 기준을 구한다. 위에서는 (공백)으로 처리 했다.
tokens는 delims로 나눴을 때 몇번째 값을 출력할 지를 설정.
위에서는 1,2,3 을 설정했으므로 공백 기준 첫번째는 '날짜'이고, 다음은 '오후', 세번째는 '시간' 되겠다.
('dir') 부분은 명령어를 나타내고, %i %j %k는 토큰에서 지정된 값을 출력하는 변수이다.
출처는 여기
예를 들어 dir 명령어를 치면 다음과 같이 나온다.
2014-02-21 오후 11:13 <DIR> Contacts
2014-04-26 오후 02:04 <DIR> Desktop
2014-04-29 오전 09:57 <DIR> Documents
2014-04-29 오후 01:05 <DIR> Downloads
여기서 해당 날짜와 시간만 구하고 싶을 때는 다음과 같이 적어 넣는다.
for /f "tokens=1,2,3 delims= " %i in ('dir') do @echo %i %j %k
출력결과 :
2014-04-09 오전 09:42
2014-04-08 오후 06:15
2014-04-08 오후 09:03
2014-03-21 오전 08:57
2014-03-20 오후 04:47
2014-03-20 오후 04:30
사용법은 delims로 나눌 기준을 구한다. 위에서는 (공백)으로 처리 했다.
tokens는 delims로 나눴을 때 몇번째 값을 출력할 지를 설정.
위에서는 1,2,3 을 설정했으므로 공백 기준 첫번째는 '날짜'이고, 다음은 '오후', 세번째는 '시간' 되겠다.
('dir') 부분은 명령어를 나타내고, %i %j %k는 토큰에서 지정된 값을 출력하는 변수이다.
출처는 여기
crontab -e 명령어 사용시 소소한 팁
crontab -e 명령어로 크론 적용 후 :w 로 저장을 하면 적용이 안됨.
반드시 :wq 로 저장 후 나가 줘야 크론 적용이 됨.
안 나오면 크론 실행도 안됨.
반드시 :wq 로 저장 후 나가 줘야 크론 적용이 됨.
안 나오면 크론 실행도 안됨.
피드 구독하기:
글 (Atom)