반응형

우분투 방화벽의 대표적인 예인 iptables의 포트 차단 및 허용에 대해 간략히 글을 쓰겠다.

 

1. 그냥 모든 포트 다막는 방법

 - TCP 로 1번부터 65526번 포트까지 다 막는 방법이다. 만약 UDP도 막고싶다면, 

    tcp 대신 udp를 넣으면 됨.

 sudo iptables -A INPUT -p tcp --dport 1:65526 -j DROP

 

2. 특정 포트만 열어주는 방법

 - 22 자리는 포트번호 자리이다.

 sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -I OUTPUT -p tcp --sport 22 -j ACCEPT

 

3. 특정 아이피에게 특정 포트만 열어주는 방법

 - tcp 프로토콜로 22번 포트를 열어주는데 그 대상이 222.222.222.222 아이피 임.

iptables -I INPUT -p tcp --dport 22 -s 222.222.222.222 -j ACCEPTiptables -I OUTUT -p tcp --dport 22 -d 222.222.222.222 -j ACCEPT

 

4. 8080번으로 들어오는 포트를 80 번으로 바꾸기

 sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

5. iptables정보를 저장하고 재부팅 이후에도 동작하도록 설정함.

sudo sh -c "iptables-save > /backup/iptables.rules" 

sudo vi /etc/network/interfaces
pre-up iptables-restore < /backup/iptables.rules   <= vi 로 열어서 맨 마지막에 추가함.

 

반응형
반응형

오늘 이시간에는 cron 데몬을 이용한 스케쥴러 관리에 대해서 알아보도록 하자.

 

우선 Daemon의 정의가 무엇인지를 아는것이 이해의 첫번째 코스인것 같다.

 

[1] Daemon이란?

정의 : OS에서 백그라운드로 구동되고있는 프로세스 를 데몬이라고 부른다.

백그라운드에서 구동중인 데몬의 종류는 여러가지가 있지만, 대표적으로 스케쥴러 관리에 사용되는 데몬이 바로 cron데몬이다.

 

[2] Cron 데몬 설정방법

(1) 일반 User레벨에서의 Daemon 설정방법

- 유닉스계통의 시스템을 처음 Install 하고 나면 User레벨의 Cron은 별도 설정을 해주어야만 등록 가능하다. 등록하는 위치는 아래 경로와 같다.

 

/etc/cron.allow (Cron 사용가능하도록 유저를 등록한다.) 

/etc/cron.deny (Cron 데몬 사용 불가능하도록 유저를 등록한다.)

 

우선 /etc/cron.allow 파일을 새로 만들어서 등록 하도록 하자. 만약 이미 해당파일이 존재한다면 vi 에디터로 수정만 하면 될것이다.

 

 #vim /etc/cron.allow

 

ex ) 아래 예제처럼 엔터값을 넣으면서 입력하면된다.

 

 ==>요렇게 등록하면 된다. 이경우 ddong, dochi 두개의 계정에서 cron 등록 가능하다.

 

(2) Cron 데몬을 하기 위해 Shell Script를 작성하도록 한다. (아래 예제는 7일 단위로 DB를 백업하는 예제이다.)

 

(Shell Script 파일명 : db_cron_backup.sh)

 #! /bin/bash

DATE=`date +%Y%m%d%H%M%S`
HOME="/home/cron/log"
FILENAME="$HOME/BACKUP_SQL_$DATE.sql"

mysqldump -u root -proot1234 dbname > $FILENAME

DEL_TIME=`date --date '7 days ago' +%Y%m%d`
DEL_OBJ_FILE="$HOME/BACKUP_SQL_$DEL_TIME"

rm -rf $DEL_OBJ_FILE*

echo "********************************** AMT DB BACKUP *************************************"
echo "** TIME : $DATE                                                            **"
echo "** FILENAME : $FILENAME   **"
echo "** DELETE FILES : `ls $DEL_OBJ_FILE*`             **"
echo "**************************************************************************************"

 

위의 파일을 이제 Cron 데몬에 등록하도록 하자.

 

(3) Crontab 을 이용한 Cron 데몬 설치

 

(crontab 명령어 기술) 

 Crontab 명령어

설        명 

 #crontab -l

 현재 선택된 cron 데몬의 내용을 보여준다. 

 #crontab -e

 cron 데몬을 등록,수정 할 수 있다. 

 #crontab -r

 cron 데몬을 삭제 할 수 있다. 

 

(crontab 스케쥴러 등록 작성법)

입력 필드 

필드 의미 

범 위 

 1

분 

  0~59 

 2

  0~23

 3

  0~31 

 4

월 

  1~12

 5

요일

  0~7(1=월,2=화,...7=일,0=일) 

 6

실행 명령어

  쉘스크립트 실행명령어를 기록한다.

 

위 쉘 스크립트 의 경우 아래와 같이 등록하도록 한다.

 

(조건)

매일 24시 00분 00초에 실행되도록 한다.

 

(crontab -e 를 실행하여 작성한다)

# 10초단위로 실행된다.
0 0 * * * /home/cron/db_cron_backup.sh >> /home/cron/log/cron_db_backup.log

 

이렇게 하면  끝난다. 다음번에 기회가 생길때 시스템 관리자 관점의 root계정에서의 시스템 크론에 대해서 알아보도록 하자.

 

                                                                                                     - 2012.07.30 랑이씀 -

반응형
반응형

CentOS 에서는 Install을 하는경우 자동적으로 Iptables 방화벽이 설치되는 것 같다.

 

그럼 우선 설치다하고 나서 WAS , MYSQL 등등의 Setting 후 외부에서 접속하는 방법에 대해서 알아보자.

 

[1] 방화벽 설정파일은 어디있는가?

아래 경로를 보면 방화벽 설정파일을 열어볼 수가 있다.

 # vim /etc/sysconfig/iptables

 

[2] 설정파일을 대충 파악하자.

# 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 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

 

(노랑색) 위 설정을 보면 22번 sshd port가 현재 열려있는것을 확인가능하다.

(파랑색) 또한 22번 이외의 다른 것들은 모두 막아라 라는 코드가 있다.

 

그럼 3306,21,80 포트를 를 추가하여 보자.

-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 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 

 

위 처럼 포트를 추가하고 저장한다음 잘 추가되었는지 보도록 하자.

 

단!! 주의사항은 위 파랑색으로 된 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

요코드드는 삭제한 후에 해야 한다 그럼 다음과 같이 되겠죠?

 

 

 # 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 22 -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 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

COMMIT

 

자 , 이제 iptables가 잘 적용이 되었는지 확인해 보도록 하자.

 

 

[root@localhost sysconfig]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:mysql
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http

[root@localhost sysconfig]# 

 

위 보는바와 같이 적용이 잘 되었다. 이제 데몬을 재시작 하도록 하자.

 

 # /etc/init.d/iptables restart

 

 

다시 이제 방화벽을 적용해야 한다, 아까 위에서 빼버린 코드를 넣고 다시금 재시작 하도록 한다.

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited 코드 추가함

 

최종 적으로 , 다시 iptables -L 명령어를 통해 보도록 하자.

 

 

[root@localhost sysconfig]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:mysql
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

 

위 코드에서 보듯이 다시금 reject를 통해서 방화벽이 추가된 것을 확인할 수 있따.

 

이상이 IPTABLES의 PORT를 여는 방법에 대해서 서술 하였다.

 

 

                                                                            - 2012.07.02 랑이씀 -

 

반응형
반응형
가끔 정전이 되거나, 하는 경우 서버는 잠시 죽어버린다.

IDC센터의 경우는 그럴일이 없겠지만, 개인 서버의 경우는 그런경우가 많다. 이럴때

타임서버와 Sync가 깨지게 되는데 이를 바로잡는 법을 알아보도록 하자.

(1) rdate데몬
 - rdate데몬은 타입서버에 접속하여 시간을 받아와 현재 서버와 Sync를 맞추어 주는 Daemon이다.

(2) 실제 사용법

1) 현재 서버의 시간을 알아보도록 하자.
xxxxx@javaserver-server:~$ date
2011. 10. 10. (월) 23:18:34 KST
xxxxx
@javaserver-server:~$

2) Time server의 시간을 알아보도록 하자.
xxxxx@javaserver-server:~$ sudo rdate time.bora.net
Mon Oct 10 23:19:32 KST 2011
xxxxx
@javaserver-server:~$
- 시간이 별로 차이가 나지 않는다. ㅋㅋㅋ 실제 실습을 위한거라서 그렇다.  그럼 이제 동기화를 해보도록 하자.

3) 서버 동기화
xxxxx@javaserver-server:~$ sudo rdate -s time.bora.net

ㅋㅋㅋ 저렇게 하면 끝난다. date명령을 이용하여 서버시간괴 실제 동기화가 되었는지 확인해보길 바람.

근데 아직 이해안가는게 있다.

$ man rdate
요놈을 보니 -s 옵션은 Do not print the time. 요문구가 있는데 실제 -s가 없어도 되는것인가? 아...
다시한번 요건 공부해야겠음.

아 확인해 보니 ...ㅋㅋㅋ

$ rdate time.bora.net만 해도 Sync는 됨 . -s 옵션은 걍 시간을 보여주지 않을뿐임.ㅋㅋㅋㅋ

                                               - 2011.10.10 랑이씀 -


반응형

'Server > Linux' 카테고리의 다른 글

Cron을 이용한 스케쥴러 관리  (0) 2012.07.30
CentOS Iptables 방화벽 포트 OPEN하기  (2) 2012.07.02
[ 리눅스 Encoding 변경 ]  (0) 2011.07.12
Tomcat WAS server.xml 셋팅방법  (0) 2011.05.17
[ VIM 창 분할하기 ]  (2) 2011.02.23

+ Recent posts