저는 CentOS7을 처음 접했고 현재 SSH를 통해 CentOS 7 서버에 대한 매우 제한된 사용자 액세스가 필요한 프로젝트를 진행하고 있습니다. 따라서 IPtables 명령을 사용하여 특정 사용자에게만 액세스를 제공합니다.
MAC 주소를 가진 사용자에 대한 액세스를 허용하는 데 사용하는 명령은 다음과 같습니다.
iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
다음 출력에 따라 작동하고 iptables에 추가됩니다.
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh MAC XX:XX:XX:XX:XX:XX
다른 모든 사람이 포트 22에 액세스하지 못하도록 차단하는 두 번째 규칙을 추가할 때 Cent OS 7 상자와의 연결이 끊어졌습니다.
iptables -A INPUT -p tcp --destination-port 22 -j DROP
내가 잘못될 수 있는 아이디어
답변1
"잘못된" 점은 두 번째 명령에서 iptables에 지시한다는 것입니다. 대상 포트 22의 모든 연결을 삭제하십시오. 여기에는 분명히 상자에 대한 자체 연결이 포함됩니다. 첫 번째 규칙에 지정된 MAC 주소를 사용하여 클라이언트 컴퓨터에서 연결하고 있습니까?
이 문제를 해결하려면 iptables 규칙 파일을 사용하는 것이 좋습니다. iptables-save
및 명령을 사용하십시오 iptables-restore
. 기본적으로 텍스트 파일( iptables_rulesv4
)을 생성한 다음 iptables에 이 규칙에 따라 자체적으로 복원하도록 지시합니다. 이는 두 가지 규칙이 있는 기본 예입니다.
*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT ACCEPT
-A INPUT -p tcp --destination-port 22 -m mac --mac-source XX:XX:XX:XX:XX:XX -m comment --comment "Allow ssh connections from specific MAC address" -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -m comment --comment "Maintain open connections" -j ACCEPT
COMMIT
1: *filter
- 이것은 작업할 iptables 테이블이고, 필터 테이블입니다.
2-4: 이 파일은 기본 상태입니다. INPUT 및 FORWARD는 기본적으로 삭제(DROP)되고 OUTPUT은 기본적으로 허용(ACCEPT)됩니다.
5: 규칙 1 - MAC 주소에서 시작되는 포트 SSH 연결을 허용합니다 XX:XX:XX:XX:XX:XX
.
6: 규칙 2 - 확립되었거나 열려 있는 모든 연결을 허용합니다.
7: 이 규칙을 iptables에 제출합니다.
참고: iptables는 패킷을 찾은 첫 번째 일치 규칙과 일치시키는 방식으로 작동하며, 일치하는 규칙이 없으면 해당 기본 규칙이 사용됩니다.
그런 다음 명령을 실행할 수 있습니다
sudo iptables-restore iptables_rulesv4
이 규칙을 컴퓨터에 적용하십시오. 그런 다음 규칙 세트를 볼 수 있습니다
sudo iptables -L -n -t filter
참고: 위의 규칙 세트를 서버에 맹목적으로 적용하지 마십시오. 이는 단지 예시로만 제공됩니다. 보안 요구 사항과 조직의 보안 요구 사항이 무엇인지 확인하고 보안 요구 사항을 충족하는 규칙 세트를 설계해야 합니다.