라우터를 리눅스 서버로 변경하여 iptables 설정
R4 라우터는 잠시 비켜놓고 리눅스 서버로 연결 

centos 시작 전 어뎁처 수에 맞게 네트워크 카드 하나 더 추가

[root@localhost ~]# yum install quagga
[root@localhost ~]# yum install telnet
> quagga랑 telnet 설치하려면 인터넷이 되야하므로 잠시 nat 로 변경 후 받기

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# vim ifcfg-eth0
> ip랑 netmask만 설정
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@localhost network-scripts]# vim ifcfg-eth1
> device 변경, ip랑 netmask만 설정
[root@localhost network-scripts]# service network restart
> 각자 인터페이스 설정 후 리스타트

라우팅할 수 있는 상태로 바꾸기
vim /etc/sysctl.conf 에서
# Controls IP packet forwarding
net.ipv4.ip_forward = 1 (0에서 1로 변경)
> 재부팅해도 1로 설정되어 있도록 함

[root@localhost network-scripts]# cd /etc/quagga
[root@localhost quagga]# ls
bgpd.conf.sample   ospf6d.conf.sample  ripd.conf.sample    vtysh.conf         zebra.conf
bgpd.conf.sample2  ospfd.conf.sample   ripngd.conf.sample  vtysh.conf.sample  zebra.conf.sample
[root@localhost quagga]# cp zebra.conf.sample zebra.conf
cp: overwrite `zebra.conf'? y
[root@localhost quagga]# cp ospfd.conf.sample ospfd.conf

[root@localhost quagga]# chkconfig --level 5 zebra on
[root@localhost quagga]# chkconfig --level 5 ospfd on

[root@localhost quagga]# netstat -antup | grep "zebra"
tcp        0      0 127.0.0.1:2601              0.0.0.0:*                   LISTEN      4841/zebra          
[root@localhost quagga]# netstat -antup | grep "ospfd"
tcp        0      0 127.0.0.1:2604              0.0.0.0:*                   LISTEN      4859/ospfd          
> telnet 접속하기 위해 port번호 확인

[root@localhost quagga]# telnet 127.0.0.1 2601
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.15).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password: 
Router> en
Password: 
Router# 

> 접속 완료

Router# conf t
Router(config)# int eth0 
Router(config-if)# ip add
Router(config-if)# ip address 
  A.B.C.D/M  IP address (e.g. 10.0.0.1/8)
Router(config-if)# ip address 34.0.0.2/24
Router(config-if)# exit
Router(config)# int eth1
Router(config-if)# ip add
Router(config-if)# ip address 192.168.0.254/24
Router(config-if)# exit
Router(config)# end

Router# wr me
Configuration saved to /etc/quagga/zebra.conf
> 저장 완료

ospf 설정

[root@localhost quagga]# telnet 127.0.0.1 2604
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.15).
Copyright 1996-2005 Kunihiro Ishiguro, et al.


User Access Verification

Password: 
ospfd> 
ospfd> 
ospfd> 
ospfd> en
ospfd# show run

ospfd# conf t
ospfd(config)# router ospf 
>프로세스아이디 없음 
ospfd(config-router)# network 
  A.B.C.D/M  OSPF network prefix
ospfd(config-router)# network 34.0.0.0/24 area 0   
ospfd(config-router)# passive-interface eth1
ospfd(config-router)# end
ospfd# wr me
Configuration saved to /etc/quagga/ospfd.conf
ospfd# 
> 설정 후 저장 완료
> 설정은 zebra로 가서 show ip route로 확인
ping 8.8.8.8 잘되나 확인

Cisco NAT
 Static NAT : 일대일 주소변환(사설 1 : 공인 1)
 Dynamic NAT : 다대다(사설 다 : 공인 다)
 NAT-PAT : 다대일(사설 다 : 공인 1)
* 내부망 DNS 서버의 Zone 레코드의 값이 사설 IP주소일때 Cisco NAT를 통과하면 DNS 레코드도 NAT 적용

iptables NAT (시스템 보안구축 141p 155p)
 SNAT(Source NAT) :  출발지 주소 변환
 DNAT(Destination NAT) : 목적지 주소 변환 (Static NAT 역할, 외부에서 내부 서버 접근)
 MASQUERADE(인터페이스 주소 변환, Port변환) : NAT-PAT 역할
 REDIRECT : 패킷의 Port 값을 다른 Port 값으로 변환
* 내부망 DNS 서버의 Zone 레코드의 값은 주소변환 X
 외부에서 DNS 질의를 위한 공인 IP로 구성된 Zone 필요

[root@localhost quagga]# chkconfig --level 5 iptables on

iptables start하고 -F로 전체 지워준다.

외부망인 eth0 에 서브 인터페이스 추가
[root@localhost quagga]# ifconfig eth0:100 34.0.0.100 netmask 255.255.255.0
> 그냥 명령어로 추가하면 리스타트했을때 지워짐


[root@localhost quagga]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:100
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:150
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:200
> 복사해주고 각 파일에 들어가서 ip변경해주고 리스타트!


[root@localhost network-scripts]# iptables -t nat -A PREROUTING -d 34.0.0.100 -j DNAT --to 192.168.0.100
[root@localhost network-scripts]# iptables -t nat -A PREROUTING -d 34.0.0.150 -j DNAT --to 192.168.0.150
[root@localhost network-scripts]# iptables -t nat -A PREROUTING -d 34.0.0.200 -j DNAT --to 192.168.0.200

[root@localhost network-scripts]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       all  --  0.0.0.0/0            34.0.0.100          to:192.168.0.100 
DNAT       all  --  0.0.0.0/0            34.0.0.150          to:192.168.0.150 
DNAT       all  --  0.0.0.0/0            34.0.0.200          to:192.168.0.200 

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@localhost network-scripts]# 


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


quagga에서 두 서비스 사용
/usr/sbin/zebra

/usr/sbin/ospfd

주소변환 정책에 의해 통신이 이뤄지면 테이블이 생성되서 그반대로 정책을 안줘도 응답을 보낼 수 있다.


사용자pc에서 dns 질의를 하면 nat 변환 주소가 아닌 사설주소로 질의가 된다.
그래서 dns로 사이트 접속하려해도 할수 없다. (사설아이피를 모르기때문)

DNS 서버
[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "pub-pt.com" IN {
        type master;
        file "pub-pt.com.zone";
};

> 공용으로 사용 할 pub-pt.com 추가하기

[root@localhost ~]# cd /var/named/

[root@localhost named]# cp pt.com.zone pub-pt.com.zone

파일 복사 후 소유권 바꿔주기

존파일 열어서 내용 수정하기 pub-pt.com 이랑 ip주소 

$TTL 1D
@       IN SOA  ns1.pub-pt.com. admin.pub-pt.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.pub-pt.com.
ns1     A       34.0.0.200
www     A       34.0.0.100
ftp     A       34.0.0.150


내부만에서만 dns 질의 허용하기
[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "pt.com" IN {
        type master;
        file "pt.com.zone";
        allow-query {192.168.0.0/24;}; << 허용하고 싶은 아이피주소 추가(ex. 관리자만 사용가능하도록)
};

> 저장후 외부에서 질의해보면 질의 안됨 내부망에서만 질의가 됨

연습
www.pub-pt.com 서버로 웹서비스 접속만 가능하도록 주소 변환 정책 추가
(기존 정책 삭제, filter table 정책 X)

풀이 
[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp -d 34.0.0.100 --dport 80 -j DNAT --to 192.168.0.100

MASQUERADE
> -s : 출발지주소
> -o : 아웃풋 인터페이스
[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp -d 34.0.0.100 --dport 80 -j DNAT --to 192.168.0.100

연습 2
MASQUERADE 정책 삭제 후 정책 다시 추가하여 192.168.0.0/24 대역의 모든 서버들은 외부와 통신 가능하도록 주소 변환 정책을 추가하시오

풀이 :
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

연습 3
FORWARD 체인의 기본정책을 DROP 변경
20.20.20.20에서 WEB서버로 WEB 서비스만 가능
20.20.20.20에서 FTP 서버로 SSH만 가능
20.20.20.20에서 DNS 서버로  DNS 서비스만 가능
(전부 핑은 불가능)

풀이 3 
[root@localhost ~]# iptables -P FORWARD DROP

WEB
[root@localhost ~]# iptables -A FORWARD -p tcp -s 20.20.20.20 -d 192.168.0.100 --dport 80 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -d 20.20.20.20 -s 192.168.0.100 --sport 80,443 -j ACCEPT

FTP
[root@localhost ~]# iptables -A FORWARD -p tcp -s 20.20.20.20 -d 192.168.0.150 --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -d 20.20.20.20 -s 192.168.0.150 --sport 22 -j ACCEPT

DNS
[root@localhost ~]# iptables -A FORWARD -p udp -s 20.20.20.20 -d 192.168.0.200 --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p udp -d 20.20.20.20 -s 192.168.0.200 --sport 53 -j ACCEPT

3개의 허용을 위해 6개의 정책이 만들어지는데 정책을 좀더 줄이기위해서는
state를 사용한다.

우선 출발지 포트로 되어 있는 정책을 지우고 아래 명령어를 입력한다.

[root@localhost ~]# iptables -I FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


연습4 
FTP 서버의 FTP 서비스 허용 정책 추가
- 상태 추적 X, 양방향 정책 추가, 접속시 IP로 접속 (34.0.0.150)
- Active Mode, Passive Mode 둘 다 가능
- Passive Mode Server Port 범위 : 10000 ~ 19999
- 계정은 임의로 확인

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 파일 안에
pasv_min_port=10000
pasv_max_port=19999
pasv_address=34.0.0.150

[root@localhost ~]# iptables -A FORWARD -p tcp -m multiport -s 20.20.20.20 -d 192.168.0.150 --dport 20,21 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -m multiport -d 20.20.20.20 -s 192.168.0.150 --sport 20,21 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -s 20.20.20.20 -d 192.168.0.150 --dport 10000:19999 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p tcp -d 20.20.20.20 -s 192.168.0.150 --sport 10000:19999 -j ACCEPT
[root@localhost ~]# 

> FTP 서비스 데이터 전송 및 목록 전송은 데이터 연결
> 데이터 연결은 연결 요청을 어느쪽에서 시도하느냐에 따라 Active, Passive
> Active Mode는 Server에서 Client로 데이터 연결 요청 시도, 기본값으로 서버측 사용
   Port 20사용, Client  방화벽 활성화 되어 있으면 차단, 연결 실패
> Passive Mode는 Client 방화벽 활성화 되어 있어도 데이터 연결 요청을 Client 측에서 연   결 시도 





'정보보안 > 공부 기록' 카테고리의 다른 글

VPN  (0) 2023.01.01
Tunneling  (0) 2023.01.01
ACL  (0) 2023.01.01
NAT  (0) 2023.01.01
Blind_sql_injection code  (0) 2023.01.01

+ Recent posts