Posted on 2015/11/12 10:44
Filed Under Programming/C#

DNS server, DNS service  

C#으로 짠 또다른 프로그램(other.exe)을 실행하기위해서

 

System.Diagnostics.Process proc = System.Diagnostics.Process.Start("./other.exe");

 

 

 

종료

 

public const int WM_SYSCOMMAND = 0x0112;

public const int SC_CLOSE = 0xF060;

 

[DllImport("user32.dll")]

public static extern int FindWindow(

    string lpClassName, // class name

    string lpWindowName // window name

);

 

[DllImport("user32.dll")]

public static extern int SendMessage(

    int hWnd, // handle to destination window

    uint Msg, // message

    int wParam, // first message parameter

    int lParam // second message parameter

);

 

 

1. FindWindows로 창핸들을 찾아온다

 

int iHandle=Win32.FindWindow(className ,txtWndNm.Text);

2. SendMessage로 클로즈메세지를 보낸다.

 

int j=Win32.SendMessage(iHandle, Win32.WM_SYSCOMMAND,Win32.SC_CLOSE, 0);

 

Process.Kill()을 했는데도 안죽은게 이상하긴 하지만 위와 같이 사용하시면 확실히 죽을겁니다.

또한 외부 프로그램에 Message를 던질수도 있습니다.

2015/11/12 10:44 2015/11/12 10:44

Posted on 2015/11/05 11:26
Filed Under Programming/C#

DNS server, DNS service  

관리자 권한이 없는 상태에서 시스템의 정보를 읽거나 쓰려고 할때 프로그램이 올바르게 작동하지 않습니다. 이럴때 프로그램이 실행되면서, 관리자 권한으로 상승시키는 것이 필요한데요. C#에서 이러한 내용에 대한 코드를 정리합니다. 모든 코드는 Program.cs에서 이루어집니다. 먼저 using 절에 다음과 같은 네임스페이스를 추가합니다.




using System.Security.Principal;
using System.Diagnostics; 


그리고 현재 관리자 권한 상태인지의 여부를 파악하는 함수를 추가합니다.


public static bool IsAdministrator()
{
    WindowsIdentity identity = WindowsIdentity.GetCurrent();
 
    if (null != identity)
    {
        WindowsPrincipal principal = new WindowsPrincipal(identity);
        return principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
 
    return false;


Program.cs 파일의 Main 함수의 시작 부분에 다음의 코드를 추가하여 관리자 권한으로 실행되는지를 확인 한다.


            if (IsAdministrator() == false)
            {
                try
                {
                    ProcessStartInfo procInfo = new ProcessStartInfo();
                    procInfo.UseShellExecute = true;
                    procInfo.FileName = "IPSwitcher";
                    procInfo.WorkingDirectory = Environment.CurrentDirectory;
                    procInfo.Verb = "runas";
                    Process.Start(procInfo);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("This Program need to Administrator Authority:" + ex.Message);
                }
                return;
            }
 
2015/11/05 11:26 2015/11/05 11:26

Posted on 2015/11/02 09:59
Filed Under Windows/장애처리

DNS server, DNS service  

SVN 클라이언트중에 TortoiseSVN 만한 것이 없어, 잘 사용하고 있는데

언젠가 부터 윈도우 탐색기에 아이콘 표시가 나타나지 않는다..
아이콘이 안보이면 무척 불편해서..

확인해보니, Explorer에서 오버레이가 10개까지 지원되는데, Explorer Shell 에서 아이콘 오버레이 우선 순위가 밀려서 나타나지 않는것..

수정 방법
1. regedit 실행
2. 다음의 레지스트리 키위치로 이동 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 
3. 2번 키의 자식 폴더에 tortoiseXXXXX 앞에 공백을 추가하여 우선 순위를 올려준다.
4. 탐색기 다시 시작하거나 윈도 리부팅

사용자 삽입 이미지
2015/11/02 09:59 2015/11/02 09:59

Posted on 2015/09/30 10:11
Filed Under Windows/장애처리

DNS server, DNS service  

1. 명령프롬프트 실행 (관리자 권한)
2. "net start vmx86" 입력
2015/09/30 10:11 2015/09/30 10:11

Posted on 2015/06/08 13:53
Filed Under Windows/최적화 및 팁

DNS server, DNS service  

원문 : https://msdn.microsoft.com/ko-kr/library/dn251565.aspx

WinSxS 폴더 정리

일반적인 질문 중 하나는 일부 디스크 공간을 다시 얻기 위해 WinSxS 폴더를 삭제할 수 있는가 하는 것입니다. 간단한 대답은 아니요입니다. 하지만 WinSxS 폴더 크기를 줄일 수 있는 방법이 있습니다. WinSxS 폴더에 대한 자세한 내용은 구성 요소 저장소 관리를 참조하세요. 이 항목에서는 실행 중인 Windows 8.1 버전에서 WinSxS 폴더 크기를 줄이는 다양한 방법에 대해 설명합니다.

Windows 8.1 및 Windows Server 2012 R2에서는 이 항목에 설명된 방법과 유사한 방법을 사용하여 WinSxS 크기를 자동으로 줄이지만 이러한 방법에는 최신 버전에서 다른 구성 요소로 대체된 구성 요소가 포함된 패키지를 제거하고 삭제하는 등의 내부 프로세스가 포함됩니다. 이전 버전의 일부 구성 요소는 필요한 경우 롤백할 수 있도록 일정 기간 동안 시스템에서 유지됩니다. 일정 기간 후에 이러한 구성 요소는 설치에서 제거됩니다.

오프라인 Windows 이미지에서 구성 요소 저장소 크기 줄이기에 설명된 대로 몇 가지 동일한 기술을 사용하여 Windows 이미지의 크기를 줄일 수도 있습니다.

Warning경고
WinSxS 폴더에서 파일을 삭제하거나 전체 WinSxS 폴더를 삭제하면 시스템이 심각하게 손상되어 PC가 부팅되지 않고 PC를 업데이트하지 못할 수 있습니다.

 

 

Windows 8.1 및 Windows Server 2012 R2에서는 패키지 삭제와 구성 요소 압축을 사용하여 WinSxS 폴더를 정리하는 구성 요소 저장소 정리를 시작하는 다양한 방법이 있습니다.

StartComponentCleanup 작업은 Windows 8에서 만들어지고 시스템이 사용되지 않을 때 자동으로 구성 요소를 정기적으로 정리합니다. 이 작업은 운영 체제에서 트리거할 때 자동으로 실행되도록 설정되어 있습니다. 자동으로 실행될 경우 이 작업은 이전 버전의 구성 요소를 제거하기 전에 업데이트된 구성 요소가 설치된 후 30일 이상 대기합니다.

이 작업을 실행하도록 선택하면 작업에 시간 제한 1시간이 제공되며 모든 파일이 완벽하게 정리되지 않을 수 있습니다.

  1. 작업 스케줄러가 열려 있지 않으면 작업 스케줄러를 시작합니다. 자세한 내용은 작업 스케줄러 시작을 참조하세요.

  2. 콘솔 트리를 확장하고 Task Scheduler Library\Microsoft\Windows\Servicing\StartComponentCleanup으로 이동합니다.

  3. 선택한 항목에서 실행을 클릭합니다.

note참고
StartComponentCleanup 작업을 명령줄에서 시작할 수도 있습니다.

 

schtasks.exe /Run /TN "\Microsoft\Windows\Servicing\StartComponentCleanup"

 

 

DISM(배포 이미지 서비스 및 관리)은 Windows 기능, 패키지, 드라이버 및 국가별 설정을 설치, 제거, 구성 및 업데이트하는 데 사용할 수 있는 명령줄 도구입니다. Dism.exe의 /Cleanup-Image 매개 변수는 고급 사용자에게 WinSxS 폴더 크기를 추가로 줄일 수 있는 더 많은 옵션을 제공합니다. 자세한 내용은 DISM 운영 체제 패키지 서비스 명령줄 옵션을 참조하세요.

  1. 실행 중인 Windows 8.1 버전에서 Dism.exe의 /StartComponentCleanup 매개 변수는 업데이트된 구성 요소의 이전 버전이 즉시 삭제되고(30일 유예 기간 없이) 시간 제한 1시간이 없다는 점을 제외하고 작업 스케줄러에서 StartComponentCleanup 작업을 실행한 것과 유사한 결과를 제공합니다.

    관리자 권한 명령 프롬프트에 다음과 같이 입력합니다.

    Dism.exe /online /Cleanup-Image /StartComponentCleanup
    
  1. 실행 중인 Windows 8.1 버전에서 /ResetBase 스위치를 DISM의 /StartComponentCleanup 매개 변수와 함께 사용하면 구성 요소 저장소에 있는 모든 구성 요소의 모든 교체된 버전이 제거됩니다.

    관리자 권한 명령 프롬프트에 다음과 같이 입력합니다.

    Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
    
    Warning경고
    이 명령이 완료된 후에는 일부 기존 서비스 팩 및 업데이트를 제거할 수 없습니다. 이로 인해 이후 서비스 팩 또는 업데이트의 제거가 차단되지 않습니다.

     

     

  1. 서비스 팩에 사용되는 공간 크기를 줄이려면 실행 중인 Windows 8.1 버전에서 Dism.exe의 /SPSuperseded 매개 변수를 사용하여 서비스 팩 제거에 필요한 모든 백업 구성 요소를 제거합니다. 서비스 팩은 특정 Windows 버전에 대한 누적 업데이트 모음입니다.

    관리자 권한 명령 프롬프트에 다음과 같이 입력합니다.

    Dism.exe /online /Cleanup-Image /SPSuperseded
    
    Warning경고
    이 명령이 완료된 후에는 서비스 팩을 제거할 수 없습니다.

     

     

디스크 정리를 사용하여 드라이브에서 필요 없는 파일 수를 줄이면 PC가 더 빨리 실행되도록 할 수 있습니다. 그러면 임시 파일 및 시스템 파일이 삭제되고, 휴지통이 비워지며, 더 이상 필요하지 않은 여러 가지 기타 항목들이 제거됩니다. 업데이트를 정리하는 옵션은 구성 요소 저장소 크기를 줄이는 데 도움이 됩니다.

  1. 시스템 파일을 삭제하려면 디스크 정리를 사용하여 파일 삭제에 제공된 단계를 실행합니다.

2015/06/08 13:53 2015/06/08 13:53

Posted on 2015/05/27 23:47
Filed Under Mobile/WindowsPhone

DNS server, DNS service  

지금구매한다면 루미아 520을 사는 것보다 LTE까지 사용가능한 루미아 635를 사시는 것이 좋을 것 같습니다.
루미아 635는 성능은 루미아 520과 많이 차이가 나지 않지만 CPU가 좋아지고 LTE까지 지원됩니다.
그리고 Windows 10으로도 업데이트 예정되어 있습니다.
지금 휴대폰용 Windows 10 Technical Preview는 공개되어 있으며
https://insider.windows.com/
먼저 Windows 10을 써 보고 싶으시면 위 링크를 통하여 Windows Insider를 설치 후 업데이트 하시면 됩니다.
써보시고 원치않으면 원복도 가능하니다.
http://windows.microsoft.com/ko-kr/windows/preview-backup-restore
그리고 언락하신 후에 APN 설정도 해 주셔야 됩니다...
SKT인 경우 아래 처럼 해 주시면 되요..
인터넷 APN
APN : lte.sktelecom.com  ( 3G : web.sktelecom.com )
MMS APN
APN : lte.sktelecom.com   ( 3G : web.sktelecom.com )
WAP 게이트웨이(URL) : lteoma.nate.com   ( 3G : NULL)
WAP 게이트웨이 포트 : 9093    ( 3G : NULL)
MMSC(URL) : http://omms.nate.com/oma_mms
MMSC 포트 : 9082
MMSC 프로토콜 : WAP 2.0
최대MMS 크기 : 450
IP 유형 : IPv4
SKT 3G만 쓰시는 분들은 통화는 상관없지만 데이터는 네트워크를 3G 만 활성화 해 주셔야 데이터가 끊기지 않고 사용이 가능합니다.
다이얼패드에서 ##3282# 을 누르시면 네트워크를 TEST하는 히든모드로 들어가실 수 있습니다.
여기에서 오른쪽 아래 ... 을 누르신후??Setting 을 클릭하면 네트워크를 Auto 또는 Manual 로 설정 할 수 있도록 선택 창이 나옵니다.
이 창에서 Manual을 선택하시면 원하는 네트워크만 골라서 활성화를 하실 수 있습니다.
SKT 3G만 쓰시는 분들은 WCDMA 2100만 활성화 하게 되면 원할하게 데이터 접속이 됩니다.
SKT LTE도 APN은 동일하게 설정하시면 됩니다.
그리고 고폰 버젼은 액세스 포인트를 별도로 깔지 않아도 되는 것 같습니다.
기본으로도 바로 인터넷 공유가 가능합니다.
혹시나 하고 액세스 포인트를 깔아서 간편하게 APN을 설정하려고 했지만 지금 버젼은 적용이 않된다고 합니다.
2015/05/27 23:47 2015/05/27 23:47

Posted on 2015/04/07 10:49
Filed Under Linux/장애처리

DNS server, DNS service  

페도라든 우분트든,.. 내가 사용하고 있는 리눅스 시스템에서, 분명히 사용중이 아닌 경우에도 
mount된 디렉토리를 umount 하고자 할 때,
특정 사용자 & 프로세스가 해당 디렉토리를 사용하고 있다며 

[root@linux ~]# umount /backup
umount: /backup: device is busy.        
(In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))


라고 
"device is busy" 메세지가 발생하며 umount 가 되지 않을 때가 있다. 

누가? 또는 어떤 프로세스가 해당 mount 영역을 사용하고 있는지 확인 하고 싶을때는

# fuser -cu /backup


이 경우 umount를 위해 해당 프로세스를 강제로 kill 하는 방법은 아래와 같다.


# fuser -ck 마운트디렉토리

ex) fuser -ck /backup


위 명령으로 프로세스를 kill 하고 umount를 재시도하면 정상적으로 mount가 해제 된다.

2015/04/07 10:49 2015/04/07 10:49

Posted on 2015/04/05 23:51
Filed Under Linux/설정방법

DNS server, DNS service  

** sendmail 설치 및 설정

 

> 설치 

# apt-get install sendmail
# apt-get install sendmail-cf    ;; sendmail 설정

> 제대로 설치되었나 확인

# cd /etc/mail

 

> 내부에서만 메일을 주고 받을수 있게 설정해보자

# vi /etc/mail/sendmail.mc

Line 56 아래와 같이 수정
DAMON_OPTIONS('Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl

Line 59 아래와 같이 수정
DAMON_OPTIONS('Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl

# m4 sendmail.mc   ;; 변경된 값 적용

 

> 접근할 수 있는 IP 대역 설정 추가

 

# vi /etc/mail/access 아래 부분 추가

127.0.0.1 RELAY 192.168.0 RELAY ;; 내부 아이피에서는 허용 ;; 공인 아이피가 있다면 같이 추가해줌 # makemap hash access < access ;; 적용

> sendmail 재시작

 

# service sendmail restart

 

  

** sendmail이 가긴 가는데 너무 느리게 갈 때

 

> sendmail error log 확인

 

# vi /var/log/mail.err

아래 내용이 있는지 확인
My unqualified host name (localhost) unknown;; sleeping for retry

 

host name을 못 찾겠다 하지만 메일은 보내주겠다는 내용인 것 같음.

 

> host name 추가

# vi /etc/hots

127.0.0.1    localhost.localdomain localhost (yourhostname)

 

 

 

2015/04/05 23:51 2015/04/05 23:51

Posted on 2015/03/31 10:12
Filed Under Linux/설정방법

DNS server, DNS service  

Fail2Ban (with iptables) And Asterisk


Fail2Ban


Fail2Ban is a limited intrusion detection/prevention system. It works by scanning log files and then banning IPs based on the entries in those logs. Note that Digium is moving away from writing security information to log files, and is now using AMI events. Consider fail2ban a short-term solution only.

You can get Fail2Ban, as well as more documentation, at www.fail2ban.org. At the time this is being written, the current release is 0.8.4.

Fail2Ban With Asterisk


The following describes how to setup Fail2Ban to protect an Asterisk PBX from SIP brute force attempts and scans utilizing the iptables firewall.

SECURITY NOTE: fail2ban is rather limited in its ability to detect attacks against asterisk. 
More info http://forums.asterisk.org/viewtopic.php?p=159984
Consider a more comprehensive product like the free edition of SecAst www.generationd.com

Easy Install Script for Fail2ban version 0.8.4 / Red Hat


This script was written by Cédric Brohée in order to simplify and accelerate the integration of the solution in a basic Asterisk configuration on Red Hat.
Do not hesitate to read the bash script and make changes to match your own configuration.

Before running it, you will have to do chmod 755.

Download script with new dedicated sources :
Fail2ban.sh_030512.txt



Installing


Log into the system and su - root, or sudo -i to get a root shell on Ubuntu.

CentOS/Red Hat (this method may install an older version of fail2ban):

Install rpmforge or optionally fetch the fail2ban rpm directly from rpmforge.
Install fail2ban using yum:

yum install fail2ban

Debian/Ubuntu:

apt-get install fail2ban

Source installation:
Change directories to /usr/src:

cd /usr/src

Download and extract Fail2Ban (check for newer releases):

wget http://sourceforge.net/projects/fail2ban/files/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2/download
tar jxf fail2ban-0.8.4.tar.bz2

Enter the Fail2Ban directory you just extracted:

cd fail2ban-0.8.4

Make sure python and iptables are installed:

CentOS/Red Hat:

yum install python iptables

Debian/Ubuntu:

apt-get install python iptables

Install Fail2Ban:

python setup.py install

Install the Fail2Ban init script (for source installations):

Centos/Red Hat (if you installed via yum/rpm, the init script has already been installed):

cp /usr/src/fail2ban-0.8.4/files/redhat-initd /etc/init.d/fail2ban
chmod 755 /etc/init.d/fail2ban

For other distributions' init scripts, please refer to documentation specific to them.



Configure Fail2Ban


We need to create a configuration for Fail2Ban so that it can understand attacks against Asterisk.

Create a new filter configuration for Asterisk:

touch /etc/fail2ban/filter.d/asterisk.conf

The contents of /etc/fail2ban/filter.d/asterisk.conf should be the following:

Generic (without using /var/log/asterisk/security)


# Fail2Ban configuration file
#
#
# $Revision: 250 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf


[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

# Asterisk 1.4 use the following failregex

failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Peer is not supposed to register
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - ACL error (permit/deny)
            NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Device does not match ACL
            NOTICE.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
            NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
            NOTICE.* .*: Sending fake auth rejection for device .*\<sip:.*\@<HOST>\>;tag=.*

# In Asterisk 1.8 use the same as above, but after <HOST> add :.* before the single quote. This is because in Asterisk 1.8, the log file includes a port number which 1.4 did not.

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =


If you're having issues with your system not banning properly when the "Registration from" section in your log file contains a quotation mark (") as in this example:

[2011-04-07 17:53:11] NOTICE[7557] chan_sip.c: Registration from '"69106698"<sip:69106698@123.123.123.123>' failed for '123.123.123.123' - No matching peer found


Add the following line, with the others above, in asterisk.conf:

NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>' - No matching peer found

Recently noticed attacks:

[2011-06-21 17:53:11] NOTICE[7557] chan_sip.c: Registration from '"XXXXXXXXXX"<sip:XXXXXXXXXX@123.123.123.123>' failed for '123.123.123.123' - Wrong Password

Adding the following line will block these attempts:

NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>' - Wrong password

Using new /var/log/asterisk/security

For this you will need an Asterisk that comes with the new Asterisk Security Framework (Asterisk 10+). You will also need to enable the log output in logger.conf by adding or uncommenting the line "security => security". Likewise, you willl also need to ensure the date format has been changed in logger.conf to "dateformat=%F %T".


# Fail2Ban configuration file
#
#
# $Revision: 250 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf


[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

failregex = SECURITY.* SecurityEvent="FailedACL".*RemoteAddress=".+?/.+?/<HOST>/.+?".*
            SECURITY.* SecurityEvent="InvalidAccountID".*RemoteAddress=".+?/.+?/<HOST>/.+?".*
            SECURITY.* SecurityEvent="ChallengeResponseFailed".*RemoteAddress=".+?/.+?/<HOST>/.+?".*
            SECURITY.* SecurityEvent="InvalidPassword".*RemoteAddress=".+?/.+?/<HOST>/.+?".*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =



Next edit /etc/fail2ban/jail.conf to include the following section so that it uses the new filter. This does a 3-day ban on the IP that performed the attack. It is recommend to set the bantime in the [DEFAULT] section so if affects all attacks. It is also recommend to turn on an iptables ban for ssh, httpd/apache, and ftp if they are running on the system. Be sure to edit the sendmail-whois action to send notifications to an appropriate address:


Generic (without using /var/log/asterisk/security)


[asterisk-iptables]

enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
           sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.org]
logpath  = /var/log/asterisk/messages
maxretry = 5
bantime = 259200


note: logpath = /var/log/asterisk/messages is for vanilla asterisk, use logpath = /var/log/asterisk/full for freepbx. You can check the name of the log file in logger.conf.

note: if fail2ban still failed to identify login attempts, try the syslog logging way.

Using new /var/log/asterisk/security


[asterisk-iptables]
enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
           sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.org]
logpath  = /var/log/asterisk/security
maxretry = 5
bantime = 259200


Don't Ban Yourself


We don't want to ban ourselves by accident. Edit /etc/fail2ban/jail.conf and edit the ignoreip option under the [DEFAULT] section to include your IP addresses or network, as well as any other hosts or networks you do not wish to ban. Note that the addresses must be separated by a SPACE character!

Asterisk Logging


We must change how Asterisk does its time stamp for logging. The default format does not work with Fail2Ban because the pattern Fail2Ban uses that would match this format has a beginning of line character (^), and Asterisk puts its date/time inside of []. The other formats that Fail2Ban supports, however, do not have this character and can be used with Asterisk.

To change this format, open /etc/asterisk/logger.conf and add the following line under [general] section (You may have to create this before the [logfiles] section). This causes the date and time to be formatted as Year-Month-Day Hour:Minute:Second, [2008-10-01 13:40:04] is an example.


 [general]
 dateformat=%F %T


Then reload the logger module for Asterisk. At the command line, run the following command:

asterisk -rx "logger reload"

If for some reason you do not want to change the date/time format for your normal asterisk logs (maybe you already have scripts that use it or something and do not want to edit them), you can do the following instead:

In /etc/asterisk/logger.conf, add the following line under the [logfiles] section for Asterisk to log NOTICE level events to the syslog (/var/log/messages) as well as its normal log file. These entries in syslog will have a Date/Time stamp that is usable by Fail2Ban.

syslog.local0 => notice

Be sure to reload the logger module for Asterisk — check above for the command to do so. If you chose this option, you will also have to change the/etc/fail2ban/jail.conf setting under the [asterisk-iptables] section for the logpath option to the following:

logpath = /var/log/messages

Turning it On


Now it is time to put fail2ban to work. There are a couple steps we need to do first.

Turn IPTABLES on


By default, iptables allows all traffic. So if we turn it on, it will not block any traffic until Fail2Ban creates deny rules for attackers. You should create your own firewall rules and setup for iptables, but that is beyond the scope of this guide. Just know that Fail2Ban, by default, inserts rules at the top of the chain, so they will override any rules you have configured in iptables. This is good because you may allow all sip traffic in and then the Fail2Ban will block individual hosts, after they have done an attack, before they are allowed by this rule again.

To start iptables, run the following as root:

/etc/init.d/iptables start

Depending on your install, you may or may not have the iptables init script installed. Please refer to an iptables install/setup guide for your distribution for more information.

Turn on Fail2Ban


To start Fail2Ban, run the following as root:

/etc/init.d/fail2ban start

Check It


If both started properly, issue the following command to view your iptables rules:

iptables -L -v

You should see something like the following for the INPUT chain (you will see more if you have other Fail2Ban filters enabled):

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2104K 414M fail2ban-ASTERISK all — any any anywhere anywhere

If you do not see something similar to that, then you have some troubleshooting to do; check out /var/log/fail2ban.log.

If you do not see all your rules, or if you see a different subset of rules after stopping and restarting fail2ban, you may be experiencing the issue described on this page on the Fail2ban talk:Community Portal and may wish to use the suggested fix:

fail2ban.action.action ERROR on startup/restart

I had multiple fail2ban.action.action ERROR on startup/restart. It seems there was a "race" condition with iptables. I solved the problem completely on my system by editing /usr/bin/fail2ban-client and adding a time.sleep(0.1)

def __processCmd(self, cmd, showRet = True):
	beautifier = Beautifier()
	for c in cmd:
		time.sleep(0.1)
		beautifier.setInputCmd(c)


Turn it on for good


If all is well up to this point, let's make sure that fail2ban and iptables restart with the server by issuing the following commands.

Centos/Red Hat:

chkconfig iptables on
chkconfig fail2ban on

Debian/Ubuntu:

update-rc.d iptables defaults
update-rc.d fail2ban defaults

You should now be somewhat protected against SIP scans and brute force attacks!

Try a reboot


Once you have fail2ban working ok, make sure that it continues that way after rebooting the server. On some distributions (including Ubuntu daper) fail2ban won't start after the system reboots because the /var/run/fail2ban directory gets deleted and needs to be re-created. This can be frustrating as there is also nothing that shows up in the logs to indicate what the problem is. If this happens, please see the link below for instructions on modifying the startup script so that it checks for and creates the /var/run/fail2ban directory if needed:

http://informationideas.com/news/2010/04/21/fail2ban-does-not-start-after-reboot/

Additional Information

2015/03/31 10:12 2015/03/31 10:12

Posted on 2015/03/19 11:52
Filed Under 컴퓨터 기술 및 정보/일반 팁

DNS server, DNS service  

어제 모 대형 쇼핑몰에서 결제를 하다가 뭘 설치하길레
뭐지?
얼마전에 결제 했을때는 설치 하지 않았는데.. 또 뭘 설치하려고 하네..
에효...국내 대형 쇼핑몰들이 이렇지..
하고 별 생각 없이 설치하고 결제 했는데..

이상하게 오늘 컴퓨터가 버버버버버...벅..  
그래도 구입한지는 2-3년 넘었으나, i5 CPU에, SSD와 8G RAM을 갖춘 쓸만한 노트북인데.. 이상하게 버버버버버버...벅...

작업관리자를 보니.. CPU 점유율이 4개 코어 모두 거의 90~100%..
이거 뭐지? 바이러스 인가?

하고 봤던..

"VPWalletLauncherC.exe"
"VPWalletService.exe"

요 두 녀석이 미친듯.. CPU를 먹구 있었다..
처음에는 바이러스라고 생각하고, 삭제를 하려고 보았는데.. 이름중에. "Service".. 그래서 혹시나 하고.. 서비스 항목을 확인했더니..

떡하니.. 서비스 항목에 등록이 되어 있넹?

그것도 이 서비스를 쇼핑몰 결제 할때도 아닌, 24시간 서비스를 돌리고 있다... 세상에....

사용자 삽입 이미지

나 원참... 기가막혀서 말도 안나온다..

"This service is developed to use ISP in Non-ActiveX environment."

자랑스럽게.. ActiveX 안쓴다고.. 적어 뒀다..
대통령께서 직접 나서서 ActiveX를 없애고, 쉽게 결제 가능하도록 시스템을 개선하라고 누차 이야기 하니깐..

ActiveX를 없애고 우리는 EXE를 사용해~  라고. 자랑스럽게 이야기 한다...
EXE는 쓰지 말라고 안했으니, 사용자 PC에 깔아서 쓰자.. 
이런식으로 해결 하고 있다..

정말 뭐가 문제이고.. 왜 대통령까지 나서서 이런 이야기를 하는지 이해를 못하고 있는 ISP 업체들이 답답하다.

이러니 우리들이 한국 온라인 시장을 점점 멀리하고 해외 시장을 이용하려고 하지..

어서 PayPal 같은 해외 결제 시스템이 빨리 국내에 도입되어야 저런 찌질한 업체들이 사라질텐데..

해결 방법..

제어판 - 관리도구 - 서비스 - VPWallet 을 찾아 
사용 -> 중지 로 변경
자동 -> 수동 으로 변경.

마음같이서는 삭제 하고 싶었으나,.. 가끔 어쩔수 없이 이용하는 온라인 결제때문에.. 삭제는 못했다..

이런 나같은 호갱들 때문에 저런 찌질한 업체들이 먹구 사는 건가...
2015/03/19 11:52 2015/03/19 11:52

Posted on 2015/03/14 22:42
Filed Under Linux/설정방법

DNS server, DNS service  

Ubuntu 12.04를 설치 후 로그를 확인하고자 /var/log/messages 파일을 찾아보니..... 
어라? 없넹......

인터넷을 뒤져보니...  기본적으로 message 설정이 되어 있지 않넹.!~

보통 rssyslogd 는 기본 설치가 되어 있으므로, 
rsyslogd를 이용하여 설치하자!

 

심각한 오류(Critical Error) 는 /var/log/syslog 파일에 남으나,

그 외, INFO, NOTICE 등의 퍼실러티 등은 기록되지 않고 없어진다.

 

이는 기본 rsyslogd 의 설정 때문이라 한다. (왜!!! 덩치를 가볍게 로그조차 허용안하는게냐!)

 

아래 파일을 root 권한으로 열람한다.

$ sudo vi /etc/rsyslog.d/50-default.conf

...

#*.=info;*.=notice;*.=warn;\

#   auth,authpriv.none;\

#   cron,daemon.none;\

#   mail,news.none      -/var/log/messages

...

 

본문 중에 상기 내용을 찾아 아래와 같이 '#'으로 주석처리 되어 있는 부분을 수정한다.

(기록을 원하지 않는 항목이 있다면 제외하면 되겠다)


*.=info;*.=notice;*.=warn;\

   auth,authpriv.none;\

   cron,daemon.none;\

   mail,news.none      -/var/log/messages

 

(옵션) 또한 마지막 부분의 아래 항목을 '#'으로 주석 처리하자.

(다량의 메시지를 화면에 출력하는 것을 막는다)

 

#daemon.*;mail.*;\

#   news.err;\

#   *.=debug;*.=info;\

#   *.=notice;*.=warn   |/dev/xconsole

 

이후 저장하고(:wq) 종료하면 된다. 

 

(참조)아래를 참조하여 얼마 주기로 로그 파일을 갱신할 지 확인이 가능하다.

$ sudo vi /etc/logrotate.d/rsyslog

...

/var/log/messages

{

    rotate 4

    weekly

    missingok

    notifempty

    compress

    delaycompress

    sharedscripts

    postrotate

        reload rsyslog >/dev/null 2>&1 || true

    endscript

}

 

rsyslogd 데몬 서비스를 재실행 한다.

 

$ sudo /etc/init.d/rsyslog restart

 

이 후 부터는 기존처럼 /var/log/messages 에 로그가 쌓이기 시작한다.

 

 

Linux Log files and usage

 

=> /var/log/messages : General log messages

=> /var/log/boot : System boot log

=> /var/log/debug : Debugging log messages

=> /var/log/auth.log : User login and authentication logs

=> /var/log/daemon.log : Running services such as squid, ntpd and others log message to this file

=> /var/log/dmesg : Linux kernel ring buffer log

=> /var/log/dpkg.log : All binary package log includes package installation and other information

=> /var/log/faillog : User failed login log file

=> /var/log/kern.log : Kernel log file

=> /var/log/lpr.log : Printer log file

=> /var/log/mail.* : All mail server message log files

=> /var/log/mysql.* : MySQL server log file

=> /var/log/user.log : All userlevel logs

=> /var/log/xorg.0.log : X.org log file

=> /var/log/apache2/* : Apache web server log files directory

=> /var/log/lighttpd/* : Lighttpd web server log files directory

=> /var/log/fsck/* : fsck command log

=> /var/log/apport.log : Application crash report / log file

 

출처

http://mcchae.egloos.com/10913183

http://ubuntuforums.org/showthread.php?t=1568706

2015/03/14 22:42 2015/03/14 22:42

Posted on 2015/03/11 15:30
Filed Under Programming/SIP (VoIP)

DNS server, DNS service  

Asterisk 설치 방법이 정리가 잘 되어 있음!~

출처 : http://sipjs.com/guides/server-configuration/asterisk/



Guides

Tired of fighting with configs?

Try SIP.js and OnSIP — a perfect pairing for WebRTC!

Configure Asterisk

SIP.js has been tested with Asterisk 11.11.0 without any modification to the source code of SIP.js or Asterisk. Similar configuration should also work for Asterisk 12.

System Setup

Asterisk and SIP.js were tested using the following setup:

Required Packages

Install the following dependencies:

  • wget
  • gcc
  • gcc-c++
  • ncurses-devel
  • libxml2-devel
  • sqlite-devel
  • libsrtp-devel
  • libuuid-devel
  • openssl-devel

Using YUM, all dependencies can be installed with:

yum install wget gcc gcc-c++ ncurses-devel libxml2-devel sqlite-devel libuuid-devel openssl-devel.

Install libsrtp

First try installing libsrtp from the repo.

yum install libsrtp-devel

If libsrtp is not available in the repo install it from source.

  1. cd /usr/local/src/
  2. wget http://srtp.sourceforge.net/srtp-1.4.2.tgz
  3. tar zxvf srtp-1.4.2.tgz
  4. cd /usr/local/src/srtp
  5. ./configure CFLAGS=-fPIC
  6. make && make install

Install Asterisk

  1. cd /usr/local/src/.
  2. Download Asterisk withwget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.11.0.tar.gz.
  3. Extract Asterisk: tar zxvf asterisk*.
  4. Enter the Asterisk directory: cd /usr/local/src/asterisk*.
  5. Run the Asterisk configure script:./configure --libdir=/usr/lib64.
  6. Run the Asterisk menuselect tool: make menuselect.
  7. In the menuselect, go to the resources option and ensure that res_srtp is enabled. If there are 3 x’s next to res_srtp, there is a problem with the srtp library and you must reinstall it. Save the configuration (press x).
  8. Compile and install Asterisk: make && make install.
  9. If you need the sample configs you can run make samples to install the sample configs. If you need to install the Asterisk startup script you can run make config.

Setup DTLS Certificates

  1. mkdir /etc/asterisk/keys
  2. Enter the Asterisk scripts directory:cd /usr/local/src/asterisk*/contrib/scripts.
  3. Create the DTLS certificates (replace pbx.mycompany.com with your ip address or dns name, replace My Super Company with your company name):./ast_tls_cert -C pbx.mycompany.com -O "My Super Company" -d /etc/asterisk/keys.

Configure Asterisk For WebRTC

For WebRTC, a lot of the settings that are needed MUST be in thepeer settings. The global settings do not flow down into the peer settings very well. By default, Asterisk config files are located in/etc/asterisk/. Start by editing http.conf and make sure that the following lines are uncommented:

1
2
3
4
5
;http.conf
[general]
enabled=yes
bindaddr=127.0.0.1 ; Replace this with your IP address
bindport=8088 ; Replace this with the port you want to listen on

Change the IP address and port to the IP address of your server and the port that you would like Asterisk to listen for web socket connections on.

Next, edit sip.conf. Here you will set up two peers, one for a WebRTC client and one for a non-WebRTC SIP client. The WebRTC peer requires encryption, avpf, and icesupport to be enabled. In most cases, directmedia should be disabled. Also under the WebRTC client, the transport needs to be listed as ‘ws’ to allow websocket connections. All of these config lines should be under the peer itself; setting these config lines globally might not work.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
;sip.conf
[general]
realm=127.0.0.1 ; Replace this with your IP address
udpbindaddr=127.0.0.1 ; Replace this with your IP address
transport=udp

[1060] ; This will be WebRTC client
type=friend
username=1060 ; The Auth user for SIP.js
host=dynamic ; Allows any host to register
secret=password ; The SIP Password for SIP.js
encryption=yes ; Tell Asterisk to use encryption for this peer
avpf=yes ; Tell Asterisk to use AVPF for this peer
icesupport=yes ; Tell Asterisk to use ICE for this peer
context=default ; Tell Asterisk which context to use when this peer is dialing
directmedia=no ; Asterisk will relay media for this peer
transport=udp,ws ; Asterisk will allow this peer to register on UDP or WebSockets
force_avp=yes ; Force Asterisk to use avp. Introduced in Asterisk 11.11
dtlsenable=yes ; Tell Asterisk to enable DTLS for this peer
dtlsverify=no ; Tell Asterisk to not verify your DTLS certs
dtlscertfile=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS cert file is
dtlsprivatekey=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS private key is
dtlssetup=actpass ; Tell Asterisk to use actpass SDP parameter when setting up DTLS

[1061] ; This will be the legacy SIP client
type=friend
username=1061
host=dynamic
secret=password
context=default

Lastly, set up extensions.conf to allow the two peers to call each other.

1
2
3
4
;extensions.conf
[default]
exten => 1060,1,Dial(SIP/1060) ; Dialing 1060 will call the SIP client registered to 1060
exten => 1061,1,Dial(SIP/1061) ; Dialing 1061 will call the SIP client registered to 1061

Restart Asterisk using service asterisk restart to ensure that the new settings take effect.

Configure SIP.js

Asterisk does not accept Contact headers with the .invaliddomain. When creating a UA, add the configuration parameterhackIpInContact. If you are missing this property you will be able to make calls from WebRTC, but not receive calls through Asterisk will fail.

Additionally this guide will only work with audio calls, Asterisk will reject video calls.

The following configuration example creates a UA for the Asterisk configuration above. Replace the values with the values from your config.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var config = {
  // Replace this IP address with your Asterisk IP address
  uri: '1060@127.0.0.1',

  // Replace this IP address with your Asterisk IP address,
  // and replace the port with your Asterisk port from the http.conf file
  ws_servers: 'ws://127.0.0.1:8088/ws',

  // Replace this with the username from your sip.conf file
  authorizationUser: '1060',

  // Replace this with the password from your sip.conf file
  password: 'password',
  
  // HackIpInContact for Asterisk
  hackIpInContact: true,
  
};

var ua = new SIP.UA(config);

// Invite with audio only
ua.invite('1061',{
  audio: true,
  video: false
});
  • Update 10/24/2014 - If you are still having trouble with Asterisk and are using a WebSocket Secure (WSS), you can try using thehackWssInTransport: true parameter in your UA’s configuration. This is new as of commit 32bffbe on the SIP.js Master branch.

Troubleshooting

Firefox 34+ requires SIP.js 0.6.4 or later to interop with FreeSWITCH or Asterisk.

This forum post on troubleshooting WebRTC issues is a great guide for trouble shooting problems with Asterisk.

Asterisk Secure Calling Guide can help you setup dtls certificates.

2015/03/11 15:30 2015/03/11 15:30

Posted on 2015/02/25 09:21
Filed Under Windows/최적화 및 팁

DNS server, DNS service  

윈도우에서 어느날 아래와 VMWare가 아래와 같은 메시지를 출력하면서 정상적으로 동작하지 않더군요.

VMware Workstation and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMware Workstation.

이 경우 원인은 윈도우의 가상화시스템인 Hyper-V 가 설치되어 있기 때문인데, 정지 및 제거 해주면 됩니다.

정지 하는 방법은 도스창 (cmd) 을 관리자 권한으로 실행한 후,
 
bcdedit /set hypervisorlaunchtype off
 
이후 다시 활성화 할 때는 

bcdedit /set hypervisorlaunchtype auto

그리고 항상 명령어를 실행 한 후 재부팅 해야 합니다.

참고 : http://www.ivobeerens.nl/2013/12/16/running-hyper-v-and-vmware-workstation-on-windows-8-x/

리고, 제거 하는 방법은 
제어판 - 프로그램 추가 제거 - Windows 기능 켜고/끄기 에서, "Hyper-V"의 체크를 없애면 됩니다.



2015/02/25 09:21 2015/02/25 09:21
TAG : ,

About

by CoCo

Notice

Counter

· Total
: 846588
· Today
: 75
· Yesterday
: 70