+ 메일 릴레이 기능 

다른 네트워크 대역에서 우리 서버를 통해 메일을 날리려 하는 경우

vi /etc/mail/access
211.5.6 RELAY
211.5.6.7 REJECT
sapm@sapm.net 550 You Spammer .. A're you ~

적용
> makemap hash /etc/mail/access < /etc/mail/access

이것은 적어준다. 하지만.. 사용자가 동적 IP를 쓰고 있는데 .. 어찌 그걸 다 적으랴?
해결책 : 동적 릴레이 (Dynamic Relay)
동적 릴레이는 pop3처럼 사용자의 인증을 통하여 접근을 제어한다. 

+ 동적 릴레이 설정
여기서는 SASL을 활용해 보도록 한다. 
SASL(simple authentication and Security Layer) 은 smtp, imap에 인증을 지원한다.

- Cyus SASL 설치 (PRM)
cyrus-sasl-2.1.10-4 
cyrus-sasl-plain-2.1.10-4
cyrus-sasl-devel-2.1.10-4
cyrus-sasl-gssapi-2.1.10-4
cyrus-sasl-md5-2.1.10-4

- sendmail.conf 생성
sendmail 의 인증이 진행 될 수 있도록, sendmail.conf 파일을 생성한다. 
>vi /usr/lib/sasl2/Sendmail.conf
pwcheck_method:saslauthd

- etc/pam.d/smtp 생성
>vi /etc/pam.d/smtp
#%PAM-1.0
auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth

- site.config.m4 파일 생성
새로 sendmail (타볼)을 받는다.
적당히 푼 다음 /devtools/Site/site.config.m4파일을 생성

sendmail-8.12.* > vi /devtools/Site/site.config.m4
APPENDDEF(`confENVDEF', `-DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')
APPENDDEF(`confLIBDIRS', `-L/usr/lib/sas12') 

- Build 실행 및 설치
sendmail-8.12.* > ./Build
sendmail-8.12.* > mkdir -p /usr/man/man1
sendmail-8.12.* > mkdir /usr/man/man8
sendmail-8.12.* > sh Build install

- 컴파일된 sendmail binary 파일 /usr/sbun에 복사 
sendmail-8.12.* > cp obj.Linux.2.4.20-31.9.i686/sendmail/sendmail /usr/sbin/


- sasl 탑재 검사 
sendmail-8.12.* > sendmail -d0.1 -dv root

Version 8.12.10
Compiled with: DNSMAP LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND
NETINET NETUNIX NEWDB PIPELINING SASLv2 SCANF USERDB XDEBUG

============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = AAA
(canonical domain name) $j = AAA.com
(subdomain name) $m = com
(node name) $k = AAA.com
========================================================
위와 같이 나오면 정상

- 설정파일 복사 
sendmail.cf 를 /etc/mail/ 에 복사 
sendmail.init 파일을 /etc/init.d/sendmail 로 복사 
/etc/init.d/sendmail 파일에 755 

* sendmail.cf , sendmail.init 은 본 문서와 첨부 
sendmail-8.12.* > cp sendmail.cf / etc/mail/
sendmail-8.12.* > cp sendmail.init / etc/init.d/sendmail
sendmail-8.12.* > chmod 755 /etc/init.d/sendmail

- 센드메일 실행
sendmail-8.12.* > /etc/init.d/sendmail restart 
sendmail-8.12.* > /etc/init.d/saslauthd restart

- 25 port smtp 인증 여부 확인 
sendmail-8.12.* > telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 AAA.com ESMTP Sendmail 8.12.10/8.12.9; Thu, 3 Jun 2004 12:53:45 +0900
ehlo sendmail <- 사용자 입력
250-AAA.com Hello AAA.com [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 10000000
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN <- 인증이 된 것임 
250-DELIVERBY
250 HELP

- 아웃룩에서 사용
1. 보내는 메일 서버에 도메인 입력 
2. 보내는 메일 서버에 [인증필요]를 클릭, 보내는 메일 서버에 로그인 정보 부분에 
"받는 메일 서버와 동일한 설정 사용"에 체크, 확인


- 이제 웹메일이 아닌, 아웃룩으로 메일을 보낼 수 있게 되었다.


named.conf에 recursion no 해주면
자신이 가지고 있는 정보에 대해서만 네임서버 조회가 가능하다

# vi /etc/named.conf

options {
directory "/var/named";
pid-file "named.pid";
recursion no;
};

[root@s92 /var/named/chroot/var/named]# dig @ns.s92.sist.co.kr www.s92.sist.co.kr

; <<>> DiG 9.3.0 <<>> @ns.s92.sist.co.kr www.s92.sist.co.kr
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63508
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.s92.sist.co.kr. IN A

;; ANSWER SECTION:
www.s92.sist.co.kr. 2 IN A 211.63.89.92

;; AUTHORITY SECTION:
s92.sist.co.kr. 2 IN NS ns.s92.sist.co.kr.

;; ADDITIONAL SECTION:
ns.s92.sist.co.kr. 2 IN A 211.63.89.92

;; Query time: 0 msec
;; SERVER: 211.63.89.92#53(ns.s92.sist.co.kr)
;; WHEN: Tue Dec 6 09:33:31 2005
;; MSG SIZE rcvd: 85

[root@s92 /var/named/chroot/var/named]# dig @ns.s92.sist.co.kr www.tland.co.kr

; <<>> DiG 9.3.0 <<>> @ns.s92.sist.co.kr www.tland.co.kr
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17697
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 7, ADDITIONAL: 0

;; QUESTION SECTION:
;www.tland.co.kr. IN A

;; AUTHORITY SECTION:
kr. 172299 IN NS F.DNS.kr.
kr. 172299 IN NS G.DNS.kr.
kr. 172299 IN NS A.DNS.kr.
kr. 172299 IN NS B.DNS.kr.
kr. 172299 IN NS C.DNS.kr.
kr. 172299 IN NS D.DNS.kr.
kr. 172299 IN NS E.DNS.kr.

;; Query time: 0 msec
;; SERVER: 211.63.89.92#53(ns.s92.sist.co.kr)
;; WHEN: Tue Dec 6 09:33:50 2005
;; MSG SIZE rcvd: 149

[root@s92 ~/INSTALL]# vi /etc/named.conf

zone "s92.sist.co.kr" IN { // FORWARD
type master; // hint, master, slave
file "db.s92"; // 사용할 DB파일 /var/named/에 위치함
allow-update { none; };
};

zone "89.63.211.in-addr.arpa" IN { // REVERSE
type master;
file "db.89";
allow-update { none; };
};

[root@s92 /var/named]# cd /var/named/chroot/var/named
[root@s92 /var/named/chroot/var/named]# ll
합계 80
drwxr-x--- 2 named named 4096 11월 25 10:49 data
-rw-r--r-- 1 named named 198 11월 25 10:49 localdomain.zone
-rw-r--r-- 1 named named 195 11월 25 10:49 localhost.zone
-rw-r--r-- 1 named named 415 11월 25 10:49 named.broadcast
-rw-r--r-- 1 named named 2518 11월 25 10:49 named.ca
-rw-r--r-- 1 named named 432 11월 25 10:49 named.ip6.local
-rw-r--r-- 1 named named 433 11월 25 10:49 named.local
-rw-r--r-- 1 named named 5 12월 5 10:58 named.pid
-rw-r--r-- 1 named named 416 11월 25 10:49 named.zero
drwxr-x--- 2 named named 4096 11월 25 10:49 slaves

# DB 생성
[root@s92 /var/named/chroot/var/named]# vi db.s92

$TTL 2
@ IN SOA ns.s92.sist.co.kr. root.localhost. (1 4 2 7D 2)
IN NS ns.s92.sist.co.kr.
IN MX 10 mail
ns IN A 211.63.89.92
mail IN A 211.63.89.92
www IN A 211.63.89.92
ttl IN CNAME ns

:: 위 셋팅 내용 설명
$TTL 2 = Time to live 2 second
@ = 내가 사용할 기본 도메인
IN = internet
SOA = start of authority
root.localhost = 메일주소
A = address
CNAME = ns의 다른이름

[root@s92 /var/named/chroot/var/named]# vi db.89

$TTL 2
@ IN SOA ns.s92.sist.co.kr. root.localhost. (1 4 2 7D 2)
IN NS ns.s92.sist.co.kr.
92 IN PTR ns.s92.sist.co.kr.

:: 위 셋팅 내용 설명
s92 = 아이피 끝자리

[root@s92 /var/named/chroot/etc]# killall named
[root@s92 /var/named/chroot/etc]# service named start
named (을)를 시작합니다: [ 확인 ]

[root@s92 /var/named/chroot/etc]# nslookup -sil
> www.s92.sist.co.kr
Server: 211.63.89.92
Address: 211.63.89.92#53

Name: www.s92.sist.co.kr
Address: 211.63.89.92

vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 s92 localhost.localdomain localhost
211.63.89.91 s91.sist.co.kr s91
211.63.89.93 s93.sist.co.kr s93
211.63.89.110 s110.sist.co.kr s110
211.63.89.92 s92.sist.co.kr s92
211.63.89.92 sist.co.kr
211.63.89.92 aa.com
211.63.89.92 bb.co.kr
211.63.89.92 cc.net
211.218.150.200 naver.com a
220.95.223.8 empas.com b
211.109.6.249 korea.com c

:: 네임서버 설정
vi /etc/resolv.conf
#system's default domain
domain sist.co.kr

#hostname search sequence
search sist.co.kr naver.com empas.com daum.net
nameserver 211.63.89.92
nameserver 211.63.64.11
nameserver 168.126.63.1

:: 이메일 로컬호스트 도메인
vi /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
sist.co.kr
aa.com
bb.co.kr
cc.net

:: 포워딩
vi /etc/mail/virtusertable
webmaster@sist.co.kr blue10
webmaster@aa.com blue9
webmaster@bb.co.kr blue8
webmaster@cc.net blue7

[root@s92 /etc/mail]# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable

:: sendmail.cf가 초기화 되어 있지 않으면 아래와 같이 설정
[root@s92 /etc/mail]# m4 sendmail.mc > sendmail.cf

:: 중계
[root@s92 /etc/mail]# vi access
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
sist.co.kr RELAY
aa.com OK
#아래것들은 중계안함
bb.co.kr REJECT
cc.net DISCARD

[root@s92 /etc/mail]# makemap hash /etc/mail/access.db < /etc/mail/access

'Server' 카테고리의 다른 글

Authoritative-only Name Server  (0) 2017.01.06
호스트네임을 이용한 DNS 서버 셋팅하기  (0) 2017.01.06
프로세스 죽이기 - kill, killall, pkill  (0) 2016.12.31
xinetd 데몬과 standalone 데몬  (0) 2016.12.31
Quota 설정하기  (0) 2016.12.31
kill 커맨드
KILL에도 이렇게 다양한 옵션이 있었다.

[root@s92 bin]# kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1
36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5
40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5
60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1
64) SIGRTMAX
[root@s92 bin]#


:: 옵션 일부만 설명
1 : restart
9 : 완전 죽이기
15 : 죽이는건 아니고 중지 시키기




killall - 프로세스명이 일치하는 경우 사용

터미널에 아래와 같이 입력한다.

 [root@s92 bin]# killall -9 PROCESS_NAME




pkill - 프로세스 매개변수 참고

 [root@s92 bin]# pkill -9 -ef my_process


:: 옵션
설명

-9 : kill
-e : log 출력
-f : 명령행 전체 참조



'Server' 카테고리의 다른 글

호스트네임을 이용한 DNS 서버 셋팅하기  (0) 2017.01.06
/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
xinetd 데몬과 standalone 데몬  (0) 2016.12.31
Quota 설정하기  (0) 2016.12.31
ftp command  (0) 2016.12.31

1 데몬이란 무엇인가
데몬이란 시스템에 백그라운드 모드로 수행중이며 어떤 사건, 즉 이벤트를 기다리거나 주기적으로 주어진 작업을 수행하기 위하여 대기하고 있는 프로세스를 의미한다. 일반적으로 데몬프로세스는 이름끝에 'd'자가 붙는다. 기본적으로 리눅스에는 여러 기능과 서비스를 제공하기 위한 다양한 데몬 프로세스들이 시스템에서 돌아가고 있다. 이런 기본적인 리눅스 데몬들에 관한 자세한 설명은 LINUX서비스데몬들을 참고하라. 이런 서비스 데몬들의 실행여부는 레드햇 리눅스 계열에서 ntsysv 커맨드로 조정하면 된다.

리눅스상에서 현재 실행되고 있는 데몬의 현황을 보려면 pstree 커맨드를 쓴다.

[root@localhost root]# pstree 
init-+-atd 
|-bash---ami_applet 
|-bdflush 
|-crond 
|-deskguide_apple 
|-gconfd-1 
|-gnome-name-serv 
|-gnome-smproxy 
|-gnome-terminal-+-bash---vi 
| |-bash---pstree 
| `-gnome-pty-helpe 
|-gpm 
|-kapmd 
|-keventd 
|-khubd 
|-6*[kjournald] 
|-klogd 
|-kserver 
|-ksoftirqd_CPU0 
|-kswapd 
|-kupdated 
|-login---bash---startx---xinit-+-X 
| `-gnome-session---bash 
|-mdrecoveryd 
|-5*[mingetty] 
|-mozilla-bin-+-mozilla-bin---4*[mozilla-bin] 
| `-netstat 
|-nautilus---nautilus---5*[nautilus] 
|-nmbd 
|-oafd 
|-panel 
|-portmap 
|-rhn-applet 
|-rpc.statd 
|-sawfish 
|-sendmail 
|-smbd 
|-sshd 
|-syslogd 
|-tasklist_applet 
|-xfs 
`-xinetd---fam 

<리눅스에는 이렇게 많은 서비스데몬들이 실행되고 있다>

2 데몬의 실행방식
데몬의 실행방식은 크게 stand-alone방식과 xinetd방식이 있다.
2.1 Stand-alone방식
이 방식의 데몬들은 데몬이 시작되면 말 그대로 자기 스스로 시스템에서 상주하며 클라이언트 요청에 응답을 보내주는 방식으로 보통 아파치 데몬처럼 클라이언트의 요청이 잦은 데몬들이 이런 방식으로 실행된다. 스탠드 얼론방식의 데몬을 확인하려면 쉘상에서 pstree 명령을 내리면 데몬들을 트리형식으로 보여준다. 스탠드 얼론 방식의 데몬들은 xinetd방식보다는 클라이언트 요청에 신속하게 대응한다는 장점은 있으나 이런 스탠드 얼론 데몬들이 시스템에서 많이 생성되게되면 시스템의 자원낭비가 심해지게 되고 퍼포먼스도 떨어지게 된다.
2.2 inetd방식
스탠트 얼론처럼 자기 스스로 독립적으로 시스템에 실행되는게아니라 xinetd라는 수퍼데몬이 시스템에서 대기하고 있다고 클라이언트 요청이 들어오면 xinetd데몬에 의해 해당 서비스를 제공해줄 데몬을 실행시키는 방식이다. telnet이나 ftp같이 비교적 클라이언트 요청의 빈도가 낮은 서비스들은 이런 xinetd데몬이 시스템 활용측면에서는 유리하다. 또한 tcp wrapper를 써서 보안을 손쉽게 설정할 수 있는 것도 장점이다. 그러나 전술한 아파치 데몬같이 클라이언트의 자잘한 요청이 많은 서비스에 대해서는 inetd방식이 시스템효율을 도리어 떨어드리게된다. xinetd데몬은 스탠드 얼론방식으로 실행되는 슈퍼데몬이며 서비스 요청시 xinetd데몬의 차일드 프로세스로 다른 데몬이 실행된다. 이를 확인하려면 pstree로 xinetd데몬을 확인하고 다른 한텀창에서 telnet이나 ftp로 자신의 호스트에 접속해보라. 그럼 xinetd데몬에서 차일드 프로세스로 해당 데몬이 실행되는 것을 확인할 수 있다.

[root@localhost home]# pstree 
init-+-atd 
|-bash---ami_applet 
|-bdflush 
............. 
|-xfs 
`-xinetd---fam 

<트리 끝부분에 xinetd데몬이 떠 있는 것을 확인 할 수 있다.>

[root@localhost root]# pstree 
init-+-atd 
|-bash---ami_applet 
|-bdflush 
...... 
|-xfs 
`-xinetd-+-fam 
`-in.telnetd---login 



xinetd데몬은 곧 설명할 /etc/xinetd.d 디렉토리 내에서 설정한다.

3 데몬관리
3.1 ntsysv
스탠드 얼론 데몬들은 레드햇 계열에서 ntsysv로 조정한다. ntsysv 커맨드를 내리면 시스템 데몬들의 리스트가 나타나고 아스트리크(*) 표시가 되어 있는 데몬들이 시스템에서 실행되는 데몬들이다. 특정데몬을 실행시키고 싶으면 스페이스바로 *표시를 토글시키면 된다. 예를 들어 데스크탑으로 쓰는 리눅스 박스에서 sendmail과 kuduz데몬은 꺼두는 것이 부팅속도를 조금 높여주는 방법이 된다. 그외에 여러 데몬들이 있는데 각각의 데몬에 대한 설명을 보려면 데몬으로 바를 옮긴 후 F1키를 누르면 된다.

이 ntsysv에 의해 제어되는 데몬들은 레드햇 리눅스에서는 /etc/rc.d/init.d 에 등록이 되어 있다. 쉘상에서 데몬을 제어하고자 한다면 service 명령을 쓰며 데몬명과 start, stop, restart 커맨드를 사용할 수 있다.
예를 들어 네트웍 데몬을 재실행하고자 할 때

#service network restart 

과 같이 하면된다. ntsysv로 하나 이상의 데몬 실행 설정을 해주었다면 다음과 같이 커맨드로 수퍼데몬을 재실행 해 준다.

#service xinetd restart 

3.1.1 ntsysv에 데몬등록하기
rpm같은 바이너리 패키지로 설치한 어플은 ntsysv에 자동으로 등록되지만 소스로 설치한 어플은 ntsysv에 등록이 안된다. 이때는 소스로 프로그램을 설치하다보면 실행과 정지를 편하게 할수 있는 스크립트가 있다. 이것을 /etc/rc.d/init.d 밑에 카피하면 ntsysv에 등록이 되는데 그냥 카피하면 안되고 점을 제거하고 카피하면 이상 없이 등록이 된다. 만약 mysql.server 이라는 것을 등록한다면 카피할 때 mv mysql.server mysqld 라고하고 mv bnetd.init bnetd 라고 하면된다. 이 때 카피할 스크립트 첫부분에 다음과 같은 문장을 넣어주어야 한다.

#!/bin/sh 
# MySQL: Starts the MySQL Server 

# chkconfig: 2345 90 90 
# description: A very fast and reliable SQL database engine. 

즉 chkconfig 설정 부분이 들어가야 한다는 것이다. 자세한 것은 man chkconfig로 알아보면 된다.
chkconfig --add mysqld

3.2 xinetd설정
슈퍼데몬의 설정은 /etc/xinetd 에서 이루어진다.

[root@localhost root]# cd /etc/xinetd.d 
[root@localhost xinetd.d]# ls 
chargen daytime echo finger rexec rsh services talk time wu-ftpd 
chargen-udp daytime-udp echo-udp ntalk rlogin servers sgi_fam telnet time-udp 
[root@localhost xinetd.d]# 

대충 살펴보니 에코서버, 타임서버, FTP, 텔넷서버등이 설정되어 있는 것을 볼 수 있다. 예를 들어 telnet 스크립트 파일을 열어보자.

# default: on 
# description: The telnet server serves telnet sessions; it uses \ 
# unencrypted username/password pairs for authentication. 
service telnet 

disable = no 
flags = REUSE 
socket_type = stream 
wait = no 
user = root 
server = /usr/sbin/in.telnetd 
log_on_failure += USERID 


disable옵션은 데몬을 실행시킬 것인지를 결정하는 옵션으로 no로 되어 있으면 서비스 요청시 실행하게 되고 yes로 하면 실행시키지 않는다. socket_type은 stream은 TCP, dgram은 UDP방식을 의미한다.
서비스 포트 자체를 막고자 한다면 /etc/services 를 수정하면 되고 데몬 서비스는 이 스크립트 파일의 disable옵션을 조정해주면 되는 것이다.

4 stand alone데몬을 inetd방식으로 바꾸기
실습겸으로 stand alone방식의 데몬을 inetd방식의 데몬으로 바꾸어보도록 하자. 실습할 어플리케이션은 Proftpd이다. proftpd설정파일은 /etc/proftpd.conf 이다. 이 파일을 열어보면 proftpd는 기본적으로 stand alone방식으로 돌아가고 있다는 것을 알 수 있다.

# This is a basic ProFTPD configuration file (rename it to 
# 'proftpd.conf' for actual use. It establishes a single server 
# and a single anonymous login. It assumes that you have a user/group 
# "nobody" and "ftp" for normal operation and anon. 

ServerName "ProFTPD Default Installation" 
ServerType standalone 
DefaultServer on 



pstree로 현재 시스템에서 확인해보자

[leedw@choco ~]$ pstree 
init-+-atd 
|-bdflush 
|-nmbd 
|-portmap 
|-proftpd 
...... 



이제 이 프로세스를 inetd방식으로 바꾸어보자. 일단 proftpd 설정파일인 /etc/proftpd.conf 를 열어 ServerType을 inetd로 수정한다.

ServerType inetd 

그리고 /etc/xinetd.d 로 가서 프로세스 스크립트 파일을 만들어야 한다. proftpd란 파일명으로 아래와 같이 작성한다.

service ftp 

socket_type = stream 
wait = no 
user = root 
server = /usr/sbin/proftpd 
log_on_success += DURATION 
nice = 10 
disable = no 


server에 프로세스 실행파일의 경로명을 적어줘야 한다. which등으로 찾아서 패스를 적어준다.
이제 현재 스탠드얼론으로 실행중인 proftpd를 시스템에서 죽여줘야 한다. killall로 proftpd를 끝낸다.

#killall proftpd 

그리고 xinetd설정이 적용될 수 있도록 수퍼데몬인 xinetd를 재실행시켜줘야 한다.

#service xinetd restart 

이제 ftp로 호스트에 접근해보면 proftpd가 xinetd의 차일드 프로세스로 실행되는 것을 확인 할 수 있을 것이다.

[leedw@choco ~]$ pstree 
init-+-atd 
............ 
|-vmware-guestd 
|-xfs 
`-xinetd-+-in.telnetd---login---bash---ftp 
|-in.telnetd---login---bash---pstree 
`-proftpd




// 여기부터는 수업시간에 배운거 //

:: standalone
- 항상 대기중인 데몬이다 ex) httpd 
- 관련 디렉토리 : /etc/rc.d/init.d/

:: xinetd
(Redhat 7.0 부터 inetd가 xinetd로 바뀌었음) 7.0 이하 버전은 /etc/inetd.conf 가 다 관리했었음
- 요청이 있을때만 해당 데몬을 call한다. (메모리를 효율적으로 사용가능)
- 관련 디렉토리 : /etc/xinetd.d/
- 관련 파일 : /etc/xinetd.conf

:: xinetd.conf 파일 설명 

defaults
{
instances = 60 # 동시 접속 가능한 호스트 수
log_type = SYSLOG authpriv # 로그기록형식
log_on_success = HOST PID #서버가 시작될때와 끝날때 기록될 것들
# 옵션 : PID HOST USERID EXIT DURATION
log_on_failure = HOST # 서버구동 불가능일때와 접근거부되었을때 기록될 것들
# 옵션 : HOST USERID ATTEMPT RECORD
only_from = 211.63.89.91/32 #이 아이피만 접근을 허용한다.
# 211.63.89.91/255.255.255.255 와 같은의미
no_access = 0.0.0.0/0 # 접근거부할 아이피 - 이렇게 해놓면 아무도 접근을 못하게 됨
disable = shell login exec finger #해당서비스는 이용불가
protocol = tcp #서비스가 사용할 프로토콜 - /etc/protocols에 있어야 함
socket_type = stream # stream(tcp) dgram(udp)
wait = no #단일 쓰레드 : yes 다중쓰레드 : no
server = /usr/sbin/in.telnetd # 실행될 데몬 경로
access_time = 01:00-07:00 # 작동시간
redirect = 211.63.89.93 23 #앞에는 리다이렉트시킬 아이피 뒤에는 포트
port = 8080 # 사용할 포트번호 /etc/services 목록내의 포트와 일치해야함
cps = 25 30 # 초당 25개 이상 서비스요청이 들어오면 30초 동안 중단하고 
서비스 재개
}

'Server' 카테고리의 다른 글

/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
프로세스 죽이기 - kill, killall, pkill  (0) 2016.12.31
Quota 설정하기  (0) 2016.12.31
ftp command  (0) 2016.12.31
netstat  (0) 2016.12.31

-------------------------------------------------
쿼터 초기 설정하기
-------------------------------------------------
[root@s92 ~]# cat /var/log/dmesg | grep quota
VFS: Disk quotas dquot_6.5.1

[root@s92 ~]# vi /etc/fstab

LABEL=/home /home ext3 defaults,usrquota 1 2

[root@s92 ~]# quota -o remount /home
[root@s92 ~]#

[root@s92 ~]# mount
/dev/sda3 on / type ext3 (rw)
none on /proc type proc (rw)
none on /sys type sysfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
usbfs on /proc/bus/usb type usbfs (rw)
none on /dev/shm type tmpfs (rw)
/dev/sda6 on /home type ext3 (rw,usrquota)
/dev/sda8 on /usr type ext3 (rw)
/dev/sda7 on /var type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

[root@s92 ~]# quotacheck -auvgm // aquota.user 생성 및 저장

[root@s92 ~]# quotaon /home
[root@s92 ~]#


-------------------------------------------------
유저별 쿼터 적용하기
-------------------------------------------------
[root@s92 ~]# edquota sist
Disk quotas for user sist (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda6 6000 5000 6000 248 0 0

:: 설명 
soft : 5000byte 이상 경과하면 경고한다.
hard : 6000byte 이상 경과하면 안된다.
inodes : 파일의 갯수가 지정된 갯수보다 크면 안된다.

:: 유예기간 설정 : edquota -t

:: sist 게정의 쿼터설정 내용을 다른 계정에도 적용하기

[root@s92 pub]# edquota -p sist linux leopit
[root@s92 pub]# repquota -auvg
*** Report for user quotas on device /dev/sda6
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 44284 0 0 9 0 0
sist +- 6000 5000 6000 6days 248 0 0
leopit -- 136 5000 6000 16 0 0
linux -- 120 5000 6000 14 0 0
aaa -- 120 5000 6000 14 0 0
solaris -- 120 5000 6000 14 0 0

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 6
Used average: 6.000000

[root@s92 pub]#

'Server' 카테고리의 다른 글

/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
프로세스 죽이기 - kill, killall, pkill  (0) 2016.12.31
xinetd 데몬과 standalone 데몬  (0) 2016.12.31
ftp command  (0) 2016.12.31
netstat  (0) 2016.12.31

- ftp 명령어

ascii : 전송모드를 ASCII모드로 설정한다.(ascii또는 as) 

binary : 전송모드를 BINARY모드로 설정한다.( binary또는 bi) 

bell : 명령어 완료시에 벨소리를 나게한다.(bell) 

bye : ftp접속을 종료하고 빠져나간다.(bye) 

cd : remote시스템의 디렉토리를 변경한다.(cd 디렉토리명) 

cdup : remote시스템에서 한단계 상위디렉토리로 이동한다.(cdup) 

chmod : remote시스템의 파일퍼미션을 변경한다.(chmod 755 index.html) 

close : ftp접속을 종료한다. (close) 

delete : remote시스템의 파일을 삭제한다.(delete index.old) 

dir : remote시스템의 디렉토리 내용을 디스플레이한다.(dir) 

disconnect : ftp접속을 종료한다.(disconnect) 

exit : ftp접속을 종료하고 빠져나간다.(exit) 

get : 지정된 파일하나를 가져온다.(get index.html) 

hash : 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.(hash) 

help : ftp명령어 도움말을 볼 수 있다.(help또는 help 명령어) 

lcd : local시스템의 디렉토리를 변경한다.(lcd 디렉토리명) 

ls : remote시스템의 디렉토리 내용을 디스플레이한다. (ls 또는 ls -l) 

mdelete : 여러개의 파일을 한꺼번에 지울 때 사용한다.( mdelete *.old) 

mget : 여러개의 파일을 한꺼번에 가져오려할 때 사용한다. ( mget *.gz) 

mput : 한꺼번에 여러개의 파일을 remote시스템에 올린다.(mput *.html) 

open : ftp접속을 시도한다.(open 168.126.72.51또는 open ftp.kornet.net) 

prompt : 파일전송시에 확인과정을 거친다. on/off 토글 (prompt) 

put : 하나의 파일을 remote시스템에 올린다.(put index.html) 

pwd : remote시스템의 현재 작업디렉토리를 표시한다.(pwd) 

quit : ftp접속을 종료하고 빠져나간다.(quit) 

rstatus : remote시스템의 상황(version, 어디서, 접속ID등)을 표시한다.(rstatus) 

rename : remote시스템의 파일명을 바꾼다.(remote 현재파일명 바꿀파일명) 

rmdir : remote시스템의 디렉토리을 삭제한다.(rmdir 디렉토리명) 

size :remote시스템에 있는 파일의 크기를 byte단위로 표시한다.(size index.html) 

status : 현재 연결된 ftp세션모드에 대한 설정을 보여준다.(status) 

type : 전송모드를 설정한다.(type 또는 type ascii 또는 type binary) 

출처 : koreaphp.co.kr

'Server' 카테고리의 다른 글

/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
프로세스 죽이기 - kill, killall, pkill  (0) 2016.12.31
xinetd 데몬과 standalone 데몬  (0) 2016.12.31
Quota 설정하기  (0) 2016.12.31
netstat  (0) 2016.12.31

자신의 컴퓨터와 연결되었거나 연결될 목록을 프로토콜과 함께 보여주는 명령어

유닉스나 윈도우에는 사용자 컴퓨터의 네트워크의 상태를 알려주는 netstat라는 명령어가 있다. 즉 어떤 포트가 열려 있고 어떻게 사용되고 있는지 모두 알 수가 있고 이 명령어를 잘 활용하면 맨손으로도 해킹을 감지해 낼 수 있습니다. 그러나 사용자의 대부분은 netstat란 명령어를 모르고 있는것 같아 이번에는 netstat명령어의 사용법을 익힘으로써 다른 소프트웨어 도움을 받지 않고 해킹을 감지해 내는 능력을 길러봅니다. 

1. netstat로 알아보는 내 컴퓨터의 포트상태 
c:>netstat 
Proto Local Address Foreign Address State 
TCP acy7807:1023 211.233.45.89:80 ESTABLISHED 

필드

 설명

 Proto 

 현재 사용한 프로토콜 

 Local Address

 현재 열려 있는 사용자 컴퓨터의 IP/호스트 네임과 사용중인 포트

 Foreign Address

 현재 사용자의 컴퓨터에 접속되어 있는 IP/호스트 네임과 사용중인 포트 

 State

 연결 상태를 나타내는 것 

- LISTENING : 연결을 위하여 접속을 기다리는 상태 
- TIME_WAIT : 이미 해당 사이트와 연결이 종료되었거나 다음 연결을 위해 기다리는 상태 
- SYN_SENT : 접속하기 위해 패킷을 보냈다는 뜻 


2. netstat 옵션 
c:>netstat ? 

netstat -a : 연결된 혹은 연결을 기다리고 있는 모든 포트를 보여줍니다. -a 옵션이 없으면 연결된 목록만 보여주는데, -a 옵션을 주면 연결되었거나 연결을 기다리는 목록을 모두 보여줍니다.

netstat -n : 통상 연결 목록이 컴퓨터 이름이 나오는데, -n 옵션을 주면 컴퓨터 이름 대신 ip 주소가 뜹니다. 

netstats -an or -na : 컴퓨터와 연결되었던 혹은 연결을 기다리는 목록을 ip 주소로 바꾸어서 보여줍니다.

이제 netstat 명령을 알았으니 가끔씩 실행시켜주면 됩니다. netstat 명령으로 검색했을 때 알 수 없는 포트가 있거나, 포트중에 31337, 12345, 54321과 같이 트로이 목마가 사용하는 포트가 하나 열려 있거나 열려진 포트로 특정 IP가 접속해 있다면 이는 십중팔구 해킹인 것입니다.

 실제 사용 예

netstat -nap (열려 있는 모든 포트)

#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)



'Server' 카테고리의 다른 글

/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
프로세스 죽이기 - kill, killall, pkill  (0) 2016.12.31
xinetd 데몬과 standalone 데몬  (0) 2016.12.31
Quota 설정하기  (0) 2016.12.31
ftp command  (0) 2016.12.31

+ Recent posts