- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- centos docker
- GUI
- RaspberryPi
- 쉘 스크립트 if문
- 쉘 스크립트
- Java
- 그라파나
- 자바
- docker
- Python
- 안드로이드
- 프로젝트
- Shell script
- synology
- Android
- 메소드
- nginx
- Linux
- 네트워크
- 클라우드
- Tkinter
- API
- 쉘 스크립트 기초
- 라즈베리파이
- ACL
- JSP
- System
- LEVIATHAN
- 리눅스
- GPIO
- Today
- Total
IT창고
리눅스 iptables 심화 본문
iptables는 리눅스의 방화벽 역활을 하는데 iptables를 사용한 응용을 해보겠습니다.
테스트 환경은 테스트PC 2개로 R리눅스는 외부(192.168.1.0/24)와 내부네트워크(10.10.10.0/24)로 연결되며 A리눅스가 내부네트워크로 연결된 상태입니다.
R리눅스는 네트워크 랜카드가 2개 외부, 내부네트워크로 연결되어있습니다. R리눅스가 라우터역활을 해서 A리눅스도 외부와 네트워크통신이 가능한데 R리눅스의 iptables를 설정하겠습니다.
nat테이블은 라우팅을 위한 테이블로 여기서 들어오는 패킷을 바꿔다른곳으로 바꿔줍니다.
A리눅스의 내부에서 외부로 요청하는 경우를 예로 알아보겠습니다.
OUTPUT -> POSTROUTING -> PREROUTING -> FORWARD(eth1{10.10.10.0/24} ->eth0{192.168.1.0/24}) -> POSTROUTING -> PREROUTING-> FORWARD(eth0{192.168.1.0/24} ->eth1{10.10.10.0/24}) -> POSTROUTING -> INPUT
nat테이블을 보면 PREROUTING체인은 패킷이 들어오기 전을 다루며 POSTROUTING체인은 패킷이 들어온 후를 다룹니다.
nat테이블의 정책은 기본적으로 ACCEPT이며 이 정책은 filter테이블처럼 DROP이나 다른 정책으로 바꿀수없습니다.
기본적으로 외부에서 A리눅스로 SSH접속을 하기 위해서는 10.10.10.0:22로 접속이 불가능합니다.
R리눅스와 A리눅스가 연결되기 위해서는 우선 R리눅스에 FORWARD체인에 서로 네트워크 포워딩을 해야합니다.
-i , -o 옵션으로 네트워크 랜카드의 입출력 랜카드를 선택하고 ACCEPT를 해줘서 포워딩을 합니다.
iptables 규칙에 프로토콜을 tcp로 한정하고 포트설정을 2222로 설정후 DNAT --to-destination 옵션으로 목적지 IP와 포트를 설정할수있습니다. 이 규칙은 만약 2222포트로 접속시 10.10.10.10:22로 포워딩 시켜주는 설정입니다.
R리눅스의 IP와 2222포트번호로 A리눅스에 SSH접속이 가능하게 됩니다.
단 접속 시 SSH연결이 되기 까지 대략 16초 정도의 시간이 소요되게 되는데 SSH접속이 느린 이유를 와이어샤크로 확인해보았습니다.
Connecting to 192.168.1.150:2222...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Last login: Sun Jun 24 11:34:21 2018 from 192.168.1.10
[root@Alinux ~]#
10초 이상 지연되는 시간을 1~2초로 빠르게 단축이 가능합니다.
192.168.1.10 IP는 현재 호스팅PC입니다
R리눅스의 nat테이블에 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2223 -j DNAT --to-destination 10.10.10.10:80명령어로 규칙을 추가합니다.
이 규칙은 2223포트로 접속하면 10.10.10.10:80으로 포워딩하게 되는 규칙입니다.
filter테이블에 FORWARD체인에는 이미 eth0와 eth1이 포워딩되어있는 상태여야합니다.
A리눅스에서는 iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 80 -j ACCEPT 명령어를 넣어 INPUT체인에 80포트로 접근을 허용해줘야만 합니다.
외부에서 내부네트워크에 있는 웹 서버에 접근이 가능하게 됩니다
마지막으로 전에 icmp패킷을 통과시켜 ping테스트를 해보았습니다.
이번에는 좀 더 규칙을 강화시켜 보안성을 높여보겠습니다.
R리눅스에 기본적으로 FORWARD가 되어있고 POSTROUTING 과 PREROUTING에 조건을 추가합니다. 출발지와 목적지를 설정을 추가하였습니다.
A리눅스에 가볍게하면 INPUT체인에 목적지IP를 설정할필요도 없이 icmp패킷을 허용해주면 끝나지만 목적지IP도 설정함으로 보안성을 더욱 높이게 됩니다.
'보안 > Security' 카테고리의 다른 글
리눅스 PAM2 (0) | 2018.06.28 |
---|---|
리눅스 PAM1 (0) | 2018.06.24 |
리눅스 iptables 기초 (0) | 2018.06.17 |
리눅스 서버 보안3 (0) | 2018.06.16 |
리눅스 서버 보안2 (0) | 2018.06.14 |