2011. 8. 20. 08:38

♧ 대부분의 리눅스 시스템은 시스템에서 발생하는 많은 활동의 로그를 구성한다.

/var/log 디렉토리 혹은 서브 디렉토리에 위치한 로그파일에 쓴다.

이 로긴은 Syslog를 통해 이루어진다.

우분투는 sysklogd 그리고 klogd 패키지에서 시스템 로깅을 관리하는

syslogd(시스템 로그 데몬) 및 klogd(커널 로그 데몬)를 사용한다.

이러한 데몬은 syslog init 스크립트(/etc/init.d/sysklogd)에서 자동적으로 시작한다.

시스템에 대한 활동 정보는 /etc/syslog.conf 설정을 기반으로

message, secure, cron 그리고 boot.log 같은 것으로 /var/log 디렉토리 안의 파일에 다이렉트 한다.

 

자동 로그 회전은 /etc/logrotate.conf 파일 그리고 /etc/logrotate.d 디렉토리 설정을 기반으로

logrotate를 다룬다. /etc/cron.daily/logrotate 크론잡(cronjob)은 매일 로그 회전을 맡는다.

 

vi 혹은 좋아하는 텍스트 편집을 사용하여 로그 파일은 수동으로 언제든지 확인할 수 있다.

그러나 만약 logwatch 패키지를 설치했다면, 로그 파일의 하이라이트는 매일 root 사용자의

사서함에 자동적으로 우송된다. /etc/cron.daily/0logwatch파일을 편집하여 메일의

받는주소와 보내는 주소를 변경할 수 있다.

이메일 루프를 방지하려면, 수신자가 로컬 머신에 없을 때 실제 이메일 주소를 보내는 주소로 변경해야 한다.

수신자를 변경하는 또 다른 방법은 /etc/aliases 편집하여 root의 이메일 주소를 다른 주소로 포워드한다.

그리고 newaliases를 실행하여 변화를 제정한다.

그렇지 않으면, logwatch이메일 메시지를 읽을 때 root로 로그인하고 메일 클라이언트를 사용한다.

 

logger 명령어를 사용하여 syslogd 로깅으로 자신의 메시지를 보낼 수 있다.

 

$ logger Added new video card

$ logger -p info -t CARD -f /tmp/my.txt

메시지를 메시지 파일에 추가

우선순위, 태크, 메시지 파일

 

첫 번째 예는, Added new video card 문장을 메시지 파일에 보낸다.

두 번째 예는, 메시지의 우선순위가 정보로 설정되어 있고 CARD의 태크가 메시지 각 라인에 추가하였다.

텍스트 메시지는 /tmp/my.txt 파일에서 가지고 온 것이다.

실시간으로 로그 항목을 보려면 tail -f 혹은 less를 사용하라.

 

Posted by devanix
2011. 8. 20. 08:19

♧ 컴퓨터의 네트워크 인터페이스의 모든 데이터 패킷을 검사하여 컴퓨터를 보호하고,

그때 설정한 파라미터를 기반으로 패킷을 함께 해야 할지에 대해 결정한다. 현재 리눅스

커널에 내장된 방화벽은 iptables라고 한다(커널2.2의 iptables의 전신은 ipchains)

우분투는 완벽하게 iptables를 시작하고 리눅스를 설치할 때 구성한다.

 

iptables(www.netfilter.org)는 예외적으로 강력하지만 아직 커맨드라인에서의 사용은 복잡.

그래픽 인터페이스를 사용하여 방화벽 규칙을 설정 : firestarter 패키지 설치.

firestarter는 방화벽 구성 마법사 및 설정을 제공한다. 또한 그래픽 방화벽 구성을 위해서

FWBuilder(fwbuilder 패키지), Shorewall(shorewall 패키지) 같은 패키지를 추가할 수 있다.

 

 

▶ 리눅스 시스템의 방화벽이 현재 규칙을 어떻게 설정하는지 표시

☞ 우분투를 처음 설치할 때, 앞의 명령어 출력은 정의에 대한 어떠한 규칙도 없다.

iptables을 방화벽 테이블 기본 필터를 보여준다.

☞ udp 상에서 인터넷 프린팅 프로토콜(ipp)을 위한 패킷이 컴퓨터의 네트워크 인터페이스가 들어오는 것을

보여주고 tcp 프로토콜을 허용.

☞ 마찬가지로 FTP(ftp)와 매치되는 tcp 패킷, 시큐얼 쉘(ssh), 웹(http) 목적지 포트를 수용한다.

패킷이 활성화된 패킷과 연관이 있다면 또한 수용.

 

▶ 현재 iptables nat 테이블을 표시.

☞ nat 테이블은 단지 네트워크 주소 변환 기능이 적용되는 것을 보여줌.

☞ NAT 방화벽 뒤에 개인 어드레스 같은 것들을 허용한다.

☞ 내부 LAN 머신에서 패킷은 방화벽을 종료한다.

비공개 소스 어드레스는 방화벽의 외부 인터페이스의 IP 어드레스를 재작성한다.

방화벽은 LAN 머신을 통하여 트래픽 반환을 허용하기 위하여 세션 추적을 유지한다.

이 모든 것은 POSTROUTING체인에 있는 MASQUERADE 라인으로 구성된다.

 

PREROUTING 체인에 DNAT 라인은 내부 LAN IP 어드레스 10.0.0.155:22번 포트에서 포워드하여

IP 어드레스 11.22.33.44에 8785번 포트에 어떤 요청을 발생한다

(비표준 포트를 통해 방화벽 뒤에 컴퓨터에서 ssh로 누군가 트릭)

 

▶ 방화벽에 대한 정보를 나열( ipstate 명령어는 iptstate 패키지의 일부)

 

다음은 우분투 시스템에서 모든 iptables 규칙을 멈출 수 있는지 혹은 플러시할 수 있는 방법이다.

이 명령어는 모든 규칙을 제거한다. 그래서 실행할 때 주의하여야 한다.

바로 새로운 규칙의 추가를 원할지 모르기 때문이다.

 

▶ iptables 명령어로 활성화 방화벽 규칙을 어떻게 변경하여 사용하는지 몇 가지 예를 들어보자.

☞ 첫 번째 예 : 시스템의 25번 포트에 새로운 응답을 허용하는 규칙을 생성한다.

메일서버(센드메일, postfix, 혹은 SMTP 서비스)가 컴퓨터에 구성되어 있기 때문이다.

☞ 두 번째 예 : 소스 네트워크 어드레스 변환(SNAT)을 방화벽에 허용하여 nat 테이블에 규칙을 생성한다.

SNAT 기능을 사용하면 공용 인터넷 방화벽의 외부 IP 어드레스를 사용하여 통신할 수 있도록 방화벽 뒤에

있는 사설 IP 어드레스를 가지고 있다.

 

SNAT 혹은 다른 폼의 NAT를 사용하려면, 머신에서 IP 포워딩을 활성화해야만 한다.

/etc/sysctl.conf 파일을 편집하여 수행할 수 있고 다음 변수에 uncommenting 할 수 있다.

net.ipv4.conf.default.forwarding=1

 

방화벽 뒤에 머신에서 인터넷 서비스를 제공하는 경우,

머신이 서비스에 대한 요청을 포워드하도록 방화벽에 지시할 수 있다.

 

다음 예는 방화벽 뒤에 있는 머신에 방화벽을 통해 서비스에 대한 요청을 전달하도록 port forwarding 기능을 사용.

방화벽 동작의 변경을 만들 수 있는 많은 유형의 규칙이 있다.

iptables 사용의 더 많은 정보를 보려면 iptables 맨 페이지 혹은 Netfilter 웹사이트(www.netfilter.org)를 참조.

 

위와 같이 변경 후, 정의된 다음 규칙을 볼 수 있다.

 

모든 iptables 규칙 변경은 이 세션에서만 적용이 된다. 우분투를 재부팅하는 경우,

일반적으로 원하지 않은 기본 설정 규칙을 얻어 온다. iptables 규칙을 보존하려면, iptables-save 실행하라.

2단계 프로세스는 /etc/ 디렉토리에 대한 제한 때문에 필요하다.

( 제한을 변경할 수 있지만, 좋은 생각은 아니다) 여태까지 규칙은 나중에 사용을 위해 저장한다.

 

다음은 이더넷 인터페이스(시스템상에서 특정 각각의 네트워크 카드 혹은 인터페이스)가 가능하게

매시간 저장된 규칙을 로드할 수 있게 구성할 수 있다. /etc/network/interfaces 파일을 편집하라.

eth0 같은 이더넷 인터페이스를 위해 iface 구성후, 미리보기 표시된 iptables-restore를 호출.

인터페이스 파일에 추가로 /etc/iptables.rules 파일 이전에 규칙을 복원하기 위해 iptables-restore를 호출

 

 

 

ipTables HowTo 문서 : https://help.ubuntu.com/community/IptablesHowTo

Posted by devanix
2011. 8. 20. 07:28

♧ 사용자 계정을 생성한 후, 그리고 사용자가 컴퓨터를 풀어버리면

컴퓨터를 사용하는 방법을 추적하는데 사용할 수 있는 몇 가지 명령어.

 

find 명령 : 시스템에서 저장되어 있는 파일이 어디 있는지 시스템에서 검색.

du 명령 : 사용자의 홈 디렉토리에 얼마나 많은 공간이 사용 되었는지 확인.

fuser, ps, top 명령 : 어떤 사용자가 프로세스를 실행하는지 보려면.

 

▶ last : 가장 최근에 시스템에 로그인한 사람의 정보

$ last

devanixpts/2■■192.168.0.2■■Sat Aug 20 06:15 still logged in

devanixpts/1■■:0.0■■■■■■Sat Aug 20 06:08 - 06:24 (00:16)

devanixpts/0■■:0.0■■■■■■Sat Aug 20 05:49 - 06:24 (00:34)

devanixtty7■■■:0■■■■■■ Sat Aug 20 05:37 still logged in

☞ 언제 로그인햇는지, 얼마나 오랫동안 로그인 했는지, 혹은 'still 로그인'했는지 볼 수 있다.

pts 라인은 원격 컴퓨터 혹인 로컬 X 디스플레이(:0.0)에서 쉘을 연 사용자를 표시.

☞ 원격 클라이언트가 호스트 이름 쉽게 읽음 : $ last -a

 

▶ lastb :가장 최근 로그인에 성공하지 못한 목록

$ sudo lastb

julianssh:notty■■■ritchieMonAug6 12:28 - 12:28 (00:00)

 

▶ who -u : 현재 로그인한 목록(긴 형식)

$ who -u

devanixtty7■■■■2011-08-20 05:37■■■1124 (:0)

devanixpts/2■■■ 2011-08-20 06:15. ■■■ 2212 (192.168.0.2)

 

▶ users : 현재 로그인한 목록(짧은 형식)

$ users

devanixchrisfrancoisgreekjim

 

▶ 개별 사용자들에 대한 정보를 찾기 위한 몇 가지 명령어.

$ id ■■■■■■■■■■/* 아이덴터티(UID, GID 그리고 현재 쉘 그룹) */

uid=1000(devanix) gid=1000(devanix) 그룹들=1000(devanix),4(adm),20(dialout),24(cdrom),46(plugdev),112(lpadmin),120(admin)

$ who am i ■■■■■■/* 아이덴터티 (user, tty, 로그인 날짜, 위치) */

devanix pts/2 2011-08-20 06:15 (192.168.0.2)

$ finger -s devanix ■■/* 사용자 정보 (짧게) */

$ finger -l devanix ■■/* 사용자 정보 (길게) */

 

 

Posted by devanix
2011. 8. 20. 06:51

 

NFS를 사용하여 원격 디렉토리 공유

 

설치 : sudo apt-get install nfs-kernel-server

 

▶ exportfs : 모든 공유서버에서 해당 디렉토리 보여줌.

$ sudo /usr/sbin/exportfs -v

/export/myshare

client.example.com(ro,wdelay,root_squash,no_subtree_check)

/mnt/public

<world>(rw,wdelay,root_squash,no_subtree_sheck)

☞ (ro) : 읽기만 가능, (rw) : 읽고/쓰기 마운트

☞ (wdelay) : 공유에 더 쓰기가 예상될 때 성능 향상을 지연

☞ (root_squash) : 클라이언트 root 유저로부터 요청은 익명 사용자 UID를 맵핑

☞ (no_subtree_check) : 파일시스템 퍼미션 체크가 덜 이루어진다.

 

▶ NFS 공유 디렉토리 추가/수정

$ sudo /etc/init.d/nfs-kernel-server reload

공유 디렉토리 익스포트 reload

$ sudo exportfs -r

공유 디렉토리 익스포트 reload

$ sudo exportfs -rv

exporting client.example.com:/export/myshare

exporting *:/mnt/public

익스포트 공유의 자세한 reload

 

▶ showmount : 공유 디렉토리 출력

/* 리눅스 서버 시스템에서, 로컬 시스템이 사용하는 공유 디렉토리 출력 */

$ sudo showmount -e

Export list for server.example.com

/export/myshare client.example.com

/mnt/public *

/* 리눅스 시스템 클라이언트에서, 선택한 컴퓨터가 사용하는 공유 디렉토리 출력*/

$ sudo showmount -e server.example.com

/export/myshare client.example.com

/mnt/public *

 

 

◎ NFS 공유 마운트

▶ mount 명령을 사용하여 NFS 공유 마운트

$ sudo mkdir /mnt/server-share

$ sudo mount server.example.com:/export/myshare /mnt/server-share

 

▶ mount 명령어에 NFS의 특별한 옵션 추가. (-o)

$ sudo mount -o rw,hard,intr server.example.com:/export/myshare /mnt/server-share

 

기본적으로, NFS 버전3 프로토콜은 공유를 연결하는데 사용.

NFS버전4를 사용하려면, 인터넷과 방화벽을 통해 작동하도록 설계.

커맨드라인에 있는 파일시스템 유형은 다음과 같은 프로토콜을 나타낸다.

$ sudo mount -t nfs4 server.example.com:/ /mnt/server-share

 

 

 

 

삼바를 사용하여 원격 디렉토리 공유

♧ 삼바는 윈도우 파일의 오픈소스 구현이고 서버 메시지 블록(SMB)으로 알려진 인쇄 공유 프로토콜 이고

지금 일반 인터넷 파일 시스템(CIFS)이라고 한다.

삼바를 사용하려면 samba, samba-doc 패키지 설치.

 

웹기반 관리 툴 : SWAT(swat 패키지 설치) 이 삼바에 포함.

SWAT 시작하는 방법에 대한 내용 : https://help.ubuntu.com/community/Swat

 

◎ 삼바 공유 보기와 액세스

▶ SMB 호스트 네트워크 스캔

$ findsmb

■■■■■■■■■■■*=DMB

■■■■■■■■■■■+=LMB

IP ADDR■■■NETBIOS NAME■■WORKGROUP/OS/VERSION

---------------------------------------------------------------------

192.168.1.1■■SERVER1■■■■+[MYWORKGROUP] [Unix] [Samba 3.0.25a-3.fc7]

 

▶ smbtree를 사용하여 네트워크 neighborhood(프린터 및 공유 디렉토리)의 텍스트 표현

$ smbtree

Password: ******

WORKGROUP

■■■\\THOMPSON

■■■■\\THOMPSON\

■■■■■\\THOMPSON\IPC$

 

▶ smbpasswd 명령을 사용하여 기존 리눅스 유저에 삼바 유저를 추가.

$ sudo smbpasswd -a devanix

New SMB password: ******

Retype new SMB password: ******

Added user devanix

☞ 암호를 요청하여 어떤 명령어를 수행하기 위한 삼바 패스워드 설정이 필요.

 

▶ 서버에서 익명 사용에게 서비스 목록을 제공.

$ smbclient -L WIN2003srv

password: ******

Anynymous login successful

Domain=[WIN2003] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows…]

tree connect failed: NT_STATUS_LOGON_FAILURE

 

▶ 특정 유저를 smbclient로 출력

$ smbclient -L WIN2003srv -U administrator

Enter administrator's password:

Domain=[WIN2003] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows…]

■■■Sharename■■Type■■Comment

■■■---------■■■----■■■-------

■■■print$■■■■Disk■■■프린터 드라이버

■■■C$■■■■■ Disk■■■ 기본 공유

■■■F$■■■■■ Disk ■■■기본 공유

■■■IPC$■■■■ IPC■■■■원격 IPC

 

▶ FTP 유형으로 삼바 공유에 연결

$ smbclient //192.168.1.1/myshare -U devanix

Password:

Domain=[WIN2003] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows…]

smb: \>

 

대부분의 FTP 클라이언트에서 사용할 수 있는 명령어를 보려면 help 또는 ? 입력.

SMB 호스트에서 cd, ls, get, put, quit 같은 쉘 타입 명령어를 사용할 수 있다.

 

◎ 삼바 공유 마운트

▶ 로컬 혹은 원격 NFS 파일시스템에서 로컬 파일시스템으로 원격 삼바 공유를 마운트

$ sudo mount -t smbfs -o username=devanix,password=MySecret \

//192.168.1.1/myshare /mnt/mymount/

 

▶ smbstatus : 서버의 현재 연결과 잠금 파일을 볼 수 있다

$ sudo smbstatus

 

▶ nmblookup : 컴퓨터의 IP 어드레스를 결정

$ nmblookup thompson

querying Thompson on 192.168.1.255

192.168.1.1 server1<00>

 

▷ -U : 특정 서브넷에서 서버의 IP 어드레스를 발견

$ nmblookup -U 192.168.1.255 server1

querying server1 on 192.168.1.255

192.168.1.1 server1<00>

 

▶ 삼바 구성 파일(smb.conf) 체크

$ testparm

Load smb config files from /etc/samba/smb.conf

Processing section "[homes]"

☞ 삼바 공유를 사용할 수 없거나 삼바 서버 통신에 다른 어떤 문제가 있다면 삼바 구성을 테스트.

smb.conf 이외의 파일에 testparm을 사용 : $ testparm /etc/samba/test-smb.conf

 

 

 

 

SSHFS를 사용하여 원격 디렉토리 공유

SSH 프로토콜을 통해 또 다른 트릭으로 원격파일시스템을 마운트한다.

ssh 파일시스템(sshfs)을 사용하여 SSH 서버에서 유저 계정을 해당 로컬 리눅스 시스템에 액세스할 수 있는

디렉토리를 마운트할 수 있다. sshfs는 모든 데이터의 전송뿐만 아니라 마운트할 때 암호화를 제공.

 

sshfs의 또 다른 멋진 측면은 서버 측면에서 SSH 서비스를 실행하는 이외에 별다른 설정이 필요하지 않다.

 

▶ 원격 서버에서 로컬 디렉토리로 문서의 디렉토리를 마운트.

$ sudo apt-get install sshfs

sshfs 소프트웨어 설치

$ sudo mkdir /mnt/docs

마운트 지점 생성

$ sudo sshfs devanix@10.0.0.50:/var/docs /mnt/docs

원격 디렉토리 마운트

 

▶원격 디렉토리를 사용했을 때, fusermount 명령어로 언마운트.

$ sudo fusermount -u /var/docs

원격 디렉토리 언마운트

 

 

Posted by devanix