Windows server 2012 서버 관리자를 켜자.

대시보드에서 역할 및 기능 추가를 누르자.

 

 

역할 및 기능 추가 마법사 > 서버역할 탭으로 가자.

웹서버 노드에서 FTP 서버와 관리 도구를 설치하자.

 

 

다 설치했다면 대시보드 > 도구 > IIS 관리자를 켜자.

 

 

다음과 같이 네비게이션이 나타난다.

서버가 부모노드이고 그 밑에 사이트가 자식노드이다.

 

 

사이트 디렉토리를 누르자.

오른쪽 작업판에서 FTP 사이트 추가를 누르자.

 

 

사이트 이름과 디렉토리 경로를 지정하자.

 

 

IP주소와 포트를 설정한다.

SSL은 ftps를 사용하고 싶을 때 사용하자.

 

 

사용자의 접근권한을 설정하자.

 

 

FTP 사이트 완성. 

하지만 외부에서 접근할 수는 없을 것이다.

 

 

외부에서 접근가능하게 해보자.

대시보드 > 도구 > 고급 보안이 포함된 Windows 방화벽으로 들어가자.

 

 

인바운드 규칙으로 들어가 새 규칙을 만들자.

 

 

만들려는 규칙의 종류는 FTP 서버이다.

 

 

모든 규칙을 만들자.

 

 

모든 규칙에 대해 연결 허용한다. 

 

 


규칙을 변경했으면 서버를 재시작하자.

 

 

잘 되지 않으면 다음 커맨드로 ftp service를 재시작하자.

shell> net stop ftpsvc
shell> net start ftpsvc

 

Posted by 주말소프트
,

3TB는 fdisk로 파티셔닝 할 수 없다.  parted를 사용하자

sdb 가 새로 장착한 하드디스크라는 가정하에 설명한다.

삽질끝에 성공한걸 정리해 둔다.

 

1. 하드디스크가 올라와 있는지 확인해 본다

# fdisk -l /dev/sdb


2. parted 를 실행한다

# parted /dev/sdb


3. label 타입을 만든다.

(parted) mklabel gpt

Warning: The existing .... (실행하면 데이타를 모두 잃어버린다 확실하냐?)

Yes/No? yes



4. 사용할 단위설정

(parted) unit TB


5. 파티션을 만든다 (아래는 처음부터 끝까지 하나의 파티션으로 만드는 것)

(parted) mkpart primary 0.00TB 3.00TB  //primary, logical, extended 가 있다.


6. 만들어진걸 확인해본다

(parted) print

결과 확인


7. parted에서 빠져나온다

(parted) quit


8. sdb1 이 생겼는지 확인한다.

# fdisk -l


9. sdb1의 파일시스템을 ext4로 만든다 (자신의 리눅스 포멧에 따라... ext2, ext3...)

# mkfs.ext4 /dev/sdb1


10. 마운트할 디렉토리를 만든다

# mkdir /mnt/sdb1 //마운트할 디렉토리를 만든다

# mount -t ext4 /dev/sdb1 /mnt/sdb1 //마운트한다 (11번에서 자동으로 마운트되게 할것이므로 안해도 된다. 확인용)

# df -h //확인해본다


11. 자동 마운트를 위해 디스크의 uuid(장치의 유일한 식별id - 주의 : 다른곳에 꽂으면 또 바뀐다)를 확인한다

# ls -l /dev/disk/by-uuid

//출력결과 중 sdb1 의 uuid를 찾아 복사를 한다


12. fstab에 마운트를 걸어준다.

# sudo vi /etc/fstab

// vi 편집화면이 나타나면 맨 아래로 이동해 아래줄을 삽입한다

UUID=[복사해둔 uuid값] /mnt/sdb1 ext4 defaults 0 0


13. 재부팅해서 마운트 되었는지 확인해 본다

 

============================================================================

parted명령어로.. gpt 만들어 주고.. 포멧을 한번 해보세요~

2테라 이상 파티션
parted /dev/장치명
(parted) mklabel gpt 
(parted)print
(용량 확인)
 
(parted)mkpart
Partition type? [Primary]?  (name 이라고 나오면 입력 하지 않으면됨.)
File system type? [ext3]? ext3
Start? 0
End? (확인한 용량 입력 ex)10TB
(parted) print 확인
(parted)q
 
8테라 이상 포멧
mkfs.ext3 -m0 –F /dev/장치명
 
fdisk –l 로 정보 확인~~

Posted by 주말소프트
,

제어판에서 찾아보자는 마음으로 찾기 시작했다.


 

제어판을 키면, 저기 지구본 모양이랑 시계가 같이 있는 Clok, Language, And Region 이 있다.

그 아래에 바로 Add a language 가 존재하고, 누르고 들어가면 된다.




처음에 들어가면 English 밖에 언어가 존재하지 않는다. 그렇다면 그 언어 위에 존재하는 버튼인

Add a language 버튼을 누른다.




그럼 창이 이렇게 뜨는데, 각기 언어들이 다 존재하므로 K 까지 내려서 한국어를 클릭하면


조금만 기다리면 Download Language 라고 드면서 다운로드를 누르면 된다.





그런 후, 이렇게 라이브러리에 등록이 되면서 이제 다운로드와 인스톨이 시작된다.


도움이 많이 되었으면 한다.

Posted by 주말소프트
,

서버 운영하다보면 디스크 용량이 가득차는 경우가 있는데 어느 디렉토리에서 용량을 많이 사용하고 있는지 궁금할 때가 있다. 이 때 각 디렉토리별 용량을 확인하기 위해 필요한 명령어다.

du -h --max-depth=1

또는

du -sh *


옵션
-a : 디렉토리 이외의 파일에 대해서도 표시합니다.
-l : 링크를 포함해서 계산합니다.
-c : 모든 용량의 합을 표시합니다.
-k : 용량을 KB 단위로 표시합니다.
-m : 용량을 MB 단위로 표시합니다.
-s : 지정한 파일이나 디렉토리만의 합계를 표시합니다.
-S : 서브 디렉토리를 포함해서 계산합니다.

사용예
du -csh ./*
du -sh ./*
 
디렉토리별로 집계해서 용량순으로 표시하기
du -S | sort -n
 
지정한 디렉토리만 표시
du -h -s 디렉토리
 
지정한 디렉토리의 전체 표시
du -h -a 디렉토리
 
GB이상의 디렉토리를 표시
du -h | grep [0-9]G
 
100MB이상의 디렉토리를 표시
du -h | grep [0-9][0-9][0-9]M

'서버' 카테고리의 다른 글

리눅스에서 3TB 하드디스크 사용하기  (0) 2015.01.05
Windows Server 2012 한국어 설치하기  (0) 2015.01.02
CentOS : 방화벽 설정(iptables)  (0) 2014.12.18
iptables 설정법  (0) 2014.12.18
iptables에서 state옵션  (0) 2014.12.18
Posted by 주말소프트
,

설정파일을 수정하기위해 에디터로 오픈
vi /etc/sysconfig/iptables

여러가지 설정들이 있음


# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
COMMIT
 


예외상황을 등록한다.
예제) 21번 포트로 접속가능

 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

설정에 맞게 수정하면 된다. 

수정후 서비스를 재실행시켜줘야 반영된다.
실행 명령어 : service iptables restart
실행하면 모두 "OK"가 떨어지면 반영이 된것이다.



===== iptables명령어를 이용한 방법 =====
출처 : http://blog.naver.com/choi05okk/90094234790

▶ iptables 사용법

-기본 모두 막고 시작하기-
# iptables -F
# iptables -X
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT DROP
-루프백 허용-
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A OUTPUT -o -lo -j ACCEPT

iptables [-t table] command [match] [target\jump]

 

-A(--append) : 규칙을 추가한다.

-N(--new-chain) : 새로운 체인 생성

-X(--delete-chain) : 체인 제거

-P(--policy) : 체인 기본정책 변경

-L(--list) : 체인의 규칙상태 보기

-F(--flush) : 체인내의 모든 규칙 제거(방화벽 초기화)

-Z(--zero) : 체인내의 모든 규칙의 패킷과 바이트의 카운트를 0으로 초기화

-D(--delete) : 규칙을 삭제

-R(--replace) : 새로운 규칙으로 대체

-I(--insert) : 체인의 가장 처음에 규칙을 추가한다.

-E(--rename-chain) : 체인의 이름을 변경한다.

 

 

2) iptables 체인 종류

INPUT : 로컬로 들어오는 패킷(입력 패킷)

FORWARD : INPUT와 OUTPUT 역할, 라우터에 방화벽을 적용할 때 쓰임

OUTPUT : 외부로 나가는 패킷(출력 패킷)

 

INPUT 체인에 사용자 정의로 체인을 추가하여 INPUT 체인 대신에 사용할 수 있는데, 페도라 코어의 경우는 RH-Firewall-1-INPUT라는 사용자 정의 체인을 사용한다. 3개의 기본 체인(INPUT, OUTPUT, FORWARD)은 수정이나 삭제가 불가능하며, 사용자 정의 체인은 다음과 같은 방법으로 생성해 줄 수 있다.

 

 

 

 

3) iptables 다루기

 

▶ 방화벽 정책 초기화

# iptables -F

# iptables -X

# iptables -Z

 

 

 

▶ 기본 정책 설정

 

# iptables -P INPUT DROP

# iptables -P OUTPUT DROP

# iptables -P FORWARD DROP

 

 

 

▶ 사용자 정의 체인 생성 및 INPUT 체인에 추가

 

# iptables -N 사용자정의체인명

# iptables -A INPUT -j 사용자정의체인명

 

 

 

▶ 허용 정책 설정

루프백 접속 허용

다른 곳과 네트워크가 연결되어 있지 않더라도 시스템의 기본 네트워크이며 로컬 호스트의 인터페이스인 루프백에 대해서는 접속이 이뤄질 수 있도록 해야 하므로, 다음과 같이 설정한다.

 

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

 

 

 

내부 네트워크 접속

 

iptables -A INPUT -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT

iptables -A OUTPUT -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT

 

 

 

내부 -> 외부 접속

 

iptables -A INPUT -s 외부주소 -p tcp -m tcp --sport 포트번호 -j ACCEPT

iptables -A OUTPUT -d 외부주소 -p tcp -m tcp --dport 포트 -j ACCEPT

 

 

 

① DNS 포트 허용

 

iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT

iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

 

 

② ICMP 핑 허용

 

iptables -A OUTPUT -o eth0 -p icmp --icmp-type echo-request -j ACCEPT

iptables -A INPUT -i eth0 -p icmp --icmp-type echo-reply -j ACCEPT

iptables -A OUTPUT -o eth0 -p icmp --icmp-type echo-reply -j ACCEPT

 

③ SSH 포트 허용 ( 192.168.0.1 -> 172.16.1.20)

iptables -A INPUT -s 172.16.1.20 -p tcp -m tcp --sport 22 -j ACCEPT

iptables -A OUTPUT -d 172.16.1.20 -p tcp -m tcp --dport 22 -j ACCEPT

 

④ HTTP 포트 허용

 

iptables -A INPUT -i eth0 -p tcp -m tcp --sport 80 --dport 1024:65535 -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 80 -j ACCEPT

 

⑤ FTP 포트 허용

* 명령(제어) 포트(tcp 21) 접속

 

iptables -A INPUT -i eth0 -p tcp -m tcp --sport 21 --dport 1024:65535 -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 21 -j ACCEPT

 

*데이터 포트(tcp20) 접속(능동 모드 접속)

 

iptables -A INPUT -i eth0 -p tcp -m tcp --sport 21 --dport 1024:65535 -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 21 -j ACCEPT

 

*데이터 포트(tcp 1024이상의 포트) (Passive 모드 접속)

 

iptables -A INPUT -i eth0 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT

 

 

 

외부 -> 내부 접속

① SSH 포트 허용

 

iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT

 

② http 포트 허용

 

iptables -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT

iptables -A OUTPUT -o eth0 0p tcp -m tcp --sport 80 -j ACCEPT

 

③ ftp 포트 허용 ( passive mode)

 

iptables -A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 21 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp -m tcp --dport 1024:65535 -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 -j ACCEPT

 

 

 

예제 :

- 중국발 해킹을 통하여 웹서버를 공격하고 있다는 사실을 알았다.
찾아낸 IP는 10.10.1.1 ~ 10.10.1.255, 10.10.2.3, 10.10.3.5 와 같으며 접근통제정책을 통하여

위의 IP에 대하여 web 접속을 거부하라. 단, 10.10.1.33 IP는 web 접속을 허락하여야 한다.

/sbin/iptables -A INPUT -s 10.10.1.33 -p tcp --dport 80 -j ACCEPT

/sbin/iptables -A INPUT -s 10.10.1.1/10.10.1.255 -p tcp --dport 80 -j DROP

/sbin/iptables -A INPUT -s 10.10.2.3 -p tcp --dport 80 -j DROP

/sbin/iptables -A INPUT -s 10.10.3.5 -p tcp --dport 80 -j DROP

 

/sbin/iptables -A INPUT -s 202.190.123.68 -p tcp --dport 21 -j DROP

 

/sbin/iptables -A INPUT -s 118.217.12.35 -p tcp --dport 1:65535 -j DROP

- PING 명령어는 서버 내부에서는 사용가능해야 하며, 192.168.1.13, 192.168.1.11 IP를 제외하고는
모두 거부하라.

 

/sbin/iptables -A INPUT -s 192.168.1.13 -p icmp --icmp-type echo-request -j ACCEPT

/sbin/iptables -A INPUT -s 192.168.1.11 -p icmp --icmp-type echo-request -j ACCEPT

/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

 

- 110포트와 143포트는 localhost와 192.168.1.13, 192.168.1.11 에서는 허용하고
외부에서는 차단하라.

 

/sbin/iptables -A INPUT -s 192.168.1.13 -p tcp --dport 110 -j ACCEPT

/sbin/iptables -A INPUT -s 192.168.1.11 -p tcp --dport 110 -j ACCEPT

/sbin/iptables -A INPUT -p tcp -m tcp --dport 110 -j DROP

 

/sbin/iptables -A INPUT -p tcp -m tcp --dport 110 -j DROP

 

/sbin/iptables -A INPUT -s 192.168.1.13 -p tcp --dport 143 -j ACCEPT

/sbin/iptables -A INPUT -s 192.168.1.11 -p tcp --dport 143 -j ACCEPT

/sbin/iptables -A INPUT -p tcp -m tcp --dport 143 -j DROP

 

- ssh와 ftp에 대해서는 iptables 를 통하여 문제 2번에 해당하는 정책을 사용하여 똑 같이 적용하라.

/sbin/iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT

/sbin/iptables -A INPUT -s 192.168.1.13 -p tcp --dport 22 -j ACCEPT

/sbin/iptables -A INPUT -s 192.168.1.11 -p tcp --dport 22 -j ACCEPT

/sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -j

Posted by 주말소프트
,

iptables 설정법

서버 2014. 12. 18. 15:13

요즘 CentOS 5.1을 가지고 서버를 구성하고 있는데 특히나 걸리는 부분이 방화벽 설정이었다.CentOS에서는 iptables로 방화벽을 설정하는데, CentOS 5 부터 iptables의 설정에서 약간의 변경사항들이 있어서 예전부터 CentOS를 사용하지 않았던 사람들이 헷갈리는 경우가 있다. (본인을 포함해서...) iptables의 설정과 적용에 관해서는 인터넷을 검색해보면 아주 잘 나와있다. 따라서 여기서 설명하는 것은 CentOS 5.1에서 iptables의 설정파일이 어디에 있으며, 설정내용들이 무엇인지, iptables를 적용하는 방법에 관해서 예를 들어 설명하고자 한다.

먼저, iptables의 설정파일이 위치한 곳은 '/etc/sysconfig/iptables'라는 파일이다. 내용은 대충 아래와 같다.

# Generated by iptables-save v1.3.5 on Fri Mar 14 10:42:34 2008
*filter
:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [448:53618]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT


-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Mar 14 10:42:34 2008


 

각각의 세부설정 옵션에 관해서는 인터넷을 검색하면되고, 가장 위쪽에 위치한


 

':INPUT ACCEPT [0:0]' 의 뜻은 서버로 들어오는 기본정책으로 '모두 받아들인다'이다. 그 아래 세줄도 모두 비슷한 뜻이다.
':RH-Firewall-1-INPUT - [0:0]' 부분은 이곳에서 설정하고자 하는 정책들을 적용하겠다는 문구이다.
'-A INPUT -j RH-Firewall-1-INPUT' 이 부분이 INPUT에 관한 처리를 RH-Firewall-1-INPUT에 설정된 것을 사용한다는 것이다.
'-A FORWARD -j RH-Firewall-1-INPUT' 이 부분도 위와 비슷하게 FORWARD되는 정책의 설정을 나타낸다.

그 다음에 나오는 두줄이 설정에서 주의할 부분으로 인터페이스로 들어오는 부분에 대한 설정 사항이다.

-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -j ACCEPT

처음줄이 의미하는 것은 localhost에서 생성되는 포트들에 관한 설정 사항으로 모두 ACCEPT하게 설정되어 있다. 만일 이 부분이 없다면 localhost내에서 포트를 생성하여 내부에서 메시지가 교환되는 형태의 프로그램에서 이상이 발생할 수도 있다. 설정을 ACCEPT가 아니라 DROP으로 설정한다면 메시지의 교환이 이루어지지 않게 된다. 이런 상태에서는 데이터베이스서버와 응용프로그램과의 연결이 포트로 이루어 진다면 서로간의 메시지교환은 이루어지지 않게 된다.

두번째줄이 외부와 서버와의 연결을 의미하는데 'eth0'를 통하여 들어오는 연결에 관한 설정으로 여기서는 모두 받아 들여지게된다. 따라서 이 설정대로라면 외부와 서버와는 아무런 방화벽이 작동하지 않는 것과 같은 상태가 된다. 왜냐하면 서버와 클라이언트의 모든 연결이 네트워크카드를 통해 이루어지기 때문이다. 하지만 이 설정을 DROP으로 만들면 않된다. DROP으로 만들어 적용을 하게되면 적용됨과 동시에 서버와의 모든 연결은 끊어지게 되고, 원격에서(ssh를 포함해서)의 연결도 종료되고, 서버와 직접연결된 터미널에서만 서버를 제어할 수 있기때문이다.

나머지 아래의 부분들은 http, ftp등등에 관한 연결설정을 나타낸다. 인터넷에서 찾아보면 내용을 알 수 있다.
다른 것은 아마도 iptables라는 명령어가 앞에 생략된 것 뿐일 것이다.

-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

위 설정 아래의 부분은 생략하지 않고 남겨 둔다.

" -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT " 이 부분은 현재 연결이 되어 있는 포트에 관해서는 연결을 유지한다는 뜻이다. 따라서 원격으로 접속하고 있었다 하더라도 연결이 끊어지는 것을 막을 수 있다. 그럼 위와 같이 기본설정으로 된 것을 바꾸어 보도록 하자.

정책은 다음과 같다.
" INPUT과 FORWARD에 관해서는 기본적으로 사용하지 않는 포트들은 모두 막는다. 내가 만든 채팅서버에서 사용하는 3333번포트는 열어 둔다."

사항들을 적용해 보면 아래와 같다.

# Generated by iptables-save v1.3.5 on Fri Mar 14 10:42:34 2008
*filter
:INPUT DROP [0:0]   <- 이 부분을 DROP으로 바꾼다.
:FORWARD DROP [0:0] <- 이 부분을 DROP으로 바꾼다.
:OUTPUT ACCEPT [448:53618]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT
# -A RH-Firewall-1-INPUT -i eth0 -j ACCEPT <- 이 부분을 주석처리한다.
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT <- ssh용
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT <- http용
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT <-ftp용
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3333 -j ACCEPT <- 채팅서버가 사용하는 포트
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Mar 14 10:42:34 2008


 

위와 같이 설정을 하고 "/etc/init.d/iptables restart" 스크립트명령을 실행하면 적용이 된다.
위에서 " # -A RH-Firewall-1-INPUT -i eth0 -j ACCEPT  " 부분을 주석처리하는 것을 주의하기 바란다. 이 부분을 그냥 놔두면 이 부분의 아래에 설정된 사항들은 모두 무시되고 모든연결이 이루어 진다.

그리고 적용을 하기 전에 서버에서 서비스할 데몬들이 어떤 것들이 있는지 확인하고, 서비스되어야 할 포트들은 모두 열어주는 설정을 포함 시켜야 한다. 위에서는 20번포트가 빠져있지만 필요하다면 설정해야 하고, 만일 DNS서버를 운영중이라면 tcp, udp의 53번포트를 열어주는 설정도 추가되어야 할 것이다.

[출처] CentOS 5 에서 iptables 설정법|작성자 코코스

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

iptables
  패킷검사방법
    1.패킷이 커널에 도착하면 패킷의 목적지를 확인한다.
    2.목적지가 이곳이면 패킷은 전달되 입력체인에 도달한다.
       입력체인을 통과하게되면 기다리던 프로세스가 받게 된다.
    3.통과하지 않으면 DROP된다.
      ACCEPT하게 되면 포워딩 할 네트워크로 보내진다.


사용법
   iptables -[command] chain rule [option]
 
   #command
       -A (--append) 규칙추가
       -D (--delete)   규칙삭제
       -C (--check)   패킷테스트
       -R(--replace)  규칙교체
       -I(--insert)      규칙삽입
       -L(--list)         출력
       -F(--flush)      방출
       -Z(--zero)      패킷과 바이트카운트값을 0으로
       -N(--new)      새로운 체인생성
       -P(--policy)    기본정책변경

   #chain
       INPUT        입력
       OUTPUT     출력
       FORWARD  전달
   #option

      -s(--source)        패킷의 발산지
      -p(--protocol)      프로토콜
      -d(--destination)  도착지
      -i(--inerface)       인터패이스
      -j(--jump)            어떻게 처리할것인가
      -y(--syn)             syn허용안함
      -f(--fragment)      두번째 이후조각에 대해서 규칙명시

Posted by 주말소프트
,

iptables에서 state옵션

서버 2014. 12. 18. 11:11

가장 유용한 적용 기준은 'ip_conntrack' 모듈의 접속 추적 분석을 해석하는 'state' 확장이다. 이것을 강력히 추천한다.

'-m state'를 지정함으로 '--state' 옵션을 사용할 수 있는데 이후에 콤마로 분리되는 적용할 상태들의 리스트가 온다.('!' 지시자는 사용되어지지 않는 다.) 이 상태들은 ;

NEW

새로운 접속을 만드는 패킷

ESTABLISHED

존재하는 접속에 속하는 패킷 (즉, 응답 패킷을 가졌던 것)

RELATED

기존의 접속의 부분은 아니지만 연관성을 가진 패킷으로 . ICMP 에러 나 (FTP 모듈이 삽입 되어있으면) ftp 데이터 접속을 형성하는 패킷.

INVALID

어떤 이유로 확인할 수 없는 패킷: 알려진 접속과 부합하지 않는 ICMP 에러와 'out of memory' 등을 포함한다. 보통 이런 패킷은 DROP 된다.

'서버' 카테고리의 다른 글

CentOS : 방화벽 설정(iptables)  (0) 2014.12.18
iptables 설정법  (0) 2014.12.18
이메일 발송포트(25번) 차단 시행 안내  (0) 2014.12.14
sendmail TCP 587번 포트 사용하기  (0) 2014.12.14
virtusertable (가상 사용자 설정 )  (0) 2014.12.02
Posted by 주말소프트
,
안녕하십니까?
한국인터넷진흥원(KISA) 입니다.

나날이 증가하는 이메일 스팸을 감축하기 위하여,
방송통신위원회와 한국인터넷진흥원은 악성코드에 감염된
일반 이용자의 PC에서 발송되는 스팸을 차단하기 위하여
ISP/MSO의 네트워크에서 이메일 발송포트인 25번를 사용제한하고
587번 포트를 대체하여 사용하는 정책(초고속인터넷가입자 대상 이메일 발송포트 사용제한, block25)을
추진하고 있습니다.

동 정책은 '10년 12월부터 주요 ISP/MSO 사업자를 대상으로

초고속인터넷가입자(유동IP대역)를 대상으로 이메일 발송포트인 25번을 차단하게 되며,
스팸 메일 이외의 정상 이용자의 이메일도 발송이 차단되므로 정상 이용자의
이메일 프로그램과 서버 관리자가 운영하는 메일서버를 대상으로 설정 변경이필요합니다.

첨부. 메일서버관리자 설정변경 매뉴얼(4종)

보다 자세한 정책 설명과 설정변경 매뉴얼은 홈페이지(www.block25.or.kr)을 통해 확인할 수 있습니다.

감사합니다.

 

'서버' 카테고리의 다른 글

iptables 설정법  (0) 2014.12.18
iptables에서 state옵션  (0) 2014.12.18
sendmail TCP 587번 포트 사용하기  (0) 2014.12.14
virtusertable (가상 사용자 설정 )  (0) 2014.12.02
서버이전시 네임서버 변경  (0) 2014.10.02
Posted by 주말소프트
,

#설치환경

- CentOS 5.8 x86 (64bit)



1. 587번 포트 사용 이유
- 정부의 스팸메일 근절 정책에 따라 유동IP에서는 25번 포트를 제한하고 있습니다.

   따라서 유동IP를 사용하고 있다면 기존의 25번 포트 대신 587번 포트를 이용해서 메일을 보내야 합니다.



2. 587번 포트 열기

- /etc/mail/sendmail.mc 파일에서 아래 부분과 같이 수정합니다. 약 123번째 라인에 위치하고 있습니다.

[root@localhost /root]# vim /etc/mail/sendmail.mc
[root@localhost /root]#

111 dnl #
112 dnl # The following causes sendmail to only listen on the IPv4 loopback address
113 dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
114 dnl # address restriction to accept email from the internet or intranet.
115 dnl
#
116 DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
117 dnl #

118 dnl # The following causes sendmail to additionally listen to port 587 for
119 dnl # mail from MUAs that authenticate. Roaming users who can't reach their
120 dnl # preferred sendmail daemon due to port 25 being blocked or redirected find
121 dnl # this useful.
122 dnl #

123 DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl <--- 주석 해제!
124 dnl #
125 dnl # The following causes sendmail to additionally listen to port 465, but
126 dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed
127 dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can't
128 dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS
129 dnl # and doesn't support the deprecated smtps; Evolution <1.1.1 uses smtps
130 dnl # when SSL is enabled-- STARTTLS support is available in version 1.1.1.
131 dnl #
132 dnl # For this to work your OpenSSL certificates must be configured




4. sendmail.cf 파일에 변경사항 적용

[root@localhost /etc/mail]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf



5. sendmail 재시작

[root@localhost /etc/mail]# /etc/rc.d/init.d/sendmail restart
sm-client를  종료 중:                                             [  OK  ]

sendmail 를 종료 중:                                             [  OK  ]

sendmail (을)를 시작합니다:                                   [  OK  ]
sm-client를 시작합니다:                                         [  OK  ]

[root@localhost /etc/mail]# 
[root@localhost /root]# netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
tcp        0      0 0.0.0.0:993                 0.0.0.0:*                   LISTEN      364/dovecot        
tcp        0      0 0.0.0.0:995                 0.0.0.0:*                   LISTEN      364/dovecot        
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN      11173/sendmail     
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      364/dovecot        
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      364/dovecot        
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      7377/httpd         
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1766/vsftpd        
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1730/sshd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      11173/sendmail 
[root@localhost /etc/mail]#

Posted by 주말소프트
,

글쓴이 : 윤 일(admin@rootman.org)

HOW-TO Configuration virtusertable

약속 : 이 강좌에 사용된 "1차 목적지"는 발신자가 메일을 보낼 때 사용한 받는 사람의 메일 주소를 의미하고 "최종 목적지"는 메일이 최종적으로 배달될 목적지를 의미한다.

virtusertable은 여러개의 도메인이 운영중인 호스팅 서버에서 아주 유용하게 사용할 수 있는 가상 유저 설정과 메일 포워딩에 관한 설정파일이다. 시스템에 여러개의 도메인이 운영중이고 각각의 도메인별로 메일 서비스를 하고 있다면 꼭 이 강좌를 읽어 봐야 될 것이다.

virtusertable 파일과 /etc/aliases 파일과의 차이점은 뭔가요?
사용자간의 메일 포워딩에 대한 설정과 가상 메일 유저 설정은 /etc/aliases 파일로도 가능하지만 /etc/aliases 파일의 "1차 목적지" 설정은 메일 아이디에 대해서만 설정할 수 있기 때문에 들어오는 메일의 도메인까지 인식을 해서 메일을 포워딩 해야 될 경우에는 virtusertable을 사용해야 되는 것이다. 하나의 도메인만 운영하고 있다면 메일 포워딩과 가상 메일 유저등의 설정은 /etc/aliases 파일을 수정해서 사용하는 것이 편리할 것이다.

virtusertable 파일의 설정 형식은 다음과 같이 아주 간단하다.
[1차 목적지]   [최종 목적지]

[1차 목적지]에 설정할 수 있는 것들
1. /etc/passwd 파일에 존재하는 실제 시스템 사용자명
2. /etc/passwd에 등록되어 있지 않은 가상 유저
3. 가상 유저 또는 실제 시스템 유저명을 포함한 완벽한 mail 주소(admin@rootman.org, virtuser@dvc.dongeui.ac.kr)

[최종 목적지] 설정할 수 있는 것들
1. /etc/passwd 파일에 존재하는 실제 시스템 사용자명
2. 메일이 포워딩 될 외부 메일 주소(il-yoon@hanmail.net, yunil@dreamwiz.com)

그럼 지금부터 설정 예를 보면서 어떻게 설정이 이루어 지는지, 또 virusertable이 어떠한 경우에 사용되는지 살펴보자
[root@rootman mail]# cat virtusertable   --> rootman.org라는 하나의 도메인이 운영중일 때
admin                rootman
yunil                rootman
network              purmae
wonjae               purmae


위의 설정중에 처음 두줄이 의미하는 것은 수신자가 admin@rootman.org와 yunil@rootman.org로 되어 있는 메일은 모두 계정 사용자 rootman의 메일 박스로 포워딩됨을 의미하다. 그 다음 두줄도 마찬가지로 수신자가 network@rootman.org와 purmae@rootman.org로 되어 있는 메일은 모두 계정 사용자 purmae의 메일 박스로 포워딩 된다.
그런데 만약 하나의 서버에 rootman.org와 dongeui.ac.kr이라는 두개의 도메인이 운영되고 있을 때는 약간 황당한 경우가 생기게 된다. 계정 사용자 rootman은 rootman.org와 관련이 있는 사용자고 purmae는 dongeui.ac.kr과 관련이 있는 사용자라고할 때 계정 사용자 rootman은 당연히 admin@rootman.org와 yunil@rootman.org라는 메일 주소를 사용할 것이고 계정 사용자 purmae는 network@dongeui.ac.kr과 wonjae@dongeui.ac.kr이라는 메일 주소를 사용할 것이다. 하지만 rootman은 원하지도 않는 admin@dongeui.ac.kr과 yunil@dongeui.ac.kr를 사용해도 메일은 모두 rootman의 메일 박스로 포워딩 되게 된다. 위의 설정은 메일 아이디로만 설정해 놓았기 때문에 @(at)뒤의 호스트 네임 즉 도메인까지는 신경을 쓰지 않기 때문이다.

이러한 문제는 하나의 도메인만 운영하거나 여러개의 도메인을 운영하더라도 중복되는 메일 아이디를 설정할 일이 없는 시스템에서는 별 문제가 안 되겠지만 여러개의 도메인이 운영되고 있는 시스템에서 같은 메일 아이디를 도메인별로 제공해야 될때 문제가 될 수 있다. 예를 들면 호스팅 서버에서 각 도메인별로 admin@domain.com이라는 메일 아이디를 해당 사용자에게 부여해야 될때가 있을 것이다. 이러한 문제를 해결하기 위해 virtusertable에서는 [1차 목적지] 설정에 완전한 메일 주소 즉 호스트까지 표기를 해서 설정을 할 수 있게 되어 있다.
virtusertable의 이러한 기능 때문에 메일 주소의 @(at)뒤의 도메인만 다르다면 같은 메일 아이디를 여러 사용자에게 설정할 수 있을 것이다. 바로 이것이 virtusertable의 핵심 기능이다. 다시 설정예를 보고 이해하도록 하자
[root@rootman mail]# cat virtusertable
admin@rootman.org                rootman
admin@dongeui.ac.kr              purmae


위의 설정이 뭘 의미하는 지는 이제 입 아프게 얘기 안해도 알 것이라고 믿지만 다시 한번더 잔소리를..
수신자가 admin@rootman.org로 된 메일은 rootman의 메일 박스로 admin@dongeui.ac.kr로 오는 메일은 purmae의 메일 박스로 포워딩 되게 설정한 것이다.

이제 마지막으로 [최종 목적지]를 시스템 내부의 사용자가 아니라 외부의 smtp 즉 한메일등으로 포워딩 시키는 설정을 잠깐 살펴보자.
[root@rootman mail]# cat virtusertable
yunil                            yunil@dreamwiz.com
purmae                           purmae@thrunet.com
admin@rootman.org                yunil@dreamwiz.com


너무 쉽죠! 그냥 [최종 목적지]에 메일 주소만 적어 주면 됩니다.

[정말 중요] virtusertable 파일을 수정후 반드시 makemap 명령을 해 줘야 된다. sendmail을 restart시킬 필요는 없다.
[root@rootman mail]# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

'서버' 카테고리의 다른 글

이메일 발송포트(25번) 차단 시행 안내  (0) 2014.12.14
sendmail TCP 587번 포트 사용하기  (0) 2014.12.14
서버이전시 네임서버 변경  (0) 2014.10.02
Oracle VirtuaBox 포트 포워딩  (0) 2014.01.12
VirtuaBox 포트 포워딩  (0) 2014.01.12
Posted by 주말소프트
,