'OPS/LInux'에 해당되는 글 16건

  1. 2015.04.26 LVM
  2. 2015.04.26 NIS
  3. 2015.04.26 NFS
  4. 2015.04.26 openVPN
  5. 2015.04.26 squid
  6. 2015.04.21 Iptables
2015. 4. 26. 01:01

LVM


용어

PV : 물리적 파티션을 뜻함 LVM을 할려 면 장치(/dev/sda)를 PV로 바꿔 줘야함 예를 들면 /dev/sda1을 pv형태로 바꾸면 /dev/sda1이 PV임

VG : PV를 묶은 것 그러니 LVM은 파티션 여러 개를 붙여 쓰는것 이니 PV를 여러 개 묶어 VG로 구성해서 사용

LV : VG의 파티션 그러니 VG가 sda라면 LV는 sda1임

그러니 정리하면 PV가 모여 VG를 이루고 VG는 LV란 파티션을 가짐

명령어 형식

pvcreate <장치명>// 장치를 PV로 만듬

vgcreate <VG그룹이름> <PV> <PV>// PV와 PV를 이용해 VG를 생성

lvcreate -L <g단위용량> <VG그룹이름> -n <만들 LV이름>

-> 용량을 정해 VG의 파티션인 LV를 생성

실습 : sdb1 5G와 sdc1 5G를 통해 debi_vg 라는 VG 10G를 구성 하고, 2gdivi_lv라는 2g LV를 구성한다.

# fdisk /dev/sdb// sdb1을 lvm 형태로 생성 과정

Command (m for help): n

Command action

eextended

pprimary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-30401, default 1): 1

Last cylinder or +size or +sizeM or +sizeK (1-30401, default 30401): +5120M

Command (m for help): t

Hex code (type L to list codes): 8e

Command (m for help): w

# fdisk /dev/sdc// sdc1을 lvm 형태로 생성 과정

Command (m for help): n

Command action

eextended

pprimary partiton (1-4)

p

Partiton number (1-4): 1

First cylinder (1-30401, default 1): 1

Last cylinder or +size or +sizeM or +sizeK (1-30401, default 30401): +5120M

Command (m for help): t

Hex code (type L to list codes): 8e

Command (m for help): w

# pvcreate /dev/sdb1// /dev/sdb1을 PV로 만들어줌

Physical volume "/dev/sdb1: successfully created// 이렇게 뜬다면 성공

# pvcreate /dev/sdc1// /dev/sdc1을 PV로 만들어줌

Physical volume "/dev/sdb1: successfully created

※ PV를 삭제시 pvremove 장치명(/dev/sdb1)을 입력하고 PV를 볼려면 pvdisplay를 입력

# vgcreate debi_vg /dev/sdb1 /dev/sdc1

-> /dev/sdb1과 /dev/sdc1이란 PV를 이용해 debi_vg라는 VG를 형성

Volume group "debi_vg" successfully created// 이렇게 뜬다면 성공

※ VG를 삭제시 vgremove VG이름(debi_vg)을 입력하고 VG를 볼려면 vgdisplay를 입력

# lvcreate -L 2g debi_vg -n 2gdebi_lv// debi_vg에서 2G를 할당해 2gdevi_lv를 생성

Logical volume "2gdebi_lv" created

※ LV를 삭제시 lvremove LV경로(/dev/debi_vg/2gdebi_lv)를 입력하고 LV를 볼려면 lvdisplay를 입력

이제 나눈 LVM을 쓰기위해 포맷하고 마운트 한다면

# mkfs -t ext3 /dev/debi_vg/2gdebi_lv

# mount /dev/debi_vg/2gdebi_lv /mnt

옵션

VG를 만들 때 -s 옵션을 쓰면 PE크기를 정할 수 있음 기본 값은 4M

VG를 확장 시킬 때 # vgreduce <VG그룹> <더할 PV>

ex) # vgreduce debi_vg /dev/sdc2

VG를 축소 시킬 때 # vgreduce <VG그룹> <뺄 PV>

ex) # vgreduce debi_vg /dev/sdc2

LV이름을 바꿀 때 # lvrename <기존이름> <바꿀이름>

ex) # lvrename /dev/debi_vg/2gdebi_lv /dev/debi_vg/reallv

LV를 확상 시킬 때 # lvextend -L <추가용량> <LV이름>

ex) # lvextend -L +2g /dev/debi_vg/2gdebi_lv

LV를 축소 시킬 때 # lvreduce -L <뺄 용량> <LV이름>

ex) # lvreduce -L -1g /dev/debi_vg/2gdebi_lv

파일 이용해 복구

# vgchange -a n debi_vg # vgcfgrestore -f /etc/lvm/backup/debi_vg.conf.1.old -n debi_vg # vgchange -a y debi_vg 

'OPS > LInux' 카테고리의 다른 글

raid  (0) 2015.04.26
quota  (0) 2015.04.26
NIS  (0) 2015.04.26
NFS  (0) 2015.04.26
openVPN  (0) 2015.04.26
Posted by 배주혁
2015. 4. 26. 00:59

NIS(YP)


- NIS란

NIS는 Network Information Service의 약자이며 YP(Yellow Page)라고도 불린다. RPC(Remote Procedure Call)환경에서 같은 NIS도메인에 속해 있는 호스트들끼리 네트워크자원(호스트명, 사용자계정, 패스워드, 그룹등)을 공유하여 서로 같은 시스템 환경을 제공하는 것이 목적이다.

NIS Master서버는 NIS데이터베이스의 마스터맵을 가지고 있고 이를 업데이트하고 유지하고, 이 정보를 NIS Slave Server에게 제공한다. 또 NIS Client에게 NIS서비스를 제공한다.

NIS Slave서버는 NIS Master서버로부터 NIS데이터베이스를 제공받아 같은 복사본을 보관하고 있는 서버로서 NIS Client에게 서비스를 제공한다.

NIS Client는 Master서버와 Slave서버에게 NIS정보를 제공 받는다. 이때 제공받는 Master나 Slave서버를 가리지 않으며 가장 빠른 응답이 있는 서버의 정보를 이용한다.

- NIS master와 NIS client 구성

· NIS Master Server설정

#vim/etc/hostname

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

master.skill.com

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

# vim /etc/defaultdomain// NIS에쓸 도메인을 적음

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

skill.com

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

※ defaultdomain파일은 컴퓨터 시작시 nis도메인을 설정해주는 파일이다. 지금 당장 바꾸고 싶다면 nisdomainname명령어를 이용

# vim /etc/hosts// 보통 NIS는 dns를 안 쓰므로 hosts파일 편집

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

172.16.0.1master.skill.com master

172.16.0.2client.skill.comclient

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

※ IPFQDNhost 형식으로 적어줌

# vim /etc/default/nis

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

...

NISSERVER=master// false로 되있는것을 master로 변경해줌

...

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

# /usr/lib/yp/ypinit -m// NIS master서버로 설정

next host to add: master.skill.com// 컨트롤+D를 눌러 빠저나옴

Is this correct? [y/n]y// y를 누름

# make -C /var/yp// 새로고침

# /etc/init.d/nis restart// nis 재시작

· NIS Client 설정

# vim /etc/hostname

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

client.skill.com

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

# vim /etc/hosts

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

172.16.0.1master.skill.com master

172.16.0.2client.skill.com client

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

# vim /etc/defaultdomain

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

skill.com

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

# vim /etc/passwd

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

...생략

+::::::// 제일 밑에 이 부분 추가

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

# vim /etc/group

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

...생략

+:::// 제일 밑에 이 부분 추가

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

# vim /etc/shadow

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

...생략

+::::::::// 제일 밑에 이 부분 추가

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

# /etc/init.d/nis restart

# ypcat passwd// 명령 입력 시 마스터서버에 있는 유저가 보여야함(일반유저만)

# exit

client.skill.com login: // 서버에서 추가해준 유저로 로그인해서 로그인 되면 성공

- NIS master와 NIS slave, NIS client 구성

· NIS Master 설정

#vim/etc/hostname

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

master.skill.com

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

# vim /etc/defaultdomain// NIS에쓸 도메인을 적음

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

skill.com

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

※ defaultdomain파일은 컴퓨터 시작시 nis도메인을 설정해주는 파일이다. 지금 당장 바꾸고 싶다면 nisdomainname명령어를 이용

# vim /etc/hosts// 보통 NIS는 dns를 안 쓰므로 hosts파일 편집

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

172.16.0.1master.skill.com master

172.16.0.2slave.skill.comslave

172.16.0.3client.skill.comclient

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

※ IPFQDNhost 형식으로 적어줌

# vim /etc/default/nis

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

...

NISSERVER=master// false로 되있는것을 master로 변경해줌

...

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

# /usr/lib/yp/ypinit -m// NIS master서버로 설정

next host to add: master.skill.com// 컨트롤+D를 눌러 빠저나옴

Is this correct? [y/n]y// y를 누름

# /etc/init.d/nis restart// nis 재시작

# make -C /var/yp// 새로고침

· NIS Slave 서버 설정

# vim /etc/hostname

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

slave.skill.com

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

# vim /etc/defaultdomain// NIS에쓸 도메인을 적음

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

skill.com

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

※ defaultdomain파일은 컴퓨터 시작시 nis도메인을 설정해주는 파일이다. 지금 당장 바꾸고 싶다면 nisdomainname명령어를 이용

# vim /etc/hosts// 보통 NIS는 dns를 안 쓰므로 hosts파일 편집

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

172.16.0.1master.skill.com master

172.16.0.2slave.skill.comslave

172.16.0.3client.skill.comclient

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

※ IPFQDNhost 형식으로 적어줌

# vim /etc/default/nis

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

...

NISSERVER=slave// false로 되있는것을 slave로 변경해줌

...

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

# /usr/lib/yp/ypinit -s master.skill.com// 이 서버를 slave 설정하고 master.skill.com

에서 데이터를 받아옴

# /etc/init.d/nis restart

※ slave 서버 선택사항

passwd파일과 shadow파일, group파일 맨 마지막줄에 +::::(+클론) 이것을 붙여주면 slave서버 에서도 로그인을 할 수 있고 붙여주지 않는 다면 로그인을 할 수 없음 다만 client에게 정보를 제공하는 것은 마스터 서버와 같음. 그러니 쉽게 말하자만 slave서버로 작동 시킨 이상 client에게 정보를 제공하는것은 master서버와 똑같이 작동하고 있고, slave서버에서도 로그인을 가능하게 하려면 client처럼 passwd파일 group파일등에 맨마지막줄에 +:::(+ 클론)을 붙여 주어야함

· NIS Client 설정

# vim /etc/hostname

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

client.skill.com

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

# vim /etc/hosts

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

172.16.0.1master.skill.com master

172.16.0.2slave.skill.comslave

172.16.0.3client.skill.com client

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

# vim /etc/defaultdomain

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

skill.com

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

# vim /etc/passwd

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

...생략

+::::::// 제일 밑에 이 부분 추가

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

# vim /etc/group

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

...생략

+:::// 제일 밑에 이 부분 추가

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

# vim /etc/shadow

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

...생략

+::::::::// 제일 밑에 이 부분 추가

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

# /etc/init.d/nis restart

# ypcat passwd// 명령 입력 시 마스터서버에 있는 유저가 보여야함(일반유저만)

# exit

client.skill.com login: // 서버에서 추가해준 유저로 로그인해서 로그인 되면 성공

만약 NIS를 hosts파일이 아닌 DNS를 이용하여 하고 싶다면 그냥 hosts파일에 적어 둔 것을 지우고 네임서버 구축 뒤 resolv.conf파일에 네임서버 명시해주고 zone파일에 host를 hosts파일에서 매핑 해준 것처럼 존파일에도 해준 뒤 그냥 NIS재시작 하면 됨

- 기타 명령어

ypcat: ypcat <맵파일> 하면 정보를 확인 할 수 있다.(ex. # ypcat passwd)

ypmatch: ypmatch <검색대상> <맵파일>하면 맵파일 정보에서 <검색대상>만 검색한다.

(ex # ypmatch kim passwd = passwd 파일에서 kim을 검색)

ypwhich: NIS의 서버이름을 출력한다.

ypwhich -m: NIS 와 관련된 맵파일들을 보여준다.

'OPS > LInux' 카테고리의 다른 글

quota  (0) 2015.04.26
LVM  (0) 2015.04.26
NFS  (0) 2015.04.26
openVPN  (0) 2015.04.26
squid  (0) 2015.04.26
Posted by 배주혁
2015. 4. 26. 00:58

NFS

NFS는 Network File System이라고 하여 파일시스템을 network을 통하여 서로 다른 컴퓨터끼리 공유 할수 있도록 해주는 서비스 이다.

- 서버에서 설정

# vim /etc/exports// 서버에서 공유설정하는 파일을 염

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

<서버의 공유해줄 파일경로><클라이언트IP>(옵션들)

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

# /etc/init.d/nfs-kernel-server restart// 서비스 재시작

- 클라이언트에서 설정

# mount <서버IP(혹은도메인)>:<서버가 공유하는 파일경로> <자신서버의 파일경로>

- 클라이언트에 부팅 시 nfs연결하려면

# vim /etc/fstab

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

<서버아이피>:<서버가 공유하는 파일경로><자신서버의 파일경로> nfs defaults 0 0

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

ex)

192.168.0.1의 /test와 192.168.0.2의 /share을 공유하려할 때

- 192.168.0.1이 서버인 경우

# vim /etc/exports

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

/test192.168.0.2(rw,sync)

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

# /etc/init.d/nfs-kernel-server restart

- 192.168.0.2의 클라이언트의 설정

# mount 192.168.0.1:/test /share

- 클라이언트에 부팅시 자동연결되게 하기

# vim /etc/fstab

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

192.168.0.1:/test/sharenfsdefaults0 0

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

- /etc/fstab에서 옵션 값들

- no_root_squash:서버와 클라이언트 모두가 root권한을 가짐

- rw:읽기 쓰기 가능, - sync:실시간 동기화, - ro:읽기만 가능

- no_subtree_check:하위트리검사안하기(속도향상)

'OPS > LInux' 카테고리의 다른 글

LVM  (0) 2015.04.26
NIS  (0) 2015.04.26
openVPN  (0) 2015.04.26
squid  (0) 2015.04.26
Iptables  (0) 2015.04.21
Posted by 배주혁
2015. 4. 26. 00:50

openVPN

openVPN은 리눅스에서 쓸수있는 open source VPN 프로그램중 하나이다.

-서버 설정

# cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn

# vim /etc/openvpn/easy-rsa/2.0/vars// 인증서나 키를 만들때 그냥 엔터처도 값이 나오게 하려고

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

...

export KEY_COUNTRY="KR"// 국가

export KEY_PROVINCE="KB"// 지방

export KEY_CITY="GUMI"// 도시

export KEY_ORG="KOTHS"// 기관명

export KEY_EMAIL="web@skill.com"// 메일 주소

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

# cd /etc/openvpn/easy-rsa/2.0

/etc/openvpn/easy-rsa/2.0# . ./vars

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys

/etc/openvpn/easy-rsa/2.0# ./clean-all

/etc/openvpn/easy-rsa/2.0# ./build-ca// 개인키(ca.key)와 공개인증서(ca.crt) 생성 과정

->계속 엔터 입력하다가 common이 나오면 server를 적어줌

/etc/openvpn/easy-rsa/2.0# ./build-key-server server// 서버 키(server.key), 서버인증서

(server.crt)생성 과정

->계속 엔터 입력 하다가 common이 나오면 server을 입력 그리고 y/n선택이 나오면 y를 입력

/etc/openvpn/easy-rsa/2.0# ./build-key client1// 클라이언트 키 생성

->계속 엔터 입력 하다가 common이 나오면 client1을 입력 그리고 y/n선택이 나오면 y를 입력

/etc/openvpn/easy-rsa/2.0# ./build-dh

# mkdir /client

# cd /etc/openvpn

/etc/openvpn# cp easy-rsa/2.0/keys/server.* .

/etc/openvpn# cp easy-rsa/2.0/keys/ca.crt .

/etc/openvpn# cp easy-rsa/2.0/keys/dh1024.pem .

/etc/openvpn# cp easy-rsa/2.0/keys/client.* /client

/etc/openvpn# cp easy-rsa/2.0/keys/ca.crt /client

-> 클라이언트 디렉토리에 옴긴것은 클라이언트(컴퓨터)에 옴겨 줘야함(인증해야 하기 때문에)

# gunzip /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz

# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn

# vim /etc/openvpn/server.conf

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

port 1194// vpn 포트 설정

proto udp// 프로토콜 설정(tcp로 하려면 udp에 주석 뒤 tcp에 주석제거), 권장 값:UDP

dev tun// 클라이언트와 통신할 가상 인터페이스 지정(tun과 tap이 있음)

ca ca.crt// 인증서 이름 입력

cert server.crt// 서버 인증서 이름 입력

key server.key// private key 이름 입력

dh dh1024.pem// Diffie Hellman 이름 입력

ifconfig 10.10.1.1// 서버 아이피 설정 tap어댑터 방식은 10.10.1.1 255.255.0.0이고 tun방식은 10.10.1.1 10.10.1.2다

server 10.8.0.0 255.255.0.0// 서버모드로 운영, 사설망으로 10.8.0.0/16 네트워크 사용

ifconfig-pool-persist ipp.txt// 고정 아이피를 해줄 목록

push "dhcp-option DNS 10.8.0.1"// 클라이언트의 dns주소를 10.8.0.1로 설정

client-to-client// vpn 클라이언트끼리 통신 가능하게 설정

keepalive 10 120// 10초마다 ping을 해서 120초 동안 응답불가시 원격지가 다운 된걸로 판단

comp-lzo// 압축 알고리즘을 사용(서버가 사용 시 클라이언트도 사용해야함)

persist-key//

persist-tun//

status openvpn-status.log// 로그파일 설정

verb 3// 로그 레벨 설정

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

※ 딱히 수정할것은 없고 아이피나 파일등 자신에 입맛에 맞게 맞춰주면 된다.

# /etc/init.d/openvpn restart

- 클라이언트 설정

·클라이언트에 openvpn을 설치한다.

·아까 서버에 client폴더에 담긴 파일들을 "시작"-"모든 프로그램"-"openvpn"-"openvpn configuration file directory"를 클릭하여 그곳에 옴겨 놓는다.

·“시작”-"모든 프로그램"-"openvpn"-"openvpn sample configuration Files"를 클릭하여 client.ovpn(client)파일을 "시작"-"모든 프로그램"-"openvpn"-"openvpn configuration file directory"에 옴겨놓는다.

·client.ovpn(client)파일을 열어 remote 어쩌고저쩌고 되있는 부분을 remote <서버IP> <포트>로 적어준다. (예 remote 192.168.0.1 1194)

TAP 은 이더넷 디바이스(2계층)로 작동하고, TUN (TUNnel)은 IP계층(3계층) 디바이스로 작동한다.

TAP 은 네트워크 브리지를 생성하는데 사용할 수 있고, TUN 은 라우팅에 사용할 수 있다.

'OPS > LInux' 카테고리의 다른 글

LVM  (0) 2015.04.26
NIS  (0) 2015.04.26
NFS  (0) 2015.04.26
squid  (0) 2015.04.26
Iptables  (0) 2015.04.21
Posted by 배주혁
2015. 4. 26. 00:45

squid

squid는 프락시 서비스중 하나이다. 프락시 서버는 사용자와 인터넷 사이에 있는 서버인데, 자신이 어떤 사이트에 접속하려 하면 프록시 서버를 거치게 되며 그 사이트는 프록시 서버가 접속하게 되고, 받아온 정보를 프록시는 사용자에 전달 한다. 그러니 중간에서 중계를 한다. 인터넷 사용을 기록하고, 특정 사이트를 차단한다던지 데이터 캐싱을 이용하여 내부사용자의 빠른 인터넷 속도를 제공하는 역할로 쓰인다. 한번 접속한 사이트를 자신의 캐시에 저장해 놓음으써 다시 그 사이트를 접속하지 않아도 되므로 인터넷 속도가 향상된다.

# vim /etc/squid/squid.conf

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

cache_mem 8 MB// 프록시서버 캐쉬메모리 크기

maximum_object_size_in_memory 8 KB

-> 캐시파일중 8KB가 넘는 파일은 저장하지 않음

http_port 3128// 포트 설정

cache_dir ufs /var/spool/squid 100 16 256

-> /var/spool/squid를 캐쉬 디렉토리로 지정 최대 용량을 100MB로 지정 1차 하위 디렉토리 개수를 16개로 지정 2차 하위디렉토리를 개수를 256개로 지정

visible_hostname proxy// 프록시서버 호스트 네임

access_log /var...// 엑세스한 클라이언트의 로그

cache_log /var/log...// 캐시 로깅파일

cache_store_log /var...// 캐시의 활동사항(지워진거, 저장되어있던 시간)의 로그파일

log_ip_on_direct on// 다이렉트로 나가는 데이터들에 대한 목적지IP주소를 기록 off 로 하면 호스트 네임으로 저장

pid_filename /var/run..// 프록시서버데몬의 PID를 기록할 파일 지정, 사용안할시 none

cache_dns_program /u...// 프록시서버가 사용할 dns서버 정보를 기록하고 있는 파일

dns_timeout 2 minutes// DNS쿼리 시간을 지정, 지정 값 동안 응답이 없으면 timeout

hosts_file /etc/hosts// 로컬 호스트네임서비스를 위한 호스트 파일지정

cache_mgr webmaster// 관리자 Email계정

cache_effective_user p..// squid 데몬을 실행할 유저

cache_effective_group ..// squid 데몬을 실행할 그룹

http_access deny all

-> 엑세스리스트에 정의되어 있는 설정들의 요청을 거부 할것인가 deny all은 모두 거부 한다는 뜻 이고 allow all은 모두 허용한다는 뜻이며 allow kim_network는 kim_network를 허용 한다는 뜻. 여기서 allow 뒤에 오는 kim_network같은 것은 acl kim_network src 192.168.0.0/255.255.255.0 여기서 쓰이는 kim_network이다.

그리고 http_access지시문을 사용할 때 앞에 있는것을 우선시 한다.

error_directory /usr/share/squid/errors/English

-> 에러 메시지를 어떤 언어로 보여줄지, 한국어로 바꾸려면 마지막을 Korean으로 변경

acl kim_network src 192.168.0.0/255.255.255.0

-> 192.168.0.0/255.255.255.0 네트워크를 kim_network로 정의

acl [목록이름] src [IP주소]가 형식이며 IP주소가 출발지인 것을 목록이름으로 지정

acl bad_do dst 172.16.0.0/8

-> 172.168.0.0/8 네트워크를 bad_do로 정의

acl [목록이름] dst [IP주소]가 형식이며 IP주소가 목적지인 것을 목록이름으로 지정

acl bad_domain dstdomain www.game.com

-> www.game.com으로 접속하는 것을 bad_domain으로 정의

acl pport port 21

-> 21번 포트에 대한 접근을 pport로 정의

acl [목록이름] port [포트번호]가 형식이며 포트번호에 대한 접근을 목록이름으로 지정

acl actime time 11:00-13:00

-> 11:00시부터 13:00까지의 시간을 actime으로 정의

acl [목록이름] time [hh:mm-hh:mm]

acl acdayti time MTWH 11:00-13:00

-> 월화수목 11:00시 부터13:00까지의 시간을 acdayti로 정의

acl [목록이름] time [SMTWHFA(날짜)] [hh:mm-hh:mm(시간)]

S=sunday,M=monday,T=tuesday,W=wednesday,H=thursday,F=friday,A=saturday

acl gam url_regex ^http://www.game

-> http:/www.game으로 시작하는 URL의 접속을 정의 ^가 붙으면 URL의 맨 앞을 뜻함

acl ya url_regex 19.com

-> 19.com가 들어가는 URL의 접속을 정의 아무것도 붙지 않으면 URL중 들어있는 문자

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


- 인증

·사용자 파일을 만든 인증

# vim /etc/squid/squid.conf

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

...

auth_param digest program ......

-> auth_param digest program /usr/lib/squid/digest_pw_auth /etc/squid/squid.passwd로 변경하고 주석을 풀어줌

auth_param digest children 5

.

.

auth_param digest nonce_max_count 50

acl digest proxy_auth REQUIRED

http_access allow digest

http_access deny all

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

auth_param digest program부터 auth_parm digest nonce_max_count 50까지 주석을 풀어준다. 이 부분에서 auth_param digest program만 auth_param digest program /usr/lib/squid/digest_pw_auth /etc/squid/squid.passwd로 변경해 준다.

인증 창에 뜨는 메시지를 변경 시는 auth_param digest realm뒤에 나오는 문구를 수정

# vim /etc/squid/squid.passwd

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

lee:skills

kim:skills

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

squid.passwd파일에 인증에 사용할 사용자를 입력 형식은 <사용자이름>:<패스워드>

·리눅스 유저를 이용한 인증

# vim /etc/squid/squid.conf

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

.

.

uth_param basic program....

-> auth_param basic program /usr/lib/squid/pam_auth로 변경하고 주석을 품

.

.

auth_param basic casesensitive off

acl user proxy_auth REQUIRED

http_access allow user

http_access deny all

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

uth_param basic program부터 uth_param basic casesensitive off까지 주석을 풀어 주고 uth_param basic program을 auth_param basic program /usr/lib/squid/pam_auth로 변경 해 주고, 주석을 풀어준 모든 행 앞부분에 uth를 모두 auth로 변경해 주어야한다. 인증 창에 뜨는 문구를 변경 해고 싶다면 auth_param basic realm뒤에 있는 문자를 변경해준다.


- 실습

·game URL이 들어간 사이트 차단

# vim /etc/squid/squid.conf

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

.

.

acl gam url_regex game

http_access deny gam

http_access allow all

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

# /etc/init.d/squid restart

· stury URL이 들어간 사이트만 허용

# vim /etc/squid/squid.conf

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

.

.

acl good_site url_regex study

http_access allow study

http_access deny all

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

# /etc/init.d/squid restart

· 192.168.0.0/24 대역에서 접속하는 주소 거부(192.168.0.0/24가 출발지)

# vim /etc/squid/squid.conf

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

.

.

acl bad_add src 192.168.0.0/255.255.255.0

http_access deny bad_add

http_access allow all

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

· http://www.maple로 시작하는 URL과 http://maple로 시작하는 URL 막기

# vim /etc/squid/squid.conf

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

.

.

acl bad_maple url_regex ^http://www.maple

acl bad_maple url_regex ^http://maple

http_access deny bad_maple

http_access allow all

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

· 10:00부터 11:30까지는 모든 접속을 막기

# vim /etc/squid/squid.conf

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

.

.

acl timm time 10:00-11:30

http_access deny timm

http_access allow all

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

· 09:00~18:00까지는 막지만 단 12:00부터 13:00까지는 허용하기

# vim /etc/squid/squid.conf

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

.

.

acl work_time time 09:00-18:00

acl rice_time time 12:00-13:00

http_access allow rice_time

http_access deny work_time

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

· www.apache.com으로의 접속 막기

# vim /etc/squid/squid.conf

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

.

.

acl bad_domain dstdomain www.apache.com

http_access deny bad_domain

http_access allow all

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

· 목요일만 접속 막기

# vim /etc/squid/squid.conf

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

.

.

acl mok time H

http_access deny mok

http_access allow all

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

· 투명 프록시

# vim /etc/squid/squid.conf

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

http_port 3128 transparent

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

프록시 서버와 웹서버가 같다면

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

# iptables -t nat -A PREROUTING -p udp --dport 80 -j REDIRECT --to-port 3128

웹서버가 122.20.1.97이고 프록시 서버가 122.20.1.122라면

# ipatbles -t nat -A PREROUTING -p tcp -d 122.20.1.97 --dport 80 -j DNAT --to 122.20.1.122:3128

'OPS > LInux' 카테고리의 다른 글

LVM  (0) 2015.04.26
NIS  (0) 2015.04.26
NFS  (0) 2015.04.26
openVPN  (0) 2015.04.26
Iptables  (0) 2015.04.21
Posted by 배주혁
2015. 4. 21. 14:13
Iptables


정의

리눅스 서버의 방화벽은 패킷 필터링 규칙을 통해 설정되는데 이 패킷 필터링은 커널에 탑재된 netfilter 기능으로 한다. netfilter가 어떠한 작동을 하게끔 룰을 세워줘야 하는데 그것을 해주는 것이 iptables이다.

예를들면 이렇다. 54.1.1.0/24 네트워크가 서버로 들어오면 차단 되는 시나리오가 있다. 이때 54.1.1.0/24 네트워크가 서버로 들어오면 차단이라는 룰을 세우는건 iptables가 하고, 패킷 차단을 시키는것은 netfilter가 하게 되는것이다.


기본체인

  종류

    INPUT chain :

외부로 부터 자신에게 접근 하는 것에 대한 설정. 즉 목적지 주소가 자신일때 이다.

    FORWARD chain :

외부로 부터 접속하는건 같으나 자신을 거쳐 가는 것에 대한 설정. 목적지 주소는 자신이 아니며, 보통 게이트웨이 역할을 할때 이다.

    OUTPUT chain :

자신의 나가는 패킷에 대한 설정. 출발지 주소가 자신일때 이다.


  규칙

-L : 규칙 리스트보기

-F : 규칙 초기화

-D : 규칙 삭제

-s : 출발지 주소지정

-d : 목적지 주소지정

-p : 프로토콜지정

-j : 패킷 정책 지정

-i : IN 인터페이스 지정

-o : OUT 인터페이스 지정

-t : table 지정

--dport : 목적지 포트지정

--sport : 출발지 포트지정


예제

  초기화

모든패킷 초기화 

# iptables -F

    INPUT

서버로 오는 패킷 모든 패킷 차단

# iptables -A INPUT -j DROP


서버로 오는 웹 접속요청만 차단

# iptables -A INPUT -p tcp --dport 80 -j DROP

# iptables -A INPUT -j ACCEPT


172.168.0.1 PC만 빼고 모든 접속 허용

# iptables -A INPUT -s ! 172.168.0.1 -j ACCEPT

# iptables -A INPUT -j DROP


172.168.0.0/24 네트워크의 ICMP 요청패킷만 막기

# iptables -A INPUT -s 172.168.0.0/24 -p icmp --icmp-type 8 -j DROP

# iptables -A INPUT -j ACCEPT


172.168.0.0/24 네트워크의 tcp 요청패킷만 막기

# iptables -A INPUT -s 172.168.0.0/24 -p tcp --syn -j DROP

# iptables -A INPUT -j ACCEPT


    FORWARD

ip_forward를 1로 변경후 작업


PC1에서 PC2로 가는 웹접속만 허용

# iptables -A FORWARD -p tcp --dport 80 -s 54.16.0.10  -d 192.168.0.10 -j ACCEPT

# iptables -A FORWARD -s 54.16.0.10 -d 192.168.0.10 -j DROP


192.168.0.0/24 네트워크로 가는 tcp 요청 패킷 막기

# iptables -A FORWARD -p tcp --syn -d 192.168.0.0/24 -j DROP

# iptables -A FORWARD -j ACCEPT


192.168.0.0/24 네트워크에서 다른 네트워크대역의 웹서버 접근 막기

# iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/24 -j DROP

# iptables -A FORWARD -j ACCEPT


    POSTROUTING

192.168.0.0/24 네트워크의 발신지 주소 변경

# iptables -t nat -A POSTROUTRING -s 192.168.0.0/24 -o eth1 -j SNAT --to 54.10.1.1


    PREROUTING

54.10.1.1:80으로 접속 해올시 패킷을 192.168.0.10:80으로 재전송

#iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.10:80

    

'OPS > LInux' 카테고리의 다른 글

LVM  (0) 2015.04.26
NIS  (0) 2015.04.26
NFS  (0) 2015.04.26
openVPN  (0) 2015.04.26
squid  (0) 2015.04.26
Posted by 배주혁
이전버튼 1 2 이전버튼