본문 없을때
/usr/bin/mutt -s "제목" -a 첨부파일 chyccs@ifive.kr < /dev/null

본문 있을때
/usr/bin/mutt -s "제목" -a 첨부파일 chyccs@ifive.kr < contents.txt

'OS > LINUX' 카테고리의 다른 글

사용자 프로그램 부팅시 자동 실행  (0) 2011.06.21
memcached 설치와 이용  (0) 2011.06.17
/etc/sysconfig / 시스템 설정 정보  (0) 2011.06.16
IPTABLES 사용법 예제로 정리  (0) 2011.06.16
nohup *command* 1>/dev/null/ 2>&1 &  (0) 2011.06.16

/etc/sysconfig/amd
  .amd 데몬 실행시 옵션과 디렉토리 설정
/etc/sysconfig/apmd
  . 시작/종료/변경 및 보류 등에 대한 설정
/etc/sysconfig/authconfig
  . 사용자 정보 및 인증 방법 설정
  .  #authconfig 명령을 사용하거나 , 적접 변경 가능
/etc/sysconfig/clock
  . 시간에 관련된 내용을 설정하는 영역
/etc/sysconfig/desktop
  .  X 윈도우 가종시 사용할 데스크탑 메니저 결정
  . GNOM  이나 KDE 선택
/etc/sysconfig/harddisk
  . 하드디스크 설정
/etc/sysconfig/hwdonf
  . 현 리눅스에서 어떠한 하드웨어를 인식하는지 참고용
/etc/sysconfig/i18n
  . 시스템에게 현재 사용되는 언어를 알려줌


출처 : http://tbeyond.tistory.com/

'OS > LINUX' 카테고리의 다른 글

memcached 설치와 이용  (0) 2011.06.17
mutt 커맨드라인 첨부 메일 보내기  (0) 2011.06.17
IPTABLES 사용법 예제로 정리  (0) 2011.06.16
nohup *command* 1>/dev/null/ 2>&1 &  (0) 2011.06.16
iptables 관련  (0) 2011.06.16

작성자:컴센스
편집자:엔시스(sis@sis.pe.kr)





iptables는 리눅스에서 방화벽으로 사용하고 있는 iptables를 이용하여 acl 처리 할일이 있어서
작업하면서 다음과 같이 정리하였습니다.

0.기본정책을 ACCEPT로 설정

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT


1.현재 자신의 방화벽 규칙을 볼 수 있는 명령

iptables --list
iptables -L


2.21,23,25,80 포트를 차단하는 정책(각각 하나씩 규칙을 만들것)

iptables -A INPUT -p tcp --dport 21 -j DROP
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -p tcp --dport 25 -j DROP
iptables -A INPUT -p tcp --dport 80 -j DROP

iptables -A INPUT -p tcp -m multiport --destination-port 21,23,25,80 -j DROP


3.첫번째 정책을 삭제

iptables -D INPUT 1


4.세번째 정책의 출발지 IP를 192.68.1.0/24로 수정


iptables -R INPUT 3 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP


5.출발지 IP가 A클래스 사설IP일 경우 차단하는 정책

iptables -A INPUT -s 10.0.0.0/8 -j DROP


6.출발지 IP가 192.168.10.1부터 192.168.10.100, 그리고 192.168.150.0/24이고 목적지 IP는 192.168.10.170이고 목적지 포트는 3306일 경우 차단하는 정책


iptables -A INPUT -p tcp -s 192.168.150.0/24 -d 192.168.10.170 --dport 3306 -j DROP
iptables -A INPUT -p tcp -m iprange --src-range 192.168.10.1-192.168.10.100 -d 192.168.10.170 --dport 3306 -j DROP


7.tcp 패킷이 초당 10개가 올 경우 차단하는 정책(limit match 이용)

iptables -A INPUT -p tcp -m limit --limit 10/s -j DROP


8.하나의 세션에서 10개의 패킷이 매칭된 후 tcp 패킷이 분당 100개가 올 경우 차단하는 정책

iptables -A INPUT -p tcp -m limit --limit 100/m --limit-burst 10 -j DROP


9.옆사람의 윈도우와 리눅스에서 SSH 접속을 차단하도록 설정
  윈도우에서의 연결은 DROP 정책을,리눅스에서의 접속은 REJECT 정책으로 설정

iptables -A INPUT -p tcp -s 172.17.24.140 --dport 22 -j DROP
iptables -A INPUT -p tcp -s 172.17.24.170 --dport 22 -j REJECT --reject-with tcp-reset

  - /etc/syslog.conf 설정에서 마지막 부분을 다음과 같이 수정

   kern.*   /var/log/iptables

  - 차단된 연결에 대한 로그를 /var/log/iptables 파일에 남기고
    로그레벨은 info로 지정하고 로그의 머릿말에 "[SSH Conn]"메세지 삽입

iptables -I INPUT 9 -p tcp -s 172.17.24.140 --dport 22 -j LOG --log-level info
iptables -I INPUT 10 -p tcp -s 172.17.24.140 --dport 22 -j LOG --log-prefix "[SSH Conn]"


10.ICMP 라는 체인 생성
  - icmp 패킷이 들어올 경우 ICMP 체인으로 전달
  - ICMP 체인에 ping에 대해 응답하지 않는 정책 추가

iptables -N ICMP
iptables -A INPUT -p icmp -j ICMP
iptables -A ICMP -p icmp --icmp-type 8 -j DROP

11.기본정책을 DROP으로 설정
 - 본인의 윈도우에서 SSH 연결이 되도록 설정하고 이미 연결된 상태나 연관성이 있는 연결은
   별도의 정책 대신 state 매치를 이용하여 계속 사용할 수 있도록 설정(상태추적설정)

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -s 172.17.24.130 --dport 22 -j ACCEPT


12.TCP FLAG 중 전체를 보고 그 중 SYN과 FIN가 있을 경우 차단하는 정책

iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP

13.TCP FLAG 중 전체를 보고 그 중 PSH와 FIN가 있을 경우 차단하는 정책

iptables -A INPUT -p tcp --tcp-flags ALL PSH,FIN -j DROP

14.TCP FLAG 중 PSH와 SYN을 보고 그 중 둘 다 있을 경우 차단하는 정책

15.SYN 패킷이 아닌데 상태가 NEW일 경우 차단하는 정책

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP
iptables -A INPUT -p tcp ! --tcp-flags ALL SYN -m state --state NEW -j DROP


tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
tcp flags:!SYN,RST,ACK/SYN state NEW
tcp flags:!FIN,SYN,RST,PSH,ACK,URG/SYN state NEW

nohup 실행파일 1> /dev/null 2>&1

 

실제적인 설명은 마지막에 드리고

먼저 I/O 재지향에 대한 개념을 소개합니다.

 

I/O 재지향

 

ls > ls_result.txt

위와 같이 하면 화면에 출력될  ls 의 결과가 ls_result.txt 라는 파일 속에 기록이 됩니다.

 

화면에 출력될 내용을 표준출력(stdout)이라고 하는데,

파일디스크립터(file descriptor)  번호는 1번입니다.

(표준입력, 표준출력, 표준에러에 해당하는 파일 디스크립터는 각각 0, 1, 2 입니다.)

 

ls 1> ls_result.txt 라고 해도 결과가 같습니다.

 

ls > /dev/null 은 ls 의 결과를 /dev/null 이라는 파일 속에 넣습니다.

/dev/null 은 특수한 장치파일로 모든 입력을 (마치 블랙홀 마냥) 없애버립니다.

 

1> /dev/null 

그러므로 위의 표현은 표준출력을 /dev/null로 재지향합니다.

 

2>&1 

이 표현은 1번 파일디스크립터에 2번 파일디스크립터(stderr) 를 재지향 합니다.

1번 파일디스크립터는 바로 전에 /dev/null 로 재지향되었기 때문에

2번 파일디스크립터를 1번 파일디스크립터로 재지향하는 것은

2번 파일디스크립터를 /dev/null 로 재지향하는 것과 동일합니다.

 

&  

마지막의 & 는 실행 작업을 background 로 보내는 역할을 합니다.

 

그러므로,

nohup 실행파일 1> /dev/null 2>&1

위 명령은

실행파일을 백그라운드 모드로 실행을 하면서

로그아웃 후에도 프로세스가 죽지 않고 진행되도록 하는데,

실행파일에 의해 발생되는 출력(에러 메시지까지)을 화면에 보이지 않게끔 합니다.

 

nohup 명령은 실행을 하면 nohup.out 이라는 이름의 파일이 생성됩니다.

이 파일에는 nohup 으로 실행하는 명령의 출력이 기록이 되는데

위의 명령을 이용하면 nohup.out 에는 아무런 기록이 남지 않습니다.


'OS > LINUX' 카테고리의 다른 글

/etc/sysconfig / 시스템 설정 정보  (0) 2011.06.16
IPTABLES 사용법 예제로 정리  (0) 2011.06.16
iptables 관련  (0) 2011.06.16
원격 시스템 사용자 계정 정보 확인 - finger  (0) 2011.06.14
php memcached 설치 & 연동  (0) 2011.06.09

@ iptables 문법
  1. table name (예: -t  filter/ -t  nat/  -t  mangle) 
  2. chain name (예: -A  INPUT/ -D  FORWARD/ -I POSTROUTING)
  3. layer 3 object (예: -s 192.168.x.10 / -d 10.1.1.0/24)
  4. layer 4 object (예: -p tcp --dport 80/ -p udp  --sport 123)
  5. Jump (예: -j DROP/  -j  ACCEPT/ -j  REJECT/ -j  LOG ,,,)

예> 내부망의 특정 HOST(10.1.1.20)가 업무 시간에 업무는 등한시하고
     증권거래,웹서핑,채팅을 하는 것을 방화벽 로그를 통해 확인하였다.
     해당 HOST의 모든 인터넷 서비스 접속을 차단할 수 있도록 네트웍
     방화벽 셋팅을 하세요


iptables  -t  filter  -A  FORWARD  -s 10.1.1.20  -j  DROP

// iptables 의 룰 정보를 보여주는 명령어 입니다...

serv 컴: iptables  -L 

// iptables 의 룰을 전부 제거 하는 명령어 입니다..

 iptables  -F

주의: xp,work 컴에서 serv의 telnet,ftp,ssh 접속이 잘 되는지 반드시 확인

퀴즈> serv 컴에서  work 컴으로부터의 모든 서비스 접속을 차단할 수
        있도록 방화벽 셋팅을 하세요.
iptables  -t  filter  -A  INPUT  -s  192.168.x.20  -d 192.168.x.10 -j  DROPT

 

// 하지만 iptables 의 룰을 셋팅하고 서비스를 재시작 시키면 모든게 원상태 즉 초기화 되버리는 것을

   우리는 지금 볼수 잇습니다...

serv 컴: service   iptables   restart 
 iptables   -L

 iptables   -F
 

// 그리하여 iptables-save 라는 명령으로 파일로 저장을 하는 모습입니다..
 iptables-save  >   /root/firewall.txt

// 그리고 다시 iptables의 룰 정보를 다시 보았습니다.. 하지만 또 다시 돌아가버렸네요 그쵸???

 service   iptables   restart   &&  iptables  -L

// 아까전에 firewall.txt라는 파일로 우린 룰 정보를 저장을 하였습니다.. 그걸로 다시 복구를 하네요..

 iptables-restore   <  /root/firewall.txt
 iptables   -L

 

// 이렇게 매번 부팅할때마다 iptables를 restore 해줘야 하냐구요??? 아닙니다.. ^^

// 밑에 환경설정 폴더로 가서 iptables-config 파일을 한번 열어볼까요~

 ls   /etc/sysconfig/
 
 vi   /etc/sysconfig/iptables-config

 // 19행에 보시면  IPTABLES_SAVE_ON_STOP="no" 를 yes로 바꿔주세요... 무슨뜻이냐구요?

    iptables가 정지를 할때에 저장을 할것이냐 하고 물어본것입니다.. 초기값은 no 이므로 우리는

    당연히 yes 를 눌러주시면 정지했을때 저장이 되겠죠... 또하나!!!
  -> 19행  IPTABLES_SAVE_ON_STOP="yes"

 

 // IPTABLES_SAVE_ON_RESTART="no" 를 yes로 변경~!!! 이건 iptable가 재부팅할때 저장

    할것인지 물어보는겁니다.. 당연히 yes!! 그럼 우린 정지했을때나 재부팅 했을때 전부 저장이 되는

    것입니다.. 한번 확인해 볼까요??
  -> 25행  IPTABLES_SAVE_ON_RESTART="yes"

 service   iptables   restart   &&  iptables  -L

원격 시스템 사용자 계정 정보 확인

   정의 : 로컬 및 원격 서버 사용자의 계정 정보를 확인하는 명령어
   명령어 : finger [사용자명]

1. 로컬 시스템 사용자 계정 정보 확인
 

2. 원격서버에 접속한 사용자 및 계정 정보 확인

               finger 명령어로 원격서버에 접속한 사용자 정보를 알려고 하였으나, 원격서버에 finger 서버가 실행되지 않아 실패.
               원격서버에 finger 서버 서비스를 올려야 한다. (리눅스는 기본적으로 finger 서버가 올라와 있지 않다)

3. 원격서버 finger 서버 설정

    * # vi /etc/xinetd.d/finger 파일에서 disable 옵션을 no 로 바꾼다.
    * tcpwrapper 에서도 허용시켜줘야 한다.

    일반적으로 원격서버의 finger 서비스는 사용하지 않는 것이 보안측면에서 좋다. 이에 원격서버의 finger 서비스 블록은,
      - /etc/xinetd.d/finger 파일 삭제
      - /etc/services 파일내에서 finger 행의 삭제 또는 주석처리


출처 : http://helpboy.tistory.com

'OS > LINUX' 카테고리의 다른 글

nohup *command* 1>/dev/null/ 2>&1 &  (0) 2011.06.16
iptables 관련  (0) 2011.06.16
php memcached 설치 & 연동  (0) 2011.06.09
Memcached 설치 및 설정하기 그리고 주의 사항  (0) 2011.06.09
Linux서버에 Memcached 설치/실행 하기  (0) 2011.06.09
Memcached 데몬
사이트 : http://www.danga.com/memcached/
다운로드 : http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz

Memcached PHP Extension
사이트 : http://pecl.php.net/package/memcache
다운로드 : http://pecl.php.net/get/memcache-2.2.5.tgz

LibEvent
사이트 : http://monkey.org/~provos/libevent/
다운로드 : http://monkey.org/~provos/libevent-1.4.11-stable.tar.gz

 

Memcached 는 데이터를 메모리에 저장하여 이용할 수 있는 데몬이다. 분산처리가 가능하고 매우 빠른 성능을 지닌 캐시 이다.
(편의상 root로 작업)

 

1. Memcached 설치

우선 Memcached 를 적당한 디렉토리 (/usr/local/src) 등에 다운로드를 받는다.
# tar zxvf memcached-1.2.8.tar.gz
# cd memcached-1.2.8
# configure --prefix=/usr/local/memcached
* checking for libevent directory... configure: error: libevent is required 메세지가 나오면 libevent 라이블러리를 설치를 해줘야 한다.

# make
# make install

 

1-1 memcached 실행
# cd /usr/local/memcached (configure 에서 지정한 prefix로 이동)
# bin/memcached -u [실행될 사용자] &
* 실행될 사용자는 memcached 데몬이 -u 옵션으로 지정된 사용자로 실행이 된다 (root로 지정하면 안됨)
# netstat -na | grep 11211
->
tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN     
tcp        0      0 :::11211                          :::*                            LISTEN

포트를 확인한다.

 

2. Memcache PHP Extension
# tar zxvf memcache-2.2.5.tgz
# cd memcache-2.2.5
# phpize
# ./configure
# make
# cp .libs/memcache.so /(php 익스텐션 디렉토리) php.ini에서 지정한 extension_dir 에서 설정한 디렉토리
# php -m | grep memcache 로 모듈 확인
# /etc/init.d/httpd restart 또는 /usr/local/apache/bin/apachectl restart 로 Apache 재시작

PHP info 확인

 

3. Libevent 설치 (옵션)
* Memcache Configure 중 libevent 가 필요하다는 메세지를 보내고 중단이 되었을때 설치를 한다.

libevent 를 다운로드 받는다.
# tar zxvf libevent-1.4.11-stable.tar.gz
# cd libevent-1.4.11-stable
# ./configure
# make
# make install (/usr/local/lib 에 libevent.so 파일이 존재하는지 확인한다.)
# ldconfig (vi /etc/ld.so.conf 에 /usr/local/lib 추가를 한다.

PHP memcache 사용은 다음편에서 다루도록 하겠습니다 ^^


원본 : http://mcpicdtl.blogspot.com/2010/04/memcached.html

 

Memcached 는 데이터를 메모리에 저장하며 분산처리가 가능하고 매우 빠른 성능을 지닌 캐시 입니다.

- libevent 설치
Memcached 는 libevent 를 필요로 하므로 먼저 설치를 진행하겠습니다.

http://monkey.org/~provos/libevent/

[root@yongobk ~]# cd /usr/local/src
[root@yongobk ~]# wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gz
[root@yongobk ~]# tar xzvf libevent-1.4.13-stable.tar.gz
[root@yongobk ~]# cd libevent-1.4.13-stable
[root@yongobk ~]# ./configure
[root@yongobk ~]# make ; make install


- Memcached 설치
아래 주소에서 최신버전을 다운로드 하고 설치를 진행합니다.

http://code.google.com/p/memcached/downloads/list

[root@yongobk ~]# cd /usr/local/src
[root@yongbok ~]# wget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
[root@yongbok ~]# tar xzvf memcached-1.4.4.tar.gz
[root@yongbok ~]# cd memcached-1.4.4
[root@yongbok ~]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local
[root@yongbok ~]# make ; make install

-> 추가

libevent 라이브러리를 memcached에 인식 시키기

[]# whereis libevent를 실행해서 라이브러리 위치 확인

[]# ldd /usr/local/memcached/bin/memcached

linux-gate.so.1 =>  (0x001b0000)
libevent-1.4.so.2 => /usr/local/lib/libevent-1.4.so.2 (0x007a3000) --이렇게 출력되어야 함. 만약 not found가 나오는 경우 아래 명령을 실행
libpthread.so.0 => /lib/libpthread.so.0 (0x00aa1000)
libc.so.6 => /lib/libc.so.6 (0x0092c000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00c10000)
librt.so.1 => /lib/librt.so.1 (0x00b31000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00c37000)
/lib/ld-linux.so.2 (0x0090e000)

[]# echo "/usr/local/lib" >> /etc/ld.so.conf

[]# ldconfig /etc/ld.so.con

[]# ldd /usr/local/memcached/bin/memcached를 실행해서 라이브러리 로드를 확인한다.

 

- Memcached 실행
[root@yongbok ~]# /usr/local/memcached/bin/memcached -u nobody &
- Memcached PHP Extension 설치

http://pecl.php.net/package/memcache

[root@yongobk ~]# cd /usr/local/src
[root@yongbok ~]# wget http://pecl.php.net/get/memcache-2.2.5.tgz
[root@yongbok ~]# tar xzvf memcache-2.2.5.tgz
[root@yongbok ~]# cd memcache-2.2.5
[root@yongbok ~]# /usr/local/php5/bin/phpize
[root@yongbok ~]# ./configure --with-php-config=/usr/local/php5/bin/php-config
[root@yongbok ~]# make ; make install

Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/


php.ini 파일에 아래 내용 추가 합니다.

[root@yongbok ~]# vi /usr/local/apache2/conf/php.ini

[memcache]
extension_dir=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
extension=memcache.so
memcache.allow_failover=1
memcache.max_failover_attempts=100
memcache.chunk_size=32768
memcache.default_port=11211


- Apache 재시작

[root@yongbok ~]# /usr/local/apache2/bin/apachectl restart


- PHP 에 Memcached 가 적용 되어 있는지 확인

[root@yongbok ~]# echo '<?php phpinfo(); ?>' > /var/www/phpinfo.php





참고
http://www.ibm.com/developerworks/kr/library/os-php-fastapps3/

[세션을 메모리캐싱을 사용할 경우 주의 사항 ]
memcache를 사용하는 중 세션 정보가 유지되지 않아 그것을 해결하는데
많은 시간을 소비하였습니다. 저의 경우 모델자체를 세션에 저장하였었는데 그것의 데이터가 많아지면 저절로 기존 데이터가 사라지는 것이었습니다. 그래서 필요한 데이터만 저장하니까 그러한 문제는 발생되지 않았습니다

memcached + Session Database
- memcached의 원래 목적이 데이터베이스나 파일 데이터를 캐시하는 것임

- 세션 데이터를 데이터베이스로 만들어 넣고, session handler 부분에서 memcached를 호출하게 만들면 될 듯.

- 데이터베이스를 사용하는 안정성 + 세션 공유 문제 해결 + memcached에 의한 성능 향상까지 기대할 수 있지 않을까?

- 이 부분은, 좀더 생각해보면서, 방법을 찾아봐야 할 듯...
<- 곰곰히 생각해보니, 약간 부정적. 세션 데이터는 read보다는 update가 압도적으로 많음. 따라서, 캐시 효과는 작음.



Memcache & MySQL PHP Session Handler PHP code for session db + memcached
http://www.softwareprojects.com/resources/programming/t-php-sessionsave_handler-and-database-sessions-debu-1797.html
http://www.softwareprojects.com/resources/programming/t-memcached-for-php-sessions-1654.html


+ Recent posts