우분투 apt로 설치 시에 apt-key를 설정하고 설치해야 하는 경우가 생겼다.

바로 mono인데 문제는 방화벽이 다 막혀있고 proxy로 연결이 가능한 상태인데....


sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80

위 명령을 사용하는데 hkp://keyserver.ubuntu.com:80이 연결이 안된다.

80포트 조차 막혀있다니...


다행히 우회할 수 있는 방법이 프록시 서버가 있었다.

구글을 검색하다보니 

--keyserver-options http-proxy=http://localhost:3128 을 옵션을 이용하면 프록시 서버를 이용해 설치가 가능하단다. 


예제로 mono 설치 시 사용하는 apt-key 명령을 전체 남긴다.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --keyserver-options http-proxy=http://localhost:3128 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF 


블로그 이미지

레몬도리 LemonDory

개발자의 이야기

댓글을 달아 주세요

$ sudo vi /etc/apt/apt.conf


-파일이 없을 경우 새로 생성하자.

- 아래 내용을 추가 

- :wq로 저장 


Acquire::http::proxy "http://adress:port/";


$ sudo apt-get update

$ sudo apt-get upgrade


- 정상적으로 진행되는 것을 확인해 보자

블로그 이미지

레몬도리 LemonDory

개발자의 이야기

댓글을 달아 주세요

출처 : http://blog.daum.net/hypermax/6


*먼저 내 업무에서는 iptables와 hosts.allow 파일을 함께 이용 한다.

1. 방화벽 내용 넣고 > 방화벽 실행 > 방화벽 내용 저장

#cd /etc/sysconfig/

#vi iptables

(iptables 내용)

#service iptables restart

#/etc/init.d/iptables save

 

--------------▶ 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 fedora -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 fedora -s 외부주소 -p tcp -m tcp --sport 포트번호 -j ACCEPT

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

 

 

① DNS 포트 허용

iptables -A fedora -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 fedora -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 fedora -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 fedora -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 fedora -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 fedora -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 fedora -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 fedora -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 fedora -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 fedora -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 fedora -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

 

개요

설치

솔라리스 10의 경우는 설치할 필요 없다. (이미 설치되어있다) 여기서는 솔라리스 9 이하를 기준으로 설명한 것이다.

·         설치

·         root@wl ~ # wget http://coombs.anu.edu.au/~avalon/ip_fil4.1.33.tar.gz
·         root@wl ~ # wget http://coombs.anu.edu.au/~avalon/pfil-2.1.13.tar.gz
·         root@wl ~ # tar xvfz ip_fil4.1.33.tar.gz
·         root@wl ~ # tar xvfz pfil-2.1.13.tar.gz
·         root@wl ~ # cd pfil
·         root@wl ~/pfil # /usr/ccs/bin/make SunOS32 1)
·         root@wl ~/pfil # /usr/ccs/bin/make package 1)
·         root@wl ~/pfil # pkgadd -d /tmp/pfil.pkg 2)
·         root@wl ~/pfil # ifconfig -a
·         lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
·                 inet 127.0.0.1 netmask ff000000
·         pcn0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
·                 inet 192.168.0.11 netmask ffffff00 broadcast 192.168.0.255
·                 ether 0:c:29:d4:e0:bd
·         root@wl ~/pfil # cat /etc/opt/pfil/iu.ap 3)
·                 pcn     -1      0       pfil
·         root@wl ~/pfil # cd ..
·         root@wl ~ # cd ip_fil4.1.33
·         root@wl ~/ip_fil4.1.33 # /usr/ccs/bin/make solaris
·         root@wl ~/ip_fil4.1.33 # cd SunOS5
·         root@wl ~/ip_fil4.1.33/SunOS5 # /usr/ccs/bin/make package 4)
·         root@wl ~/ip_fil4.1.33/SunOS5 # sync; sync; reboot 5)

1) 반드시 /usr/ccs/bin/make 를 사용한다. 만약 gnu make를 사용하고 있으면 컴파일이 되지 않는다. 64bit 솔라리스를 사용하고 있다면 32대신 64를 입력한다.
2) 자동으로 설치되는 것이 아니라 패키지파일이 생성된다. 패키지 파일은 그냥 설치해주면 된다.
3) 패키지 파일을 인스톨 한 후 /etc/opt/pfil/iu.ap 파일을 확인한다. 시스템에 설치되어있는 NIC 종류별로 (lo제외) 한줄씩 /etc/opt/pfil/iu.ap에 등록되어있어야 한다. 같은 종류의 NIC가 두개 설치되어 있어도 한 종류이므로 한 줄만 들어가게 된다.
4) make package하면 자동으로 패키지가 생성되고 인스톨 된다. (SunOS5디렉토리에 ipf.pkg 파일이 생성된다) 바이너리는 /opt/ipf에, 설정파일은 /etc/opt/ipf에 있다.
5) pfil 을 설치한 후, 반드시 재시작해야 한다. (ipf 때문에 재시작하는 것이 아니다)

·         실행

재시작 하면 IPFilter 가 이미 실행되어있을 것이다. 아래는 제대로 설치되었는지 확인하기 위함이다.

root@wl ~ # /etc/init.d/ipfboot start 1)
Set 0 now inactive
filter sync'd
0 entries flushed from NAT table
0 entries flushed from NAT list
filter sync'd
root@wl ~ # ndd /dev/pfil qif_status 2)
ifname ill q OTHERQ ipmp num sap hl nr nw bad copy copyfail drop notip nodata notdata
QIF1 0x0 0xd40d2cf0 0xd40d2d74 0x0 1 806 0 3 14 0 0 0 0 0 0 0
pcn0 0xd3c49a9c 0xd4054180 0xd4054204 0x0 0 800 14 695 572 0 0 0 0 0 0 0
root@wl ~/pfil # strconf < /dev/pcn 2)
pfil
pcn
root@wl ~ #

1) 시작하기. /etc/rc2.d/S65ipfboot에 등록되어있다.
2) pfil장치와 이에 연결된 pcn 디바이스(시스템마다 다르다)에 IPFilter가 제대로 연결되어있는지 확인한다.

블로그 이미지

레몬도리 LemonDory

개발자의 이야기

댓글을 달아 주세요


방화벽을 끄고 켜고를 해보려고 했는데...
C#으로 해보려다 다음과 같은 에러로..


NotImplementedException으로 방화벽이 작동 중(켜져있는 상태)에서는 다음과 같은 에러가 발생한다.
신기하게도 꺼져있을 땐 실행 된다... 뭔미....
찾아보던 중에 커맨드 명령으로 가능한 것을 알아 냈고 흐흐...
netsh.exe을 사용하면 가능하다.
netsh.exe를 알아보자.
netsh.exe /?를 이용하면 도움말을 보자

 사용법: netsh.exe [-a 별칭 파일] [-c 컨텍스트] [-r 원격 컴퓨터] [-u [DomainName\]UserName] [-p 암호 | *]
              [명령 | -f 스크립트 파일]

다음 명령을 사용할 수 있습니다.

이 컨텍스트에 있는 명령:
?                   - 명령 목록을 표시합니다.
add               - 항목 목록에 구성 항목을 추가합니다.
advfirewall     - `netsh advfirewall' 컨텍스트의 변경 내용입니다.
bridge           - `netsh bridge' 컨텍스트의 변경 내용입니다.
delete            - 항목 목록에서 구성 항목을 삭제합니다.
dhcpclient      - `netsh dhcpclient' 컨텍스트의 변경 내용입니다.
dump            - 구성 스크립트를 표시합니다.
exec             - 스크립트 파일을 실행합니다.
firewall          - `netsh firewall' 컨텍스트의 변경 내용입니다.
help              - 명령 목록을 표시합니다.
http               - `netsh http' 컨텍스트의 변경 내용입니다.
interface        - `netsh interface' 컨텍스트의 변경 내용입니다.
ipsec            - `netsh ipsec' 컨텍스트의 변경 내용입니다.
lan                - `netsh lan' 컨텍스트의 변경 내용입니다.
nap               - `netsh nap' 컨텍스트의 변경 내용입니다.
netio             - `netsh netio' 컨텍스트의 변경 내용입니다.
p2p               - `netsh p2p' 컨텍스트의 변경 내용입니다.
ras               - `netsh ras' 컨텍스트의 변경 내용입니다.
rpc                - `netsh rpc' 컨텍스트의 변경 내용입니다.
set                - 구성 설정을 업데이트합니다.
show            - 정보를 표시합니다.
winhttp          - `netsh winhttp' 컨텍스트의 변경 내용입니다.
winsock        - `netsh winsock' 컨텍스트의 변경 내용입니다.
wlan             - `netsh wlan' 컨텍스트의 변경 내용입니다.

다음 하위 컨텍스트를 사용할 수 있습니다.
 advfirewall bridge dhcpclient firewall http interface ipsec lan nap netio p2p ras rpc winhttp winsock wlan

명령에 대한 도움말을 보려면
명령을 입력한 다음 공백을 입력한 후 ?을(를) 입력하십시오.

위와 같이 사용 할수 있다.
방화벽을 꺼보자.
아래와 같이 명령어를 실행 해보자
 C:\>netsh firewall set opmode mode=DISABLE

그럼 방화벽이 꺼지면서 방화벽이 꺼졌다는 상태바에 메시지가 뜰 것입니다.

 C:\>netsh firewall set opmode mode=ENABLE

위와 같이 한다면 켜지겠죠? ^^

다른 명령어는 사용 해봐야 할 것 같습니다.
블로그 이미지

레몬도리 LemonDory

개발자의 이야기

댓글을 달아 주세요